{"version":3,"sources":["../index.ts","../make-installer.ts","../utils/dist/chunk-HURRAOO3.js","../utils/dist/chunk-VHWHI26B.js","../components/button/src/button.ts","../components/button/src/button.vue","../components/button/index.ts","../components/icon/src/icon.ts","../components/icon/src/icon.vue","../components/icon/index.ts","../components/input/src/input.ts","../components/input/src/input.vue","../components/input/index.ts","../components/select/src/select.ts","../components/select/src/select.vue","../components/select/index.ts","../components/carousel/src/carousel.ts","../components/carousel/src/carousel.vue","../components/carousel/src/carousel-item.vue","../components/carousel/index.ts","../components/color/src/color.vue","../components/color/index.ts","../components/color-picker/src/color-picker.ts","../components/color-picker/src/color.ts","../components/color-picker/src/color-picker.vue","../components/color-picker/index.ts","../components/treeselect/src/treeselect.ts","../components/treeselect/src/treeselect.vue","../components/treeselect/index.ts","../components/watermark/src/watermark.ts","../components/watermark/src/watermark.vue","../components/watermark/index.ts","../components/Layout/src/layout.ts","../components/Layout/src/row.vue","../components/Layout/src/col.vue","../components/Layout/index.ts","../components/pagination/src/pagination.ts","../components/pagination/src/pagination-part.vue","../components/pagination/src/pagination.vue","../components/pagination/index.ts","../components/table/src/table.ts","../components/table/src/table.vue","../components/table/src/table-column.ts","../components/table/src/table-column.vue","../components/table/index.ts","../components/message/src/message.vue","../components/message/src/service.ts","../components/message/src/facade.ts","../components/message/index.ts","../components/breadcrumb/src/breadcrumb.ts","../components/breadcrumb/src/breadcrumb.vue","../components/breadcrumb/src/breadcrumb-item.ts","../components/breadcrumb/src/breadcrumb-item.vue","../components/breadcrumb/index.ts","../components/tooltip/src/tooltip.ts","../components/tooltip/src/tooltip.vue","../components/tooltip/index.ts","../components/switch/src/switch.ts","../components/switch/src/use-switch.ts","../components/switch/src/switch.vue","../components/switch/index.ts","../components/checkbox/src/checkbox.ts","../components/checkbox/src/checkbox-group.ts","../components/checkbox/src/checkbox.vue","../components/checkbox/src/checkbox-group.vue","../components/checkbox/index.ts","../components/radio/src/radio.ts","../components/radio/src/radio-group.ts","../components/radio/src/radio.vue","../components/radio/src/radio-group.vue","../components/radio/index.ts","../components/skeleton/src/skeleton.ts","../components/skeleton/src/skeleton.vue","../components/skeleton/index.ts","../components/datepicker/src/datepicker.ts","../../node_modules/.pnpm/@vicons+ionicons5@0.13.0/node_modules/@vicons/ionicons5/es/TimeOutline.js","../components/datepicker/src/datepicker.vue","../components/datepicker/index.ts","../components/daterange/src/daterange.ts","../components/daterange/src/daterange.vue","../components/daterange/index.ts","../components/tabs/src/tabs.ts","../components/tabs/src/tabs.vue","../components/tabs/src/tab-pane.ts","../components/tabs/src/tab-pane.vue","../components/tabs/index.ts","../components/backtop/src/backtop.ts","../components/backtop/src/backtop.vue","../components/backtop/index.ts","../components/tree/src/tree.ts","../components/tree/src/tree-node.ts","../components/tree/src/tree-node.vue","../components/tree/src/tree.vue","../components/tree/index.ts","../components/form/src/form.ts","../components/form/src/form.vue","../components/form/src/form-item.ts","../components/form/src/async-validator.ts","../components/form/src/form-item.vue","../components/form/index.ts","../components/menu/src/menu.ts","../components/menu/src/menu.vue","../components/menu/src/menu-item.ts","../components/menu/src/menu-item.vue","../components/menu/src/sub-menu.ts","../components/menu/src/sub-menu.vue","../components/menu/src/menu-item-group.ts","../components/menu/src/menu-item-group.vue","../components/menu/src/menu-divider.vue","../components/menu/index.ts","../defaults.ts","../utils/dist/chunk-5JBD5THX.js","../utils/dist/chunk-CT42ATKE.js","../utils/dist/chunk-UJJETXVT.js","../utils/dist/chunk-MD2JDQWT.js","../utils/dist/chunk-HURRAOO3.js","../utils/dist/chunk-Y5J5UPO5.js","../utils/dist/chunk-66VBPHXF.js","../utils/dist/chunk-YZBZCMGC.js","../utils/dist/chunk-H2RSBM4Q.js","../utils/dist/chunk-U4L5WJCR.js","../utils/dist/chunk-ASVIEOTF.js","../utils/dist/chunk-OWT4QTH6.js","../utils/dist/chunk-TLSZMYHN.js","../utils/dist/chunk-VHWHI26B.js","../utils/dist/chunk-X4S55OTW.js","../utils/dist/chunk-XKVKH2NR.js","../utils/dist/chunk-6FBCBLIY.js","../utils/dist/chunk-WMYLMWUD.js","../utils/dist/chunk-AOBLHAPC.js"],"sourcesContent":["// CUI 组件库主入口文件（发布版）\r\nimport installer from './defaults'\r\n\r\n// 发布版重导出：从各子包的构建产物导出\r\nexport * from './components/dist/index'\r\nexport * from './utils/dist/index'\r\nexport * from './make-installer'\r\n\r\n// 发布版不直接导入 SCSS，样式请使用 dist/index.css\r\n\r\n// 导出 install 方法和版本信息\r\nexport const install = installer.install\r\n\r\n// 默认导出安装器\r\nexport default installer\r\n","/**\r\n * 组件安装器工具模块\r\n * 提供组件、指令、函数的安装方法，支持Vue插件系统\r\n */\r\nimport type { App, Plugin, Directive } from 'vue'\r\n\r\n/**\r\n * 带有install方法的单文件组件类型\r\n */\r\nexport type SFCWithInstall<T> = T & Plugin\r\n\r\n/**\r\n * 带有install方法和上下文的单文件组件类型\r\n */\r\nexport type SFCInstallWithContext<T> = SFCWithInstall<T> & {\r\n  _context: App | null\r\n}\r\n\r\n/**\r\n * 用于标记组件库是否已安装的Symbol键\r\n */\r\nexport const INSTALLED_KEY = Symbol('INSTALLED_KEY')\r\n\r\n/**\r\n * 扩展App类型以支持Symbol键的安装标记\r\n */\r\ntype AppWithInstallFlag = App & {\r\n  [INSTALLED_KEY]?: boolean\r\n}\r\n\r\n/**\r\n * 创建组件库安装器\r\n * @param components 要安装的组件列表\r\n * @returns 包含install方法和version信息的插件对象\r\n */\r\n// 过去的全局主题初始化方案已移除，插件不再接受主题相关选项\r\n\r\nexport const makeInstaller = (components: Plugin[] = []): Plugin<[]> => {\r\n  const install = (app: App) => {\r\n    const appWithFlag = app as AppWithInstallFlag\r\n\r\n    // 防止重复安装\r\n    if (appWithFlag[INSTALLED_KEY]) return\r\n\r\n    appWithFlag[INSTALLED_KEY] = true\r\n\r\n    // 安装所有组件\r\n    components.forEach((component) => app.use(component))\r\n\r\n    // 已移除全局主题初始化逻辑，主题由宿主环境（如 VitePress）控制\r\n  }\r\n\r\n  return install\r\n}\r\n\r\n/**\r\n * 为组件添加install方法，使其可以通过app.use()安装\r\n * @param main 主组件\r\n * @param extra 额外的组件对象\r\n * @returns 带有install方法的组件\r\n */\r\nexport const withInstall = <T, E extends Record<string, any>>(\r\n  main: T,\r\n  extra?: E\r\n) => {\r\n  const mainWithInstall = main as SFCWithInstall<T>\r\n\r\n  mainWithInstall.install = (app: App): void => {\r\n    const components = [main, ...Object.values(extra ?? {})]\r\n\r\n    for (const comp of components) {\r\n      if (comp && typeof comp === 'object' && 'name' in comp) {\r\n        app.component(comp.name as string, comp)\r\n      }\r\n    }\r\n  }\r\n\r\n  if (extra) {\r\n    for (const [key, comp] of Object.entries(extra)) {\r\n      ;(mainWithInstall as any)[key] = comp\r\n    }\r\n  }\r\n\r\n  return mainWithInstall as SFCWithInstall<T> & E\r\n}\r\n\r\n/**\r\n * 为函数添加install方法，使其可以作为全局属性安装\r\n * @param fn 要安装的函数\r\n * @param name 全局属性名称\r\n * @returns 带有install方法和上下文的函数\r\n */\r\nexport const withInstallFunction = <T>(fn: T, name: string) => {\r\n  const fnWithInstall = fn as SFCInstallWithContext<T>\r\n\r\n  fnWithInstall.install = (app: App) => {\r\n    fnWithInstall._context = app\r\n    app.config.globalProperties[name] = fn\r\n  }\r\n\r\n  return fnWithInstall\r\n}\r\n\r\n/**\r\n * 为指令添加install方法，使其可以通过app.use()安装\r\n * @param directive Vue指令对象\r\n * @param name 指令名称\r\n * @returns 带有install方法的指令\r\n */\r\nexport const withInstallDirective = <T extends Directive>(\r\n  directive: T,\r\n  name: string\r\n) => {\r\n  const directiveWithInstall = directive as SFCWithInstall<T>\r\n\r\n  directiveWithInstall.install = (app: App): void => {\r\n    app.directive(name, directive)\r\n  }\r\n\r\n  return directiveWithInstall\r\n}\r\n","// install.ts\nvar withInstall = (main, extra) => {\n  main.install = (app) => {\n    for (const comp of [main, ...Object.values(extra != null ? extra : {})]) {\n      app.component(comp.name, comp);\n    }\n  };\n  if (extra) {\n    for (const [key, comp] of Object.entries(extra)) {\n      main[key] = comp;\n    }\n  }\n  return main;\n};\nvar withInstallFunction = (fn, name) => {\n  fn.install = (app) => {\n    fn._context = app._context;\n    app.config.globalProperties[name] = fn;\n  };\n  return fn;\n};\nvar withInstallDirective = (directive, name) => {\n  directive.install = (app) => {\n    app.directive(name, directive);\n  };\n  return directive;\n};\n\nexport {\n  withInstall,\n  withInstallFunction,\n  withInstallDirective\n};\n","// create.ts\nvar _bem = (prefixName, blockSuffix, element, modifier) => {\n  if (blockSuffix) {\n    prefixName += `-${blockSuffix}`;\n  }\n  if (element) {\n    prefixName += `__${element}`;\n  }\n  if (modifier) {\n    prefixName += `--${modifier}`;\n  }\n  return prefixName;\n};\nvar createBEM = (prefixName) => {\n  const b = (blockSuffix = \"\") => _bem(prefixName, blockSuffix, \"\", \"\");\n  const e = (element = \"\") => element && element !== \"\" ? _bem(prefixName, \"\", element, \"\") : \"\";\n  const m = (modifier = \"\") => modifier && modifier !== \"\" ? _bem(prefixName, \"\", \"\", modifier) : \"\";\n  const be = (blockSuffix = \"\", element = \"\") => blockSuffix && element ? _bem(prefixName, blockSuffix, element, \"\") : \"\";\n  const bm = (blockSuffix = \"\", modifier = \"\") => blockSuffix && modifier ? _bem(prefixName, blockSuffix, \"\", modifier) : \"\";\n  const em = (element = \"\", modifier = \"\") => element && modifier ? _bem(prefixName, \"\", element, modifier) : \"\";\n  const bem = (blockSuffix = \"\", element = \"\", modifier = \"\") => blockSuffix && element && modifier ? _bem(prefixName, blockSuffix, element, modifier) : \"\";\n  const is = (name, state) => state ? `is-${name}` : \"\";\n  return {\n    b,\n    e,\n    m,\n    be,\n    bm,\n    em,\n    bem,\n    is\n  };\n};\nvar createNamespace = (name) => {\n  const prefixedName = `c-${name}`;\n  return createBEM(prefixedName);\n};\n\nexport {\n  createNamespace\n};\n","// 这里面准备组件相关属性 和 ts类型\r\n\r\nimport { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport const buttonProps = {\r\n  // 按钮类型\r\n  type: {\r\n    type: String as PropType<'primary' | 'success' | 'warning' | 'danger' | 'info' | 'text' | ''>,\r\n    default: ''\r\n  },\r\n  // 按钮大小\r\n  size: {\r\n    type: String as PropType<'large' | 'default' | 'small'>,\r\n    default: 'default'\r\n  },\r\n  // 是否为朴素按钮\r\n  plain: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否为圆角按钮\r\n  round: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否为圆形按钮\r\n  circle: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否禁用\r\n  disabled: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否加载中\r\n  loading: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 原生type属性\r\n  nativeType: {\r\n    type: String as PropType<'button' | 'submit' | 'reset'>,\r\n    default: 'button'\r\n  }\r\n} as const // 变为一个只读属性\r\n\r\nexport type ButtonProps = ExtractPropTypes<typeof buttonProps>\r\n\r\n// 按钮事件\r\nexport const buttonEmits = {\r\n  click: (evt: MouseEvent) => evt instanceof MouseEvent,\r\n}\r\n\r\nexport type ButtonEmits = typeof buttonEmits","<template>\r\n  <button\r\n    :class=\"[\r\n      bem.b(),\r\n      bem.m(type),\r\n      bem.m(size),\r\n      bem.is('plain', plain),\r\n      bem.is('round', round),\r\n      bem.is('circle', circle),\r\n      bem.is('disabled', disabled),\r\n      bem.is('loading', loading),\r\n    ]\"\r\n    :disabled=\"disabled || loading\"\r\n    :type=\"nativeType\"\r\n    @click=\"handleClick\"\r\n  >\r\n    <template v-if=\"loading\">\r\n      <c-icon class=\"is-loading\">\r\n        <slot name=\"loading\">\r\n          <!-- 默认加载图标 -->\r\n          <svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path\r\n              fill=\"currentColor\"\r\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.25 0L376.32 331.07a32 32 0 0 1-45.25 45.26L195.2 240.46a32 32 0 0 1 0-45.26zm452.544 452.544a32 32 0 0 1 45.25 0L828.8 783.55a32 32 0 0 1-45.25 45.25L647.744 692.994a32 32 0 0 1 0-45.25zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.25-45.248L783.55 195.264a32 32 0 0 1 45.25 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\"\r\n            ></path>\r\n          </svg>\r\n        </slot>\r\n      </c-icon>\r\n    </template>\r\n    <c-icon v-if=\"$slots.icon && !loading\">\r\n      <slot name=\"icon\"></slot>\r\n    </c-icon>\r\n    <span v-if=\"$slots.default\">\r\n      <slot></slot>\r\n    </span>\r\n  </button>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { buttonProps, buttonEmits } from './button'\r\n\r\n// 定义组件名称\r\ndefineOptions({\r\n  name: 'c-button',\r\n})\r\n\r\nconst bem = createNamespace('button')\r\nconst props = defineProps(buttonProps)\r\nconst emit = defineEmits(buttonEmits)\r\n\r\n// 处理点击事件\r\nconst handleClick = (evt: MouseEvent) => {\r\n  if (props.disabled || props.loading) {\r\n    evt.preventDefault()\r\n    return\r\n  }\r\n  emit('click', evt)\r\n}\r\n</script>\r\n","// 用来整合组件的，最终实现导出组件\r\n\r\nimport { withInstall } from \"@cuixingjian/cui-utils/install\";\r\nimport type { SFCWithInstall } from \"../types\";\r\nimport _Button from \"./src/button.vue\";\r\n\r\nexport * from \"./src/button\";\r\nexport * from \"./src/instance\";\r\nconst Button: SFCWithInstall<typeof _Button> = withInstall(_Button);\r\n\r\nexport default Button;\r\n\r\n// 在vue中方便提示\r\n// 这里添加的类型 可以在模板中被解析\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    // 我们的接口可以自动合并\r\n    CButton: typeof Button;\r\n  }\r\n}\r\n","// 这里面准备组件相关属性 和 ts类型\r\n\r\nimport { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport const iconProps = {\r\n  // 基础属性\r\n  color: String,\r\n  size: [Number, String] as PropType<number | string>,\r\n  // 旋转属性\r\n  rotate: [Number, String] as PropType<number | string>,\r\n  // 翻转属性\r\n  flip: {\r\n    type: String as PropType<'horizontal' | 'vertical' | 'both' | ''>,\r\n    default: ''\r\n  },\r\n  // 动画效果\r\n  spin: {\r\n    type: Boolean,\r\n    default: false\r\n  }\r\n} as const // 变为一个只读属性\r\n\r\nexport type IconProps = ExtractPropTypes<typeof iconProps>\r\n","<template>\r\n  <i :class=\"[bem.b(), spinClass]\" :style=\"style\">\r\n    <slot />\r\n  </i>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { iconProps } from './icon'\r\n\r\n// 定义组件名称\r\ndefineOptions({\r\n  name: 'c-icon'\r\n})\r\n\r\nconst bem = createNamespace('icon')\r\nconst props = defineProps(iconProps)\r\n\r\n// 计算旋转动画类\r\nconst spinClass = computed(() => {\r\n  return props.spin ? 'is-spin' : ''\r\n})\r\n\r\n// 计算属性 来计算一个样式来处理\r\nconst style = computed(() => {\r\n  const styles: Record<string, string> = {}\r\n  \r\n  // 设置大小\r\n  if (props.size) {\r\n    styles.fontSize = `${props.size}px`\r\n  }\r\n  \r\n  // 设置颜色\r\n  if (props.color) {\r\n    styles.color = props.color\r\n  }\r\n  \r\n  // 设置旋转\r\n  if (props.rotate) {\r\n    styles.transform = `rotate(${props.rotate}deg)`\r\n  }\r\n  \r\n  // 设置翻转\r\n  if (props.flip) {\r\n    let flipValue = ''\r\n    if (props.flip === 'horizontal') {\r\n      flipValue = 'scaleX(-1)'\r\n    } else if (props.flip === 'vertical') {\r\n      flipValue = 'scaleY(-1)'\r\n    } else if (props.flip === 'both') {\r\n      flipValue = 'scale(-1, -1)'\r\n    }\r\n    \r\n    if (flipValue) {\r\n      styles.transform = props.rotate \r\n        ? `${styles.transform} ${flipValue}` \r\n        : flipValue\r\n    }\r\n  }\r\n  \r\n  return styles\r\n})\r\n</script>\r\n","// 用来整合组件的，最终实现导出组件\r\n\r\nimport { withInstall } from \"@cuixingjian/cui-utils/install\"\r\nimport type { SFCWithInstall } from \"../types\"\r\nimport _Icon from \"./src/icon.vue\"\r\n\r\nexport * from \"./src/icon\"\r\nexport * from \"./src/instance\"\r\nconst Icon: SFCWithInstall<typeof _Icon> = withInstall(_Icon)\r\n\r\nexport default Icon\r\n\r\n// 在vue中方便提示\r\n// 这里添加的类型 可以在模板中被解析\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    // 我们的接口可以自动合并\r\n    CIcon: typeof Icon\r\n  }\r\n}\r\n","// input 组件相关属性和 TypeScript 类型定义\r\n\r\nimport { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport const inputProps = {\r\n  // 输入框的值\r\n  modelValue: {\r\n    type: [String, Number] as PropType<string | number>,\r\n    default: ''\r\n  },\r\n  // 输入框类型\r\n  type: {\r\n    type: String as PropType<'text' | 'password' | 'email' | 'number' | 'tel' | 'url' | 'search' | 'textarea'>,\r\n    default: 'text'\r\n  },\r\n  // 输入框大小\r\n  size: {\r\n    type: String as PropType<'large' | 'default' | 'small'>,\r\n    default: 'default'\r\n  },\r\n  // 占位符\r\n  placeholder: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 是否禁用\r\n  disabled: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否只读\r\n  readonly: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否可清空\r\n  clearable: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否显示密码切换图标\r\n  showPassword: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 最大长度\r\n  maxlength: {\r\n    type: [String, Number] as PropType<string | number>,\r\n    default: undefined\r\n  },\r\n  // 最小长度\r\n  minlength: {\r\n    type: [String, Number] as PropType<string | number>,\r\n    default: undefined\r\n  },\r\n  // 是否显示字数统计\r\n  showWordLimit: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 前缀图标\r\n  prefixIcon: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 后缀图标\r\n  suffixIcon: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 自动获取焦点\r\n  autofocus: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 原生 name 属性\r\n  name: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 原生 autocomplete 属性\r\n  autocomplete: {\r\n    type: String,\r\n    default: 'off'\r\n  },\r\n  // 文本域行数（仅在 type=textarea 时生效）\r\n  rows: {\r\n    type: [String, Number] as PropType<string | number>,\r\n    default: 3\r\n  },\r\n  // 文本域缩放（仅在 type=textarea 时生效）\r\n  resize: {\r\n    type: String as PropType<'none' | 'vertical' | 'horizontal' | 'both'>,\r\n    default: 'vertical'\r\n  },\r\n  // 文本域字数统计位置（仅在 type=textarea 时生效）：inner 为输入框内右下角，outer 为输入框外右下角\r\n  textareaCountPlacement: {\r\n    type: String as PropType<'inner' | 'outer'>,\r\n    default: 'inner'\r\n  }\r\n} as const\r\n\r\nexport type InputProps = ExtractPropTypes<typeof inputProps>\r\n\r\n// input 事件\r\nexport const inputEmits = {\r\n  'update:modelValue': (value: string | number) => typeof value === 'string' || typeof value === 'number',\r\n  input: (value: string | number) => typeof value === 'string' || typeof value === 'number',\r\n  change: (value: string | number) => typeof value === 'string' || typeof value === 'number',\r\n  focus: (evt: FocusEvent) => evt instanceof FocusEvent,\r\n  blur: (evt: FocusEvent) => evt instanceof FocusEvent,\r\n  clear: () => true,\r\n  keydown: (evt: KeyboardEvent) => evt && typeof evt === 'object',\r\n  keyup: (evt: KeyboardEvent) => evt && typeof evt === 'object',\r\n}\r\n\r\nexport type InputEmits = typeof inputEmits","<template>\r\n  <div\r\n    :class=\"[\r\n      bem.b(),\r\n      bem.m(size),\r\n      type === 'textarea' && bem.m('textarea'),\r\n      bem.is('disabled', disabled),\r\n      bem.is('readonly', readonly),\r\n      bem.is('focus', isFocused),\r\n      bem.is('has-suffix', !!suffixVisible),\r\n      bem.is('error', formItem?.validateState.value === 'error'),\r\n      {\r\n        [bem.e('group')]: $slots.prepend || $slots.append,\r\n        [bem.em('group', 'prepend')]: $slots.prepend,\r\n        [bem.em('group', 'append')]: $slots.append\r\n      }\r\n    ]\"\r\n  >\r\n    <!-- 前置内容 -->\r\n    <div v-if=\"$slots.prepend\" :class=\"bem.e('prepend')\">\r\n      <slot name=\"prepend\"></slot>\r\n    </div>\r\n\r\n    <!-- 普通输入框的 wrapper -->\r\n    <div\r\n      v-if=\"type !== 'textarea'\"\r\n      :class=\"bem.e('wrapper')\"\r\n      @mouseenter=\"handleMouseEnter\"\r\n      @mouseleave=\"handleMouseLeave\"\r\n    >\r\n      <!-- 前缀图标 -->\r\n      <span v-if=\"prefixIcon || $slots.prefix\" :class=\"bem.e('prefix')\">\r\n        <c-icon v-if=\"prefixIcon\">\r\n          <component :is=\"prefixIcon\" />\r\n        </c-icon>\r\n        <slot v-else name=\"prefix\"></slot>\r\n      </span>\r\n\r\n      <!-- 普通输入框 -->\r\n      <input\r\n        ref=\"inputRef\"\r\n        :class=\"bem.e('inner')\"\r\n        :type=\"showPasswordVisible ? 'text' : type\"\r\n        :value=\"modelValue\"\r\n        :placeholder=\"placeholder\"\r\n        :disabled=\"disabled\"\r\n        :readonly=\"readonly\"\r\n        :maxlength=\"maxlength\"\r\n        :name=\"name\"\r\n        :autocomplete=\"autocomplete\"\r\n        :autofocus=\"autofocus\"\r\n        @input=\"handleInput\"\r\n        @change=\"handleChange\"\r\n        @focus=\"handleFocus\"\r\n        @blur=\"handleBlur\"\r\n        @keydown=\"handleKeydown\"\r\n        @keyup=\"handleKeyup\"\r\n      />\r\n      <!-- 后缀图标区域 -->\r\n      <span v-if=\"suffixVisible\" :class=\"bem.e('suffix')\">\r\n        <!-- 清空按钮 -->\r\n        <c-icon\r\n          v-if=\"showClearIcon\"\r\n          :class=\"bem.e('clear')\"\r\n          @click=\"handleClear\"\r\n          style=\"cursor: pointer; pointer-events: all\"\r\n        >\r\n          <svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path\r\n              fill=\"currentColor\"\r\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\"\r\n            ></path>\r\n          </svg>\r\n        </c-icon>\r\n\r\n        <!-- 密码显示切换按钮 -->\r\n        <c-icon\r\n          v-if=\"showPasswordIcon\"\r\n          :class=\"[bem.e('password'), bem.is('on', showPasswordVisible)]\"\r\n          role=\"button\"\r\n          aria-label=\"Toggle password visibility\"\r\n          :aria-pressed=\"showPasswordVisible ? 'true' : 'false'\"\r\n          tabindex=\"0\"\r\n          @click=\"togglePasswordVisible\"\r\n          @keydown.enter=\"togglePasswordVisible\"\r\n          @keydown.space.prevent=\"togglePasswordVisible\"\r\n        >\r\n          <!-- 眼睛睁开图标 - 密码可见 -->\r\n          <svg\r\n            v-if=\"showPasswordVisible\"\r\n            xmlns=\"http://www.w3.org/2000/svg\"\r\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n            viewBox=\"0 0 512 512\"\r\n          >\r\n            <path\r\n              d=\"M255.66 112c-77.94 0-157.89 45.11-220.83 135.33a16 16 0 0 0-.27 17.77C82.92 340.8 161.8 400 255.66 400c92.84 0 173.34-59.38 221.79-135.25a16.14 16.14 0 0 0 0-17.47C428.89 172.28 347.8 112 255.66 112z\"\r\n              fill=\"none\"\r\n              stroke=\"currentColor\"\r\n              stroke-linecap=\"round\"\r\n              stroke-linejoin=\"round\"\r\n              stroke-width=\"32\"\r\n            ></path>\r\n            <circle\r\n              cx=\"256\"\r\n              cy=\"256\"\r\n              r=\"80\"\r\n              fill=\"none\"\r\n              stroke=\"currentColor\"\r\n              stroke-miterlimit=\"10\"\r\n              stroke-width=\"32\"\r\n            ></circle>\r\n          </svg>\r\n          <!-- 眼睛闭合图标 - 密码隐藏 -->\r\n          <svg\r\n            v-else\r\n            xmlns=\"http://www.w3.org/2000/svg\"\r\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n            viewBox=\"0 0 512 512\"\r\n          >\r\n            <path\r\n              d=\"M432 448a15.92 15.92 0 0 1-11.31-4.69l-352-352a16 16 0 0 1 22.62-22.62l352 352A16 16 0 0 1 432 448z\"\r\n              fill=\"currentColor\"\r\n            ></path>\r\n            <path\r\n              d=\"M255.66 384c-41.49 0-81.5-12.28-118.92-36.5c-34.07-22-64.74-53.51-88.7-91v-.08c19.94-28.57 41.78-52.73 65.24-72.21a2 2 0 0 0 .14-2.94L93.5 161.38a2 2 0 0 0-2.71-.12c-24.92 21-48.05 46.76-69.08 76.92a31.92 31.92 0 0 0-.64 35.54c26.41 41.33 60.4 76.14 98.28 100.65C162 402 207.9 416 255.66 416a239.13 239.13 0 0 0 75.8-12.58a2 2 0 0 0 .77-3.31l-21.58-21.58a4 4 0 0 0-3.83-1a204.8 204.8 0 0 1-51.16 6.47z\"\r\n              fill=\"currentColor\"\r\n            ></path>\r\n            <path\r\n              d=\"M490.84 238.6c-26.46-40.92-60.79-75.68-99.27-100.53C349 110.55 302 96 255.66 96a227.34 227.34 0 0 0-74.89 12.83a2 2 0 0 0-.75 3.31l21.55 21.55a4 4 0 0 0 3.88 1a192.82 192.82 0 0 1 50.21-6.69c40.69 0 80.58 12.43 118.55 37c34.71 22.4 65.74 53.88 89.76 91a.13.13 0 0 1 0 .16a310.72 310.72 0 0 1-64.12 72.73a2 2 0 0 0-.15 2.95l19.9 19.89a2 2 0 0 0 2.7.13a343.49 343.49 0 0 0 68.64-78.48a32.2 32.2 0 0 0-.1-34.78z\"\r\n              fill=\"currentColor\"\r\n            ></path>\r\n            <path\r\n              d=\"M256 160a95.88 95.88 0 0 0-21.37 2.4a2 2 0 0 0-1 3.38l112.59 112.56a2 2 0 0 0 3.38-1A96 96 0 0 0 256 160z\"\r\n              fill=\"currentColor\"\r\n            ></path>\r\n            <path\r\n              d=\"M165.78 233.66a2 2 0 0 0-3.38 1a96 96 0 0 0 115 115a2 2 0 0 0 1-3.38z\"\r\n              fill=\"currentColor\"\r\n            ></path>\r\n          </svg>\r\n        </c-icon>\r\n\r\n        <!-- 后缀图标 -->\r\n        <c-icon v-if=\"suffixIcon\">\r\n          <component :is=\"suffixIcon\" />\r\n        </c-icon>\r\n\r\n        <slot v-else name=\"suffix\"></slot>\r\n      </span>\r\n\r\n      <!-- 普通输入框字符统计（输入框内部右侧） -->\r\n      <span v-if=\"showWordLimit && maxlength\" :class=\"bem.e('count-input')\">\r\n        {{ textLength }}/{{ maxlength }}\r\n      </span>\r\n    </div>\r\n\r\n    <!-- 独立的文本域容器 -->\r\n    <div\r\n      v-if=\"type === 'textarea'\"\r\n      :class=\"[bem.e('textarea-container'), bem.is('focus', isFocused)]\"\r\n      @mouseenter=\"handleMouseEnter\"\r\n      @mouseleave=\"handleMouseLeave\"\r\n    >\r\n      <textarea\r\n        ref=\"inputRef\"\r\n        :class=\"bem.e('textarea')\"\r\n        :value=\"modelValue\"\r\n        :placeholder=\"placeholder\"\r\n        :disabled=\"disabled\"\r\n        :readonly=\"readonly\"\r\n        :maxlength=\"maxlength\"\r\n        :name=\"name\"\r\n        :autofocus=\"autofocus\"\r\n        :rows=\"Number(rows)\"\r\n        :style=\"{ resize: resize }\"\r\n        @input=\"handleInput\"\r\n        @change=\"handleChange\"\r\n        @focus=\"handleFocus\"\r\n        @blur=\"handleBlur\"\r\n        @keydown=\"handleKeydown\"\r\n        @keyup=\"handleKeyup\"\r\n      />\r\n\r\n      <!-- 字符统计：内置模式（textarea 右下角覆盖） -->\r\n      <span\r\n        v-if=\"showWordLimit && maxlength && textareaCountPlacement === 'inner'\"\r\n        :class=\"bem.e('count-inner')\"\r\n      >\r\n        {{ textLength }}/{{ maxlength }}\r\n      </span>\r\n    </div>\r\n    <!-- 字符统计：外置模式（textarea 外部右下角） -->\r\n    <span\r\n      v-if=\"\r\n        type === 'textarea' &&\r\n        showWordLimit &&\r\n        maxlength &&\r\n        textareaCountPlacement === 'outer'\r\n      \"\r\n      :class=\"bem.e('count-outer')\"\r\n    >\r\n      {{ textLength }}/{{ maxlength }}\r\n    </span>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, ref, nextTick, useSlots, inject, type ComputedRef } from 'vue';\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create';\r\nimport { inputProps, inputEmits } from './input';\r\n\r\n// 定义组件名称\r\ndefineOptions({\r\n  name: 'c-input'\r\n});\r\n\r\nconst bem = createNamespace('input');\r\nconst props = defineProps(inputProps);\r\nconst emit = defineEmits(inputEmits);\r\nconst slots = useSlots();\r\n\r\n// 注入 FormItem 组件提供的数据\r\nconst formItem = inject<{\r\n  validateState: ComputedRef<'validating' | 'success' | 'error' | ''>\r\n  validateMessage: ComputedRef<string>\r\n} | null>('formItem', null);\r\n\r\n// 输入框引用\r\nconst inputRef = ref<HTMLInputElement | HTMLTextAreaElement>();\r\n// 是否聚焦\r\nconst isFocused = ref(false);\r\n// 鼠标是否悬停\r\nconst isHovered = ref(false);\r\n// 密码是否可见\r\nconst showPasswordVisible = ref(false);\r\n\r\n// 计算属性\r\n// 统一的字符长度计算（兼容 input 和 textarea）\r\nconst textLength = computed(() => {\r\n  return String(props.modelValue || '').length;\r\n});\r\n\r\nconst showClearIcon = computed(() => {\r\n  return (\r\n    props.clearable &&\r\n    props.type !== 'textarea' &&\r\n    !props.disabled &&\r\n    !props.readonly &&\r\n    !!props.modelValue &&\r\n    isHovered.value\r\n  );\r\n});\r\n\r\nconst showPasswordIcon = computed(() => {\r\n  return (\r\n    props.showPassword &&\r\n    !props.disabled &&\r\n    !props.readonly &&\r\n    !!props.modelValue && // 只有在有值时才显示图标\r\n    (props.type === 'password' || showPasswordVisible.value)\r\n  );\r\n});\r\n\r\nconst showErrorIcon = computed(() => {\r\n  return formItem?.validateState.value === 'error' && !props.disabled && !props.readonly\r\n})\r\n\r\nconst suffixVisible = computed(() => {\r\n  return (\r\n    props.suffixIcon ||\r\n    showClearIcon.value ||\r\n    showPasswordIcon.value ||\r\n    showErrorIcon.value ||\r\n    (props.showWordLimit && props.maxlength && props.type !== 'textarea') ||\r\n    !!slots.suffix\r\n  );\r\n});\r\n\r\n// 事件处理\r\nconst handleInput = (event: Event) => {\r\n  const target = event.target as HTMLInputElement | HTMLTextAreaElement;\r\n  const value = target.value;\r\n  emit('update:modelValue', value);\r\n  emit('input', value);\r\n};\r\n\r\nconst handleChange = (event: Event) => {\r\n  const target = event.target as HTMLInputElement | HTMLTextAreaElement;\r\n  const value = target.value;\r\n  emit('change', value);\r\n};\r\n\r\nconst handleFocus = (event: FocusEvent) => {\r\n  isFocused.value = true;\r\n  emit('focus', event);\r\n};\r\n\r\nconst handleBlur = (event: FocusEvent) => {\r\n  isFocused.value = false;\r\n  emit('blur', event);\r\n};\r\n\r\nconst handleClear = () => {\r\n  emit('update:modelValue', '');\r\n  emit('input', '');\r\n  emit('change', '');\r\n  emit('clear');\r\n  nextTick(() => {\r\n    inputRef.value?.focus();\r\n  });\r\n};\r\n\r\nconst togglePasswordVisible = () => {\r\n  showPasswordVisible.value = !showPasswordVisible.value;\r\n  nextTick(() => {\r\n    inputRef.value?.focus();\r\n  });\r\n};\r\n\r\nconst handleKeydown = (event: KeyboardEvent) => {\r\n  emit('keydown', event);\r\n};\r\n\r\nconst handleKeyup = (event: KeyboardEvent) => {\r\n  emit('keyup', event);\r\n};\r\n\r\nconst handleMouseEnter = () => {\r\n  isHovered.value = true;\r\n};\r\n\r\nconst handleMouseLeave = () => {\r\n  isHovered.value = false;\r\n};\r\n\r\n// 暴露方法\r\nconst focus = () => {\r\n  inputRef.value?.focus();\r\n};\r\n\r\nconst blur = () => {\r\n  inputRef.value?.blur();\r\n};\r\n\r\nconst select = () => {\r\n  inputRef.value?.select();\r\n};\r\n\r\ndefineExpose({\r\n  focus,\r\n  blur,\r\n  select,\r\n  inputRef\r\n});\r\n</script>\r\n","// 用来整合组件的，最终实现导出组件\r\n\r\nimport { withInstall } from \"@cuixingjian/cui-utils/install\";\r\nimport type { SFCWithInstall } from \"../types\";\r\nimport _Input from \"./src/input.vue\";\r\n\r\nexport * from \"./src/input\";\r\nexport * from \"./src/instance\";\r\nconst Input: SFCWithInstall<typeof _Input> = withInstall(_Input);\r\n\r\nexport default Input;\r\n\r\n// 在vue中方便提示\r\n// 这里添加的类型 可以在模板中被解析\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    // 我们的接口可以自动合并\r\n    CInput: typeof Input;\r\n  }\r\n}","// select组件相关属性和TypeScript类型定义\r\n\r\nimport { ExtractPropTypes, PropType } from 'vue'\r\n\r\n// 选项接口\r\nexport interface SelectOption {\r\n  label: string\r\n  value: string | number\r\n  disabled?: boolean\r\n}\r\n\r\nexport const selectProps = {\r\n  // 绑定值\r\n  modelValue: {\r\n    // 支持单选（string/number）与多选（数组）\r\n    type: [String, Number, Array] as PropType<string | number | (string | number)[]>,\r\n    default: ''\r\n  },\r\n  // 是否多选\r\n  multiple: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 折叠标签（仅多选生效）\r\n  collapseTags: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 折叠标签展示 tooltip（使用原生 title 简化实现）\r\n  collapseTagsTooltip: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 折叠标签时最多展示的标签数量\r\n  maxCollapseTags: {\r\n    type: Number,\r\n    default: 1\r\n  },\r\n  // 选项数据\r\n  options: {\r\n    type: Array as PropType<SelectOption[]>,\r\n    default: () => []\r\n  },\r\n  // 占位符\r\n  placeholder: {\r\n    type: String,\r\n    default: '请选择'\r\n  },\r\n  // 是否禁用\r\n  disabled: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否可清空\r\n  clearable: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 尺寸\r\n  size: {\r\n    type: String as PropType<'large' | 'default' | 'small'>,\r\n    default: 'default'\r\n  },\r\n  // 是否可搜索\r\n  filterable: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 无匹配选项时显示的文字\r\n  noMatchText: {\r\n    type: String,\r\n    default: '无匹配数据'\r\n  },\r\n  // 无数据时显示的文字\r\n  noDataText: {\r\n    type: String,\r\n    default: '无数据'\r\n  },\r\n  // 下拉框的类名\r\n  popperClass: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 是否启用虚拟滚动\r\n  virtual: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 选项项高度（用于虚拟滚动计算），与样式保持一致\r\n  itemHeight: {\r\n    type: Number,\r\n    default: 34\r\n  },\r\n  // 虚拟滚动视窗保留的项目条数\r\n  keeps: {\r\n    type: Number,\r\n    default: 12\r\n  },\r\n  // 虚拟滚动前后缓冲条数\r\n  buffer: {\r\n    type: Number,\r\n    default: 3\r\n  }\r\n} as const\r\n\r\nexport type SelectProps = ExtractPropTypes<typeof selectProps>\r\n\r\n// select组件事件\r\nexport const selectEmits = {\r\n  'update:modelValue': (value: string | number | (string | number)[]) => true,\r\n  change: (value: string | number | (string | number)[]) => true,\r\n  clear: () => true,\r\n  focus: (evt: FocusEvent) => evt instanceof FocusEvent,\r\n  blur: (evt: FocusEvent) => evt instanceof FocusEvent,\r\n  visibleChange: (visible: boolean) => typeof visible === 'boolean'\r\n}\r\n\r\nexport type SelectEmits = typeof selectEmits","<template>\r\n  <div\r\n    v-click-outside=\"handleClose\"\r\n    :class=\"[\r\n      bem.b(),\r\n      bem.m(size),\r\n      bem.is('disabled', disabled),\r\n      bem.is('focus', visible),\r\n    ]\"\r\n    @click.stop.prevent=\"handleClick\"\r\n    @mouseenter=\"handleMouseEnter\"\r\n    @mouseleave=\"handleMouseLeave\"\r\n  >\r\n    <!-- 选择器输入框 -->\r\n    <div :class=\"bem.e('selection')\">\r\n      <!-- 多选占位文本 -->\r\n      <span\r\n        v-if=\"isMultiple && !hasValue && !(filterable && visible)\"\r\n        :class=\"bem.e('placeholder')\"\r\n      >\r\n        {{ props.placeholder }}\r\n      </span>\r\n\r\n      <!-- 多选标签显示区域 -->\r\n      <div v-if=\"isMultiple\" :class=\"bem.e('tags')\">\r\n        <span\r\n          v-for=\"opt in visibleTagOptions\"\r\n          :key=\"opt.value\"\r\n          :class=\"bem.e('tag')\"\r\n        >\r\n          <span :class=\"bem.e('tag-text')\">{{ opt.label }}</span>\r\n          <c-icon :class=\"bem.e('tag-close')\" @click.stop=\"removeTag(opt.value)\">\r\n            <svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n              <path fill=\"currentColor\" 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.152z\"/>\r\n            </svg>\r\n          </c-icon>\r\n        </span>\r\n        <span\r\n          v-if=\"collapsedCount > 0\"\r\n          :class=\"bem.e('counter')\"\r\n          :title=\"collapseTooltipTitle\"\r\n        >\r\n          + {{ collapsedCount }}\r\n        </span>\r\n      </div>\r\n\r\n      <input\r\n        v-if=\"!isMultiple || (isMultiple && filterable && visible)\"\r\n        ref=\"inputRef\"\r\n        :class=\"bem.e('input')\"\r\n        :value=\"displayValue\"\r\n        :placeholder=\"currentPlaceholder\"\r\n        :disabled=\"disabled\"\r\n        :readonly=\"!filterable\"\r\n        @input=\"handleInput\"\r\n        @focus=\"handleFocus\"\r\n        @blur=\"handleBlur\"\r\n        @keydown=\"handleKeydown\"\r\n      />\r\n\r\n      <!-- 清空按钮 -->\r\n      <c-icon\r\n        v-if=\"clearable && !disabled && hasValue && isHovered\"\r\n        :class=\"bem.e('clear')\"\r\n        @click.stop=\"handleClear\"\r\n      >\r\n        <svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n          <path\r\n            fill=\"currentColor\"\r\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\"\r\n          ></path>\r\n        </svg>\r\n      </c-icon>\r\n\r\n      <!-- 下拉箭头 -->\r\n      <c-icon\r\n        :class=\"[bem.e('arrow'), bem.is('reverse', visible)]\"\r\n        v-if=\"!clearable || !hasValue || disabled || !isHovered\"\r\n      >\r\n        <svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n          <path\r\n            fill=\"currentColor\"\r\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.24a30.592 30.592 0 0 0 42.752 0l340.288-331.712a29.12 29.12 0 0 0 0-41.6 30.592 30.592 0 0 0-40.832 0z\"\r\n          ></path>\r\n        </svg>\r\n      </c-icon>\r\n    </div>\r\n\r\n    <!-- 下拉选项 -->\r\n    <transition :name=\"(props.virtual && filteredOptions.length > keepsComputed) ? '' : 'c-select-dropdown'\">\r\n      <div v-show=\"visible\" :class=\"[bem.e('dropdown'), popperClass]\" ref=\"dropdownRef\" @scroll=\"handleScroll\">\r\n        <!-- 空数据处理 -->\r\n        <ul :class=\"bem.e('options')\" v-if=\"filterable && filteredOptions.length === 0 && query\">\r\n          <li :class=\"bem.e('empty')\">{{ noMatchText }}</li>\r\n        </ul>\r\n        <ul :class=\"bem.e('options')\" v-else-if=\"filteredOptions.length === 0\">\r\n          <li :class=\"bem.e('empty')\">{{ noDataText }}</li>\r\n        </ul>\r\n    \r\n        <!-- 虚拟滚动渲染 -->\r\n        <div v-else-if=\"props.virtual\" :style=\"{ height: totalHeight + 'px', position: 'relative' }\">\r\n          <ul :class=\"bem.e('options')\" :style=\"{ transform: 'translateY(' + offsetY + 'px)' }\">\r\n            <li\r\n              v-for=\"(option, index) in virtualOptions\"\r\n              :key=\"option.value\"\r\n              :class=\"[\r\n                bem.e('option'),\r\n                bem.is('selected', isSelected(option.value)),\r\n                bem.is('disabled', option.disabled ?? false),\r\n                bem.is('hover', hoverIndex === (start + index)),\r\n              ]\"\r\n              @click.stop.prevent=\"handleOptionClick(option)\"\r\n              @mouseenter=\"hoverIndex = start + index\"\r\n            >\r\n              {{ option.label }}\r\n              <c-icon v-if=\"isMultiple && isSelected(option.value)\" :class=\"bem.e('check')\">\r\n                <svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                  <path fill=\"currentColor\" d=\"M416 736 160 480l96-96 160 160 320-320 96 96-416 416z\" />\r\n                </svg>\r\n              </c-icon>\r\n            </li>\r\n          </ul>\r\n        </div>\r\n    \r\n        <!-- 非虚拟渲染 -->\r\n        <ul v-else :class=\"bem.e('options')\">\r\n          <li\r\n            v-for=\"(option, index) in filteredOptions\"\r\n            :key=\"option.value\"\r\n            :class=\"[\r\n              bem.e('option'),\r\n              bem.is('selected', isSelected(option.value)),\r\n              bem.is('disabled', option.disabled ?? false),\r\n              bem.is('hover', hoverIndex === index),\r\n            ]\"\r\n            @click.stop.prevent=\"handleOptionClick(option)\"\r\n            @mouseenter=\"hoverIndex = index\"\r\n          >\r\n            {{ option.label }}\r\n            <c-icon v-if=\"isMultiple && isSelected(option.value)\" :class=\"bem.e('check')\">\r\n              <svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                <path fill=\"currentColor\" d=\"M416 736 160 480l96-96 160 160 320-320 96 96-416 416z\" />\r\n              </svg>\r\n            </c-icon>\r\n          </li>\r\n        </ul>\r\n      </div>\r\n    </transition>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, ref, watch, nextTick } from \"vue\";\r\nimport { createNamespace } from \"@cuixingjian/cui-utils/create\";\r\nimport { selectProps, selectEmits, type SelectOption } from \"./select\";\r\n\r\n// 定义组件名称\r\ndefineOptions({\r\n  name: \"c-select\",\r\n});\r\n\r\nconst bem = createNamespace(\"select\");\r\nconst props = defineProps(selectProps);\r\nconst emit = defineEmits(selectEmits);\r\n\r\n// 响应式数据\r\nconst visible = ref(false);\r\nconst query = ref(\"\");\r\nconst hoverIndex = ref(-1);\r\nconst inputRef = ref<HTMLInputElement>();\r\nconst isHovered = ref(false);\r\n\r\n// 是否为多选模式\r\nconst isMultiple = computed(() => props.multiple);\r\n\r\n// 已选项（对象）与标签需要的数据\r\nconst selectedOptions = computed(() => {\r\n  const v = props.modelValue as any;\r\n  if (!Array.isArray(v)) return [] as SelectOption[];\r\n  const map = valueMap.value;\r\n  return v.map((val: any) => map.get(val)).filter(Boolean) as SelectOption[];\r\n});\r\n\r\nconst hasValue = computed(() => {\r\n  const v = props.modelValue as any;\r\n  return Array.isArray(v) ? v.length > 0 : v !== '' && v !== null && v !== undefined;\r\n});\r\n\r\nconst currentPlaceholder = computed(() => {\r\n  return hasValue.value ? \"\" : props.placeholder;\r\n});\r\n\r\n// 可见的标签（支持折叠）\r\nconst visibleTagOptions = computed(() => {\r\n  if (!isMultiple.value) return [] as SelectOption[];\r\n  if (!props.collapseTags) return selectedOptions.value;\r\n  const max = Math.max(1, Number(props.maxCollapseTags || 1));\r\n  return selectedOptions.value.slice(0, max);\r\n});\r\n\r\n// 折叠数量与提示内容\r\nconst collapsedCount = computed(() => {\r\n  if (!isMultiple.value || !props.collapseTags) return 0;\r\n  const max = Math.max(1, Number(props.maxCollapseTags || 1));\r\n  return Math.max(0, selectedOptions.value.length - max);\r\n});\r\n\r\nconst collapseTooltipTitle = computed(() => {\r\n  if (!props.collapseTagsTooltip || collapsedCount.value === 0) return '';\r\n  const max = Math.max(1, Number(props.maxCollapseTags || 1));\r\n  const hidden = selectedOptions.value.slice(max).map(o => o.label);\r\n  return hidden.join(', ');\r\n});\r\n\r\nconst displayValue = computed(() => {\r\n  if (isMultiple.value) {\r\n    return props.filterable && visible.value ? query.value : '';\r\n  }\r\n  // 单选：在展开且可搜索时，优先显示输入的查询内容\r\n  if (props.filterable && visible.value) {\r\n    return query.value;\r\n  }\r\n  if (hasValue.value) {\r\n    const option = valueMap.value.get(props.modelValue as any);\r\n    return option ? option.label : '';\r\n  }\r\n  return '';\r\n});\r\n\r\nconst valueMap = computed(() => new Map(props.options.map(o => [o.value, o])));\r\nconst normalizedOptions = computed(() => props.options.map(o => ({\r\n  ...o,\r\n  labelLower: (o.label ?? '').toLowerCase()\r\n})));\r\n\r\nconst filteredOptions = computed(() => {\r\n  if (!props.filterable || !query.value) {\r\n    return normalizedOptions.value;\r\n  }\r\n  const q = query.value.toLowerCase();\r\n  return normalizedOptions.value.filter((o) => o.labelLower.includes(q));\r\n});\r\n\r\n// 虚拟滚动派生\r\nconst dropdownRef = ref<HTMLElement>();\r\nconst start = ref(0);\r\nconst keepsComputed = computed(() => Math.max(1, Number(props.keeps || Math.ceil(200 / props.itemHeight))));\r\nconst bufferComputed = computed(() => Math.max(0, Number(props.buffer || 3)));\r\nconst visibleCount = computed(() => keepsComputed.value + bufferComputed.value * 2);\r\nconst totalHeight = computed(() => filteredOptions.value.length * props.itemHeight);\r\nconst offsetY = computed(() => start.value * props.itemHeight);\r\nconst virtualOptions = computed(() => {\r\n  const end = Math.min(filteredOptions.value.length, start.value + visibleCount.value);\r\n  return filteredOptions.value.slice(start.value, end);\r\n});\r\n\r\nconst handleScroll = () => {\r\n  const el = dropdownRef.value;\r\n  if (!el || !props.virtual) return;\r\n  const top = el.scrollTop;\r\n  const s = Math.max(0, Math.floor(top / props.itemHeight) - bufferComputed.value);\r\n  const maxStart = Math.max(0, filteredOptions.value.length - visibleCount.value);\r\n  start.value = Math.min(s, maxStart);\r\n};\r\n\r\n// 是否选中\r\nconst isSelected = (val: string | number) => {\r\n  const v = props.modelValue as any;\r\n  return Array.isArray(v) ? v.includes(val) : v === val;\r\n};\r\n\r\n// 方法\r\nconst handleClick = () => {\r\n  if (props.disabled) return;\r\n\r\n  visible.value = !visible.value;\r\n  if (visible.value) {\r\n    nextTick(() => {\r\n      inputRef.value?.focus();\r\n    });\r\n  }\r\n};\r\n\r\nconst handleClose = () => {\r\n  visible.value = false;\r\n  hoverIndex.value = -1;\r\n  if (props.filterable) {\r\n    query.value = \"\";\r\n  }\r\n};\r\n\r\nfunction debounce<T extends (...args: any[]) => any>(fn: T, delay = 150) {\r\n  let t: any;\r\n  return (...args: Parameters<T>) => {\r\n    if (t) clearTimeout(t);\r\n    t = setTimeout(() => fn(...args), delay);\r\n  };\r\n}\r\nconst setQueryDebounced = debounce((val: string) => {\r\n  query.value = val;\r\n  visible.value = true;\r\n}, 150);\r\n\r\nconst handleInput = (event: Event) => {\r\n  if (!props.filterable) return;\r\n  const target = event.target as HTMLInputElement;\r\n  setQueryDebounced(target.value);\r\n};\r\n\r\nconst handleFocus = (event: FocusEvent) => {\r\n  emit(\"focus\", event);\r\n};\r\n\r\nconst handleBlur = (event: FocusEvent) => {\r\n  emit(\"blur\", event);\r\n};\r\n\r\nconst handleKeydown = (event: KeyboardEvent) => {\r\n  if (!visible.value) {\r\n    if (event.key === \"Enter\" || event.key === \" \") {\r\n      event.preventDefault();\r\n      handleClick();\r\n    }\r\n    return;\r\n  }\r\n\r\n  switch (event.key) {\r\n    case \"Escape\":\r\n      event.preventDefault();\r\n      handleClose();\r\n      break;\r\n    case \"Enter\":\r\n      event.preventDefault();\r\n      if (\r\n        hoverIndex.value >= 0 &&\r\n        hoverIndex.value < filteredOptions.value.length\r\n      ) {\r\n        handleOptionClick(filteredOptions.value[hoverIndex.value]);\r\n      }\r\n      break;\r\n    case \"ArrowUp\":\r\n      event.preventDefault();\r\n      if (hoverIndex.value > 0) {\r\n        hoverIndex.value--;\r\n      } else {\r\n        hoverIndex.value = filteredOptions.value.length - 1;\r\n      }\r\n      break;\r\n    case \"ArrowDown\":\r\n      event.preventDefault();\r\n      if (hoverIndex.value < filteredOptions.value.length - 1) {\r\n        hoverIndex.value++;\r\n      } else {\r\n        hoverIndex.value = 0;\r\n      }\r\n      break;\r\n  }\r\n};\r\n\r\nconst handleOptionClick = (option: SelectOption) => {\r\n  if (option.disabled) return;\r\n\r\n  if (isMultiple.value) {\r\n    const cur = Array.isArray(props.modelValue) ? [...(props.modelValue as (string|number)[])] : [];\r\n    const idx = cur.indexOf(option.value);\r\n    if (idx > -1) cur.splice(idx, 1); else cur.push(option.value);\r\n    emit(\"update:modelValue\", cur);\r\n    emit(\"change\", cur);\r\n    // 多选不关闭下拉\r\n    if (props.filterable) {\r\n      // 选择后保留查询或清空，保持简单：清空查询\r\n      query.value = \"\";\r\n    }\r\n  } else {\r\n    emit(\"update:modelValue\", option.value);\r\n    emit(\"change\", option.value);\r\n    handleClose();\r\n  }\r\n};\r\n\r\nconst removeTag = (val: string | number) => {\r\n  if (!isMultiple.value) return;\r\n  const cur = Array.isArray(props.modelValue) ? [...(props.modelValue as (string|number)[])] : [];\r\n  const idx = cur.indexOf(val);\r\n  if (idx > -1) cur.splice(idx, 1);\r\n  emit(\"update:modelValue\", cur);\r\n  emit(\"change\", cur);\r\n};\r\n\r\nconst handleClear = () => {\r\n  if (isMultiple.value) {\r\n    const empty: (string|number)[] = [];\r\n    emit(\"update:modelValue\", empty);\r\n    emit(\"change\", empty);\r\n  } else {\r\n    emit(\"update:modelValue\", \"\");\r\n    emit(\"change\", \"\");\r\n  }\r\n  emit(\"clear\");\r\n  handleClose();\r\n};\r\n\r\nconst handleMouseEnter = () => {\r\n  isHovered.value = true;\r\n};\r\n\r\nconst handleMouseLeave = () => {\r\n  isHovered.value = false;\r\n};\r\n\r\n// 监听下拉框显示状态\r\nwatch(visible, (newVisible) => {\r\n  emit(\"visibleChange\", newVisible);\r\n\r\n  if (newVisible) {\r\n    hoverIndex.value = -1;\r\n    // 重置虚拟滚动位置\r\n    start.value = 0;\r\n    nextTick(() => {\r\n      dropdownRef.value && (dropdownRef.value.scrollTop = 0);\r\n    });\r\n    // 单选时可以初始定位到选中项\r\n    if (!isMultiple.value && hasValue.value) {\r\n      const index = filteredOptions.value.findIndex(\r\n        (opt) => opt.value === (props.modelValue as any)\r\n      );\r\n      if (index >= 0) {\r\n        hoverIndex.value = index;\r\n      }\r\n    }\r\n  }\r\n});\r\n\r\n// 扩展HTMLElement类型以支持_clickOutside属性\r\ninterface HTMLElementWithClickOutside extends HTMLElement {\r\n  _clickOutside?: (event: Event) => void;\r\n}\r\n\r\n// 点击外部关闭指令\r\nconst vClickOutside = {\r\n  mounted(el: HTMLElementWithClickOutside, binding: { value: () => void }) {\r\n    // 如果已经绑定过，先清理\r\n    if (el._clickOutside) {\r\n      document.removeEventListener(\"pointerdown\", el._clickOutside, {\r\n        capture: true,\r\n      } as any);\r\n    }\r\n\r\n    el._clickOutside = (event: Event) => {\r\n      // 确保事件目标存在且不是当前元素的子元素\r\n      if (event.target && !el.contains(event.target as Node)) {\r\n        binding.value();\r\n      }\r\n    };\r\n\r\n    // 使用 nextTick 确保在下一个事件循环中绑定，避免立即触发\r\n    nextTick(() => {\r\n      document.addEventListener(\"pointerdown\", el._clickOutside!, {\r\n        passive: true,\r\n        capture: true,\r\n      });\r\n    });\r\n  },\r\n\r\n  updated(el: HTMLElementWithClickOutside, binding: { value: () => void }) {\r\n    // 当指令更新时，确保回调函数是最新的\r\n    if (el._clickOutside) {\r\n      document.removeEventListener(\"pointerdown\", el._clickOutside, {\r\n        capture: true,\r\n      } as any);\r\n\r\n      el._clickOutside = (event: Event) => {\r\n        if (event.target && !el.contains(event.target as Node)) {\r\n          binding.value();\r\n        }\r\n      };\r\n\r\n      nextTick(() => {\r\n        document.addEventListener(\"pointerdown\", el._clickOutside!, {\r\n          passive: true,\r\n          capture: true,\r\n        });\r\n      });\r\n    }\r\n  },\r\n\r\n  unmounted(el: HTMLElementWithClickOutside) {\r\n    if (el._clickOutside) {\r\n      document.removeEventListener(\"pointerdown\", el._clickOutside, {\r\n        capture: true,\r\n      } as any);\r\n      delete el._clickOutside;\r\n    }\r\n  },\r\n};\r\n</script>\r\n","// 用来整合select组件的，最终实现导出组件\r\n\r\nimport { withInstall } from \"@cuixingjian/cui-utils/install\";\r\nimport type { SFCWithInstall } from \"../types\";\r\nimport _Select from \"./src/select.vue\";\r\n\r\nexport * from \"./src/select\";\r\nexport * from \"./src/instance\";\r\nconst Select: SFCWithInstall<typeof _Select> = withInstall(_Select);\r\n\r\nexport default Select;\r\n\r\n// 在vue中方便提示\r\n// 这里添加的类型 可以在模板中被解析\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    // 我们的接口可以自动合并\r\n    CSelect: typeof Select;\r\n  }\r\n}","// 轮播图组件相关属性和类型定义\r\n\r\nimport { ExtractPropTypes, PropType } from \"vue\"\r\n\r\nexport const carouselProps = {\r\n  // 轮播图高度\r\n  height: {\r\n    type: String,\r\n    default: \"300px\"\r\n  },\r\n  // 自动播放间隔时间（毫秒）\r\n  interval: {\r\n    type: Number,\r\n    default: 3000\r\n  },\r\n  // 是否自动播放\r\n  autoplay: {\r\n    type: Boolean,\r\n    default: true\r\n  },\r\n  // 指示器位置\r\n  indicatorPosition: {\r\n    type: String as PropType<\"bottom\" | \"top\" | \"outside\" | \"none\">,\r\n    default: \"bottom\"\r\n  },\r\n  // 切换箭头显示时机\r\n  arrow: {\r\n    type: String as PropType<\"always\" | \"hover\" | \"never\">,\r\n    default: \"hover\"\r\n  },\r\n  // 轮播方向\r\n  direction: {\r\n    type: String as PropType<\"horizontal\" | \"vertical\">,\r\n    default: \"horizontal\"\r\n  },\r\n  // 是否循环播放\r\n  loop: {\r\n    type: Boolean,\r\n    default: true\r\n  },\r\n  // 初始显示的幻灯片索引\r\n  initialIndex: {\r\n    type: Number,\r\n    default: 0\r\n  },\r\n  // 切换动画持续时间（毫秒）\r\n  duration: {\r\n    type: Number,\r\n    default: 300\r\n  },\r\n  // 是否暂停自动播放当鼠标悬停\r\n  pauseOnHover: {\r\n    type: Boolean,\r\n    default: true\r\n  }\r\n} as const\r\n\r\nexport type CarouselProps = ExtractPropTypes<typeof carouselProps>\r\n\r\n// 轮播图事件\r\nexport const carouselEmits = {\r\n  change: (current: number, prev: number) =>\r\n    typeof current === \"number\" && typeof prev === \"number\"\r\n}\r\n\r\nexport type CarouselEmits = typeof carouselEmits\r\n\r\n// 轮播图项目属性\r\nexport const carouselItemProps = {\r\n  // 幻灯片名称，可用作setActiveItem的参数\r\n  name: {\r\n    type: String,\r\n    default: \"\"\r\n  },\r\n  // 幻灯片标题\r\n  label: {\r\n    type: String,\r\n    default: \"\"\r\n  }\r\n} as const\r\n\r\nexport type CarouselItemProps = ExtractPropTypes<typeof carouselItemProps>\r\n","<template>\r\n  <div\r\n    ref=\"carouselRef\"\r\n    :class=\"[bem.b(), bem.m(direction)]\"\r\n    @mouseenter=\"handleMouseEnter\"\r\n    @mouseleave=\"handleMouseLeave\"\r\n  >\r\n    <div :class=\"bem.e('container')\" :style=\"{ height }\">\r\n      <!-- 左箭头 -->\r\n      <transition v-if=\"arrowDisplay\" name=\"carousel-arrow-left\">\r\n        <div\r\n          :class=\"[\r\n            bem.e('arrow'),\r\n            bem.em('arrow', direction === 'vertical' ? 'top' : 'left')\r\n          ]\"\r\n          @click=\"prev\"\r\n        >\r\n          <svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path\r\n              fill=\"currentColor\"\r\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\"\r\n            ></path>\r\n          </svg>\r\n        </div>\r\n      </transition>\r\n\r\n      <!-- 右箭头 -->\r\n      <transition v-if=\"arrowDisplay\" name=\"carousel-arrow-right\">\r\n        <div\r\n          :class=\"[\r\n            bem.e('arrow'),\r\n            bem.em('arrow', direction === 'vertical' ? 'bottom' : 'right')\r\n          ]\"\r\n          @click=\"next\"\r\n        >\r\n          <svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path\r\n              fill=\"currentColor\"\r\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\"\r\n            ></path>\r\n          </svg>\r\n        </div>\r\n      </transition>\r\n\r\n      <!-- 轮播内容区域 -->\r\n      <div :class=\"bem.e('wrapper')\" :style=\"wrapperStyle\">\r\n        <slot></slot>\r\n      </div>\r\n    </div>\r\n    <ul\r\n      v-if=\"indicatorPosition !== 'none' && itemCount > 0\"\r\n      :class=\"[\r\n        bem.e('indicators'),\r\n        bem.em('indicators', direction),\r\n        bem.em('indicators', indicatorPosition)\r\n      ]\"\r\n    >\r\n      <li\r\n        v-for=\"index in itemCount\"\r\n        :key=\"index - 1\"\r\n        :class=\"[\r\n          bem.e('indicator'),\r\n          bem.is('active', index - 1 === activeIndex)\r\n        ]\"\r\n        @click=\"setActiveItem(index - 1)\"\r\n      >\r\n        <div :class=\"bem.e('button')\">\r\n          <span v-if=\"itemLabels[index - 1]\">{{ itemLabels[index - 1] }}</span>\r\n        </div>\r\n      </li>\r\n    </ul>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport {\r\n  computed,\r\n  ref,\r\n  onMounted,\r\n  onBeforeUnmount,\r\n  provide,\r\n  watch,\r\n  nextTick,\r\n  useSlots\r\n} from \"vue\"\r\nimport { createNamespace } from \"@cuixingjian/cui-utils/create\"\r\nimport { carouselProps, carouselEmits } from \"./carousel\"\r\n\r\n// 定义组件名称\r\ndefineOptions({\r\n  name: \"c-carousel\"\r\n})\r\n\r\nconst bem = createNamespace(\"carousel\")\r\nconst props = defineProps(carouselProps)\r\nconst emit = defineEmits(carouselEmits)\r\nconst slots = useSlots()\r\n\r\n// 响应式数据\r\nconst activeIndex = ref(props.initialIndex)\r\nconst hover = ref(false)\r\nconst timer = ref<ReturnType<typeof setInterval> | null>(null)\r\nconst carouselRef = ref<HTMLElement>()\r\nconst itemCount = ref(0)\r\nconst itemLabels = ref<string[]>([])\r\nconst isInitialized = ref(false)\r\n\r\n// 计算属性\r\nconst arrowDisplay = computed(() => props.arrow !== \"never\")\r\n\r\nconst wrapperStyle = computed(() => {\r\n  if (itemCount.value === 0)\r\n    return {\r\n      transform: \"translateX(0)\",\r\n      transition: \"none\"\r\n    }\r\n\r\n  const translateType =\r\n    props.direction === \"vertical\" ? \"translateY\" : \"translateX\"\r\n  const translateValue = `${-activeIndex.value * 100}%`\r\n\r\n  const baseStyle = {\r\n    transform: `${translateType}(${translateValue})`,\r\n    transition: isInitialized.value\r\n      ? `transform ${props.duration}ms ease-in-out`\r\n      : \"none\"\r\n  }\r\n\r\n  if (props.direction === \"vertical\") {\r\n    return {\r\n      ...baseStyle,\r\n      flexDirection: \"column\" as const\r\n    }\r\n  } else {\r\n    return {\r\n      ...baseStyle,\r\n      flexDirection: \"row\" as const\r\n    }\r\n  }\r\n})\r\n\r\n// 方法\r\nconst startTimer = () => {\r\n  if (props.interval <= 0 || !props.autoplay || itemCount.value <= 1) return\r\n  pauseTimer()\r\n  timer.value = setInterval(() => {\r\n    next()\r\n  }, props.interval)\r\n}\r\n\r\nconst pauseTimer = () => {\r\n  if (timer.value) {\r\n    clearInterval(timer.value)\r\n    timer.value = null\r\n  }\r\n}\r\n\r\nconst resetTimer = () => {\r\n  pauseTimer()\r\n  startTimer()\r\n}\r\n\r\nconst setActiveItem = (index: number) => {\r\n  const length = itemCount.value\r\n  if (length === 0) return // 如果没有数据项 则return\r\n  // 触发change事件\r\n  if (index !== activeIndex.value) {\r\n    emit(\"change\", index, activeIndex.value)\r\n  }\r\n  activeIndex.value = index // 将当前点击项设置为激活项\r\n\r\n  if (index < 0) {\r\n    activeIndex.value = props.loop ? length - 1 : 0\r\n  } else if (index >= length) {\r\n    activeIndex.value = props.loop ? 0 : length - 1\r\n  } else {\r\n    activeIndex.value = index\r\n  }\r\n\r\n  startTimer()\r\n}\r\n\r\nconst prev = () => {\r\n  setActiveItem(activeIndex.value - 1)\r\n}\r\n\r\nconst next = () => {\r\n  setActiveItem(activeIndex.value + 1)\r\n}\r\n\r\nconst updateItemCount = () => {\r\n  const defaultSlot = slots.default?.({})\r\n  if (defaultSlot) {\r\n    // 计算carousel-item的数量\r\n    let count = 0\r\n    const labels: string[] = []\r\n\r\n    const countItems = (vnodes: any[]) => {\r\n      vnodes.forEach((vnode) => {\r\n        if (vnode.type?.name === \"c-carousel-item\") {\r\n          count++\r\n          labels.push(vnode.props?.label || \"\")\r\n        } else if (vnode.children && Array.isArray(vnode.children)) {\r\n          countItems(vnode.children)\r\n        }\r\n      })\r\n    }\r\n\r\n    countItems(defaultSlot)\r\n    itemCount.value = count\r\n    itemLabels.value = labels\r\n  }\r\n}\r\n\r\nconst handleMouseEnter = () => {\r\n  hover.value = true\r\n  if (props.pauseOnHover) {\r\n    pauseTimer()\r\n  }\r\n}\r\n\r\nconst handleMouseLeave = () => {\r\n  hover.value = false\r\n  if (props.pauseOnHover) {\r\n    startTimer()\r\n  }\r\n}\r\n\r\n// 监听器\r\nwatch(\r\n  () => activeIndex.value,\r\n  (current, prev) => {\r\n    if (prev !== -1) {\r\n      emit(\"change\", current, prev)\r\n    }\r\n  }\r\n)\r\n\r\nwatch(\r\n  () => props.autoplay,\r\n  (autoplay) => {\r\n    autoplay ? startTimer() : pauseTimer()\r\n  }\r\n)\r\n\r\nwatch(\r\n  () => props.initialIndex,\r\n  (newIndex) => {\r\n    if (newIndex >= 0 && newIndex < itemCount.value) {\r\n      activeIndex.value = newIndex\r\n    }\r\n  }\r\n)\r\n\r\n// 生命周期\r\nonMounted(async () => {\r\n  await nextTick()\r\n  updateItemCount()\r\n\r\n  // 等待下一个tick确保子组件完全渲染\r\n  await nextTick()\r\n\r\n  // 设置初始索引（不触发动画）\r\n  const initialIndex =\r\n    props.initialIndex >= 0 && props.initialIndex < itemCount.value\r\n      ? props.initialIndex\r\n      : 0\r\n\r\n  // 直接设置activeIndex，不通过setActiveItem避免触发change事件和动画\r\n  activeIndex.value = initialIndex\r\n\r\n  // 再等待一个tick确保索引设置完成\r\n  await nextTick()\r\n\r\n  // 初始化完成，启用过渡动画\r\n  isInitialized.value = true\r\n\r\n  startTimer()\r\n})\r\n\r\nonBeforeUnmount(() => {\r\n  pauseTimer()\r\n})\r\n\r\n// 提供给子组件的数据和方法\r\nprovide(\"carousel\", {\r\n  activeIndex: computed(() => activeIndex.value),\r\n  direction: computed(() => props.direction),\r\n  itemCount: computed(() => itemCount.value),\r\n  updateItemCount\r\n})\r\n\r\n// 暴露方法给父组件\r\ndefineExpose({\r\n  setActiveItem,\r\n  prev,\r\n  next\r\n})\r\n</script>\r\n","<template>\r\n  <div\r\n    :class=\"[bem.b(), bem.is('active', isActive)]\"\r\n    :style=\"itemStyle\"\r\n    @click=\"handleItemClick\"\r\n  >\r\n    <slot></slot>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, computed, inject, onMounted, getCurrentInstance } from 'vue'\r\nimport type { VNode } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { carouselItemProps } from './carousel'\r\n\r\n// 定义组件名称\r\ndefineOptions({\r\n  name: 'c-carousel-item',\r\n})\r\n\r\nconst bem = createNamespace('carousel-item')\r\nconst props = defineProps(carouselItemProps)\r\n\r\n// 获取当前组件实例\r\nconst instance = getCurrentInstance()!\r\n\r\n// 注入父组件提供的数据\r\nconst carousel = inject('carousel') as any\r\n\r\n// 计算当前项的索引\r\nconst itemIndex = ref(0)\r\n\r\n// 在挂载时注册到父组件\r\nonMounted(() => {\r\n  if (carousel?.updateItemCount) {\r\n    carousel.updateItemCount()\r\n  }\r\n\r\n  // 通过父组件的子组件列表计算索引\r\n  if (instance?.parent) {\r\n    const siblings = (instance.parent.subTree?.children || []) as VNode[]\r\n    let index = 0\r\n\r\n    for (let i = 0; i < siblings.length; i++) {\r\n      const sibling = siblings[i]\r\n      if (sibling?.component?.type?.name === 'c-carousel-item') {\r\n        if (sibling.component === instance) {\r\n          break\r\n        }\r\n        index++\r\n      }\r\n    }\r\n\r\n    itemIndex.value = index\r\n  }\r\n})\r\n\r\n// 计算是否为活动项\r\nconst isActive = computed(() => {\r\n  return carousel?.activeIndex?.value === itemIndex.value\r\n})\r\n\r\n// 计算样式\r\nconst itemStyle = computed(() => {\r\n  const direction = carousel?.direction?.value || 'horizontal'\r\n\r\n  if (direction === 'vertical') {\r\n    return {\r\n      height: '100%',\r\n      flexShrink: 0,\r\n      flexGrow: 0,\r\n    }\r\n  } else {\r\n    return {\r\n      width: '100%',\r\n      flexShrink: 0,\r\n      flexGrow: 0,\r\n    }\r\n  }\r\n})\r\n\r\n// 点击处理\r\nconst handleItemClick = () => {\r\n  // 这里可以添加点击切换逻辑，但通常轮播图不需要点击item切换\r\n  // 如果需要，可以调用父组件的setActiveItem方法\r\n}\r\n\r\n// 生命周期\r\nonMounted(() => {\r\n  // 通知父组件更新item数量\r\n  if (carousel?.updateItemCount) {\r\n    carousel.updateItemCount()\r\n  }\r\n})\r\n</script>\r\n","// 用来整合轮播图组件的，最终实现导出组件\r\n\r\nimport { withInstall } from \"@cuixingjian/cui-utils/install\"\r\nimport type { SFCWithInstall } from \"../types\"\r\nimport _Carousel from './src/carousel.vue'\r\nimport _CarouselItem from './src/carousel-item.vue'\r\n\r\nexport * from './src/carousel'\r\nexport * from './src/instance'\r\nconst Carousel: SFCWithInstall<typeof _Carousel> = withInstall(_Carousel)\r\nconst CarouselItem: SFCWithInstall<typeof _CarouselItem> = withInstall(_CarouselItem)\r\n\r\nexport { CarouselItem }\r\nexport default Carousel\r\n\r\n// 在vue中方便提示\r\n// 这里添加的类型 可以在模板中被解析\r\ndeclare module 'vue' {\r\n  export interface GlobalComponents {\r\n    // 我们的接口可以自动合并\r\n    CCarousel: typeof Carousel\r\n    CCarouselItem: typeof CarouselItem\r\n  }\r\n}","<template>\r\n  <div class=\"c-color-palette\">\r\n    <template v-if=\"type == 'sigle'\">\r\n      <div class=\"color-group\" v-for=\"(item, key) in hotColors\" :key=\"key\">\r\n        <div class=\"color-title\">\r\n          {{\r\n            item\r\n              .map((i) => i.name + \"+\")\r\n              .join(\"\")\r\n              .slice(0, -1)\r\n          }}\r\n        </div>\r\n        <div class=\"color-row\">\r\n          <div\r\n            v-for=\"color in item\"\r\n            :key=\"color.name\"\r\n            class=\"color-item\"\r\n            :style=\"{ backgroundColor: color.value }\"\r\n            @click=\"copyColor(color.value)\"\r\n            :title=\"`${color.name}: ${color.value}`\"\r\n          >\r\n            <div\r\n              class=\"color-content\"\r\n              :style=\"{ color: getTextColor(color.value) }\"\r\n            >\r\n              <div class=\"copy-text\">\r\n                {{ copiedColors[color.value] ? \"复制成功\" : \"复制\" }}\r\n              </div>\r\n              <div class=\"color-value\">{{ color.value }}</div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </template>\r\n    <template v-else>\r\n      <div\r\n        class=\"color-group\"\r\n        v-for=\"(item, key) in hotGradientColors\"\r\n        :key=\"key\"\r\n      >\r\n        <div class=\"color-title\">\r\n          {{\r\n            item\r\n              .map((i) => i.name + \"+\")\r\n              .join(\"\")\r\n              .slice(0, -1)\r\n          }}\r\n        </div>\r\n        <div\r\n          class=\"color-row gradient-box\"\r\n          :style=\"`background: linear-gradient(90deg, ${item[0].value}, ${item[1].value})`\"\r\n          :title=\"`${item[0].name} - ${item[1].name}: ${item[0].value} - ${item[1].value}`\"\r\n        >\r\n          <div\r\n            class=\"color-item\"\r\n            v-for=\"i in item\"\r\n            :key=\"i.name\"\r\n            :style=\"`background-color: ${i.value}`\"\r\n            @click=\"copyColor(i.value)\"\r\n          >\r\n            <div\r\n              class=\"color-content\"\r\n              :style=\"{ color: getTextColor(i.value) }\"\r\n            >\r\n              <div class=\"copy-text\">\r\n                {{ copiedColors[i.value] ? \"复制成功\" : \"复制\" }}\r\n              </div>\r\n              <div class=\"color-value\">{{ i.value }}</div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </template>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, reactive } from \"vue\"\r\n\r\nconst props = defineProps({\r\n  // 颜色列表\r\n  type: {\r\n    type: String,\r\n    default: () => \"sigle\"\r\n  }\r\n})\r\n\r\n// 定义组件名称\r\ndefineOptions({\r\n  name: \"CColor\"\r\n})\r\n\r\n// 热门颜色\r\nconst hotColors = ref([\r\n  [\r\n    { name: \"主蓝\", value: \"#247BA0\" },\r\n    { name: \"石绿\", value: \"#70C1B3\" },\r\n    { name: \"竹篁绿\", value: \"#B2DBBF\" },\r\n    { name: \"海沬绿\", value: \"#F3FFBD\" },\r\n    { name: \"海棠红\", value: \"#FF1654\" }\r\n  ],\r\n  [\r\n    { name: \"钢蓝\", value: \"#011627\" },\r\n    { name: \"海参灰\", value: \"#FDFFFC\" },\r\n    { name: \"石绿\", value: \"#2EC4B6\" },\r\n    { name: \"唐菖蒲红\", value: \"#E71D36\" },\r\n    { name: \"枇杷黄\", value: \"#FF9F1C\" }\r\n  ],\r\n  [\r\n    { name: \"淡曙红\", value: \"#E63946\" },\r\n    { name: \"嫩菊绿\", value: \"#F1FAEE\" },\r\n    { name: \"粉蓝色\", value: \"#A8DADC\" },\r\n    { name: \"蝶翅蓝\", value: \"#457B9D\" },\r\n    { name: \"深牡丹蓝\", value: \"#1D3557\" }\r\n  ],\r\n  [\r\n    { name: \"淡蕊香红\", value: \"#EF476F\" },\r\n    { name: \"淡密黄\", value: \"#FFD166\" },\r\n    { name: \"中等海蓝\", value: \"#06D6A0\" },\r\n    { name: \"鸢尾蓝\", value: \"#118AB2\" },\r\n    { name: \"灰蓝\", value: \"#073B4C\" }\r\n  ],\r\n  [\r\n    { name: \"枇杷黄\", value: \"#FF9F1C\" },\r\n    { name: \"蜜黄\", value: \"#FFBF69\" },\r\n    { name: \"白色\", value: \"#FFFFFF\" },\r\n    { name: \"海天蓝\", value: \"#CBF3F0\" },\r\n    { name: \"石绿\", value: \"#2EC4B6\" }\r\n  ],\r\n  [\r\n    { name: \"朱红\", value: \"#F6511D\" },\r\n    { name: \"鸡蛋黄\", value: \"#FFB400\" },\r\n    { name: \"睛蓝\", value: \"#00A6ED\" },\r\n    { name: \"芽绿\", value: \"#7FB800\" },\r\n    { name: \"酷黑\", value: \"#0D2C54\" }\r\n  ],\r\n  [\r\n    { name: \"羽扇豆蓝\", value: \"#6699CC\" },\r\n    { name: \"麦秆黄\", value: \"#FFF275\" },\r\n    { name: \"北瓜黄\", value: \"#FF8C42\" },\r\n    { name: \"珊瑚红\", value: \"#FF3C38\" },\r\n    { name: \"甜棕色\", value: \"#A23E48\" }\r\n  ],\r\n  [\r\n    { name: \"淡翠绿\", value: \"#D3F8E2\" },\r\n    { name: \"淡牵牛紫\", value: \"#E4C1F9\" },\r\n    { name: \"太妃糖粉\", value: \"#F694C1\" },\r\n    { name: \"杏仁黄\", value: \"#EDE7B1\" },\r\n    { name: \"湖水蓝\", value: \"#A9DEF9\" }\r\n  ],\r\n  [\r\n    { name: \"艾绿\", value: \"#CAD2C5\" },\r\n    { name: \"松霜绿\", value: \"#84A98C\" },\r\n    { name: \"飞泉绿\", value: \"#52796F\" },\r\n    { name: \"绿灰\", value: \"#354F52\" },\r\n    { name: \"灰蓝\", value: \"#2F3E46\" }\r\n  ],\r\n  [\r\n    { name: \"玉粉红\", value: \"#FFC09F\" },\r\n    { name: \"黄棕色\", value: \"#FFEE93\" },\r\n    { name: \"豆汁黄\", value: \"#FCF5C7\" },\r\n    { name: \"湖水蓝\", value: \"#A0CED9\" },\r\n    { name: \"碧绿色\", value: \"#ADF7B6\" }\r\n  ]\r\n])\r\n\r\n// 热门渐变色\r\nconst hotGradientColors = ref([\r\n  [\r\n    { name: \"枫叶红\", value: \"#B92B27\" },\r\n    { name: \"杜若色\", value: \"#1565C0\" }\r\n  ],\r\n  [\r\n    { name: \"钢青\", value: \"#16222A\" },\r\n    { name: \"战舰灰\", value: \"#3A6073\" }\r\n  ],\r\n  [\r\n    { name: \"潮蓝\", value: \"#2980B9\" },\r\n    { name: \"蓝松石\", value: \"#6DD5FA\" },\r\n    { name: \"白色\", value: \"#FFFFFF\" }\r\n  ],\r\n  [\r\n    { name: \"莲子白\", value: \"#EACDA3\" },\r\n    { name: \"鹿角棕\", value: \"#D6AE7B\" }\r\n  ],\r\n  [\r\n    { name: \"羽扇豆蓝\", value: \"#83A4D4\" },\r\n    { name: \"粉蓝色\", value: \"#B6FBFF\" }\r\n  ],\r\n  [\r\n    { name: \"泰坦白\", value: \"#DDD6F3\" },\r\n    { name: \"无花果红\", value: \"#FAACA8\" }\r\n  ],\r\n  [\r\n    { name: \"丁香淡紫\", value: \"#EAD6EE\" },\r\n    { name: \"蓝松石\", value: \"#A0F1EA\" }\r\n  ],\r\n  [\r\n    { name: \"加勒比海蓝\", value: \"#00C9FF\" },\r\n    { name: \"碧绿色\", value: \"#92FE9D\" }\r\n  ],\r\n  [\r\n    { name: \"蛋壳黄\", value: \"#EEBD89\" },\r\n    { name: \"紫红色\", value: \"#D13ABD\" }\r\n  ],\r\n  [\r\n    { name: \"淡蓝紫\", value: \"#9FA5D5\" },\r\n    { name: \"海沬绿\", value: \"#E8F5C6\" }\r\n  ]\r\n])\r\n\r\n// 记录已复制的颜色状态\r\nconst copiedColors = ref<Record<string, boolean>>({})\r\n\r\n// 计算颜色的相对亮度\r\nconst getLuminance = (hex: string): number => {\r\n  // 移除 # 号\r\n  const color = hex.replace(\"#\", \"\")\r\n\r\n  // 转换为 RGB\r\n  const r = parseInt(color.substr(0, 2), 16) / 255\r\n  const g = parseInt(color.substr(2, 2), 16) / 255\r\n  const b = parseInt(color.substr(4, 2), 16) / 255\r\n\r\n  // 应用 gamma 校正\r\n  const toLinear = (c: number) =>\r\n    c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4)\r\n\r\n  const rLinear = toLinear(r)\r\n  const gLinear = toLinear(g)\r\n  const bLinear = toLinear(b)\r\n\r\n  // 计算相对亮度\r\n  return 0.2126 * rLinear + 0.7152 * gLinear + 0.0722 * bLinear\r\n}\r\n\r\n// 根据背景色决定文字颜色\r\nconst getTextColor = (backgroundColor: string): string => {\r\n  const luminance = getLuminance(backgroundColor)\r\n  // 如果亮度大于 0.5，使用黑色文字；否则使用白色文字\r\n  return luminance > 0.5 ? \"#000000\" : \"#ffffff\"\r\n}\r\n\r\nconst copyColor = async (colorValue: string) => {\r\n  try {\r\n    await navigator.clipboard.writeText(colorValue)\r\n    // 设置复制成功状态\r\n    copiedColors.value[colorValue] = true\r\n\r\n    // 2秒后恢复原状态\r\n    setTimeout(() => {\r\n      copiedColors.value[colorValue] = false\r\n    }, 2000)\r\n\r\n    console.log(`颜色 ${colorValue} 已复制到剪贴板`)\r\n  } catch (err) {\r\n    console.error(\"复制失败:\", err)\r\n  }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.c-color-palette {\r\n  margin: 20px 0;\r\n  display: flex;\r\n  flex-wrap: wrap;\r\n  justify-content: space-between;\r\n  .color-group {\r\n    width: 330px;\r\n    margin-bottom: 24px;\r\n    border-radius: 8px;\r\n    overflow: hidden;\r\n    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\r\n    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\r\n    .color-title {\r\n      background: linear-gradient(\r\n        135deg,\r\n        #ffffff 0%,\r\n        #f8f9fa 50%,\r\n        #e9ecef 100%\r\n      );\r\n      padding: 7px 0px;\r\n      font-size: 13px;\r\n      color: #495057;\r\n      border-bottom: 1px solid #dee2e6;\r\n      font-weight: 600;\r\n      letter-spacing: 0.5px;\r\n      text-align: center;\r\n      position: relative;\r\n      box-shadow: 0 2px 4px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04),\r\n        inset 0 1px 0 rgba(255, 255, 255, 0.8);\r\n      text-shadow: 0 1px 2px rgba(255, 255, 255, 0.9);\r\n      transition: all 0.2s ease;\r\n\r\n      &:hover {\r\n        background: linear-gradient(\r\n          135deg,\r\n          #ffffff 0%,\r\n          #f1f3f4 50%,\r\n          #e3e6ea 100%\r\n        );\r\n        color: #343a40;\r\n        box-shadow: 0 3px 6px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.06),\r\n          inset 0 1px 0 rgba(255, 255, 255, 0.9);\r\n      }\r\n    }\r\n    .color-row {\r\n      display: flex;\r\n      height: 80px;\r\n      overflow: hidden;\r\n      width: 100%;\r\n\r\n      .color-item {\r\n        flex: 1 1 0;\r\n        min-width: 0;\r\n        font-size: 12px;\r\n        cursor: pointer;\r\n        transition: flex 0.3s cubic-bezier(0.4, 0, 0.2, 1);\r\n        box-sizing: border-box;\r\n        position: relative;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n\r\n        .color-content {\r\n          display: flex;\r\n          flex-direction: column;\r\n          align-items: center;\r\n          justify-content: center;\r\n          text-align: center;\r\n          text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\r\n          opacity: 0;\r\n          transition: opacity 0.2s ease;\r\n          .copy-text {\r\n            font-size: 11px;\r\n            font-weight: 500;\r\n            margin-bottom: 2px;\r\n            letter-spacing: 0.5px;\r\n          }\r\n\r\n          .color-value {\r\n            font-size: 10px;\r\n            font-family: \"Courier New\", monospace;\r\n            opacity: 0.9;\r\n          }\r\n        }\r\n\r\n        &:hover .color-content {\r\n          opacity: 1;\r\n        }\r\n      }\r\n\r\n      // 当鼠标悬停在color-row上时的效果\r\n      &:hover {\r\n        .color-item {\r\n          flex: 1 1 0; // 其他项变窄\r\n        }\r\n\r\n        .color-item:hover {\r\n          flex: 2 1 0; // 悬停的项变宽\r\n        }\r\n      }\r\n    }\r\n    // 渐变色\r\n    .gradient-box {\r\n      .color-item {\r\n        display: none;\r\n\r\n        &:hover {\r\n          animation: 0.2s ease-in-out;\r\n        }\r\n        .color-content {\r\n          height: 100%;\r\n        }\r\n      }\r\n      &:hover {\r\n        .color-item {\r\n          display: block;\r\n        }\r\n        .color-item:hover {\r\n          flex: 2 1 0; // 悬停的项变宽\r\n        }\r\n      }\r\n    }\r\n  }\r\n}\r\n</style>\r\n","// 用来整合组件的，最终实现导出组件\r\n\r\nimport { withInstall } from \"@cuixingjian/cui-utils/install\"\r\nimport type { SFCWithInstall } from \"../types\"\r\nimport _Color from \"./src/color.vue\"\r\n\r\nexport * from \"./src/instance\"\r\nconst Color: SFCWithInstall<typeof _Color> = withInstall(_Color)\r\n\r\nexport default Color\r\n\r\n// 在vue中方便提示\r\n// 这里添加的类型 可以在模板中被解析\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    // 我们的接口可以自动合并\r\n    CColor: typeof Color\r\n  }\r\n}\r\n","// color-picker 组件相关属性和 TypeScript 类型定义\r\n\r\nimport { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport const colorPickerProps = {\r\n  // 绑定值（支持 hex 字符串）\r\n  modelValue: {\r\n    type: String,\r\n    default: '#409eff'\r\n  },\r\n  // 组件大小\r\n  size: {\r\n    type: String as PropType<'large' | 'default' | 'small'>,\r\n    default: 'default'\r\n  },\r\n  // 是否禁用\r\n  disabled: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否可清空\r\n  clearable: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否显示透明度选择器\r\n  showAlpha: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 颜色格式（输出格式）\r\n  colorFormat: {\r\n    type: String as PropType<'hex' | 'rgb' | 'rgba'>,\r\n    default: 'hex'\r\n  },\r\n  // 预设颜色列表\r\n  predefine: {\r\n    type: Array as PropType<string[]>,\r\n    default: () => []\r\n  },\r\n  // 是否禁用透明度\r\n  disabledAlpha: {\r\n    type: Boolean,\r\n    default: false\r\n  }\r\n} as const\r\n\r\nexport type ColorPickerProps = ExtractPropTypes<typeof colorPickerProps>\r\n\r\n// color-picker 事件\r\nexport const colorPickerEmits = {\r\n  'update:modelValue': (value: string) => true,\r\n  change: (value: string) => true,\r\n  activeChange: (value: string) => true,\r\n  clear: () => true\r\n}\r\n\r\nexport type ColorPickerEmits = typeof colorPickerEmits\r\n\r\n","// 颜色管理类，参考 Element Plus 实现\r\n\r\nexport interface RGB {\r\n  r: number\r\n  g: number\r\n  b: number\r\n}\r\n\r\nexport interface HSV {\r\n  h: number\r\n  s: number\r\n  v: number\r\n}\r\n\r\nexport interface Alpha {\r\n  a: number\r\n}\r\n\r\nexport type ColorFormat = 'hex' | 'rgb' | 'rgba' | 'hsv'\r\n\r\nconst hexReg = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i\r\nconst rgbReg = /^rgb\\(|^rgba\\(/\r\nconst hexToRgbReg = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i\r\nconst hexToRgbRegShorthand = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i\r\n\r\nexport class Color {\r\n  private _hue = 0\r\n  private _saturation = 100\r\n  private _value = 100\r\n  private _alpha = 1\r\n  public enableAlpha = false\r\n  public format: ColorFormat = 'hex'\r\n\r\n  constructor(color?: string | RGB | HSV, enableAlpha = false) {\r\n    this.enableAlpha = enableAlpha\r\n\r\n    if (color) {\r\n      if (typeof color === 'string') {\r\n        this.fromString(color)\r\n      } else if (typeof color === 'object') {\r\n        if ('r' in color && 'g' in color && 'b' in color) {\r\n          this.fromRgb(color as RGB)\r\n        } else if ('h' in color && 's' in color && 'v' in color) {\r\n          this.fromHsv(color as HSV)\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  get hue(): number {\r\n    return this._hue\r\n  }\r\n\r\n  set hue(value: number) {\r\n    this._hue = Math.max(0, Math.min(360, value))\r\n  }\r\n\r\n  get saturation(): number {\r\n    return this._saturation\r\n  }\r\n\r\n  set saturation(value: number) {\r\n    this._saturation = Math.max(0, Math.min(100, value))\r\n  }\r\n\r\n  get value(): number {\r\n    return this._value\r\n  }\r\n\r\n  set value(value: number) {\r\n    this._value = Math.max(0, Math.min(100, value))\r\n  }\r\n\r\n  get alpha(): number {\r\n    return this._alpha\r\n  }\r\n\r\n  set alpha(value: number) {\r\n    this._alpha = Math.max(0, Math.min(1, value))\r\n  }\r\n\r\n  // 从字符串解析颜色\r\n  fromString(color: string): void {\r\n    if (!color) {\r\n      this._hue = 0\r\n      this._saturation = 100\r\n      this._value = 100\r\n      this._alpha = 1\r\n      return\r\n    }\r\n\r\n    if (hexReg.test(color)) {\r\n      this.fromHex(color)\r\n    } else if (rgbReg.test(color)) {\r\n      this.fromRgbString(color)\r\n    } else {\r\n      this.fromHex('#409EFF') // 默认颜色\r\n    }\r\n  }\r\n\r\n  // 从 HEX 字符串解析\r\n  fromHex(hex: string): void {\r\n    hex = hex.replace('#', '')\r\n    let r: number, g: number, b: number\r\n\r\n    if (hex.length === 3) {\r\n      r = parseInt(hex[0] + hex[0], 16)\r\n      g = parseInt(hex[1] + hex[1], 16)\r\n      b = parseInt(hex[2] + hex[2], 16)\r\n    } else if (hex.length === 6) {\r\n      r = parseInt(hex.substring(0, 2), 16)\r\n      g = parseInt(hex.substring(2, 4), 16)\r\n      b = parseInt(hex.substring(4, 6), 16)\r\n    } else {\r\n      r = 64\r\n      g = 158\r\n      b = 255\r\n    }\r\n\r\n    this.fromRgb({ r, g, b })\r\n  }\r\n\r\n  // 从 RGB 字符串解析\r\n  fromRgbString(rgb: string): void {\r\n    const matches = rgb.match(/(\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*([\\d.]+))?/)\r\n    if (matches) {\r\n      const r = parseInt(matches[1])\r\n      const g = parseInt(matches[2])\r\n      const b = parseInt(matches[3])\r\n      const a = matches[4] ? parseFloat(matches[4]) : 1\r\n      this.fromRgb({ r, g, b })\r\n      this._alpha = a\r\n    }\r\n  }\r\n\r\n  // 从 RGB 对象解析\r\n  fromRgb(rgb: RGB): void {\r\n    const hsv = this.rgbToHsv(rgb.r, rgb.g, rgb.b)\r\n    this._hue = hsv.h\r\n    this._saturation = hsv.s\r\n    this._value = hsv.v\r\n  }\r\n\r\n  // 从 HSV 对象解析\r\n  fromHsv(hsv: HSV): void {\r\n    this._hue = hsv.h\r\n    this._saturation = hsv.s\r\n    this._value = hsv.v\r\n  }\r\n\r\n  // RGB 转 HSV\r\n  rgbToHsv(r: number, g: number, b: number): HSV {\r\n    r = r / 255\r\n    g = g / 255\r\n    b = b / 255\r\n\r\n    const max = Math.max(r, g, b)\r\n    const min = Math.min(r, g, b)\r\n    let h = 0\r\n    const delta = max - min\r\n    const s = max === 0 ? 0 : delta / max\r\n    const v = max\r\n\r\n    if (max !== min) {\r\n      switch (max) {\r\n        case r:\r\n          h = ((g - b) / delta + (g < b ? 6 : 0)) / 6\r\n          break\r\n        case g:\r\n          h = ((b - r) / delta + 2) / 6\r\n          break\r\n        case b:\r\n          h = ((r - g) / delta + 4) / 6\r\n          break\r\n      }\r\n    }\r\n\r\n    return {\r\n      h: Math.round(h * 360),\r\n      s: Math.round(s * 100),\r\n      v: Math.round(v * 100)\r\n    }\r\n  }\r\n\r\n  // HSV 转 RGB\r\n  hsvToRgb(h: number, s: number, v: number): RGB {\r\n    s = s / 100\r\n    v = v / 100\r\n\r\n    const c = v * s\r\n    const x = c * (1 - Math.abs(((h / 60) % 2) - 1))\r\n    const m = v - c\r\n    let r = 0\r\n    let g = 0\r\n    let b = 0\r\n\r\n    if (h >= 0 && h < 60) {\r\n      r = c\r\n      g = x\r\n      b = 0\r\n    } else if (h >= 60 && h < 120) {\r\n      r = x\r\n      g = c\r\n      b = 0\r\n    } else if (h >= 120 && h < 180) {\r\n      r = 0\r\n      g = c\r\n      b = x\r\n    } else if (h >= 180 && h < 240) {\r\n      r = 0\r\n      g = x\r\n      b = c\r\n    } else if (h >= 240 && h < 300) {\r\n      r = x\r\n      g = 0\r\n      b = c\r\n    } else if (h >= 300 && h < 360) {\r\n      r = c\r\n      g = 0\r\n      b = x\r\n    }\r\n\r\n    return {\r\n      r: Math.round((r + m) * 255),\r\n      g: Math.round((g + m) * 255),\r\n      b: Math.round((b + m) * 255)\r\n    }\r\n  }\r\n\r\n  // 获取 RGB 对象\r\n  toRgb(): RGB {\r\n    return this.hsvToRgb(this._hue, this._saturation, this._value)\r\n  }\r\n\r\n  // 获取 RGB 字符串\r\n  toRgbString(): string {\r\n    const rgb = this.toRgb()\r\n    if (this.enableAlpha) {\r\n      return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${this._alpha})`\r\n    }\r\n    return `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`\r\n  }\r\n\r\n  // 获取 HEX 字符串\r\n  toHex(): string {\r\n    const rgb = this.toRgb()\r\n    const hex = [rgb.r, rgb.g, rgb.b]\r\n      .map(x => {\r\n        const h = Math.round(x).toString(16)\r\n        return h.length === 1 ? '0' + h : h\r\n      })\r\n      .join('')\r\n    return `#${hex}`\r\n  }\r\n\r\n  // 获取 HSV 对象\r\n  toHsv(): HSV {\r\n    return {\r\n      h: this._hue,\r\n      s: this._saturation,\r\n      v: this._value\r\n    }\r\n  }\r\n\r\n  // 格式化输出\r\n  toString(format?: ColorFormat): string {\r\n    const fmt = format || this.format\r\n    switch (fmt) {\r\n      case 'rgb':\r\n        return this.toRgbString()\r\n      case 'hsv':\r\n        const hsv = this.toHsv()\r\n        if (this.enableAlpha) {\r\n          return `hsva(${hsv.h}, ${hsv.s}%, ${hsv.v}%, ${this._alpha})`\r\n        }\r\n        return `hsv(${hsv.h}, ${hsv.s}%, ${hsv.v}%)`\r\n      case 'hex':\r\n      default:\r\n        return this.toHex()\r\n    }\r\n  }\r\n\r\n  // 比较颜色\r\n  compare(color: Color): boolean {\r\n    return (\r\n      this._hue === color._hue &&\r\n      this._saturation === color._saturation &&\r\n      this._value === color._value &&\r\n      this._alpha === color._alpha\r\n    )\r\n  }\r\n\r\n  // 克隆颜色\r\n  clone(): Color {\r\n    const color = new Color()\r\n    color._hue = this._hue\r\n    color._saturation = this._saturation\r\n    color._value = this._value\r\n    color._alpha = this._alpha\r\n    color.enableAlpha = this.enableAlpha\r\n    color.format = this.format\r\n    return color\r\n  }\r\n}\r\n\r\n","<template>\r\n  <div\r\n    ref=\"pickerRef\"\r\n    v-click-outside=\"clickOutsideOptions\"\r\n    :class=\"[bem.b(), bem.m(size), bem.is('disabled', disabled)]\"\r\n  >\r\n    <!-- 颜色选择器触发器 -->\r\n    <div :class=\"bem.e('trigger')\" @click=\"handleTriggerClick\">\r\n      <div\r\n        :class=\"bem.e('color-preview')\"\r\n        :style=\"{ backgroundColor: displayColor }\"\r\n      >\r\n        <span v-if=\"!hasValue\" :class=\"bem.e('empty')\">无</span>\r\n      </div>\r\n      <c-icon\r\n        v-if=\"clearable && hasValue && !disabled\"\r\n        :class=\"bem.e('clear')\"\r\n        @click.stop=\"handleClear\"\r\n      >\r\n        <svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n          <path\r\n            fill=\"currentColor\"\r\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\"\r\n          />\r\n        </svg>\r\n      </c-icon>\r\n    </div>\r\n\r\n    <!-- 颜色选择面板 -->\r\n    <transition name=\"c-color-picker-dropdown\">\r\n      <div v-show=\"visible\" :class=\"[bem.e('panel'), popperClass]\">\r\n        <!-- 颜色面板主体 -->\r\n        <div :class=\"bem.e('main')\">\r\n          <!-- 饱和度/亮度选择区域 -->\r\n          <div\r\n            ref=\"saturationRef\"\r\n            :class=\"bem.e('saturation')\"\r\n            :style=\"{ backgroundColor: saturationBackground }\"\r\n            @mousedown=\"handleSaturationMouseDown\"\r\n          >\r\n            <div :class=\"bem.e('saturation-white')\"></div>\r\n            <div :class=\"bem.e('saturation-black')\"></div>\r\n            <div\r\n              :class=\"bem.e('saturation-pointer')\"\r\n              :style=\"{\r\n                left: saturationLeft + 'px',\r\n                top: saturationTop + 'px',\r\n              }\"\r\n            >\r\n              <div :class=\"bem.e('saturation-pointer-inner')\"></div>\r\n            </div>\r\n          </div>\r\n\r\n          <!-- 色相滑块 -->\r\n          <div\r\n            ref=\"hueRef\"\r\n            :class=\"bem.e('hue')\"\r\n            @mousedown=\"handleHueMouseDown\"\r\n          >\r\n            <div\r\n              :class=\"bem.e('hue-pointer')\"\r\n              :style=\"{ left: hueLeft + 'px' }\"\r\n            >\r\n              <div\r\n                :class=\"bem.e('hue-pointer-inner')\"\r\n                :style=\"{\r\n                  backgroundColor: `hsl(${currentColor.hue}, 100%, 50%)`,\r\n                }\"\r\n              ></div>\r\n            </div>\r\n          </div>\r\n\r\n          <!-- 透明度滑块 -->\r\n          <div\r\n            v-if=\"props.showAlpha && !props.disabledAlpha\"\r\n            ref=\"alphaWrapperRef\"\r\n            :class=\"bem.e('alpha-wrapper')\"\r\n          >\r\n            <div\r\n              ref=\"alphaRef\"\r\n              :class=\"bem.e('alpha')\"\r\n              @mousedown=\"handleAlphaMouseDown\"\r\n            >\r\n              <div :class=\"bem.e('alpha-track')\">\r\n                <div\r\n                  :class=\"bem.e('alpha-bg')\"\r\n                  :style=\"{ backgroundImage: alphaBackground }\"\r\n                ></div>\r\n              </div>\r\n            </div>\r\n            <div\r\n              :class=\"bem.e('alpha-pointer')\"\r\n              :style=\"{ left: alphaLeft + 'px' }\"\r\n              @mousedown.stop=\"handleAlphaMouseDown\"\r\n            >\r\n              <div\r\n                :class=\"bem.e('alpha-pointer-inner')\"\r\n                :style=\"{\r\n                  backgroundColor: `hsl(${currentColor.hue}, 100%, 50%)`,\r\n                }\"\r\n              ></div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- 颜色值输入区域 -->\r\n        <div :class=\"bem.e('input')\">\r\n          <div :class=\"bem.e('input-wrapper')\">\r\n            <div :class=\"bem.e('input-row')\">\r\n              <div :class=\"bem.e('input-label')\">HEX11</div>\r\n              <c-input\r\n                v-model=\"hexInput\"\r\n                :class=\"bem.e('input-value')\"\r\n                size=\"small\"\r\n                @change=\"handleHexChange\"\r\n              />\r\n            </div>\r\n            <div\r\n              v-if=\"props.showAlpha && !props.disabledAlpha\"\r\n              :class=\"bem.e('input-row')\"\r\n            >\r\n              <c-input\r\n                v-model=\"alphaPercentInput\"\r\n                :class=\"bem.e('input-value')\"\r\n                size=\"small\"\r\n                type=\"text\"\r\n                @input=\"handleAlphaPercentInput\"\r\n                @keydown=\"handleAlphaPercentKeydown\"\r\n                @change=\"handleAlphaPercentChange\"\r\n                @blur=\"handleAlphaPercentBlur\"\r\n                @clear=\"handleAlphaPercentClear\"\r\n              />\r\n              <span :class=\"bem.e('input-suffix')\">%</span>\r\n            </div>\r\n            <!-- 最终颜色预览 -->\r\n            <div :class=\"bem.e('final-color-wrapper')\">\r\n              <div :class=\"bem.e('final-color-preview')\">\r\n                <div\r\n                  :class=\"bem.e('final-color-inner')\"\r\n                  :style=\"{ backgroundColor: finalColor }\"\r\n                ></div>\r\n              </div>\r\n              <div\r\n                v-if=\"props.showAlpha && !props.disabledAlpha\"\r\n                :class=\"bem.e('final-color-alpha')\"\r\n              >\r\n                {{ Math.round(currentColor.alpha * 100) }}%\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- 预设颜色 -->\r\n        <div v-if=\"predefine.length > 0\" :class=\"bem.e('predefine')\">\r\n          <div\r\n            v-for=\"(color, index) in predefine\"\r\n            :key=\"index\"\r\n            :class=\"[\r\n              bem.e('predefine-color'),\r\n              bem.is('selected', isPredefineSelected(color)),\r\n            ]\"\r\n            :style=\"{ backgroundColor: color }\"\r\n            @click=\"handlePredefineClick(color)\"\r\n          >\r\n            <c-icon\r\n              v-if=\"isPredefineSelected(color)\"\r\n              :class=\"bem.e('predefine-check')\"\r\n            >\r\n              <svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                <path\r\n                  fill=\"currentColor\"\r\n                  d=\"M416 736 160 480l96-96 160 160 320-320 96 96-416 416z\"\r\n                />\r\n              </svg>\r\n            </c-icon>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </transition>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, computed, watch, onMounted, onBeforeUnmount, nextTick } from \"vue\";\r\nimport { createNamespace } from \"@cuixingjian/cui-utils/create\";\r\nimport { VClickOutside } from \"@cuixingjian/cui-utils\";\r\nimport { colorPickerProps, colorPickerEmits } from \"./color-picker\";\r\nimport { Color } from \"./color\";\r\nimport CInput from \"../../input/src/input.vue\";\r\n\r\ndefineOptions({\r\n  name: \"CColorPicker\",\r\n});\r\n\r\n// 注册点击外部关闭指令\r\nconst vClickOutside = VClickOutside;\r\n\r\nconst bem = createNamespace(\"color-picker\");\r\nconst props = defineProps(colorPickerProps);\r\nconst emit = defineEmits(colorPickerEmits);\r\n\r\n// 面板显示状态\r\nconst visible = ref(false);\r\nconst popperClass = ref(\"\");\r\n\r\n// 颜色对象\r\nconst currentColor = ref(\r\n  new Color(props.modelValue as string, props.showAlpha && !props.disabledAlpha)\r\n);\r\n\r\n// 引用\r\nconst saturationRef = ref<HTMLElement>();\r\nconst hueRef = ref<HTMLElement>();\r\nconst alphaRef = ref<HTMLElement>();\r\n\r\n// 拖拽状态\r\nconst dragging = ref(false);\r\nlet currentDragging: \"saturation\" | \"hue\" | \"alpha\" | null = null;\r\n\r\n// 计算属性\r\nconst hasValue = computed(() => {\r\n  return props.modelValue && props.modelValue !== \"\";\r\n});\r\n\r\nconst displayColor = computed(() => {\r\n  if (!hasValue.value) return \"transparent\";\r\n  return currentColor.value.toString(props.colorFormat as any);\r\n});\r\n\r\nconst saturationBackground = computed(() => {\r\n  return `hsl(${currentColor.value.hue}, 100%, 50%)`;\r\n});\r\n\r\nconst alphaBackground = computed(() => {\r\n  const rgb = currentColor.value.toRgb();\r\n  const rgbString = `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`;\r\n  // 左边透明（alpha = 0），右边实心颜色（alpha = 1）\r\n  return `linear-gradient(to right, transparent, ${rgbString})`;\r\n});\r\n\r\nconst hexInput = ref(\"\");\r\nconst alphaPercentInput = ref(\"100\");\r\n// 标记是否正在清空操作\r\nconst isClearing = ref(false);\r\n\r\nconst finalColor = computed(() => {\r\n  if (props.showAlpha && !props.disabledAlpha) {\r\n    return currentColor.value.toRgbString();\r\n  }\r\n  const rgb = currentColor.value.toRgb();\r\n  return `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`;\r\n});\r\n\r\n// 指针位置\r\nconst saturationLeft = computed(() => {\r\n  if (!saturationRef.value) return 0;\r\n  return (\r\n    (currentColor.value.saturation / 100) * saturationRef.value.offsetWidth\r\n  );\r\n});\r\n\r\nconst saturationTop = computed(() => {\r\n  if (!saturationRef.value) return 0;\r\n  return (\r\n    ((100 - currentColor.value.value) / 100) * saturationRef.value.offsetHeight\r\n  );\r\n});\r\n\r\nconst hueLeft = computed(() => {\r\n  if (!hueRef.value) return 0;\r\n  return (currentColor.value.hue / 360) * hueRef.value.offsetWidth;\r\n});\r\n\r\nconst alphaLeft = computed(() => {\r\n  if (!alphaRef.value) return 0;\r\n  // 按钮中心对齐到滑块位置\r\n  return currentColor.value.alpha * alphaRef.value.offsetWidth;\r\n});\r\n\r\n// 更新颜色值\r\nfunction updateColor(): void {\r\n  const value = currentColor.value.toString(props.colorFormat as any);\r\n  emit(\"update:modelValue\", value);\r\n  emit(\"activeChange\", value);\r\n\r\n  // 更新输入框\r\n  hexInput.value = currentColor.value.toHex().replace(\"#\", \"\");\r\n  if (props.showAlpha && !props.disabledAlpha) {\r\n    // 如果正在清空操作，不更新输入框（避免覆盖清空后的值）\r\n    if (!isClearing.value) {\r\n      alphaPercentInput.value = String(\r\n        Math.round(currentColor.value.alpha * 100)\r\n      );\r\n    }\r\n  }\r\n}\r\n\r\n// 初始化颜色\r\nfunction initColor(): void {\r\n  if (!hasValue.value) {\r\n    currentColor.value = new Color(\r\n      \"#409EFF\",\r\n      props.showAlpha && !props.disabledAlpha\r\n    );\r\n    currentColor.value.format = props.colorFormat as any;\r\n    updateColor();\r\n    return;\r\n  }\r\n\r\n  const color = new Color(\r\n    props.modelValue as string,\r\n    props.showAlpha && !props.disabledAlpha\r\n  );\r\n  color.format = props.colorFormat as any;\r\n  currentColor.value = color;\r\n  updateColor();\r\n}\r\n\r\n// 事件处理\r\nfunction handleTriggerClick(): void {\r\n  if (props.disabled) return;\r\n  visible.value = !visible.value;\r\n}\r\n\r\nfunction handleClose(): void {\r\n  if (dragging.value) return;\r\n  if (!visible.value) return;\r\n  visible.value = false;\r\n  const value = currentColor.value.toString(props.colorFormat as any);\r\n  emit(\"change\", value);\r\n}\r\n\r\n// 点击外部关闭配置\r\nconst clickOutsideOptions = computed(() => ({\r\n  enabled: visible.value && !dragging.value,\r\n  onOutside: handleClose,\r\n}));\r\n\r\nfunction handleClear(): void {\r\n  if (props.disabled) return;\r\n  emit(\"update:modelValue\", \"\");\r\n  emit(\"change\", \"\");\r\n  emit(\"clear\");\r\n  visible.value = false;\r\n}\r\n\r\n// 饱和度/亮度选择\r\nfunction handleSaturationMouseDown(e: MouseEvent): void {\r\n  if (props.disabled) return;\r\n  e.preventDefault();\r\n  e.stopPropagation();\r\n\r\n  dragging.value = true;\r\n  currentDragging = \"saturation\";\r\n\r\n  updateSaturation(e);\r\n\r\n  const handleMouseMove = (e: MouseEvent) => {\r\n    if (currentDragging === \"saturation\") {\r\n      e.preventDefault();\r\n      updateSaturation(e);\r\n    }\r\n  };\r\n\r\n  const handleMouseUp = () => {\r\n    dragging.value = false;\r\n    currentDragging = null;\r\n    document.removeEventListener(\"mousemove\", handleMouseMove);\r\n    document.removeEventListener(\"mouseup\", handleMouseUp);\r\n  };\r\n\r\n  document.addEventListener(\"mousemove\", handleMouseMove);\r\n  document.addEventListener(\"mouseup\", handleMouseUp);\r\n}\r\n\r\nfunction updateSaturation(e: MouseEvent): void {\r\n  if (!saturationRef.value || currentDragging !== \"saturation\") return;\r\n\r\n  const rect = saturationRef.value.getBoundingClientRect();\r\n  let left = e.clientX - rect.left;\r\n  let top = e.clientY - rect.top;\r\n\r\n  left = Math.max(0, Math.min(left, rect.width));\r\n  top = Math.max(0, Math.min(top, rect.height));\r\n\r\n  currentColor.value.saturation = Math.round((left / rect.width) * 100);\r\n  currentColor.value.value = Math.round(100 - (top / rect.height) * 100);\r\n  updateColor();\r\n}\r\n\r\n// 色相选择\r\nfunction handleHueMouseDown(e: MouseEvent): void {\r\n  if (props.disabled) return;\r\n  e.preventDefault();\r\n  e.stopPropagation();\r\n\r\n  dragging.value = true;\r\n  currentDragging = \"hue\";\r\n\r\n  updateHue(e);\r\n\r\n  const handleMouseMove = (e: MouseEvent) => {\r\n    if (currentDragging === \"hue\") {\r\n      e.preventDefault();\r\n      updateHue(e);\r\n    }\r\n  };\r\n\r\n  const handleMouseUp = () => {\r\n    dragging.value = false;\r\n    currentDragging = null;\r\n    document.removeEventListener(\"mousemove\", handleMouseMove);\r\n    document.removeEventListener(\"mouseup\", handleMouseUp);\r\n  };\r\n\r\n  document.addEventListener(\"mousemove\", handleMouseMove);\r\n  document.addEventListener(\"mouseup\", handleMouseUp);\r\n}\r\n\r\nfunction updateHue(e: MouseEvent): void {\r\n  if (!hueRef.value || currentDragging !== \"hue\") return;\r\n\r\n  const rect = hueRef.value.getBoundingClientRect();\r\n  let left = e.clientX - rect.left;\r\n\r\n  left = Math.max(0, Math.min(left, rect.width));\r\n\r\n  currentColor.value.hue = Math.round((left / rect.width) * 360);\r\n  updateColor();\r\n}\r\n\r\n// 透明度选择\r\nfunction handleAlphaMouseDown(e: MouseEvent): void {\r\n  if (props.disabled || props.disabledAlpha) return;\r\n  e.preventDefault();\r\n  e.stopPropagation();\r\n\r\n  // 如果点击的是按钮本身，也需要更新位置\r\n  const target = e.target as HTMLElement;\r\n  if (target.closest(\".c-color-picker__alpha-pointer\")) {\r\n    // 点击按钮时，根据鼠标位置更新\r\n    if (alphaRef.value) {\r\n      const rect = alphaRef.value.getBoundingClientRect();\r\n      let left = e.clientX - rect.left;\r\n      left = Math.max(0, Math.min(left, rect.width));\r\n      currentColor.value.alpha = Math.round((left / rect.width) * 100) / 100;\r\n      updateColor();\r\n    }\r\n  }\r\n\r\n  dragging.value = true;\r\n  currentDragging = \"alpha\";\r\n\r\n  updateAlpha(e);\r\n\r\n  const handleMouseMove = (e: MouseEvent) => {\r\n    if (currentDragging === \"alpha\") {\r\n      e.preventDefault();\r\n      updateAlpha(e);\r\n    }\r\n  };\r\n\r\n  const handleMouseUp = () => {\r\n    dragging.value = false;\r\n    currentDragging = null;\r\n    document.removeEventListener(\"mousemove\", handleMouseMove);\r\n    document.removeEventListener(\"mouseup\", handleMouseUp);\r\n  };\r\n\r\n  document.addEventListener(\"mousemove\", handleMouseMove);\r\n  document.addEventListener(\"mouseup\", handleMouseUp);\r\n}\r\n\r\nfunction updateAlpha(e: MouseEvent): void {\r\n  if (!alphaRef.value || props.disabledAlpha || currentDragging !== \"alpha\")\r\n    return;\r\n\r\n  const rect = alphaRef.value.getBoundingClientRect();\r\n  let left = e.clientX - rect.left;\r\n\r\n  left = Math.max(0, Math.min(left, rect.width));\r\n\r\n  currentColor.value.alpha = Math.round((left / rect.width) * 100) / 100;\r\n  updateColor();\r\n}\r\n\r\n// 获取 alpha 容器引用（用于计算位置）\r\nconst alphaWrapperRef = ref<HTMLElement>();\r\n\r\n// 输入框变化\r\nfunction handleHexChange(): void {\r\n  const hex = hexInput.value;\r\n  if (/^[0-9A-Fa-f]{6}$/.test(hex)) {\r\n    currentColor.value.fromHex(\"#\" + hex);\r\n    updateColor();\r\n  }\r\n}\r\n\r\n// 透明度输入框按键事件 - 阻止非数字字符输入\r\nfunction handleAlphaPercentKeydown(event: KeyboardEvent): void {\r\n  // 允许的功能键：Backspace, Delete, Tab, Escape, Enter, 方向键等\r\n  const allowedKeys = [\r\n    \"Backspace\",\r\n    \"Delete\",\r\n    \"Tab\",\r\n    \"Escape\",\r\n    \"Enter\",\r\n    \"ArrowLeft\",\r\n    \"ArrowRight\",\r\n    \"ArrowUp\",\r\n    \"ArrowDown\",\r\n    \"Home\",\r\n    \"End\",\r\n  ];\r\n\r\n  // 如果按下的是功能键，允许\r\n  if (allowedKeys.includes(event.key)) {\r\n    return;\r\n  }\r\n\r\n  // 如果按下 Ctrl/Cmd + A/C/V/X，允许（全选、复制、粘贴、剪切）\r\n  // 注意：粘贴的内容会在 @input 事件中被过滤\r\n  if (event.ctrlKey || event.metaKey) {\r\n    if ([\"a\", \"c\", \"v\", \"x\"].includes(event.key.toLowerCase())) {\r\n      return;\r\n    }\r\n  }\r\n\r\n  // 只允许数字字符 0-9\r\n  if (!/^[0-9]$/.test(event.key)) {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    return;\r\n  }\r\n\r\n  // 获取当前输入框的值（考虑选中的文本）\r\n  const target = event.target as HTMLInputElement;\r\n  const currentValue = target.value;\r\n  const selectionStart = target.selectionStart || 0;\r\n  const selectionEnd = target.selectionEnd || 0;\r\n  const selectedText = currentValue.substring(selectionStart, selectionEnd);\r\n\r\n  // 计算输入后的新值\r\n  const beforeText = currentValue.substring(0, selectionStart);\r\n  const afterText = currentValue.substring(selectionEnd);\r\n  const newValue = beforeText + event.key + afterText;\r\n\r\n  // 如果新值超过 100，阻止输入\r\n  const num = parseInt(newValue, 10);\r\n  if (!isNaN(num) && num > 100) {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    return;\r\n  }\r\n}\r\n\r\n// 透明度输入框输入事件 - 只允许输入正整数\r\nfunction handleAlphaPercentInput(value: string | number): void {\r\n  // 转换为字符串\r\n  const strValue = String(value);\r\n\r\n  // 如果正在清空操作，不处理输入事件（清空时会先触发 input 事件，然后触发 clear 事件）\r\n  if (isClearing.value) {\r\n    return;\r\n  }\r\n\r\n  // 如果输入为空，允许为空（用户正在清空或手动删除）\r\n  if (strValue === \"\") {\r\n    alphaPercentInput.value = \"\";\r\n    return;\r\n  }\r\n\r\n  // 只允许数字字符，过滤掉所有非数字字符\r\n  const numericValue = strValue.replace(/[^\\d]/g, \"\");\r\n\r\n  // 如果过滤后为空，则清空输入\r\n  if (numericValue === \"\") {\r\n    alphaPercentInput.value = \"\";\r\n    return;\r\n  }\r\n\r\n  // 转换为整数\r\n  const num = parseInt(numericValue, 10);\r\n\r\n  // 限制最大值为 100\r\n  if (num > 100) {\r\n    alphaPercentInput.value = \"100\";\r\n    currentColor.value.alpha = 1;\r\n    updateColor();\r\n  } else {\r\n    alphaPercentInput.value = String(num);\r\n    currentColor.value.alpha = num / 100;\r\n    updateColor();\r\n  }\r\n}\r\n\r\nfunction handleAlphaPercentChange(): void {\r\n  // 如果输入为空，设置为 100\r\n  if (alphaPercentInput.value === \"\") {\r\n    alphaPercentInput.value = \"100\";\r\n    currentColor.value.alpha = 1;\r\n    updateColor();\r\n    return;\r\n  }\r\n\r\n  // 只允许数字字符\r\n  const numericValue = alphaPercentInput.value.replace(/[^\\d]/g, \"\");\r\n\r\n  if (numericValue === \"\") {\r\n    alphaPercentInput.value = \"100\";\r\n    currentColor.value.alpha = 1;\r\n    updateColor();\r\n    return;\r\n  }\r\n\r\n  const percent = parseInt(numericValue, 10);\r\n  const clampedPercent = Math.max(0, Math.min(100, percent));\r\n  currentColor.value.alpha = clampedPercent / 100;\r\n  alphaPercentInput.value = String(clampedPercent);\r\n  updateColor();\r\n}\r\n\r\nfunction handleAlphaPercentBlur(): void {\r\n  // 如果输入为空，设置为 100\r\n  if (alphaPercentInput.value === \"\") {\r\n    alphaPercentInput.value = \"100\";\r\n    currentColor.value.alpha = 1;\r\n    updateColor();\r\n    return;\r\n  }\r\n\r\n  // 只允许数字字符\r\n  const numericValue = alphaPercentInput.value.replace(/[^\\d]/g, \"\");\r\n\r\n  if (numericValue === \"\") {\r\n    alphaPercentInput.value = \"100\";\r\n    currentColor.value.alpha = 1;\r\n    updateColor();\r\n    return;\r\n  }\r\n\r\n  const percent = parseInt(numericValue, 10);\r\n  const clampedPercent = Math.max(0, Math.min(100, percent));\r\n  currentColor.value.alpha = clampedPercent / 100;\r\n  alphaPercentInput.value = String(clampedPercent);\r\n  updateColor();\r\n}\r\n\r\n// 透明度输入框清空事件\r\nfunction handleAlphaPercentClear(): void {\r\n  // 标记正在清空操作（阻止后续的 input 事件和 updateColor 中的输入框更新）\r\n  isClearing.value = true;\r\n  \r\n  // 先更新颜色值\r\n  currentColor.value.alpha = 1;\r\n  const value = currentColor.value.toString(props.colorFormat as any);\r\n  emit(\"update:modelValue\", value);\r\n  emit(\"activeChange\", value);\r\n  \r\n  // 然后设置输入框值（不使用 updateColor，避免被覆盖）\r\n  alphaPercentInput.value = \"100\";\r\n  \r\n  // 使用 nextTick 确保在所有事件处理完成后重置标记\r\n  nextTick(() => {\r\n    isClearing.value = false;\r\n  });\r\n}\r\n\r\n// 预设颜色\r\nfunction isPredefineSelected(color: string): boolean {\r\n  if (typeof props.modelValue === \"string\") {\r\n    return props.modelValue.toLowerCase() === color.toLowerCase();\r\n  }\r\n  return false;\r\n}\r\n\r\nfunction handlePredefineClick(color: string): void {\r\n  if (props.disabled) return;\r\n  currentColor.value.fromString(color);\r\n  currentColor.value.alpha = 1;\r\n  updateColor();\r\n  emit(\"change\", currentColor.value.toString(props.colorFormat as any));\r\n}\r\n\r\n// 监听外部值变化\r\nwatch(\r\n  () => props.modelValue,\r\n  () => {\r\n    if (dragging.value) return;\r\n    initColor();\r\n  },\r\n  { immediate: true, deep: true }\r\n);\r\n\r\nwatch(\r\n  () => props.showAlpha,\r\n  () => {\r\n    currentColor.value.enableAlpha = props.showAlpha && !props.disabledAlpha;\r\n  }\r\n);\r\n\r\nwatch(\r\n  () => props.disabledAlpha,\r\n  () => {\r\n    currentColor.value.enableAlpha = props.showAlpha && !props.disabledAlpha;\r\n  }\r\n);\r\n\r\nonMounted(() => {\r\n  initColor();\r\n});\r\n\r\nonBeforeUnmount(() => {\r\n  dragging.value = false;\r\n  currentDragging = null;\r\n});\r\n</script>\r\n","// 用来整合组件的，最终实现导出组件\r\n\r\nimport { withInstall } from \"@cuixingjian/cui-utils/install\"\r\nimport type { SFCWithInstall } from \"../types\"\r\nimport _ColorPicker from \"./src/color-picker.vue\"\r\n\r\nconst ColorPicker: SFCWithInstall<typeof _ColorPicker> = withInstall(_ColorPicker)\r\n\r\nexport default ColorPicker\r\n\r\n// 在vue中方便提示\r\n// 这里添加的类型 可以在模板中被解析\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    // 我们的接口可以自动合并\r\n    CColorPicker: typeof ColorPicker\r\n  }\r\n}\r\n\r\n","// TreeSelect 组件相关属性和 TypeScript 类型定义\r\n\r\nimport { ExtractPropTypes, PropType } from 'vue'\r\n// 独立的树节点类型定义（移除对 Tree 组件的依赖）\r\nexport interface TreeOption {\r\n  label?: string | number\r\n  key?: string | number\r\n  children?: TreeOption[]\r\n  isLeaf: boolean\r\n  disabled?: boolean\r\n  [key: string]: unknown\r\n}\r\n\r\nexport type TreeSelectValue = string | number | (string | number)[]\r\n\r\nexport const treeSelectProps = {\r\n  // 绑定值：支持单选与多选\r\n  modelValue: {\r\n    type: [String, Number, Array] as PropType<TreeSelectValue>,\r\n    default: ''\r\n  },\r\n  // 是否多选\r\n  multiple: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 选项树数据\r\n  data: {\r\n    type: Array as PropType<TreeOption[]>,\r\n    default: () => []\r\n  },\r\n  // 字段映射\r\n  labelField: {\r\n    type: String,\r\n    default: 'label'\r\n  },\r\n  keyField: {\r\n    type: String,\r\n    default: 'key'\r\n  },\r\n  childrenField: {\r\n    type: String,\r\n    default: 'children'\r\n  },\r\n  // 展示占位符\r\n  placeholder: {\r\n    type: String,\r\n    default: '请选择'\r\n  },\r\n  // 是否禁用\r\n  disabled: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否可清空\r\n  clearable: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 尺寸\r\n  size: {\r\n    type: String as PropType<'large' | 'default' | 'small'>,\r\n    default: 'default'\r\n  },\r\n  // 是否可搜索\r\n  filterable: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 无匹配选项时显示的文字\r\n  noMatchText: {\r\n    type: String,\r\n    default: '无匹配数据'\r\n  },\r\n  // 无数据时显示的文字\r\n  noDataText: {\r\n    type: String,\r\n    default: '无数据'\r\n  },\r\n  // 下拉框的类名\r\n  popperClass: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 是否严格选择（false 只允许选择叶子节点，true 允许任意节点）\r\n  checkStrictly: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 单选时是否显示完整路径\r\n  showPath: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 默认全部展开\r\n  defaultExpandAll: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 默认展开的节点key集合（与字段映射一致）\r\n  defaultExpandedKeys: {\r\n    type: Array as PropType<Array<string | number>>,\r\n    default: () => []\r\n  }\r\n} as const\r\n\r\nexport type TreeSelectProps = ExtractPropTypes<typeof treeSelectProps>\r\n\r\nexport const treeSelectEmits = {\r\n  'update:modelValue': (value: TreeSelectValue) => true,\r\n  change: (value: TreeSelectValue) => true,\r\n  clear: () => true,\r\n  focus: (evt: FocusEvent) => evt instanceof FocusEvent,\r\n  blur: (evt: FocusEvent) => evt instanceof FocusEvent,\r\n  visibleChange: (visible: boolean) => typeof visible === 'boolean'\r\n}\r\n\r\nexport type TreeSelectEmits = typeof treeSelectEmits","<template>\r\n  <div\r\n    v-click-outside=\"handleClose\"\r\n    :class=\"[\r\n      bem.b(),\r\n      bem.m(size),\r\n      bem.is('disabled', disabled),\r\n      bem.is('focus', visible)\r\n    ]\"\r\n    @click.stop.prevent=\"handleClick\"\r\n    @mouseenter=\"handleMouseEnter\"\r\n    @mouseleave=\"handleMouseLeave\"\r\n  >\r\n    <!-- 选择器输入框 -->\r\n    <div :class=\"bem.e('selection')\">\r\n      <!-- 多选占位文本 -->\r\n      <span\r\n        v-if=\"isMultiple && !hasValue && !(filterable && visible)\"\r\n        :class=\"bem.e('placeholder')\"\r\n      >\r\n        {{ props.placeholder }}\r\n      </span>\r\n\r\n      <!-- 多选标签显示区域 -->\r\n      <div v-if=\"isMultiple\" :class=\"bem.e('tags')\">\r\n        <span\r\n          v-for=\"opt in selectedTagNodes\"\r\n          :key=\"opt.key as any\"\r\n          :class=\"bem.e('tag')\"\r\n        >\r\n          <span :class=\"bem.e('tag-text')\">{{ opt.label }}</span>\r\n          <c-icon\r\n            :class=\"bem.e('tag-close')\"\r\n            @click.stop=\"removeTag(opt.key as any)\"\r\n          >\r\n            <svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n              <path\r\n                fill=\"currentColor\"\r\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\"\r\n              />\r\n            </svg>\r\n          </c-icon>\r\n        </span>\r\n      </div>\r\n\r\n      <input\r\n        v-if=\"!isMultiple || (isMultiple && filterable && visible)\"\r\n        ref=\"inputRef\"\r\n        :class=\"bem.e('input')\"\r\n        :value=\"displayValue\"\r\n        :placeholder=\"currentPlaceholder\"\r\n        :disabled=\"disabled\"\r\n        :readonly=\"!filterable\"\r\n        @input=\"handleInput\"\r\n        @focus=\"handleFocus\"\r\n        @blur=\"handleBlur\"\r\n      />\r\n\r\n      <!-- 清空按钮 -->\r\n      <c-icon\r\n        v-if=\"clearable && !disabled && hasValue && isHovered\"\r\n        :class=\"bem.e('clear')\"\r\n        @click.stop=\"handleClear\"\r\n      >\r\n        <svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n          <path\r\n            fill=\"currentColor\"\r\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\"\r\n          />\r\n        </svg>\r\n      </c-icon>\r\n\r\n      <!-- 下拉箭头 -->\r\n      <c-icon\r\n        :class=\"[bem.e('arrow'), bem.is('reverse', visible)]\"\r\n        v-if=\"!clearable || !hasValue || disabled || !isHovered\"\r\n      >\r\n        <svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n          <path\r\n            fill=\"currentColor\"\r\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.24a30.592 30.592 0 0 0 42.752 0l340.288-331.712a29.12 29.12 0 0 0 0-41.6 30.592 30.592 0 0 0-40.832 0z\"\r\n          />\r\n        </svg>\r\n      </c-icon>\r\n    </div>\r\n\r\n    <!-- 下拉树 -->\r\n    <transition name=\"c-select-dropdown\">\r\n      <div\r\n        v-show=\"visible\"\r\n        :class=\"[bem.e('dropdown'), popperClass]\"\r\n        ref=\"dropdownRef\"\r\n      >\r\n        <ul\r\n          v-if=\"filterable && filteredTree.length === 0 && query\"\r\n          :class=\"bem.e('options')\"\r\n        >\r\n          <li :class=\"bem.e('empty')\">{{ noMatchText }}</li>\r\n        </ul>\r\n        <ul v-else-if=\"normalizedTree.length === 0\" :class=\"bem.e('options')\">\r\n          <li :class=\"bem.e('empty')\">{{ noDataText }}</li>\r\n        </ul>\r\n\r\n        <ul v-else :class=\"bem.e('tree')\">\r\n          <template\r\n            v-for=\"node in filterable ? filteredTree : normalizedTree\"\r\n            :key=\"node.key as any\"\r\n          >\r\n            <li\r\n              :class=\"[bem.e('node'), bem.is('selected', isSelected(node.key as any))]\"\r\n            >\r\n              <div\r\n                :class=\"bem.e('node-label')\"\r\n                :style=\"{ paddingLeft: node.level * 16 + 8 + 'px' }\"\r\n              >\r\n                <span\r\n                  :class=\"bem.e('expand')\"\r\n                  @click.stop=\"toggleExpand(node.key as any)\"\r\n                >\r\n                  <c-icon\r\n                    v-if=\"!node.isLeaf\"\r\n                    :class=\"[\r\n                      bem.e('expand-icon'),\r\n                      bem.is('expanded', isExpanded(node.key as any))\r\n                    ]\"\r\n                  >\r\n                    <svg\r\n                      viewBox=\"0 0 1024 1024\"\r\n                      xmlns=\"http://www.w3.org/2000/svg\"\r\n                    >\r\n                      <path\r\n                        fill=\"currentColor\"\r\n                        d=\"M384 192v640l448-320-448-320z\"\r\n                      />\r\n                    </svg>\r\n                  </c-icon>\r\n                </span>\r\n                <span\r\n                  :class=\"[bem.e('label-text'), bem.is('leaf', node.isLeaf)]\"\r\n                  @click.stop=\"handleNodeClick(node)\"\r\n                >\r\n                  {{ node.label }}\r\n                </span>\r\n                <c-icon\r\n                  v-if=\"isMultiple && isSelected(node.key as any)\"\r\n                  :class=\"bem.e('check')\"\r\n                >\r\n                  <svg\r\n                    viewBox=\"0 0 1024 1024\"\r\n                    xmlns=\"http://www.w3.org/2000/svg\"\r\n                  >\r\n                    <path\r\n                      fill=\"currentColor\"\r\n                      d=\"M416 736 160 480l96-96 160 160 320-320 96 96-416 416z\"\r\n                    />\r\n                  </svg>\r\n                </c-icon>\r\n              </div>\r\n\r\n              <transition name=\"c-tree-slide\">\r\n                <ul\r\n                  v-if=\"!node.isLeaf && isExpanded(node.key as any)\"\r\n                  :class=\"bem.e('children')\"\r\n                >\r\n                  <template\r\n                    v-for=\"child in node.children as any\"\r\n                    :key=\"child[keyField] as any\"\r\n                  >\r\n                    <li\r\n                      :class=\"[bem.e('node'), bem.is('selected', isSelected(child[keyField] as any))]\"\r\n                    >\r\n                      <div\r\n                        :class=\"bem.e('node-label')\"\r\n                        :style=\"{\r\n                          paddingLeft: (node.level + 1) * 16 + 8 + 'px'\r\n                        }\"\r\n                      >\r\n                        <span\r\n                          :class=\"bem.e('expand')\"\r\n                          @click.stop=\"toggleExpand(child[keyField] as any)\"\r\n                        >\r\n                          <c-icon\r\n                            v-if=\"(child[childrenField] || []).length > 0\"\r\n                            :class=\"[\r\n                            bem.e('expand-icon'),\r\n                            bem.is('expanded', isExpanded(child[keyField] as any))\r\n                          ]\"\r\n                          >\r\n                            <svg\r\n                              viewBox=\"0 0 1024 1024\"\r\n                              xmlns=\"http://www.w3.org/2000/svg\"\r\n                            >\r\n                              <path\r\n                                fill=\"currentColor\"\r\n                                d=\"M384 192v640l448-320-448-320z\"\r\n                              />\r\n                            </svg>\r\n                          </c-icon>\r\n                        </span>\r\n                        <span\r\n                          :class=\"bem.e('label-text')\"\r\n                          @click.stop=\"\r\n                            handleNodeClick(normalizeOne(child, node))\r\n                          \"\r\n                        >\r\n                          {{ child[labelField] }}\r\n                        </span>\r\n                        <c-icon\r\n                          v-if=\"isMultiple && isSelected(child[keyField] as any)\"\r\n                          :class=\"bem.e('check')\"\r\n                        >\r\n                          <svg\r\n                            viewBox=\"0 0 1024 1024\"\r\n                            xmlns=\"http://www.w3.org/2000/svg\"\r\n                          >\r\n                            <path\r\n                              fill=\"currentColor\"\r\n                              d=\"M416 736 160 480l96-96 160 160 320-320 96 96-416 416z\"\r\n                            />\r\n                          </svg>\r\n                        </c-icon>\r\n                      </div>\r\n\r\n                      <!-- 递归子节点（第二层后直接由模板继续渲染） -->\r\n                      <transition name=\"c-tree-slide\">\r\n                        <ul\r\n                          v-if=\"(child[childrenField] || []).length > 0 && isExpanded(child[keyField] as any)\"\r\n                          :class=\"bem.e('children')\"\r\n                        >\r\n                          <template\r\n                            v-for=\"g in child[childrenField] || []\"\r\n                            :key=\"g[keyField] as any\"\r\n                          >\r\n                            <li\r\n                              :class=\"[bem.e('node'), bem.is('selected', isSelected(g[keyField] as any))]\"\r\n                            >\r\n                              <div\r\n                                :class=\"bem.e('node-label')\"\r\n                                :style=\"{\r\n                                  paddingLeft: (node.level + 2) * 16 + 8 + 'px'\r\n                                }\"\r\n                              >\r\n                                <span\r\n                                  :class=\"bem.e('expand')\"\r\n                                  @click.stop=\"toggleExpand(g[keyField] as any)\"\r\n                                >\r\n                                  <c-icon\r\n                                    v-if=\"(g[childrenField] || []).length > 0\"\r\n                                    :class=\"[\r\n                                  bem.e('expand-icon'),\r\n                                  bem.is('expanded', isExpanded(g[keyField] as any))\r\n                                ]\"\r\n                                  >\r\n                                    <svg\r\n                                      viewBox=\"0 0 1024 1024\"\r\n                                      xmlns=\"http://www.w3.org/2000/svg\"\r\n                                    >\r\n                                      <path\r\n                                        fill=\"currentColor\"\r\n                                        d=\"M384 192v640l448-320-448-320z\"\r\n                                      />\r\n                                    </svg>\r\n                                  </c-icon>\r\n                                </span>\r\n                                <span\r\n                                  :class=\"bem.e('label-text')\"\r\n                                  @click.stop=\"\r\n                                    handleNodeClick(\r\n                                      normalizeOne(g, normalizeOne(child, node))\r\n                                    )\r\n                                  \"\r\n                                >\r\n                                  {{ g[labelField] }}\r\n                                </span>\r\n                                <c-icon\r\n                                  v-if=\"isMultiple && isSelected(g[keyField] as any)\"\r\n                                  :class=\"bem.e('check')\"\r\n                                >\r\n                                  <svg\r\n                                    viewBox=\"0 0 1024 1024\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\"\r\n                                  >\r\n                                    <path\r\n                                      fill=\"currentColor\"\r\n                                      d=\"M416 736 160 480l96-96 160 160 320-320 96 96-416 416z\"\r\n                                    />\r\n                                  </svg>\r\n                                </c-icon>\r\n                              </div>\r\n                            </li>\r\n                          </template>\r\n                        </ul>\r\n                      </transition>\r\n                    </li>\r\n                  </template>\r\n                </ul>\r\n              </transition>\r\n            </li>\r\n          </template>\r\n        </ul>\r\n      </div>\r\n    </transition>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, ref, watch, nextTick } from 'vue';\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create';\r\nimport {\r\n  treeSelectProps,\r\n  treeSelectEmits,\r\n  type TreeSelectValue,\r\n  type TreeOption\r\n} from './treeselect';\r\n\r\n// 定义组件名称\r\ndefineOptions({ name: 'c-treeselect' });\r\n\r\nconst bem = createNamespace('treeselect');\r\nconst props = defineProps(treeSelectProps);\r\nconst emit = defineEmits(treeSelectEmits);\r\n\r\n// 响应式数据\r\nconst visible = ref(false);\r\nconst query = ref('');\r\nconst inputRef = ref<HTMLInputElement>();\r\nconst isHovered = ref(false);\r\nconst dropdownRef = ref<HTMLElement>();\r\n\r\n// 是否为多选模式\r\nconst isMultiple = computed(() => props.multiple);\r\n\r\n// 选项格式化\r\ninterface TreeNode {\r\n  key: string | number;\r\n  label: string;\r\n  children: any[];\r\n  rawNode: TreeOption;\r\n  level: number;\r\n  isLeaf: boolean;\r\n  pathLabels?: string[];\r\n}\r\n\r\nfunction createOption(key: string, label: string, children: string) {\r\n  return {\r\n    getKey(node: TreeOption) {\r\n      return node[key] as any;\r\n    },\r\n    getLabel(node: TreeOption): string {\r\n      return String(node[label] ?? '');\r\n    },\r\n    getChildren(node: TreeOption) {\r\n      return (node[children] as any[]) || [];\r\n    }\r\n  };\r\n}\r\n\r\nconst keyField = props.keyField;\r\nconst labelField = props.labelField;\r\nconst childrenField = props.childrenField;\r\nconst treeOptions = createOption(keyField, labelField, childrenField);\r\n\r\nfunction createTree(data: TreeOption[]): TreeNode[] {\r\n  function traverse(list: TreeOption[], parent: TreeNode | null = null) {\r\n    return list.map((node) => {\r\n      const children = treeOptions.getChildren(node);\r\n      const treeNode: TreeNode = {\r\n        key: treeOptions.getKey(node),\r\n        label: treeOptions.getLabel(node),\r\n        children,\r\n        rawNode: node,\r\n        level: parent ? parent.level + 1 : 0,\r\n        isLeaf: (children?.length ?? 0) === 0,\r\n        pathLabels: parent ? [...(parent.pathLabels || []), parent.label] : []\r\n      };\r\n      return treeNode;\r\n    });\r\n  }\r\n\r\n  return traverse(data);\r\n}\r\n\r\nconst normalizedTree = computed(() => createTree(props.data));\r\n\r\n// 扩展/折叠状态管理\r\nconst expandedKeys = ref<Set<string | number>>(new Set());\r\nconst isExpanded = (k: string | number) => expandedKeys.value.has(k);\r\nconst toggleExpand = (k: string | number) => {\r\n  if (expandedKeys.value.has(k)) expandedKeys.value.delete(k);\r\n  else expandedKeys.value.add(k);\r\n};\r\n\r\n// 根据 props 默认展开配置初始化 expandedKeys\r\nfunction collectExpandableKeys(list: any[]): Array<string | number> {\r\n  const keys: Array<string | number> = [];\r\n  const stack = [...(list || [])];\r\n  while (stack.length) {\r\n    const node = stack.pop()!;\r\n    const children = treeOptions.getChildren(node);\r\n    if ((children?.length ?? 0) > 0) keys.push(treeOptions.getKey(node));\r\n    stack.push(...children);\r\n  }\r\n  return keys;\r\n}\r\n\r\nwatch(\r\n  () => [props.data, props.defaultExpandAll, props.defaultExpandedKeys],\r\n  () => {\r\n    const next = new Set<string | number>();\r\n    if (props.defaultExpandAll) {\r\n      for (const k of collectExpandableKeys(props.data)) next.add(k);\r\n    }\r\n    for (const k of props.defaultExpandedKeys || []) next.add(k as any);\r\n    expandedKeys.value = next;\r\n  },\r\n  { immediate: true, deep: true }\r\n);\r\n\r\n// 值映射（key -> label）\r\nconst valueMap = computed(() => {\r\n  const m = new Map<string | number, TreeNode>();\r\n  const stack: any[] = [...props.data];\r\n  while (stack.length) {\r\n    const n = stack.shift();\r\n    const key = n[keyField];\r\n    const label = n[labelField];\r\n    const children = n[childrenField] || [];\r\n    const level = 0; // 用于回退时再查找，简单处理\r\n    m.set(key, {\r\n      key,\r\n      label,\r\n      children,\r\n      rawNode: n,\r\n      level,\r\n      isLeaf: children.length === 0\r\n    }) as any;\r\n    stack.push(...children);\r\n  }\r\n  return m;\r\n});\r\n\r\nconst hasValue = computed(() => {\r\n  const v = props.modelValue as any;\r\n  return Array.isArray(v)\r\n    ? v.length > 0\r\n    : v !== '' && v !== null && v !== undefined;\r\n});\r\n\r\nconst currentPlaceholder = computed(() =>\r\n  hasValue.value ? '' : props.placeholder\r\n);\r\n\r\nconst selectedTagNodes = computed(() => {\r\n  if (!isMultiple.value) return [] as TreeNode[];\r\n  const v = props.modelValue as any;\r\n  const m = valueMap.value;\r\n  return (Array.isArray(v) ? v : [])\r\n    .map((val: any) => m.get(val))\r\n    .filter(Boolean) as TreeNode[];\r\n});\r\n\r\n// 查找指定 key 的完整标签路径（包含自身标签）\r\nfunction findLabelPath(targetKey: string | number): string[] {\r\n  const stack: Array<{ node: any; parents: string[] }> = (props.data || []).map(\r\n    (n: any) => ({ node: n, parents: [] })\r\n  );\r\n  while (stack.length) {\r\n    const cur = stack.pop()!;\r\n    const key = treeOptions.getKey(cur.node);\r\n    const label = treeOptions.getLabel(cur.node);\r\n    const children = treeOptions.getChildren(cur.node);\r\n    const labels = [...cur.parents, label];\r\n    if (key === targetKey) return labels;\r\n    for (const child of children) {\r\n      stack.push({ node: child, parents: labels });\r\n    }\r\n  }\r\n  return [];\r\n}\r\n\r\nconst displayValue = computed(() => {\r\n  if (isMultiple.value) {\r\n    return props.filterable && visible.value ? query.value : '';\r\n  }\r\n  if (props.filterable && visible.value) return query.value;\r\n  if (hasValue.value) {\r\n    const v = props.modelValue as any;\r\n    const node = valueMap.value.get(v);\r\n    if (!node) return '';\r\n    if (props.showPath) {\r\n      const labels = findLabelPath(v);\r\n      if (labels.length) return labels.join(' / ');\r\n    }\r\n    return String(node.label);\r\n  }\r\n  return '';\r\n});\r\n\r\n// 过滤逻辑：包含匹配项及其第一层子节点（简化）\r\nconst normalizedLower = computed(() => query.value.trim().toLowerCase());\r\nconst filteredTree = computed(() => {\r\n  if (!props.filterable || !normalizedLower.value) return normalizedTree.value;\r\n  const q = normalizedLower.value;\r\n  const include = (n: TreeNode): boolean => n.label.toLowerCase().includes(q);\r\n  return normalizedTree.value.filter(\r\n    (n) =>\r\n      include(n) ||\r\n      (n.children || []).some((c: any) =>\r\n        String(c[labelField] ?? '')\r\n          .toLowerCase()\r\n          .includes(q)\r\n      )\r\n  );\r\n});\r\n\r\n// 是否选中\r\nconst isSelected = (val: string | number) => {\r\n  const v = props.modelValue as any;\r\n  return Array.isArray(v) ? v.includes(val) : v === val;\r\n};\r\n\r\n// 事件与方法\r\nconst handleClick = () => {\r\n  if (props.disabled) return;\r\n  visible.value = !visible.value;\r\n  if (visible.value) {\r\n    nextTick(() => inputRef.value?.focus());\r\n  }\r\n};\r\n\r\nconst handleClose = () => {\r\n  visible.value = false;\r\n  if (props.filterable) query.value = '';\r\n};\r\n\r\nfunction debounce<T extends (...args: any[]) => any>(fn: T, delay = 150) {\r\n  let t: any;\r\n  return (...args: Parameters<T>) => {\r\n    if (t) clearTimeout(t);\r\n    t = setTimeout(() => fn(...args), delay);\r\n  };\r\n}\r\nconst setQueryDebounced = debounce((val: string) => {\r\n  query.value = val;\r\n  visible.value = true;\r\n}, 150);\r\n\r\nconst handleInput = (event: Event) => {\r\n  if (!props.filterable) return;\r\n  const target = event.target as HTMLInputElement;\r\n  setQueryDebounced(target.value);\r\n};\r\n\r\nconst handleFocus = (event: FocusEvent) => emit('focus', event);\r\nconst handleBlur = (event: FocusEvent) => emit('blur', event);\r\n\r\nconst trySelectValue = (key: string | number, node: TreeNode) => {\r\n  if (!props.checkStrictly && !node.isLeaf) {\r\n    // 非严格模式不允许选择非叶子节点，改为展开/折叠\r\n    toggleExpand(key);\r\n    return;\r\n  }\r\n  if (isMultiple.value) {\r\n    const cur = Array.isArray(props.modelValue)\r\n      ? [...(props.modelValue as (string | number)[])]\r\n      : [];\r\n    const idx = cur.indexOf(key);\r\n    if (idx > -1) {\r\n      cur.splice(idx, 1);\r\n    } else {\r\n      cur.push(key);\r\n    }\r\n    emit('update:modelValue', cur as TreeSelectValue);\r\n    emit('change', cur as TreeSelectValue);\r\n  } else {\r\n    emit('update:modelValue', key as TreeSelectValue);\r\n    emit('change', key as TreeSelectValue);\r\n    handleClose();\r\n  }\r\n};\r\n\r\nconst normalizeOne = (node: any, parent?: TreeNode): TreeNode => {\r\n  const children = node[childrenField] || [];\r\n  return {\r\n    key: node[keyField],\r\n    label: String(node[labelField] ?? ''),\r\n    children,\r\n    rawNode: node,\r\n    level: (parent?.level ?? -1) + 1,\r\n    isLeaf: children.length === 0,\r\n    pathLabels: parent ? [...(parent.pathLabels || []), parent.label] : []\r\n  };\r\n};\r\n\r\nconst handleNodeClick = (node: TreeNode) => {\r\n  trySelectValue(node.key as any, node);\r\n};\r\n\r\nconst removeTag = (val: string | number) => {\r\n  if (!isMultiple.value) return;\r\n  const cur = Array.isArray(props.modelValue)\r\n    ? [...(props.modelValue as (string | number)[])]\r\n    : [];\r\n  const idx = cur.indexOf(val);\r\n  if (idx > -1) cur.splice(idx, 1);\r\n  emit('update:modelValue', cur as TreeSelectValue);\r\n  emit('change', cur as TreeSelectValue);\r\n};\r\n\r\nconst handleClear = () => {\r\n  if (isMultiple.value) {\r\n    const empty: (string | number)[] = [];\r\n    emit('update:modelValue', empty);\r\n    emit('change', empty);\r\n  } else {\r\n    emit('update:modelValue', '');\r\n    emit('change', '');\r\n  }\r\n  emit('clear');\r\n  handleClose();\r\n};\r\n\r\nconst handleMouseEnter = () => {\r\n  isHovered.value = true;\r\n};\r\nconst handleMouseLeave = () => {\r\n  isHovered.value = false;\r\n};\r\n\r\n// 监听下拉框显示状态\r\nwatch(visible, (newVisible) => {\r\n  emit('visibleChange', newVisible);\r\n  if (newVisible) {\r\n    nextTick(() => {\r\n      dropdownRef.value && (dropdownRef.value.scrollTop = 0);\r\n    });\r\n  }\r\n});\r\n\r\n// 扩展HTMLElement类型以支持_clickOutside属性\r\ninterface HTMLElementWithClickOutside extends HTMLElement {\r\n  _clickOutside?: (event: Event) => void;\r\n}\r\n\r\n// 点击外部关闭指令（与 Select 保持一致）\r\nconst vClickOutside = {\r\n  mounted(el: HTMLElementWithClickOutside, binding: { value: () => void }) {\r\n    if (el._clickOutside) {\r\n      document.removeEventListener('pointerdown', el._clickOutside, {\r\n        capture: true\r\n      } as any);\r\n    }\r\n    el._clickOutside = (event: Event) => {\r\n      if (event.target && !el.contains(event.target as Node)) {\r\n        binding.value();\r\n      }\r\n    };\r\n    nextTick(() => {\r\n      document.addEventListener('pointerdown', el._clickOutside!, {\r\n        passive: true,\r\n        capture: true\r\n      });\r\n    });\r\n  },\r\n  updated(el: HTMLElementWithClickOutside, binding: { value: () => void }) {\r\n    if (el._clickOutside) {\r\n      document.removeEventListener('pointerdown', el._clickOutside, {\r\n        capture: true\r\n      } as any);\r\n    }\r\n    el._clickOutside = (event: Event) => {\r\n      if (event.target && !el.contains(event.target as Node)) {\r\n        binding.value();\r\n      }\r\n    };\r\n    nextTick(() => {\r\n      document.addEventListener('pointerdown', el._clickOutside!, {\r\n        passive: true,\r\n        capture: true\r\n      });\r\n    });\r\n  },\r\n  unmounted(el: HTMLElementWithClickOutside) {\r\n    if (el._clickOutside) {\r\n      document.removeEventListener('pointerdown', el._clickOutside, {\r\n        capture: true\r\n      } as any);\r\n      delete el._clickOutside;\r\n    }\r\n  }\r\n};\r\n\r\n// 指令注册\r\nconst vClickOutsideDirective = vClickOutside;\r\n\r\n// 暴露指令\r\ndefineExpose({ vClickOutsideDirective });\r\n</script>\r\n","// 用来整合 TreeSelect 组件的，最终实现导出组件\r\n\r\nimport { withInstall } from '@cuixingjian/cui-utils/install';\r\nimport type { SFCWithInstall } from \"../types\";\r\nimport _TreeSelect from './src/treeselect.vue';\r\n\r\nexport * from './src/treeselect';\r\nexport * from './src/instance';\r\nconst TreeSelect: SFCWithInstall<typeof _TreeSelect> = withInstall(_TreeSelect);\r\n\r\nexport default TreeSelect;\r\n\r\n// 在vue中方便提示\r\n// 这里添加的类型 可以在模板中被解析\r\ndeclare module 'vue' {\r\n  export interface GlobalComponents {\r\n    // 我们的接口可以自动合并\r\n    CTreeSelect: typeof TreeSelect;\r\n  }\r\n}\r\n","// 水印组件相关属性和类型定义\r\n\r\nimport { ExtractPropTypes, PropType } from \"vue\"\r\n\r\nexport const watermarkProps = {\r\n  // 水印文字内容\r\n  content: {\r\n    type: [String, Array] as PropType<string | string[]>,\r\n    default: \"绝密\"\r\n  },\r\n  // 水印图片地址\r\n  image: {\r\n    type: String,\r\n    default: \"\"\r\n  },\r\n  // 水印宽度\r\n  width: {\r\n    type: Number,\r\n    default: 120\r\n  },\r\n  // 水印高度\r\n  height: {\r\n    type: Number,\r\n    default: 64\r\n  },\r\n  // 水印旋转角度\r\n  rotate: {\r\n    type: Number,\r\n    default: -22\r\n  },\r\n  // 水印层级\r\n  zIndex: {\r\n    type: Number,\r\n    default: 9\r\n  },\r\n  // 水印透明度\r\n  alpha: {\r\n    type: Number,\r\n    default: 0.5\r\n  },\r\n  // 字体大小\r\n  fontSize: {\r\n    type: Number,\r\n    default: 16\r\n  },\r\n  // 字体颜色\r\n  fontColor: {\r\n    type: String,\r\n    default: \"rgba(0,0,0,.15)\"\r\n  },\r\n  // 字体样式\r\n  fontStyle: {\r\n    type: String as PropType<\"normal\" | \"italic\" | \"oblique\">,\r\n    default: \"normal\"\r\n  },\r\n  // 字体粗细\r\n  fontWeight: {\r\n    type: [String, Number],\r\n    default: \"normal\"\r\n  },\r\n  // 字体系列\r\n  fontFamily: {\r\n    type: String,\r\n    default: \"sans-serif\"\r\n  },\r\n  // 水印间距\r\n  gap: {\r\n    type: Array,\r\n    default: () => [100, 100]\r\n  },\r\n  // 水印偏移量\r\n  offset: {\r\n    type: Array,\r\n    default: () => [0, 0]\r\n  },\r\n  // 是否禁用\r\n  disabled: {\r\n    type: Boolean,\r\n    default: false\r\n  }\r\n} as const\r\n\r\nexport type WatermarkProps = ExtractPropTypes<typeof watermarkProps>\r\n\r\n// 水印事件\r\nexport const watermarkEmits = {\r\n  // 水印被篡改时触发\r\n  change: (evt: Event) => evt instanceof Event\r\n}\r\n\r\nexport type WatermarkEmits = typeof watermarkEmits\r\n","<template>\r\n  <div ref=\"containerRef\" :class=\"bem.b()\" :style=\"containerStyle\">\r\n    <slot></slot>\r\n    <div\r\n      v-if=\"!disabled && (hasContent || image)\"\r\n      ref=\"watermarkRef\"\r\n      :class=\"bem.e('wrapper')\"\r\n      :style=\"watermarkStyle\"\r\n\r\n    ></div>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, computed, onMounted, onBeforeUnmount, watch, nextTick } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { watermarkProps, watermarkEmits } from './watermark'\r\n\r\n// 定义组件名称\r\ndefineOptions({\r\n  name: 'c-watermark',\r\n})\r\n\r\nconst bem = createNamespace('watermark')\r\nconst props = defineProps(watermarkProps)\r\nconst emit = defineEmits(watermarkEmits)\r\n\r\n\r\n\r\nconst containerRef = ref<HTMLElement>()\r\nconst watermarkRef = ref<HTMLElement>()\r\nconst observer = ref<MutationObserver>()\r\nconst base64Url = ref('')\r\n\r\n// 检查是否有内容\r\nconst hasContent = computed(() => {\r\n  if (Array.isArray(props.content)) {\r\n    return props.content.length > 0 && props.content.some(item => item.trim().length > 0)\r\n  }\r\n  return typeof props.content === 'string' && props.content.trim().length > 0\r\n})\r\n\r\n// 容器样式\r\nconst containerStyle = computed(() => ({\r\n  position: 'relative'\r\n}))\r\n\r\n// 水印样式\r\nconst watermarkStyle = computed(() => ({\r\n  position: 'absolute',\r\n  top: '0',\r\n  left: '0',\r\n  width: '100%',\r\n  height: '100%',\r\n  pointerEvents: 'none',\r\n  backgroundRepeat: 'repeat',\r\n  backgroundImage: base64Url.value ? `url(${base64Url.value})` : 'none',\r\n  zIndex: props.zIndex\r\n}))\r\n\r\n// 生成水印图片\r\nconst generateWatermark = () => {\r\n  const canvas = document.createElement('canvas')\r\n  const ctx = canvas.getContext('2d')\r\n  if (!ctx) return\r\n  \r\n  const { width, height, rotate, alpha, gap, offset } = props\r\n  const [gapX, gapY] = gap\r\n  const [offsetX, offsetY] = offset\r\n  \r\n  canvas.width = width + gapX\r\n  canvas.height = height + gapY\r\n  \r\n  // 清除画布\r\n  ctx.clearRect(0, 0, canvas.width, canvas.height)\r\n  \r\n  ctx.globalAlpha = alpha\r\n  \r\n  // 移动到中心点并旋转\r\n  ctx.translate((width + gapX) / 2, (height + gapY) / 2)\r\n  ctx.rotate((Math.PI / 180) * rotate)\r\n  ctx.translate(-(width + gapX) / 2, -(height + gapY) / 2)\r\n  \r\n  if (props.image) {\r\n    // 绘制图片水印\r\n    const img = new Image()\r\n    img.crossOrigin = 'anonymous'\r\n    img.onload = () => {\r\n      ctx.drawImage(img, offsetX, offsetY, width, height)\r\n      base64Url.value = canvas.toDataURL()\r\n    }\r\n    img.src = props.image\r\n  } else if (props.content) {\r\n    // 绘制文字水印\r\n    const { fontSize, fontColor, fontStyle, fontWeight, fontFamily } = props\r\n    \r\n    ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`\r\n    ctx.fillStyle = fontColor\r\n    ctx.textAlign = 'center'\r\n    ctx.textBaseline = 'middle'\r\n    \r\n    const contents = Array.isArray(props.content) ? props.content : [props.content]\r\n    \r\n    // 简化绘制逻辑\r\n    contents.forEach((text, index) => {\r\n      const x = (width + gapX) / 2 + offsetX\r\n      const y = (height + gapY) / 2 + offsetY + index * fontSize * 1.2\r\n      ctx.fillText(text, x, y)\r\n    })\r\n    \r\n    base64Url.value = canvas.toDataURL()\r\n  }\r\n}\r\n\r\n// 监听DOM变化，防止水印被删除\r\nconst observeWatermark = () => {\r\n  if (!watermarkRef.value || !containerRef.value) return\r\n  \r\n  observer.value = new MutationObserver((mutations) => {\r\n    mutations.forEach((mutation) => {\r\n      if (mutation.type === 'childList') {\r\n        const removedNodes = Array.from(mutation.removedNodes)\r\n        if (removedNodes.includes(watermarkRef.value!)) {\r\n          // 水印被删除，重新添加\r\n          nextTick(() => {\r\n            generateWatermark()\r\n            emit('change', new Event('watermark-removed'))\r\n          })\r\n        }\r\n      } else if (mutation.type === 'attributes') {\r\n        if (mutation.target === watermarkRef.value) {\r\n          // 水印属性被修改，重新生成\r\n          nextTick(() => {\r\n            generateWatermark()\r\n            emit('change', new Event('watermark-modified'))\r\n          })\r\n        }\r\n      }\r\n    })\r\n  })\r\n  \r\n  observer.value.observe(containerRef.value, {\r\n    childList: true,\r\n    subtree: true,\r\n    attributes: true,\r\n    attributeFilter: ['style', 'class']\r\n  })\r\n}\r\n\r\n// 监听props变化\r\nwatch(\r\n  () => [\r\n    props.content,\r\n    props.image,\r\n    props.width,\r\n    props.height,\r\n    props.rotate,\r\n    props.alpha,\r\n    props.fontSize,\r\n    props.fontColor,\r\n    props.fontStyle,\r\n    props.fontWeight,\r\n    props.fontFamily,\r\n    props.gap,\r\n    props.offset\r\n  ],\r\n  () => {\r\n    if (!props.disabled) {\r\n      generateWatermark()\r\n    }\r\n  },\r\n  { deep: true }\r\n)\r\n\r\n// 监听disabled状态\r\nwatch(\r\n  () => props.disabled,\r\n  (disabled) => {\r\n    if (disabled) {\r\n      base64Url.value = ''\r\n    } else {\r\n      generateWatermark()\r\n    }\r\n  }\r\n)\r\n\r\nonMounted(() => {\r\n  if (!props.disabled) {\r\n    generateWatermark()\r\n    observeWatermark()\r\n  }\r\n})\r\n\r\nonBeforeUnmount(() => {\r\n  if (observer.value) {\r\n    observer.value.disconnect()\r\n  }\r\n})\r\n</script>","// 水印组件入口文件\r\n\r\nimport { withInstall } from \"@cuixingjian/cui-utils/install\";\r\nimport type { SFCWithInstall } from \"../types\";\r\nimport _Watermark from \"./src/watermark.vue\";\r\n\r\nexport * from \"./src/watermark\";\r\nexport * from \"./src/instance\";\r\nconst Watermark: SFCWithInstall<typeof _Watermark> = withInstall(_Watermark);\r\n\r\nexport default Watermark;\r\n\r\n// 在vue中方便提示\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    CWatermark: typeof Watermark;\r\n  }\r\n}","// Row组件相关属性和TS类型\r\n\r\nimport { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport const rowProps = {\r\n  // 栅格间隔\r\n  gutter: {\r\n    type: Number,\r\n    default: 0\r\n  },\r\n  // 水平排列方式\r\n  justify: {\r\n    type: String as PropType<'start' | 'end' | 'center' | 'space-around' | 'space-between' | 'space-evenly'>,\r\n    default: 'start'\r\n  },\r\n  // 垂直对齐方式\r\n  align: {\r\n    type: String as PropType<'top' | 'middle' | 'bottom'>,\r\n    default: 'top'\r\n  },\r\n  // 元素标签\r\n  tag: {\r\n    type: String,\r\n    default: 'div'\r\n  },\r\n  // 是否自动换行\r\n  wrap: {\r\n    type: Boolean,\r\n    default: true\r\n  }\r\n} as const\r\n\r\nexport type RowProps = ExtractPropTypes<typeof rowProps>\r\n\r\n// Col组件相关属性和TS类型\r\nexport const colProps = {\r\n  // 栅格占据的列数\r\n  span: {\r\n    type: Number,\r\n    default: 24\r\n  },\r\n  // 栅格左侧的间隔格数\r\n  offset: {\r\n    type: Number,\r\n    default: 0\r\n  },\r\n  // 栅格向右移动格数\r\n  push: {\r\n    type: Number,\r\n    default: 0\r\n  },\r\n  // 栅格向左移动格数\r\n  pull: {\r\n    type: Number,\r\n    default: 0\r\n  },\r\n  // 元素标签\r\n  tag: {\r\n    type: String,\r\n    default: 'div'\r\n  },\r\n  // <768px 响应式栅格数或者栅格属性对象\r\n  xs: {\r\n    type: [Number, Object] as PropType<number | ColSize>,\r\n    default: undefined\r\n  },\r\n  // ≥768px 响应式栅格数或者栅格属性对象\r\n  sm: {\r\n    type: [Number, Object] as PropType<number | ColSize>,\r\n    default: undefined\r\n  },\r\n  // ≥992px 响应式栅格数或者栅格属性对象\r\n  md: {\r\n    type: [Number, Object] as PropType<number | ColSize>,\r\n    default: undefined\r\n  },\r\n  // ≥1200px 响应式栅格数或者栅格属性对象\r\n  lg: {\r\n    type: [Number, Object] as PropType<number | ColSize>,\r\n    default: undefined\r\n  },\r\n  // ≥1920px 响应式栅格数或者栅格属性对象\r\n  xl: {\r\n    type: [Number, Object] as PropType<number | ColSize>,\r\n    default: undefined\r\n  }\r\n} as const\r\n\r\n// 响应式栅格属性对象类型\r\nexport interface ColSize {\r\n  span?: number\r\n  offset?: number\r\n  push?: number\r\n  pull?: number\r\n}\r\n\r\nexport type ColProps = ExtractPropTypes<typeof colProps>","<template>\r\n  <!-- :style=\"rowStyle\" -->\r\n  <component\r\n    :is=\"tag\"\r\n    :class=\"[\r\n      bem.b(),\r\n      bem.is(`justify-${justify}`, justify !== 'start'),\r\n      bem.is(`align-${align}`, align !== 'top'),\r\n      bem.is('no-wrap', !wrap)\r\n    ]\"\r\n  >\r\n    <slot></slot>\r\n  </component>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, provide } from \"vue\"\r\nimport { createNamespace } from \"@cuixingjian/cui-utils/create\"\r\nimport { rowProps } from \"./layout\"\r\n\r\n// 定义组件名称\r\ndefineOptions({\r\n  name: \"c-row\"\r\n})\r\n\r\nconst bem = createNamespace(\"row\")\r\nconst props = defineProps(rowProps)\r\n\r\n// 计算行样式\r\nconst rowStyle = computed(() => {\r\n  const styles: Record<string, any> = {}\r\n\r\n  if (props.gutter) {\r\n    styles.marginLeft = `-${props.gutter / 2}px`\r\n    styles.marginRight = `-${props.gutter / 2}px`\r\n  }\r\n  console.log(styles)\r\n\r\n  return styles\r\n})\r\n\r\n// 向子组件提供gutter值\r\nprovide(\"CUI_ROW\", {\r\n  gutter: computed(() => props.gutter)\r\n})\r\n</script>\r\n","<template>\r\n  <component :is=\"tag\" :class=\"[bem.b(), ...classList]\" :style=\"colStyle\">\r\n    <slot></slot>\r\n  </component>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, inject } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { colProps, type ColSize } from './layout'\r\n\r\n// 定义组件名称\r\ndefineOptions({\r\n  name: 'c-col'\r\n})\r\n\r\nconst bem = createNamespace('col')\r\nconst props = defineProps(colProps)\r\n\r\n// 注入父组件Row的gutter值\r\nconst rowContext = inject('CUI_ROW', { gutter: computed(() => 0) })\r\n\r\n// 计算列样式\r\nconst colStyle = computed(() => {\r\n  const styles: Record<string, any> = {}\r\n\r\n  if (rowContext.gutter.value) {\r\n    styles.paddingLeft = `${rowContext.gutter.value / 2}px`\r\n    styles.paddingRight = `${rowContext.gutter.value / 2}px`\r\n  }\r\n\r\n  return styles\r\n})\r\n\r\n// 计算类名列表\r\nconst classList = computed(() => {\r\n  const classes: string[] = []\r\n\r\n  // 基础span\r\n  classes.push(bem.m(`${props.span}`))\r\n\r\n  // offset\r\n  if (props.offset > 0) {\r\n    classes.push(bem.m(`offset-${props.offset}`))\r\n  }\r\n\r\n  // push\r\n  if (props.push > 0) {\r\n    classes.push(bem.m(`push-${props.push}`))\r\n  }\r\n\r\n  // pull\r\n  if (props.pull > 0) {\r\n    classes.push(bem.m(`pull-${props.pull}`))\r\n  }\r\n\r\n  // 响应式断点\r\n  const breakpoints = ['xs', 'sm', 'md', 'lg', 'xl'] as const\r\n\r\n  breakpoints.forEach((size) => {\r\n    const sizeProps = props[size]\r\n    if (sizeProps !== undefined) {\r\n      if (typeof sizeProps === 'number') {\r\n        classes.push(bem.m(`${size}-${sizeProps}`))\r\n      } else if (typeof sizeProps === 'object') {\r\n        const { span, offset, push, pull } = sizeProps as ColSize\r\n\r\n        if (span !== undefined) {\r\n          classes.push(bem.m(`${size}-${span}`))\r\n        }\r\n        if (offset !== undefined && offset > 0) {\r\n          classes.push(bem.m(`${size}-offset-${offset}`))\r\n        }\r\n        if (push !== undefined && push > 0) {\r\n          classes.push(bem.m(`${size}-push-${push}`))\r\n        }\r\n        if (pull !== undefined && pull > 0) {\r\n          classes.push(bem.m(`${size}-pull-${pull}`))\r\n        }\r\n      }\r\n    }\r\n  })\r\n\r\n  return classes\r\n})\r\n</script>\r\n","// 用来整合组件的，最终实现导出组件\r\n\r\nimport { withInstall } from \"@cuixingjian/cui-utils/install\";\r\nimport type { SFCWithInstall } from \"../types\";\r\nimport _Row from \"./src/row.vue\";\r\nimport _Col from \"./src/col.vue\";\r\n\r\nexport * from \"./src/layout\";\r\nexport * from \"./src/instance\";\r\n\r\nconst Row: SFCWithInstall<typeof _Row> = withInstall(_Row);\r\nconst Col: SFCWithInstall<typeof _Col> = withInstall(_Col);\r\n\r\nexport { Row, Col };\r\nexport default { Row, Col };\r\n\r\n// 在vue中方便提示\r\n// 这里添加的类型 可以在模板中被解析\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    // 我们的接口可以自动合并\r\n    CRow: typeof Row;\r\n    CCol: typeof Col;\r\n  }\r\n}","// Pagination 组件属性与类型，参考 Element Plus API 并保留兼容属性\r\nimport { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport const paginationProps = {\r\n  // 数据总条数（与 pageCount 二选一）\r\n  total: {\r\n    type: Number,\r\n    default: 0\r\n  },\r\n  // 总页数（不使用 total 分页时）\r\n  pageCount: {\r\n    type: Number,\r\n    default: 0\r\n  },\r\n  // 每页条数\r\n  pageSize: {\r\n    type: Number,\r\n    default: 10\r\n  },\r\n  // 当前页码（从 1 开始）\r\n  currentPage: {\r\n    type: Number,\r\n    default: 1\r\n  },\r\n  // 布局定义：\"prev, pager, next, sizes, total, jumper\"，支持 \"->\" 右侧分隔\r\n  layout: {\r\n    type: String,\r\n    default: 'prev, pager, next, sizes, total'\r\n  },\r\n  // 分页器显示的数字按钮数量（奇数，>=5）\r\n  pagerCount: {\r\n    type: Number,\r\n    default: 7\r\n  },\r\n  // 可选的 pageSize 列表\r\n  pageSizes: {\r\n    type: Array as PropType<number[]>,\r\n    default: () => [10, 20, 50, 100]\r\n  },\r\n  // 小尺寸样式\r\n  small: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 背景样式\r\n  background: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否禁用整个分页\r\n  disabled: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 仅一页时是否隐藏\r\n  hideOnSinglePage: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 兼容：是否显示分页（优先级高于 total 判断）\r\n  show: {\r\n    type: Boolean as PropType<boolean | undefined>,\r\n    default: undefined\r\n  },\r\n  // 兼容：是否显示页大小切换（优先于 layout）\r\n  showSizeChanger: {\r\n    type: Boolean,\r\n    default: true\r\n  },\r\n  // 兼容：是否显示总条数（优先于 layout）\r\n  showTotal: {\r\n    type: Boolean,\r\n    default: true\r\n  },\r\n  // 总数文案模板（支持 {total}）\r\n  totalText: {\r\n    type: String,\r\n    default: '总条数'\r\n  },\r\n  // 自定义上一页/下一页文案\r\n  prevText: String,\r\n  nextText: String,\r\n  // 已移除未使用的 popperClass\r\n} as const\r\n\r\nexport type PaginationProps = ExtractPropTypes<typeof paginationProps>\r\n\r\nexport const paginationEmits = {\r\n  'update:currentPage': (page: number) => typeof page === 'number' && page > 0,\r\n  'update:pageSize': (size: number) => typeof size === 'number' && size > 0,\r\n  // 兼容事件：页码或页大小变化\r\n  change: (page: number, size: number) => true,\r\n  // Element Plus 风格事件\r\n  'current-change': (page: number) => typeof page === 'number' && page > 0,\r\n  'size-change': (size: number) => typeof size === 'number' && size > 0\r\n}\r\n\r\nexport type PaginationEmits = typeof paginationEmits\r\n\r\n// 页码项类型\r\nexport type PagerItem = {\r\n  type: \"page\" | \"ellipsis\";\r\n  page?: number;\r\n  active?: boolean;\r\n};","<template>\r\n  <!-- 上一页按钮 -->\r\n  <button\r\n    v-if=\"part === 'prev'\"\r\n    :class=\"[\r\n      bem.e('btn'),\r\n      bem.e('prev'),\r\n      bem.is('disabled', isFirstPage.value || parentProps.disabled),\r\n    ]\"\r\n    :disabled=\"isFirstPage.value || parentProps.disabled\"\r\n    @click=\"goPrev\"\r\n    aria-label=\"上一页\"\r\n    title=\"上一页\"\r\n  >\r\n    <span v-if=\"parentProps.prevText\">{{ parentProps.prevText }}</span>\r\n    <svg\r\n      v-else\r\n      class=\"c-pagination__icon\"\r\n      width=\"16\"\r\n      height=\"16\"\r\n      viewBox=\"0 0 16 16\"\r\n      fill=\"none\"\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n    >\r\n      <path\r\n        d=\"M10.5 3.5L6.5 7.5L10.5 11.5\"\r\n        stroke=\"currentColor\"\r\n        stroke-width=\"1.5\"\r\n        stroke-linecap=\"round\"\r\n        stroke-linejoin=\"round\"\r\n      />\r\n    </svg>\r\n  </button>\r\n\r\n  <!-- 下一页按钮 -->\r\n  <button\r\n    v-else-if=\"part === 'next'\"\r\n    :class=\"[\r\n      bem.e('btn'),\r\n      bem.e('next'),\r\n      bem.is('disabled', isLastPage.value || parentProps.disabled),\r\n    ]\"\r\n    :disabled=\"isLastPage.value || parentProps.disabled\"\r\n    @click=\"goNext\"\r\n    aria-label=\"下一页\"\r\n    title=\"下一页\"\r\n  >\r\n    <span v-if=\"parentProps.nextText\">{{ parentProps.nextText }}</span>\r\n    <svg\r\n      v-else\r\n      class=\"c-pagination__icon\"\r\n      width=\"16\"\r\n      height=\"16\"\r\n      viewBox=\"0 0 16 16\"\r\n      fill=\"none\"\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n    >\r\n      <path\r\n        d=\"M5.5 3.5L9.5 7.5L5.5 11.5\"\r\n        stroke=\"currentColor\"\r\n        stroke-width=\"1.5\"\r\n        stroke-linecap=\"round\"\r\n        stroke-linejoin=\"round\"\r\n      />\r\n    </svg>\r\n  </button>\r\n\r\n  <!-- 页码器 -->\r\n  <div v-else-if=\"part === 'pager'\" :class=\"bem.e('pager')\">\r\n    <template\r\n      v-for=\"(it, idx) in pagerItems\"\r\n      :key=\"it.type === 'ellipsis' ? 'e' + idx : it.page\"\r\n    >\r\n      <span v-if=\"it.type === 'ellipsis'\" :class=\"bem.e('ellipsis')\">…</span>\r\n      <button\r\n        v-else\r\n        :class=\"[bem.e('pager-item'), bem.is('active', !!it.active)]\"\r\n        :disabled=\"parentProps.disabled\"\r\n        @click=\"setPage(it.page!)\"\r\n      >\r\n        {{ it.page }}\r\n      </button>\r\n    </template>\r\n  </div>\r\n\r\n  <!-- 页大小选择器 -->\r\n  <c-select\r\n    v-else-if=\"part === 'sizes' && showSizeChanger\"\r\n    :modelValue=\"parentProps.pageSize\"\r\n    :options=\"sizeOptions\"\r\n    :disabled=\"parentProps.disabled\"\r\n    :size=\"parentProps.small ? 'small' : 'default'\"\r\n    style=\"width: 100px\"\r\n    @update:modelValue=\"onSizeSelectChange\"\r\n  />\r\n\r\n  <!-- 总条数 -->\r\n  <span\r\n    v-else-if=\"part === 'total' && showTotal\"\r\n    :class=\"bem.e('total')\"\r\n  >\r\n    {{ totalTextParsed }}\r\n  </span>\r\n\r\n  <!-- 跳转器 -->\r\n  <div v-else-if=\"part === 'jumper'\" :class=\"bem.e('jumper')\">\r\n    <span>前往</span>\r\n    <input\r\n      :class=\"bem.e('jumper-input')\"\r\n      type=\"number\"\r\n      min=\"1\"\r\n      :max=\"totalPages.value\"\r\n      :disabled=\"parentProps.disabled\"\r\n      v-model=\"jumperInput\"\r\n      @keyup.enter=\"onJumperEnter\"\r\n    />\r\n    <span>页</span>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { inject, computed } from \"vue\";\r\nimport { createNamespace } from \"@cuixingjian/cui-utils/create\";\r\n\r\ndefineOptions({ name: \"PaginationPart\" });\r\n\r\nconst props = defineProps<{\r\n  part: string;\r\n}>();\r\n\r\nconst bem = createNamespace(\"pagination\");\r\n\r\n// 从父组件注入的上下文\r\nconst paginationContext = inject<{\r\n  bem: ReturnType<typeof createNamespace>;\r\n  props: any;\r\n  isFirstPage: ReturnType<typeof computed<boolean>>;\r\n  isLastPage: ReturnType<typeof computed<boolean>>;\r\n  totalPages: ReturnType<typeof computed<number>>;\r\n  pagerItems: ReturnType<typeof computed<any[]>>;\r\n  totalTextParsed: ReturnType<typeof computed<string>>;\r\n  sizeOptions: ReturnType<typeof computed<any[]>>;\r\n  showSizeChanger: ReturnType<typeof computed<boolean>>;\r\n  showTotal: ReturnType<typeof computed<boolean>>;\r\n  setPage: (page: number) => void;\r\n  goPrev: () => void;\r\n  goNext: () => void;\r\n  jumperInput: ReturnType<typeof import(\"vue\").ref<string>>;\r\n  onJumperEnter: () => void;\r\n  onSizeSelectChange: (value: string | number | (string | number)[]) => void;\r\n}>(\"paginationContext\");\r\n\r\nif (!paginationContext) {\r\n  throw new Error(\"PaginationPart must be used within Pagination component\");\r\n}\r\n\r\nconst {\r\n  props: parentProps,\r\n  isFirstPage,\r\n  isLastPage,\r\n  totalPages,\r\n  pagerItems,\r\n  totalTextParsed,\r\n  sizeOptions,\r\n  showSizeChanger,\r\n  showTotal,\r\n  setPage,\r\n  goPrev,\r\n  goNext,\r\n  jumperInput,\r\n  onJumperEnter,\r\n  onSizeSelectChange,\r\n} = paginationContext;\r\n</script>\r\n\r\n","<template>\r\n  <div :class=\"rootClass\" v-if=\"shouldShow\">\r\n    <!-- 左侧分组 -->\r\n    <div v-if=\"groups.left.length\" :class=\"bem.e('group')\">\r\n      <PaginationPart v-for=\"part in groups.left\" :key=\"part\" :part=\"part\" />\r\n    </div>\r\n\r\n    <!-- 右侧分组 -->\r\n    <div v-if=\"groups.right.length\" :class=\"bem.e('group')\">\r\n      <PaginationPart v-for=\"part in groups.right\" :key=\"part\" :part=\"part\" />\r\n    </div>\r\n  </div>\r\n  <div v-else :class=\"rootClass\" style=\"display: none\" />\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, ref, provide } from \"vue\";\r\nimport { createNamespace } from \"@cuixingjian/cui-utils/create\";\r\nimport { paginationProps, paginationEmits, type PagerItem } from \"./pagination\";\r\nimport PaginationPart from \"./pagination-part.vue\";\r\n\r\ndefineOptions({ name: \"c-pagination\" });\r\nconst bem = createNamespace(\"pagination\");\r\nconst props = defineProps(paginationProps);\r\nconst emit = defineEmits(paginationEmits);\r\n\r\n// 常量定义\r\nconst MIN_PAGER_COUNT = 5; // 最小页码按钮数量\r\nconst DEFAULT_PAGER_COUNT = 7; // 默认页码按钮数量\r\n\r\n// 计算总页数：优先使用 pageCount，否则根据 total/pageSize\r\nconst totalPages = computed(() => {\r\n  const byCount = props.pageCount > 0 ? props.pageCount : 0;\r\n  const byTotal = props.total > 0 ? Math.ceil(props.total / props.pageSize) : 0;\r\n  const pages = Math.max(byCount, byTotal, 1);\r\n  return pages;\r\n});\r\n\r\nconst isFirstPage = computed(() => props.currentPage <= 1);\r\nconst isLastPage = computed(() => props.currentPage >= totalPages.value);\r\n\r\n// 是否显示\r\nconst shouldShow = computed(() => {\r\n  if (props.show !== undefined) return props.show;\r\n  if (props.hideOnSinglePage && totalPages.value <= 1) return false;\r\n  // 当 total 或 pageCount 提供时显示\r\n  return props.total > 0 || props.pageCount > 0;\r\n});\r\n\r\n// 根样式类\r\nconst rootClass = computed(() => [\r\n  bem.b(),\r\n  bem.is(\"small\", props.small),\r\n  bem.is(\"background\", props.background),\r\n  bem.is(\"disabled\", props.disabled),\r\n]);\r\n\r\n// 布局解析：支持 \"prev, pager, next, sizes, total, jumper\" 以及 \"->\" 分隔左右\r\nfunction parseLayout() {\r\n  const raw = props.layout.split(\",\").map((s) => s.trim());\r\n  const left: string[] = [];\r\n  const right: string[] = [];\r\n  let current = left;\r\n  raw.forEach((part) => {\r\n    if (part === \"->\") {\r\n      current = right;\r\n      return;\r\n    }\r\n    // 过滤空\r\n    if (!part) return;\r\n    // 标准部件\r\n    if ([\"prev\", \"pager\", \"next\", \"sizes\", \"total\", \"jumper\"].includes(part)) {\r\n      current.push(part);\r\n    }\r\n  });\r\n  // 总条数固定在最左侧：移除其他分组中的 total，并在 showTotal 时放置到左侧首位\r\n  // 移除各分组中的 total\r\n  for (let i = left.length - 1; i >= 0; i--)\r\n    if (left[i] === \"total\") left.splice(i, 1);\r\n  for (let i = right.length - 1; i >= 0; i--)\r\n    if (right[i] === \"total\") right.splice(i, 1);\r\n  // 根据 showTotal 控制显示，优先于 layout\r\n  if (props.showTotal) {\r\n    left.unshift(\"total\");\r\n  }\r\n  // 若没有定义任何部件，使用默认左侧布局\r\n  const hasAny = left.length || right.length;\r\n  if (!hasAny) left.push(\"prev\", \"pager\", \"next\");\r\n  return { left, right };\r\n}\r\n\r\nconst groups = computed(() => parseLayout());\r\n\r\n// 计算页码范围\r\nconst calculatePageRange = (\r\n  current: number,\r\n  total: number,\r\n  pagerCount: number\r\n) => {\r\n  const half = Math.floor(pagerCount / 2);\r\n  let start = current - half;\r\n  let end = current + half;\r\n\r\n  if (start < 1) {\r\n    end += 1 - start;\r\n    start = 1;\r\n  }\r\n  if (end > total) {\r\n    start -= end - total;\r\n    end = total;\r\n  }\r\n\r\n  return {\r\n    start: Math.max(1, start),\r\n    end: Math.min(total, end),\r\n  };\r\n};\r\n\r\n// 页码列表（带省略号）\r\nconst pagerItems = computed((): PagerItem[] => {\r\n  const pagerCount = Math.max(\r\n    MIN_PAGER_COUNT,\r\n    props.pagerCount || DEFAULT_PAGER_COUNT\r\n  );\r\n  const pages = totalPages.value;\r\n  const current = Math.min(Math.max(1, props.currentPage), pages);\r\n  const items: PagerItem[] = [];\r\n\r\n  // 如果总页数小于等于页码按钮数量，显示所有页码\r\n  if (pages <= pagerCount) {\r\n    for (let i = 1; i <= pages; i++) {\r\n      items.push({ type: \"page\", page: i, active: i === current });\r\n    }\r\n    return items;\r\n  }\r\n\r\n  // 计算页码范围\r\n  const { start, end } = calculatePageRange(current, pages, pagerCount);\r\n\r\n  // 添加第一页\r\n  items.push({ type: \"page\", page: 1, active: current === 1 });\r\n\r\n  // 如果起始页大于2，添加省略号\r\n  if (start > 2) {\r\n    items.push({ type: \"ellipsis\" });\r\n  }\r\n\r\n  // 添加中间页码\r\n  for (let i = Math.max(2, start); i <= Math.min(pages - 1, end); i++) {\r\n    items.push({ type: \"page\", page: i, active: i === current });\r\n  }\r\n\r\n  // 如果结束页小于总页数-1，添加省略号\r\n  if (end < pages - 1) {\r\n    items.push({ type: \"ellipsis\" });\r\n  }\r\n\r\n  // 添加最后一页\r\n  if (pages > 1) {\r\n    items.push({ type: \"page\", page: pages, active: current === pages });\r\n  }\r\n\r\n  return items;\r\n});\r\n\r\n// 验证并规范化页码\r\nconst normalizePage = (page: number): number => {\r\n  return Math.min(Math.max(1, page), totalPages.value);\r\n};\r\n\r\n// 事件：设置页码\r\nconst setPage = (page: number) => {\r\n  if (props.disabled) return;\r\n  const target = normalizePage(page);\r\n  if (target === props.currentPage) return;\r\n\r\n  emit(\"update:currentPage\", target);\r\n  emit(\"current-change\", target);\r\n  emit(\"change\", target, props.pageSize);\r\n};\r\n\r\nconst goPrev = () => {\r\n  if (!isFirstPage.value) setPage(props.currentPage - 1);\r\n};\r\n\r\nconst goNext = () => {\r\n  if (!isLastPage.value) setPage(props.currentPage + 1);\r\n};\r\n\r\n// 计算页大小变化后的新页码\r\nconst calculateNewPage = (newSize: number): number => {\r\n  if (props.total <= 0) return 1;\r\n  const newTotalPages = Math.ceil(props.total / newSize);\r\n  const currentItemIndex = (props.currentPage - 1) * props.pageSize + 1;\r\n  const newPage = Math.ceil(currentItemIndex / newSize);\r\n  return Math.min(newTotalPages, Math.max(1, newPage));\r\n};\r\n\r\n// 处理页大小变化（已废弃，保留兼容性）\r\nconst onSizeChange = (e: Event) => {\r\n  if (props.disabled) return;\r\n  const value = Number((e.target as HTMLSelectElement).value);\r\n  const page = calculateNewPage(value);\r\n\r\n  emit(\"update:pageSize\", value);\r\n  emit(\"size-change\", value);\r\n  emit(\"update:currentPage\", page);\r\n  emit(\"current-change\", page);\r\n  emit(\"change\", page, value);\r\n};\r\n\r\n// 跳转输入\r\nconst jumperInput = ref(\"\");\r\nconst onJumperEnter = () => {\r\n  const page = Number(jumperInput.value);\r\n  if (!Number.isFinite(page) || page <= 0) return;\r\n  setPage(page);\r\n  jumperInput.value = \"\"; // 清空输入框\r\n};\r\n\r\n// 渲染部件\r\nconst totalTextParsed = computed(() => {\r\n  const template = props.totalText || \"总条数\";\r\n  return template.replace(/\\{total\\}/g, String(props.total));\r\n});\r\n\r\nconst sizeOptions = computed(() => {\r\n  const set = new Set<number>(props.pageSizes);\r\n  // 如果当前页大小不在选项中，添加它\r\n  if (!set.has(props.pageSize)) {\r\n    set.add(props.pageSize);\r\n  }\r\n  return Array.from(set)\r\n    .sort((a, b) => a - b)\r\n    .map((size) => ({ label: `${size}/页`, value: size }));\r\n});\r\n\r\nconst onSizeSelectChange = (value: string | number | (string | number)[]) => {\r\n  if (props.disabled) return;\r\n  if (Array.isArray(value)) return; // 非多选场景忽略\r\n\r\n  const newSize = Number(value);\r\n  if (!Number.isFinite(newSize) || newSize <= 0) return;\r\n\r\n  const page = calculateNewPage(newSize);\r\n\r\n  emit(\"update:pageSize\", newSize);\r\n  emit(\"size-change\", newSize);\r\n  emit(\"update:currentPage\", page);\r\n  emit(\"current-change\", page);\r\n  emit(\"change\", page, newSize);\r\n};\r\n\r\n// 导出给子组件使用\r\nconst paginationContext = {\r\n  bem,\r\n  props,\r\n  isFirstPage,\r\n  isLastPage,\r\n  totalPages,\r\n  pagerItems,\r\n  totalTextParsed,\r\n  sizeOptions,\r\n  showSizeChanger: computed(() => props.showSizeChanger),\r\n  showTotal: computed(() => props.showTotal),\r\n  setPage,\r\n  goPrev,\r\n  goNext,\r\n  jumperInput,\r\n  onJumperEnter,\r\n  onSizeSelectChange,\r\n};\r\n\r\nprovide(\"paginationContext\", paginationContext);\r\n</script>\r\n","// 用来整合分页组件的，最终实现导出组件\r\n\r\nimport { withInstall } from \"@cuixingjian/cui-utils/install\";\r\nimport type { SFCWithInstall } from \"../types\";\r\nimport _Pagination from \"./src/pagination.vue\";\r\n\r\nexport * from \"./src/pagination\";\r\nexport * from \"./src/instance\";\r\nconst Pagination: SFCWithInstall<typeof _Pagination> = withInstall(_Pagination);\r\n\r\nexport default Pagination;\r\n\r\n// 在vue中方便提示\r\n// 这里添加的类型 可以在模板中被解析\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    // 我们的接口可以自动合并\r\n    CPagination: typeof Pagination;\r\n  }\r\n}\r\n","import { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport interface TableColumn {\r\n  key: string\r\n  title: string\r\n  width?: number | string\r\n  align?: 'left' | 'center' | 'right'\r\n  render?: (row: any, index: number) => any\r\n}\r\n\r\nexport const tableProps = {\r\n  columns: {\r\n    type: Array as PropType<TableColumn[]>,\r\n    default: () => []\r\n  },\r\n  data: {\r\n    type: Array as PropType<any[]>,\r\n    default: () => []\r\n  },\r\n  // 分页相关\r\n  total: { type: Number, default: 0 },\r\n  pageSize: { type: Number, default: 10 },\r\n  currentPage: { type: Number, default: 1 },\r\n  showPagination: { type: Boolean as PropType<boolean | undefined>, default: undefined },\r\n  pageSizes: { type: Array as PropType<number[]>, default: () => [10, 20, 50, 100] },\r\n  showSizeChanger: { type: Boolean, default: true },\r\n  showTotal: { type: Boolean, default: true },\r\n  totalText: { type: String, default: '总条数' },\r\n  // 空态\r\n  emptyText: { type: String, default: '暂无数据' },\r\n  // 行 key\r\n  rowKey: { type: String, default: 'id' },\r\n  // 表格尺寸\r\n  size: { type: String as PropType<'small' | 'medium' | 'large'>, default: 'medium' },\r\n  // 样式相关\r\n  stripe: { type: Boolean, default: false }, // 斑马纹\r\n  border: { type: Boolean, default: false }, // 边框\r\n  highlightCurrentRow: { type: Boolean, default: false }, // 高亮当前行\r\n  // 行类名和单元格类名\r\n  rowClassName: { type: [String, Function] as PropType<string | ((row: any, index: number) => string)>, default: undefined },\r\n  headerCellClassName: { type: [String, Function] as PropType<string | ((column: any, index: number) => string)>, default: undefined },\r\n  cellClassName: { type: [String, Function] as PropType<string | ((row: any, column: any, rowIndex: number, columnIndex: number) => string)>, default: undefined },\r\n  // 列宽拖拽开关与限制\r\n  columnResizable: { type: Boolean, default: false },\r\n  minColumnWidth: { type: Number, default: 60 },\r\n  maxColumnWidth: { type: Number, default: 600 },\r\n  // 横向滚动（列过多时展示横向滚动条）\r\n  scrollX: { type: Boolean, default: true },\r\n  // 纵向滚动：容器固定高度（默认 300px）\r\n  height: { type: [Number, String] as PropType<number | string>, default: 300 },\r\n  // 固定表头（使用 sticky）\r\n  stickyHeader: { type: Boolean, default: true },\r\n  // 最大高度（用于自动计算高度）\r\n  maxHeight: { type: [Number, String] as PropType<number | string>, default: undefined }\r\n} as const\r\n\r\nexport type TableProps = ExtractPropTypes<typeof tableProps>\r\n\r\nexport const tableEmits = {\r\n  'update:currentPage': (page: number) => typeof page === 'number' && page > 0,\r\n  'update:pageSize': (size: number) => typeof size === 'number' && size > 0,\r\n  pageChange: (page: number, size: number) => true\r\n}\r\n\r\nexport type TableEmits = typeof tableEmits","<template>\r\n  <div :class=\"[\r\n    bem.b(),\r\n    bem.m(size),\r\n    props.border && bem.is('border'),\r\n    props.stripe && bem.is('stripe')\r\n  ]\" :style=\"wrapperStyle\">\r\n    <!-- 表头（独立容器，避免使用 sticky；横向通过 transform 与内容对齐） -->\r\n    <div :class=\"bem.e('header-wrap')\">\r\n      <table :class=\"bem.e('inner')\" :style=\"headerTableStyle\" ref=\"headerRef\">\r\n        <colgroup>\r\n          <col\r\n            v-for=\"col in renderColumns\"\r\n            :key=\"col.key\"\r\n            :style=\"colStyle(col)\"\r\n          />\r\n        </colgroup>\r\n        <thead>\r\n          <tr>\r\n            <th\r\n              v-for=\"(col, cIndex) in renderColumns\"\r\n              :key=\"col.key\"\r\n              :style=\"thStyle(col)\"\r\n              :class=\"[\r\n                bem.e('th'),\r\n                props.stickyHeader && 'is-sticky',\r\n                props.border && bem.is('border'),\r\n                getHeaderCellClassName(col, cIndex)\r\n              ]\"\r\n            >\r\n              {{ col.title }}\r\n              <span\r\n                v-if=\"props.columnResizable\"\r\n                :class=\"bem.e('resize-handle')\"\r\n                @mousedown=\"onResizeStart($event, col)\"\r\n              ></span>\r\n            </th>\r\n          </tr>\r\n        </thead>\r\n      </table>\r\n    </div>\r\n\r\n    <!-- 内容（独立滚动容器） + 悬浮滚动条包裹层 -->\r\n    <div\r\n      :class=\"[\r\n        bem.e('scroll-wrap'),\r\n        { 'is-scrollbar-active': isScrollbarActive },\r\n      ]\"\r\n    >\r\n      <div\r\n        :class=\"bem.e('scroll')\"\r\n        :style=\"scrollStyle\"\r\n        ref=\"scrollRef\"\r\n        @scroll=\"onScroll\"\r\n      >\r\n        <table :class=\"bem.e('inner')\" :style=\"innerTableStyle\">\r\n          <colgroup>\r\n            <col\r\n              v-for=\"col in renderColumns\"\r\n              :key=\"col.key\"\r\n              :style=\"colStyle(col)\"\r\n            />\r\n          </colgroup>\r\n          <tbody>\r\n            <!-- 空数据时不渲染占位行，改用外层绝对定位空块 -->\r\n            <template v-if=\"data.length === 0\"></template>\r\n            <tr\r\n              v-else\r\n              v-for=\"(row, rIndex) in pageData\"\r\n              :key=\"row[rowKey] ?? rIndex\"\r\n              :class=\"[\r\n                bem.e('row'),\r\n                props.stripe && rIndex % 2 === 1 && bem.m('stripe'),\r\n                getRowClassName(row, rIndex),\r\n                { [bem.is('current-row')]: props.highlightCurrentRow && currentRowKey.value === (row[props.rowKey] ?? rIndex) }\r\n              ]\"\r\n              @click=\"handleRowClick(row, rIndex)\"\r\n            >\r\n              <td\r\n                v-for=\"(col, cIndex) in renderColumns\"\r\n                :key=\"col.key\"\r\n                :class=\"[\r\n                  bem.e('td'),\r\n                  getCellClassName(row, col, rIndex, cIndex)\r\n                ]\"\r\n                :style=\"tdStyle(col)\"\r\n              >\r\n                <slot :name=\"col.key\" :row=\"row\" :index=\"rIndex\">\r\n                  <span>{{ row[col.key] }}</span>\r\n                </slot>\r\n              </td>\r\n            </tr>\r\n          </tbody>\r\n        </table>\r\n        <!-- 空数据覆盖层：占满剩余内容区高度 -->\r\n        <div v-if=\"data.length === 0\" :class=\"bem.e('empty-block')\">\r\n          {{ emptyText }}\r\n        </div>\r\n      </div>\r\n\r\n      <!-- 悬浮滚动条（不占位）：垂直与水平 -->\r\n      <div\r\n        v-show=\"hasVScroll\"\r\n        :class=\"bem.e('vbar')\"\r\n        :style=\"vThumbStyle\"\r\n        @mousedown.prevent=\"onVThumbMouseDown\"\r\n      ></div>\r\n      <div\r\n        v-show=\"hasHScroll\"\r\n        :class=\"bem.e('hbar')\"\r\n        :style=\"hThumbStyle\"\r\n        @mousedown.prevent=\"onHThumbMouseDown\"\r\n      ></div>\r\n    </div>\r\n    <!-- 分页器（独立容器，避免使用 sticky） -->\r\n    <div :class=\"bem.e('pagination-wrap')\">\r\n      <c-pagination\r\n        v-model:currentPage=\"innerPage\"\r\n        v-model:pageSize=\"innerSize\"\r\n        :total=\"total\"\r\n        :pageSizes=\"pageSizes\"\r\n        :show-size-changer=\"showSizeChanger\"\r\n        :show-total=\"showTotal\"\r\n        :total-text=\"totalText\"\r\n        :show=\"shouldShowPagination\"\r\n        @change=\"onPageChange\"\r\n      />\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport {\r\n  computed,\r\n  ref,\r\n  watch,\r\n  onMounted,\r\n  onUnmounted,\r\n  provide,\r\n  useSlots,\r\n  nextTick,\r\n} from \"vue\";\r\n// Removed unused CPagination import to fix Vite subpath resolve error\r\nimport { createNamespace } from \"@cuixingjian/cui-utils/create\";\r\nimport { tableProps, tableEmits } from \"./table\";\r\nimport type { VNode } from \"vue\";\r\n\r\ndefineOptions({ name: \"c-table\" });\r\nconst bem = createNamespace(\"table\");\r\nconst props = defineProps(tableProps);\r\nconst emit = defineEmits(tableEmits);\r\nconst slots = useSlots();\r\n\r\n// 常量定义\r\nconst MIN_THUMB_SIZE = 24; // 滚动条 thumb 最小尺寸\r\nconst SCROLL_THRESHOLD = 1; // 滚动条显示阈值\r\nconst DEFAULT_COLUMN_WIDTH = 120; // 默认列宽\r\n\r\n// 当前高亮的行\r\nconst currentRowKey = ref<string | number | undefined>(undefined);\r\n\r\n// 分页相关\r\nconst innerPage = ref(props.currentPage);\r\nconst innerSize = ref(props.pageSize);\r\n\r\nwatch(\r\n  () => props.currentPage,\r\n  (v) => (innerPage.value = v)\r\n);\r\nwatch(\r\n  () => props.pageSize,\r\n  (v) => (innerSize.value = v)\r\n);\r\n\r\nconst shouldShowPagination = computed(() => {\r\n  return props.showPagination !== undefined\r\n    ? props.showPagination\r\n    : props.total > 0;\r\n});\r\n\r\nconst startIndex = computed(() => (innerPage.value - 1) * innerSize.value);\r\nconst endIndex = computed(() => startIndex.value + innerSize.value);\r\nconst pageData = computed(() =>\r\n  props.data.slice(startIndex.value, endIndex.value)\r\n);\r\n\r\nconst onPageChange = (page: number, size: number) => {\r\n  emit(\"update:currentPage\", page);\r\n  emit(\"update:pageSize\", size);\r\n  emit(\"pageChange\", page, size);\r\n};\r\n\r\n// 本地列宽映射（px），不直接修改 props.columns\r\nconst columnWidths = ref<Record<string, number>>({});\r\n// 通过插槽注册的列定义，模仿 Element Plus 的 c-table-column\r\nexport type ColumnDef = {\r\n  key: string;\r\n  title: string;\r\n  width?: number | string;\r\n  align?: \"left\" | \"center\" | \"right\";\r\n  fixed?: \"left\" | \"right\";\r\n  sortable?: boolean;\r\n  resizable?: boolean;\r\n  headerAlign?: \"left\" | \"center\" | \"right\";\r\n  showOverflowTooltip?: boolean;\r\n  type?: \"selection\" | \"index\" | \"expand\" | \"\";\r\n};\r\n\r\nconst slotColumns = ref<ColumnDef[]>([]);\r\nconst registerColumn = (col: ColumnDef) => {\r\n  slotColumns.value.push(col);\r\n};\r\nconst unregisterColumn = (col: ColumnDef) => {\r\n  const index = slotColumns.value.indexOf(col);\r\n  if (index > -1) {\r\n    slotColumns.value.splice(index, 1);\r\n  }\r\n};\r\nprovide(\"c-table\", {\r\n  registerColumn,\r\n  unregisterColumn,\r\n  direction: ref<\"horizontal\" | \"vertical\">(\"horizontal\"),\r\n});\r\n\r\n// 合并来源：若存在 slot 定义列，则优先使用；否则使用 props.columns\r\nconst renderColumns = computed<ColumnDef[]>(() => {\r\n  return slotColumns.value.length > 0 ? slotColumns.value : (props.columns as ColumnDef[]);\r\n});\r\n\r\nconst colStyle = (col: any) => {\r\n  const w = columnWidths.value[col.key] ?? col.width;\r\n  return { width: formatSize(w) };\r\n};\r\n\r\nconst thStyle = (col: ColumnDef) => ({\r\n  textAlign: col.headerAlign || col.align || \"left\",\r\n  position: props.columnResizable ? (\"relative\" as const) : undefined,\r\n});\r\nconst tdStyle = (col: ColumnDef) => ({ textAlign: col.align || \"left\" });\r\n\r\n// 获取行类名\r\nconst getRowClassName = (row: any, index: number): string => {\r\n  if (typeof props.rowClassName === 'function') {\r\n    return props.rowClassName(row, index);\r\n  }\r\n  return props.rowClassName || '';\r\n};\r\n\r\n// 获取表头单元格类名\r\nconst getHeaderCellClassName = (column: ColumnDef, index: number): string => {\r\n  if (typeof props.headerCellClassName === 'function') {\r\n    return props.headerCellClassName(column, index);\r\n  }\r\n  return props.headerCellClassName || '';\r\n};\r\n\r\n// 获取单元格类名\r\nconst getCellClassName = (row: any, column: ColumnDef, rowIndex: number, columnIndex: number): string => {\r\n  if (typeof props.cellClassName === 'function') {\r\n    return props.cellClassName(row, column, rowIndex, columnIndex);\r\n  }\r\n  return props.cellClassName || '';\r\n};\r\n\r\n// 处理行点击\r\nconst handleRowClick = (row: any, index: number) => {\r\n  if (props.highlightCurrentRow) {\r\n    currentRowKey.value = row[props.rowKey] ?? index;\r\n  }\r\n  emit('row-click', row, index);\r\n};\r\n\r\nfunction formatSize(s?: number | string) {\r\n  if (s === undefined) return undefined;\r\n  return typeof s === \"number\" ? s + \"px\" : s;\r\n}\r\n\r\n// 解析宽度为数字（px），不支持百分比拖拽\r\nfunction parseSizeNumber(s?: number | string): number | undefined {\r\n  if (s === undefined) return undefined;\r\n  if (typeof s === \"number\") return s;\r\n  const m = /^(\\d+(?:\\.\\d+)?)px$/.exec(s.trim());\r\n  return m ? parseFloat(m[1]) : undefined;\r\n}\r\n\r\n// 列宽调整状态\r\ninterface ResizeState {\r\n  key: string;\r\n  startX: number;\r\n  startWidth: number;\r\n  baseTotalWidth: number;\r\n  tableLimitWidth: number;\r\n  startWidths: Record<string, number>;\r\n  resizeIndex: number;\r\n  neighborIndex: number;\r\n}\r\n\r\nconst resizeState = ref<ResizeState | null>(null);\r\n\r\n// 获取列的当前宽度\r\nconst getColumnWidth = (col: ColumnDef, th?: HTMLElement): number => {\r\n  return (\r\n    columnWidths.value[col.key] ??\r\n    parseSizeNumber(col.width) ??\r\n    (th?.getBoundingClientRect().width ?? DEFAULT_COLUMN_WIDTH)\r\n  );\r\n};\r\n\r\n// 计算相邻列索引\r\nconst getNeighborIndex = (currentIndex: number, total: number): number => {\r\n  if (currentIndex + 1 < total) return currentIndex + 1;\r\n  if (currentIndex - 1 >= 0) return currentIndex - 1;\r\n  return -1;\r\n};\r\n\r\nfunction onResizeStart(e: MouseEvent, col: ColumnDef) {\r\n  if (!props.columnResizable) return;\r\n  e.preventDefault();\r\n  \r\n  const th = (e.currentTarget as HTMLElement).parentElement as HTMLElement;\r\n  const currentWidth = getColumnWidth(col, th);\r\n  const tr = th.parentElement as HTMLElement;\r\n  const ths = Array.from(tr.children) as HTMLElement[];\r\n  \r\n  const baseTotalWidth = ths.reduce(\r\n    (sum, el) => sum + el.getBoundingClientRect().width,\r\n    0\r\n  );\r\n  \r\n  // 记录所有列的起始宽度\r\n  const startWidths: Record<string, number> = {};\r\n  const orderKeys = renderColumns.value.map((c) => c.key);\r\n  let resizeIndex = -1;\r\n  \r\n  orderKeys.forEach((k, idx) => {\r\n    const el = ths[idx] as HTMLElement;\r\n    const baseCol = renderColumns.value[idx];\r\n    startWidths[k] = getColumnWidth(baseCol, el);\r\n    if (k === col.key) resizeIndex = idx;\r\n  });\r\n  \r\n  const neighborIndex = getNeighborIndex(resizeIndex, orderKeys.length);\r\n  const tableEl = th.closest(\".\" + bem.b()) as HTMLElement;\r\n  const tableLimitWidth = tableEl\r\n    ? tableEl.getBoundingClientRect().width\r\n    : baseTotalWidth;\r\n\r\n  resizeState.value = {\r\n    key: col.key,\r\n    startX: e.clientX,\r\n    startWidth: currentWidth,\r\n    baseTotalWidth,\r\n    tableLimitWidth,\r\n    startWidths,\r\n    resizeIndex,\r\n    neighborIndex,\r\n  };\r\n  \r\n  document.addEventListener(\"mousemove\", onMouseMove);\r\n  document.addEventListener(\"mouseup\", onMouseUp);\r\n}\r\n\r\n// 计算调整后的列宽（考虑相邻列约束）\r\nconst calculateAdjustedWidths = (\r\n  state: ResizeState,\r\n  delta: number\r\n): { targetWidth: number; neighborWidth?: number } => {\r\n  const { startWidth, startWidths, neighborIndex, baseTotalWidth, tableLimitWidth } = state;\r\n  \r\n  // 目标列新宽度（先按上下限约束）\r\n  let targetWidth = Math.max(\r\n    props.minColumnWidth,\r\n    Math.min(props.maxColumnWidth, Math.round(startWidth + delta))\r\n  );\r\n\r\n  // 与 Element Plus 一致：联动相邻列保持总宽度不变\r\n  if (neighborIndex !== -1) {\r\n    const orderKeys = renderColumns.value.map((c) => c.key);\r\n    const neighborKey = orderKeys[neighborIndex];\r\n    const neighborStart = startWidths[neighborKey];\r\n    const adjustDelta = targetWidth - startWidth;\r\n    let neighborWidth = Math.round(neighborStart - adjustDelta);\r\n    \r\n    // 保证相邻列不小于最小宽度\r\n    if (neighborWidth < props.minColumnWidth) {\r\n      const allowedDelta = neighborStart - props.minColumnWidth;\r\n      targetWidth = Math.round(startWidth + allowedDelta);\r\n      neighborWidth = props.minColumnWidth;\r\n    }\r\n    \r\n    // 保证相邻列不超过最大宽度\r\n    if (neighborWidth > props.maxColumnWidth) {\r\n      const overflow = neighborWidth - props.maxColumnWidth;\r\n      targetWidth = Math.round(targetWidth + overflow);\r\n      neighborWidth = props.maxColumnWidth;\r\n    }\r\n    \r\n    // 当未开启横向滚动时，避免超过父容器宽度\r\n    if (!props.scrollX) {\r\n      const totalAfter = baseTotalWidth + (targetWidth - startWidth) + (neighborWidth - neighborStart);\r\n      const overflowTotal = totalAfter - tableLimitWidth;\r\n      if (overflowTotal > 0) {\r\n        targetWidth = Math.round(targetWidth - overflowTotal);\r\n        neighborWidth = Math.round(neighborWidth);\r\n      }\r\n    }\r\n    \r\n    return { targetWidth, neighborWidth };\r\n  } else {\r\n    // 没有相邻列时，退化为不超过父容器的约束\r\n    if (props.scrollX) {\r\n      // 允许超出父容器，依靠外层 overflow-x 展示滚动\r\n      return { targetWidth };\r\n    } else {\r\n      const capacity = Math.max(\r\n        props.minColumnWidth,\r\n        Math.round(tableLimitWidth - (baseTotalWidth - startWidth))\r\n      );\r\n      const clamped = Math.min(targetWidth, capacity);\r\n      return { targetWidth: clamped };\r\n    }\r\n  }\r\n};\r\n\r\nfunction onMouseMove(e: MouseEvent) {\r\n  if (!resizeState.value) return;\r\n  \r\n  const delta = e.clientX - resizeState.value.startX;\r\n  const { targetWidth, neighborWidth } = calculateAdjustedWidths(resizeState.value, delta);\r\n  \r\n  const updates: Record<string, number> = {\r\n    [resizeState.value.key]: targetWidth,\r\n  };\r\n  \r\n  if (neighborWidth !== undefined) {\r\n    const orderKeys = renderColumns.value.map((c) => c.key);\r\n    const neighborKey = orderKeys[resizeState.value.neighborIndex];\r\n    updates[neighborKey] = neighborWidth;\r\n  }\r\n  \r\n  columnWidths.value = { ...columnWidths.value, ...updates };\r\n}\r\n\r\nfunction onMouseUp() {\r\n  if (!resizeState.value) return;\r\n  resizeState.value = null;\r\n  document.removeEventListener(\"mousemove\", onMouseMove);\r\n  document.removeEventListener(\"mouseup\", onMouseUp);\r\n}\r\n\r\n// 外层容器样式（保持容器宽度，不做滚动）\r\nconst wrapperStyle = computed(() => ({}));\r\n\r\n// 滚动容器：纵向滚动固定高度，横向滚动可选\r\nconst scrollStyle = computed(() => {\r\n  const height = props.maxHeight ? formatSize(props.maxHeight) : formatSize(props.height);\r\n  return {\r\n    height,\r\n    maxHeight: props.maxHeight ? formatSize(props.maxHeight) : undefined,\r\n    overflowY: \"auto\" as const,\r\n    overflowX: props.scrollX ? (\"auto\" as const) : undefined,\r\n  };\r\n});\r\n\r\n// （已简化）\r\n\r\nconst innerTableStyle = computed(() => {\r\n  if (!props.scrollX) return undefined;\r\n  // 以当前列定义为基准计算最小宽度\r\n  const sum = renderColumns.value.reduce(\r\n    (acc, col: any) =>\r\n      acc + (columnWidths.value[col.key] ?? parseSizeNumber(col.width) ?? DEFAULT_COLUMN_WIDTH),\r\n    0\r\n  );\r\n  return { minWidth: `${sum}px` };\r\n});\r\n\r\n// 已移除自定义滚动条逻辑，保留原生滚动\r\n// 悬浮滚动条（不占位）逻辑：根据滚动同步 thumb 尺寸与位置，并支持拖拽\r\nconst scrollRef = ref<HTMLElement | null>(null);\r\nconst hasVScroll = ref(false);\r\nconst hasHScroll = ref(false);\r\nconst vThumbStyle = ref<Record<string, string>>({});\r\nconst hThumbStyle = ref<Record<string, string>>({});\r\nlet vThumbTop = 0;\r\nlet vThumbHeight = 0;\r\nlet hThumbLeft = 0;\r\nlet hThumbWidth = 0;\r\nconst isScrollbarActive = ref(false);\r\nconst headerRef = ref<HTMLElement | null>(null);\r\nconst headerOffsetX = ref(0);\r\n\r\nconst headerTableStyle = computed(() => {\r\n  // 当出现横向滚动时，通过水平位移让表头与内容对齐\r\n  if (!props.scrollX) return undefined;\r\n  return { transform: `translateX(${-headerOffsetX.value}px)` };\r\n});\r\n\r\n// 计算滚动条 thumb 尺寸和位置\r\nconst calculateThumb = (\r\n  clientSize: number,\r\n  scrollSize: number,\r\n  scrollPos: number\r\n): { size: number; position: number } => {\r\n  const ratio = clientSize / scrollSize;\r\n  const size = Math.max(MIN_THUMB_SIZE, Math.round(clientSize * ratio));\r\n  const maxPosition = Math.max(0, clientSize - size);\r\n  const scrollRange = scrollSize - clientSize;\r\n  const position = scrollRange > 0\r\n    ? (scrollPos / scrollRange) * maxPosition\r\n    : 0;\r\n  return {\r\n    size: isFinite(size) ? size : MIN_THUMB_SIZE,\r\n    position: isFinite(position) ? position : 0,\r\n  };\r\n};\r\n\r\nfunction updateThumbs() {\r\n  const el = scrollRef.value;\r\n  if (!el) return;\r\n  \r\n  hasVScroll.value = el.scrollHeight > el.clientHeight + SCROLL_THRESHOLD;\r\n  hasHScroll.value = el.scrollWidth > el.clientWidth + SCROLL_THRESHOLD;\r\n\r\n  if (hasVScroll.value) {\r\n    const { size, position } = calculateThumb(\r\n      el.clientHeight,\r\n      el.scrollHeight,\r\n      el.scrollTop\r\n    );\r\n    vThumbHeight = size;\r\n    vThumbTop = position;\r\n    vThumbStyle.value = {\r\n      height: `${size}px`,\r\n      top: `${position}px`,\r\n    };\r\n  } else {\r\n    vThumbStyle.value = {};\r\n  }\r\n\r\n  if (hasHScroll.value) {\r\n    const { size, position } = calculateThumb(\r\n      el.clientWidth,\r\n      el.scrollWidth,\r\n      el.scrollLeft\r\n    );\r\n    hThumbWidth = size;\r\n    hThumbLeft = position;\r\n    hThumbStyle.value = {\r\n      width: `${size}px`,\r\n      left: `${position}px`,\r\n    };\r\n  } else {\r\n    hThumbStyle.value = {};\r\n  }\r\n}\r\n\r\nfunction onScroll() {\r\n  updateThumbs();\r\n  const el = scrollRef.value;\r\n  if (el) headerOffsetX.value = el.scrollLeft;\r\n}\r\n\r\n// 滚动条拖拽状态管理\r\ntype ScrollDirection = 'vertical' | 'horizontal';\r\ninterface ScrollDragState {\r\n  isDragging: boolean;\r\n  startPos: number;\r\n  startThumbPos: number;\r\n  thumbSize: number;\r\n  moveHandler: (e: MouseEvent) => void;\r\n  upHandler: () => void;\r\n}\r\n\r\nconst scrollDragState = ref<ScrollDragState | null>(null);\r\n\r\n// 创建滚动条拖拽处理器\r\nconst createScrollDragHandler = (\r\n  direction: ScrollDirection,\r\n  hasScroll: () => boolean,\r\n  getThumbPos: () => number,\r\n  getThumbSize: () => number,\r\n  setScrollPos: (pos: number) => void\r\n) => {\r\n  const onMouseDown = (e: MouseEvent) => {\r\n    const el = scrollRef.value;\r\n    if (!el || !hasScroll()) return;\r\n    \r\n    const startClientPos = direction === 'vertical' ? e.clientY : e.clientX;\r\n    const startThumbPos = getThumbPos();\r\n    const thumbSize = getThumbSize();\r\n    \r\n    scrollDragState.value = {\r\n      isDragging: true,\r\n      startPos: startClientPos,\r\n      startThumbPos,\r\n      thumbSize,\r\n      moveHandler: (moveEvent: MouseEvent) => {\r\n        if (!scrollDragState.value?.isDragging) return;\r\n        const el = scrollRef.value!;\r\n        const delta = (direction === 'vertical' ? moveEvent.clientY : moveEvent.clientX) - scrollDragState.value.startPos;\r\n        const clientSize = direction === 'vertical' ? el.clientHeight : el.clientWidth;\r\n        const scrollSize = direction === 'vertical' ? el.scrollHeight : el.scrollWidth;\r\n        const maxThumbPos = Math.max(0, clientSize - scrollDragState.value.thumbSize);\r\n        const nextThumbPos = Math.max(0, Math.min(scrollDragState.value.startThumbPos + delta, maxThumbPos));\r\n        const maxScroll = scrollSize - clientSize;\r\n        const scrollPos = (nextThumbPos / (maxThumbPos || 1)) * maxScroll;\r\n        setScrollPos(scrollPos);\r\n        updateThumbs();\r\n      },\r\n      upHandler: () => {\r\n        if (!scrollDragState.value) return;\r\n        scrollDragState.value.isDragging = false;\r\n        isScrollbarActive.value = false;\r\n        scrollDragState.value = null;\r\n      },\r\n    };\r\n    \r\n    isScrollbarActive.value = true;\r\n    document.addEventListener(\"mousemove\", scrollDragState.value.moveHandler);\r\n    document.addEventListener(\"mouseup\", scrollDragState.value.upHandler);\r\n  };\r\n  \r\n  return onMouseDown;\r\n};\r\n\r\nconst onVThumbMouseDown = createScrollDragHandler(\r\n  'vertical',\r\n  () => hasVScroll.value,\r\n  () => vThumbTop,\r\n  () => vThumbHeight,\r\n  (pos) => { if (scrollRef.value) scrollRef.value.scrollTop = pos; }\r\n);\r\n\r\nconst onHThumbMouseDown = createScrollDragHandler(\r\n  'horizontal',\r\n  () => hasHScroll.value,\r\n  () => hThumbLeft,\r\n  () => hThumbWidth,\r\n  (pos) => { if (scrollRef.value) scrollRef.value.scrollLeft = pos; }\r\n);\r\n\r\nlet ro: ResizeObserver | null = null;\r\nonMounted(() => {\r\n  nextTick(() => {\r\n    updateThumbs();\r\n    const el = scrollRef.value;\r\n    if (el && typeof ResizeObserver !== \"undefined\") {\r\n      ro = new ResizeObserver(() => updateThumbs());\r\n      ro.observe(el);\r\n    }\r\n  });\r\n});\r\n\r\n// 清理所有事件监听器\r\nconst cleanupEventListeners = () => {\r\n  if (scrollDragState.value) {\r\n    document.removeEventListener(\"mousemove\", scrollDragState.value.moveHandler);\r\n    document.removeEventListener(\"mouseup\", scrollDragState.value.upHandler);\r\n    scrollDragState.value = null;\r\n  }\r\n  if (resizeState.value) {\r\n    document.removeEventListener(\"mousemove\", onMouseMove);\r\n    document.removeEventListener(\"mouseup\", onMouseUp);\r\n    resizeState.value = null;\r\n  }\r\n};\r\n\r\nonUnmounted(() => {\r\n  if (ro) ro.disconnect();\r\n  cleanupEventListeners();\r\n});\r\n</script>\r\n","import { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport const tableColumnProps = {\r\n  prop: { type: String, default: '' },\r\n  label: { type: String, default: '' },\r\n  width: { type: [Number, String] as PropType<number | string>, default: undefined },\r\n  minWidth: { type: [Number, String] as PropType<number | string>, default: undefined },\r\n  align: { type: String as PropType<'left' | 'center' | 'right'>, default: 'left' },\r\n  fixed: { type: String as PropType<'left' | 'right' | undefined>, default: undefined },\r\n  sortable: { type: Boolean, default: false },\r\n  resizable: { type: Boolean, default: undefined },\r\n  headerAlign: { type: String as PropType<'left' | 'center' | 'right'>, default: undefined },\r\n  showOverflowTooltip: { type: Boolean, default: false },\r\n  type: { type: String as PropType<'selection' | 'index' | 'expand' | ''>, default: '' }\r\n} as const\r\n\r\nexport type TableColumnProps = ExtractPropTypes<typeof tableColumnProps>","<template>\r\n  <!-- 纯声明式子组件：不直接渲染；注册到父 Table -->\r\n  <slot />\r\n  <!-- 实际渲染由父表格完成 -->\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { getCurrentInstance, inject, onMounted, onBeforeUnmount, toRefs } from 'vue'\r\nimport { tableColumnProps } from './table-column'\r\n\r\ndefineOptions({ name: 'c-table-column' })\r\nconst props = defineProps(tableColumnProps)\r\nconst instance = getCurrentInstance()!\r\n\r\n// 注入父表格上下文\r\nconst tableCtx = inject('c-table') as any\r\n\r\nconst columnDef = {\r\n  key: props.prop || instance.uid.toString(),\r\n  title: props.label,\r\n  width: props.width,\r\n  align: props.align,\r\n  fixed: props.fixed,\r\n  sortable: props.sortable,\r\n  resizable: props.resizable,\r\n  headerAlign: props.headerAlign,\r\n  showOverflowTooltip: props.showOverflowTooltip,\r\n  type: props.type\r\n}\r\n\r\nonMounted(() => {\r\n  tableCtx?.registerColumn?.(columnDef, instance)\r\n})\r\n\r\nonBeforeUnmount(() => {\r\n  tableCtx?.unregisterColumn?.(columnDef, instance)\r\n})\r\n</script>","import { withInstall } from \"@cuixingjian/cui-utils/install\";\r\nimport type { SFCWithInstall } from \"../types\";\r\nimport _Table from \"./src/table.vue\";\r\nimport _TableColumn from \"./src/table-column.vue\";\r\n// 分页组件\r\n// 移除对 Pagination 的额外注册，交由总安装器统一注册\r\n\r\nexport * from \"./src/table\";\r\nexport * from \"./src/instance\";\r\nexport * from \"./src/table-column\";\r\nconst Table: SFCWithInstall<typeof _Table> = withInstall(_Table);\r\nconst TableColumn: SFCWithInstall<typeof _TableColumn> = withInstall(_TableColumn);\r\n\r\nexport { TableColumn };\r\nexport default Table;\r\n\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    CTable: typeof Table;\r\n    CTableColumn: typeof TableColumn;\r\n  }\r\n}\r\n","<template>\r\n  <Transition name=\"c-message-fade\" appear @after-leave=\"onAfterLeave\">\r\n    <div v-show=\"visible\" :class=\"classes\" role=\"alert\">\r\n      <span v-if=\"showIcon\" class=\"c-message__icon\" :style=\"{ color: iconColor }\">\r\n        <!-- success (solid) -->\r\n        <svg v-if=\"props.type === 'success'\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" fill=\"none\">\r\n          <circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"currentColor\" />\r\n          <path d=\"M8 12l2.5 2.5L16 9\" stroke=\"#fff\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n        </svg>\r\n        <!-- warning (solid) -->\r\n        <svg v-else-if=\"props.type === 'warning'\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" fill=\"none\">\r\n          <circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"currentColor\" />\r\n          <path d=\"M12 8v6\" stroke=\"#fff\" stroke-width=\"2.5\" stroke-linecap=\"round\" />\r\n          <circle cx=\"12\" cy=\"17\" r=\"1.5\" fill=\"#fff\" />\r\n        </svg>\r\n        <!-- error (solid) -->\r\n        <svg v-else-if=\"props.type === 'error'\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" fill=\"none\">\r\n          <circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"currentColor\" />\r\n          <path d=\"M8.5 8.5l7 7M15.5 8.5l-7 7\" stroke=\"#fff\" stroke-width=\"2.5\" stroke-linecap=\"round\" />\r\n        </svg>\r\n        <!-- info (solid, default) -->\r\n        <svg v-else viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" fill=\"none\" shape-rendering=\"geometricPrecision\">\r\n          <circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"currentColor\" />\r\n          <!-- larger dot for clarity -->\r\n          <circle cx=\"12\" cy=\"7\" r=\"2\" fill=\"#fff\" />\r\n          <!-- thicker centered stem with rounded corners -->\r\n          <rect x=\"10.5\" y=\"10.5\" width=\"3\" height=\"7\" rx=\"1.5\" fill=\"#fff\" />\r\n        </svg>\r\n      </span>\r\n      <div class=\"c-message__content\">\r\n        <slot>\r\n          {{ message }}\r\n        </slot>\r\n      </div>\r\n      <button\r\n        v-if=\"closable\"\r\n        class=\"c-message__close\"\r\n        type=\"button\"\r\n        aria-label=\"关闭\"\r\n        title=\"关闭\"\r\n        @click=\"onClose\"\r\n      >\r\n        <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\r\n          <path d=\"M6 6L18 18M6 18L18 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n        </svg>\r\n      </button>\r\n    </div>\r\n  </Transition>\r\n  \r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\ndefineOptions({ name: 'c-message' })\r\n\r\nexport type MessageType = 'info' | 'success' | 'warning' | 'error'\r\n\r\nconst props = defineProps({\r\n  type: { type: String as () => MessageType, default: 'info' },\r\n  message: { type: String, default: '' },\r\n  showIcon: { type: Boolean, default: true },\r\n  closable: { type: Boolean, default: false },\r\n  visible: { type: Boolean, default: true }\r\n})\r\n\r\nconst emit = defineEmits<{ (e: 'close'): void, (e: 'after-leave'): void }>()\r\n\r\nconst ns = createNamespace('message')\r\n\r\nconst classes = computed(() => [ns.b(), ns.m(props.type)])\r\n\r\nconst iconColor = computed(() => {\r\n  switch (props.type) {\r\n    case 'success':\r\n      return '#67c23a'\r\n    case 'warning':\r\n      return '#e6a23c'\r\n    case 'error':\r\n      return '#f56c6c'\r\n    default:\r\n      return '#409eff'\r\n  }\r\n})\r\n\r\nconst onClose = () => emit('close')\r\n\r\nconst onAfterLeave = () => emit('after-leave')\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import { createVNode, render, VNode, h, TransitionGroup } from 'vue'\r\nimport MessageComp from './message.vue'\r\n\r\nexport type MessageType = 'info' | 'success' | 'warning' | 'error'\r\nexport type MessagePosition = 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'\r\n\r\nexport interface MessageOptions {\r\n  type?: MessageType\r\n  message?: string\r\n  duration?: number\r\n  showIcon?: boolean\r\n  closable?: boolean\r\n  position?: MessagePosition\r\n  render?: () => VNode\r\n  onClose?: () => void\r\n}\r\n\r\nconst POSITION_CLASS_MAP: Record<MessagePosition, string> = {\r\n  'top': 'c-message-container--top',\r\n  'bottom': 'c-message-container--bottom',\r\n  'top-left': 'c-message-container--top-left',\r\n  'top-right': 'c-message-container--top-right',\r\n  'bottom-left': 'c-message-container--bottom-left',\r\n  'bottom-right': 'c-message-container--bottom-right'\r\n}\r\n\r\n// 全局实例队列与上限控制\r\nconst MAX_MESSAGES = 6\r\ntype QueueItem = { id: number; close: () => void, position: MessagePosition }\r\nconst instances: QueueItem[] = []\r\nlet nextId = 1\r\n\r\n// 每个位置一个渲染组，使用 TransitionGroup 管理同一容器内的消息队列\r\ntype Item = {\r\n  id: number\r\n  type: MessageType\r\n  text: string\r\n  showIcon: boolean\r\n  closable: boolean\r\n  renderSlot?: () => VNode\r\n  onClose?: () => void\r\n  duration: number\r\n  visible: boolean\r\n  timer?: any\r\n  close: () => void\r\n}\r\n\r\ntype Group = {\r\n  container: HTMLElement\r\n  items: Item[]\r\n}\r\n\r\nconst groups: Record<MessagePosition, Group> = {} as any\r\n\r\nfunction ensureContainer(position: MessagePosition = 'top'): HTMLElement {\r\n  const id = `c-message-container-${position}`\r\n  let el = document.getElementById(id)\r\n  if (!el) {\r\n    el = document.createElement('div')\r\n    el.id = id\r\n    el.className = `c-message-container ${POSITION_CLASS_MAP[position]}`\r\n    document.body.appendChild(el)\r\n  }\r\n  return el\r\n}\r\n\r\nfunction ensureGroup(position: MessagePosition): Group {\r\n  const container = ensureContainer(position)\r\n  let group = groups[position]\r\n  if (!group) {\r\n    group = { container, items: [] }\r\n    groups[position] = group\r\n  } else {\r\n    group.container = container\r\n  }\r\n  return group\r\n}\r\n\r\nfunction renderGroup(group: Group) {\r\n  const children = group.items.map((item) => {\r\n    const props = {\r\n      type: item.type,\r\n      message: item.text,\r\n      showIcon: item.showIcon,\r\n      closable: item.closable,\r\n      visible: item.visible,\r\n      onClose: () => { item.onClose?.(); item.close() },\r\n      onAfterLeave: () => {\r\n        const idx = group.items.findIndex(i => i.id === item.id)\r\n        if (idx !== -1) group.items.splice(idx, 1)\r\n        // 从全局队列移除\r\n        const gidx = instances.findIndex(i => i.id === item.id)\r\n        if (gidx !== -1) instances.splice(gidx, 1)\r\n        renderGroup(group)\r\n      },\r\n      key: item.id\r\n    }\r\n    return h(MessageComp, props, item.renderSlot ? { default: item.renderSlot } : undefined)\r\n  })\r\n\r\n  const vnode = h(TransitionGroup as any, { name: 'c-message-list' }, () => children)\r\n  render(vnode, group.container)\r\n}\r\n\r\nexport function message(options: MessageOptions) {\r\n  const {\r\n    type = 'info',\r\n    message: text = '',\r\n    duration = 3000,\r\n    showIcon = true,\r\n    closable = false,\r\n    position = 'top',\r\n    render: renderSlot,\r\n    onClose\r\n  } = options\r\n\r\n  // 超出上限时，关闭最早的一条\r\n  if (instances.length >= MAX_MESSAGES) {\r\n    const oldest = instances[0]\r\n    oldest?.close()\r\n  }\r\n\r\n  const group = ensureGroup(position)\r\n  const id = nextId++\r\n\r\n  const item: Item = {\r\n    id,\r\n    type,\r\n    text,\r\n    showIcon,\r\n    closable,\r\n    renderSlot,\r\n    onClose,\r\n    duration,\r\n    visible: true,\r\n    close: () => {\r\n      if (item.timer) clearTimeout(item.timer)\r\n      item.visible = false\r\n      renderGroup(group)\r\n    }\r\n  }\r\n\r\n  group.items.push(item)\r\n  const instance: QueueItem = { id, close: item.close, position }\r\n  instances.push(instance)\r\n  renderGroup(group)\r\n\r\n  if (duration > 0) {\r\n    item.timer = setTimeout(() => item.close(), duration)\r\n  }\r\n\r\n  return { close: item.close }\r\n}\r\n\r\nexport type MessageFn = typeof message","import type { VNode } from 'vue'\r\nimport { message } from './service'\r\nimport type { MessageOptions } from './service'\r\n\r\nexport type MessageAPI = {\r\n  (options: MessageOptions | string): { close: () => void }\r\n  info: (options: MessageOptions | string) => { close: () => void }\r\n  success: (options: MessageOptions | string) => { close: () => void }\r\n  warning: (options: MessageOptions | string) => { close: () => void }\r\n  error: (options: MessageOptions | string) => { close: () => void }\r\n}\r\n\r\nfunction normalize(options: MessageOptions | string): MessageOptions {\r\n  return typeof options === 'string' ? { message: options } : options\r\n}\r\n\r\nexport const messageFacade = ((options: MessageOptions | string) => {\r\n  return message(normalize(options))\r\n}) as MessageAPI\r\n\r\nmessageFacade.info = (options: MessageOptions | string) => {\r\n  const opts = normalize(options)\r\n  return message({ ...opts, type: 'info' })\r\n}\r\n\r\nmessageFacade.success = (options: MessageOptions | string) => {\r\n  const opts = normalize(options)\r\n  return message({ ...opts, type: 'success' })\r\n}\r\n\r\nmessageFacade.warning = (options: MessageOptions | string) => {\r\n  const opts = normalize(options)\r\n  return message({ ...opts, type: 'warning' })\r\n}\r\n\r\nmessageFacade.error = (options: MessageOptions | string) => {\r\n  const opts = normalize(options)\r\n  return message({ ...opts, type: 'error' })\r\n}","import { messageFacade } from './src/facade'\r\n\r\nexport * from './src/instance'\r\n\r\n// 仅导出服务函数 CMessage，不进行全局挂载\r\nexport const CMessage = messageFacade","import type { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport type BreadcrumbSeparator = string | 'slash' | 'arrow'\r\n\r\nexport const breadcrumbProps = {\r\n  separator: {\r\n    type: String as PropType<BreadcrumbSeparator>,\r\n    default: 'slash'\r\n  },\r\n  // aria 属性：导航标签\r\n  ariaLabel: {\r\n    type: String,\r\n    default: 'Breadcrumb'\r\n  }\r\n} as const\r\n\r\nexport type BreadcrumbProps = ExtractPropTypes<typeof breadcrumbProps>\r\n\r\nexport const breadcrumbEmits = {}\r\nexport type BreadcrumbEmits = typeof breadcrumbEmits","<template>\r\n  <nav :class=\"bem.b()\" :aria-label=\"ariaLabel\">\r\n    <ol :class=\"bem.e('list')\">\r\n      <slot></slot>\r\n    </ol>\r\n  </nav>\r\n  \r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { provide, ref } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { breadcrumbProps } from './breadcrumb'\r\n\r\ndefineOptions({ name: 'c-breadcrumb' })\r\n\r\nconst bem = createNamespace('breadcrumb')\r\nconst props = defineProps(breadcrumbProps)\r\n\r\n// 提供上下文：分隔符与子项注册\r\nconst items = ref<number[]>([])\r\nprovide('CUI_BREADCRUMB', {\r\n  separator: props.separator,\r\n  items,\r\n  register(uid: number) {\r\n    items.value.push(uid)\r\n  },\r\n  unregister(uid: number) {\r\n    items.value = items.value.filter(i => i !== uid)\r\n  }\r\n})\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import type { ExtractPropTypes } from 'vue'\r\n\r\nexport const breadcrumbItemProps = {\r\n  to: {\r\n    type: [String, Object] as any,\r\n    default: ''\r\n  },\r\n  replace: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 显示文本\r\n  label: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 是否禁用链接行为\r\n  disabled: {\r\n    type: Boolean,\r\n    default: false\r\n  }\r\n} as const\r\n\r\nexport type BreadcrumbItemProps = ExtractPropTypes<typeof breadcrumbItemProps>","<template>\r\n  <li :class=\"[bem.e('item'), disabled ? 'is-disabled' : '']\" :aria-disabled=\"disabled ? 'true' : 'false'\">\r\n    <span v-if=\"disabled || !to\" :class=\"bem.e('label')\" :aria-current=\"isLast ? 'page' : undefined\">\r\n      <slot>{{ label }}</slot>\r\n    </span>\r\n    <a v-else :class=\"bem.e('link')\" href=\"javascript:void(0)\" @click=\"navigate\" :aria-current=\"isLast ? 'page' : undefined\">\r\n      <slot>{{ label }}</slot>\r\n    </a>\r\n    <span v-if=\"showSeparator\" :class=\"bem.e('separator')\">\r\n      <slot name=\"separator\">\r\n        <span v-if=\"separator === 'slash'\">/</span>\r\n        <span v-else-if=\"separator === 'arrow'\">></span>\r\n        <span v-else>{{ separator }}</span>\r\n      </slot>\r\n    </span>\r\n  </li>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { inject, computed, getCurrentInstance, onMounted, onBeforeUnmount } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { breadcrumbItemProps } from './breadcrumb-item'\r\n\r\ndefineOptions({ name: 'c-breadcrumb-item' })\r\n\r\nconst bem = createNamespace('breadcrumb')\r\nconst props = defineProps(breadcrumbItemProps)\r\n\r\nconst ctx = inject<any>('CUI_BREADCRUMB', null)\r\nconst separator = computed(() => ctx?.separator ?? 'slash')\r\nconst uid = getCurrentInstance()!.uid\r\nonMounted(() => ctx?.register?.(uid))\r\nonBeforeUnmount(() => ctx?.unregister?.(uid))\r\n\r\nconst router = (window as any).$router ?? null\r\nconst navigate = (e: MouseEvent) => {\r\n  if (props.disabled) return\r\n  if (!props.to) return\r\n  try {\r\n    if (typeof props.to === 'string') {\r\n      if (router) {\r\n        props.replace ? router.replace(props.to) : router.push(props.to)\r\n      } else {\r\n        window.location.href = props.to\r\n      }\r\n    } else if (router) {\r\n      props.replace ? router.replace(props.to as any) : router.push(props.to as any)\r\n    }\r\n  } catch (err) {\r\n    console.warn('[CBreadcrumbItem] navigate error:', err)\r\n  }\r\n}\r\n\r\nconst showSeparator = computed(() => {\r\n  const list = ctx?.items?.value ?? []\r\n  const last = list[list.length - 1]\r\n  return uid !== last\r\n})\r\n\r\nconst isLast = computed(() => !showSeparator.value)\r\n\r\n// 暴露给父组件或外部使用\r\ndefineExpose({ navigate })\r\n</script>\r\n\r\n<style scoped>\r\n</style>","// 面包屑组件入口文件\r\n\r\nimport { withInstall } from \"@cuixingjian/cui-utils/install\"\r\nimport type { SFCWithInstall } from \"../types\"\r\nimport _Breadcrumb from \"./src/breadcrumb.vue\"\r\nimport _BreadcrumbItem from \"./src/breadcrumb-item.vue\"\r\n\r\nexport * from \"./src/breadcrumb\"\r\nexport * from \"./src/breadcrumb-item\"\r\nexport * from \"./src/instance\"\r\n\r\nconst Breadcrumb: SFCWithInstall<typeof _Breadcrumb> = withInstall(_Breadcrumb)\r\nconst BreadcrumbItem: SFCWithInstall<typeof _BreadcrumbItem> = withInstall(_BreadcrumbItem)\r\n\r\nexport { BreadcrumbItem }\r\nexport default Breadcrumb\r\n\r\n// 在vue中方便提示\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    CBreadcrumb: typeof Breadcrumb\r\n    CBreadcrumbItem: typeof BreadcrumbItem\r\n  }\r\n}","import { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport type TooltipTheme = 'dark' | 'light'\r\nexport type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right'\r\n\r\nexport const tooltipProps = {\r\n  // 提示内容，支持插槽覆盖\r\n  content: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 主题风格：黑/白\r\n  theme: {\r\n    type: String as PropType<TooltipTheme>,\r\n    default: 'dark'\r\n  },\r\n  // 显示位置\r\n  placement: {\r\n    type: String as PropType<TooltipPlacement>,\r\n    default: 'top'\r\n  },\r\n  // 是否禁用提示\r\n  disabled: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 显示/隐藏延迟（毫秒）\r\n  showDelay: {\r\n    type: Number,\r\n    default: 80\r\n  },\r\n  hideDelay: {\r\n    type: Number,\r\n    default: 80\r\n  }\r\n} as const\r\n\r\nexport type TooltipProps = ExtractPropTypes<typeof tooltipProps>\r\n\r\nexport const tooltipEmits = {\r\n  show: () => true,\r\n  hide: () => true\r\n}\r\n\r\nexport type TooltipEmits = typeof tooltipEmits","<template>\r\n  <span\r\n    :class=\"[\r\n      bem.b(),\r\n      bem.m(theme),\r\n      bem.m(placement),\r\n      bem.is('disabled', disabled)\r\n    ]\"\r\n    @mouseenter=\"onMouseEnter\"\r\n    @mouseleave=\"onMouseLeave\"\r\n  >\r\n    <span :class=\"bem.e('trigger')\">\r\n      <slot />\r\n    </span>\r\n\r\n    <transition name=\"c-tooltip-fade\">\r\n      <span v-if=\"visible\" :class=\"bem.e('popper')\" role=\"tooltip\">\r\n        <slot name=\"content\">{{ content }}</slot>\r\n        <span :class=\"bem.e('arrow')\"></span>\r\n      </span>\r\n    </transition>\r\n  </span>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, onBeforeUnmount } from 'vue';\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create';\r\nimport { tooltipProps, tooltipEmits } from './tooltip';\r\n\r\ndefineOptions({ name: 'c-tooltip' });\r\n\r\nconst bem = createNamespace('tooltip');\r\nconst props = defineProps(tooltipProps);\r\nconst emit = defineEmits(tooltipEmits);\r\n\r\nconst visible = ref(false);\r\nlet showTimer: number | null = null;\r\nlet hideTimer: number | null = null;\r\n\r\nconst clearTimers = () => {\r\n  if (showTimer) {\r\n    window.clearTimeout(showTimer);\r\n    showTimer = null;\r\n  }\r\n  if (hideTimer) {\r\n    window.clearTimeout(hideTimer);\r\n    hideTimer = null;\r\n  }\r\n};\r\n\r\nconst onMouseEnter = () => {\r\n  if (props.disabled) return;\r\n  clearTimers();\r\n  showTimer = window.setTimeout(() => {\r\n    visible.value = true;\r\n    emit('show');\r\n  }, Math.max(0, props.showDelay));\r\n};\r\n\r\nconst onMouseLeave = () => {\r\n  clearTimers();\r\n  hideTimer = window.setTimeout(() => {\r\n    visible.value = false;\r\n    emit('hide');\r\n  }, Math.max(0, props.hideDelay));\r\n};\r\n\r\nonBeforeUnmount(clearTimers);\r\n\r\ndefineExpose({ visible });\r\n</script>\r\n","// Tooltip 组件入口文件\r\n\r\nimport { withInstall } from \"@cuixingjian/cui-utils/install\";\r\nimport type { SFCWithInstall } from \"../types\";\r\nimport _Tooltip from \"./src/tooltip.vue\";\r\n\r\nexport * from \"./src/tooltip\";\r\nexport * from \"./src/instance\";\r\nconst Tooltip: SFCWithInstall<typeof _Tooltip> = withInstall(_Tooltip);\r\n\r\nexport default Tooltip;\r\n\r\n// 在vue中方便提示\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    CTooltip: typeof Tooltip;\r\n  }\r\n}","import type { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport const switchProps = {\r\n  // 绑定值：支持布尔与自定义激活/未激活值\r\n  modelValue: {\r\n    type: [Boolean, String, Number] as PropType<boolean | string | number>,\r\n    default: false\r\n  },\r\n  // 激活时的值\r\n  activeValue: {\r\n    type: [Boolean, String, Number] as PropType<boolean | string | number>,\r\n    default: true\r\n  },\r\n  // 未激活时的值\r\n  inactiveValue: {\r\n    type: [Boolean, String, Number] as PropType<boolean | string | number>,\r\n    default: false\r\n  },\r\n  // 激活颜色\r\n  activeColor: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 未激活颜色\r\n  inactiveColor: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 显示文案\r\n  activeText: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  inactiveText: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 尺寸\r\n  size: {\r\n    type: String as PropType<'large' | 'default' | 'small'>,\r\n    default: 'default'\r\n  },\r\n  // 禁用\r\n  disabled: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 加载状态（不可交互）\r\n  loading: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 宽度（px），不传时按尺寸默认：large=50, default=40, small=30\r\n  width: {\r\n    type: Number,\r\n    default: undefined\r\n  },\r\n  // 变更前钩子：返回布尔或 Promise 布尔，控制是否切换\r\n  beforeChange: {\r\n    type: Function as PropType<(next: boolean | string | number) => boolean | Promise<boolean>>,\r\n    default: undefined\r\n  }\r\n} as const\r\n\r\nexport type SwitchProps = ExtractPropTypes<typeof switchProps>\r\n\r\nexport const switchEmits = {\r\n  'update:modelValue': (val: boolean | string | number) => true,\r\n  change: (val: boolean | string | number) => true\r\n}\r\n\r\nexport type SwitchEmits = typeof switchEmits","import { computed, ref } from 'vue'\r\nimport type { SetupContext } from 'vue'\r\nimport type { SwitchEmits, SwitchProps } from './switch'\r\n\r\nexport function useSwitch(props: SwitchProps, emit: SetupContext<SwitchEmits>['emit']) {\r\n  const isChecked = computed(() => props.modelValue === props.activeValue)\r\n\r\n  const hasLabel = computed(() => !!props.activeText || !!props.inactiveText)\r\n\r\n  const coreStyle = computed(() => {\r\n    const color = isChecked.value ? props.activeColor : props.inactiveColor\r\n    const sizeKnob: Record<'large'|'default'|'small', number> = {\r\n      large: 20,\r\n      default: 16,\r\n      small: 12\r\n    }\r\n    const sizeMargin: Record<'large'|'default'|'small', number> = {\r\n      large: 2,\r\n      default: 2,\r\n      small: 2\r\n    }\r\n    const defaultWidth: Record<'large'|'default'|'small', number> = {\r\n      large: 50,\r\n      default: 40,\r\n      small: 30\r\n    }\r\n    const effectiveWidth = props.width ?? defaultWidth[props.size]\r\n\r\n    const knob = sizeKnob[props.size]\r\n    const margin = sizeMargin[props.size]\r\n    const travel = Math.max(effectiveWidth - knob - margin * 2, 0)\r\n\r\n    return {\r\n      backgroundColor: color || '',\r\n      // 仅当用户传入自定义宽度时才设置内联宽度，避免覆盖尺寸预设\r\n      width: props.width != null ? props.width + 'px' : undefined,\r\n      '--c-switch-travel': travel + 'px'\r\n    } as any\r\n  })\r\n\r\n  const pending = ref(false)\r\n  const showLoading = computed(() => props.loading || pending.value)\r\n\r\n  const canProceed = async (next: boolean | string | number) => {\r\n    if (!props.beforeChange) return true\r\n    try {\r\n      const res = props.beforeChange(next)\r\n      if (typeof res === 'boolean') return res\r\n      pending.value = true\r\n      const ok = await res\r\n      return !!ok\r\n    } catch (e) {\r\n      return false\r\n    } finally {\r\n      pending.value = false\r\n    }\r\n  }\r\n\r\n  const onToggle = async () => {\r\n    if (props.disabled || showLoading.value) return\r\n    const next = isChecked.value ? props.inactiveValue : props.activeValue\r\n    const allowed = await canProceed(next)\r\n    if (!allowed) return\r\n    emit('update:modelValue', next)\r\n    emit('change', next)\r\n  }\r\n\r\n  const onKeydown = (e: KeyboardEvent) => {\r\n    if (e.key === 'Enter' || e.key === ' ') {\r\n      e.preventDefault()\r\n      onToggle()\r\n    }\r\n  }\r\n\r\n  return {\r\n    isChecked,\r\n    hasLabel,\r\n    coreStyle,\r\n    showLoading,\r\n    onToggle,\r\n    onKeydown\r\n  }\r\n}","<template>\r\n  <span\r\n    :class=\"[\r\n      bem.b(),\r\n      bem.m(size),\r\n      bem.is('checked', isChecked),\r\n      bem.is('disabled', disabled),\r\n      bem.is('loading', showLoading)\r\n    ]\"\r\n    role=\"switch\"\r\n    :aria-checked=\"isChecked\"\r\n    :aria-disabled=\"disabled || showLoading\"\r\n    :tabindex=\"disabled ? -1 : 0\"\r\n    @click=\"onToggle\"\r\n    @keydown=\"onKeydown\"\r\n  >\r\n    <span\r\n      :class=\"bem.e('core')\"\r\n      :style=\"coreStyle\"\r\n    >\r\n      <span :class=\"bem.e('action')\">\r\n        <template v-if=\"showLoading\">\r\n          <c-icon class=\"is-loading\">\r\n            <svg viewBox=\"0 0 50 50\" xmlns=\"http://www.w3.org/2000/svg\">\r\n              <circle cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-dasharray=\"80\" stroke-dashoffset=\"60\" />\r\n            </svg>\r\n          </c-icon>\r\n        </template>\r\n      </span>\r\n    </span>\r\n    <span v-if=\"hasLabel\" :class=\"bem.e('label')\">\r\n      {{ isChecked ? activeText : inactiveText }}\r\n    </span>\r\n  </span>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { switchProps, switchEmits } from './switch'\r\nimport { useSwitch } from './use-switch'\r\n\r\n// 组件名\r\ndefineOptions({ name: 'c-switch' })\r\n\r\nconst bem = createNamespace('switch')\r\nconst props = defineProps(switchProps)\r\nconst emit = defineEmits(switchEmits)\r\n\r\nconst { isChecked, hasLabel, coreStyle, showLoading, onToggle, onKeydown } = useSwitch(props, emit)\r\n\r\nconst { size, disabled, activeText, inactiveText } = props\r\n</script>","// Switch 组件入口文件\r\n\r\nimport { withInstall } from \"@cuixingjian/cui-utils/install\";\r\nimport type { SFCWithInstall } from \"../types\";\r\nimport _Switch from \"./src/switch.vue\";\r\n\r\nexport * from \"./src/switch\";\r\nexport * from \"./src/instance\";\r\nconst Switch: SFCWithInstall<typeof _Switch> = withInstall(_Switch);\r\n\r\nexport default Switch;\r\n\r\n// 在vue中方便提示\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    CSwitch: typeof Switch;\r\n  }\r\n}","import type { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport const checkboxProps = {\r\n  modelValue: { type: Boolean, default: undefined },\r\n  label: { type: [String, Number, Boolean] as PropType<string | number | boolean>, default: undefined },\r\n  disabled: { type: Boolean, default: false },\r\n  indeterminate: { type: Boolean, default: false },\r\n  size: { type: String as PropType<'small' | 'default' | 'large'>, default: 'default' }\r\n} as const\r\n\r\nexport const checkboxEmits = {\r\n  'update:modelValue': (v: boolean) => true,\r\n  change: (v: boolean) => true\r\n}\r\n\r\nexport type CheckboxProps = ExtractPropTypes<typeof checkboxProps>\r\nexport type CheckboxEmits = typeof checkboxEmits","import type { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport const checkboxGroupProps = {\r\n  modelValue: { type: Array as PropType<Array<string | number | boolean>>, default: () => [] },\r\n  disabled: { type: Boolean, default: false },\r\n  size: { type: String as PropType<'small' | 'default' | 'large'>, default: 'default' }\r\n} as const\r\n\r\nexport const checkboxGroupEmits = {\r\n  'update:modelValue': (v: Array<string | number | boolean>) => true,\r\n  change: (v: Array<string | number | boolean>) => true\r\n}\r\n\r\nexport type CheckboxGroupProps = ExtractPropTypes<typeof checkboxGroupProps>\r\nexport type CheckboxGroupEmits = typeof checkboxGroupEmits\r\n\r\nimport type { InjectionKey, Ref } from 'vue'\r\n\r\nexport const checkboxGroupKey: InjectionKey<{\r\n  values: Ref<Array<string | number | boolean>>\r\n  disabled: Ref<boolean>\r\n  size: Ref<'small' | 'default' | 'large'>\r\n  toggle: (label: string | number | boolean, checked: boolean) => void\r\n}> = Symbol('checkboxGroup')","<template>\r\n  <label\r\n    :class=\"[\r\n      bem.b(),\r\n      bem.m(sizeComputed),\r\n      bem.is('disabled', isDisabled),\r\n      bem.is('checked', isChecked),\r\n      bem.is('indeterminate', indeterminate)\r\n    ]\"\r\n    role=\"checkbox\"\r\n    :aria-checked=\"indeterminate ? 'mixed' : isChecked ? 'true' : 'false'\"\r\n    :aria-disabled=\"isDisabled\"\r\n    @keydown.space.prevent=\"toggle\"\r\n    @click=\"toggle\"\r\n  >\r\n    <span :class=\"bem.e('box')\">\r\n      <span v-if=\"isChecked && !indeterminate\" :class=\"bem.e('icon')\">\r\n        <svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n          <path\r\n            fill=\"currentColor\"\r\n            d=\"M406.4 742.4L134.4 470.4l57.6-57.6 214.4 214.4L832 206.4l57.6 57.6z\"\r\n          />\r\n        </svg>\r\n      </span>\r\n      <span v-else-if=\"indeterminate\" :class=\"bem.e('icon')\">\r\n        <svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n          <path fill=\"currentColor\" d=\"M192 480h640v64H192z\" />\r\n        </svg>\r\n      </span>\r\n    </span>\r\n    <span v-if=\"$slots.default || label !== undefined\" :class=\"bem.e('label')\">\r\n      <slot>{{ label }}</slot>\r\n    </span>\r\n  </label>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, inject } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { checkboxProps, checkboxEmits } from './checkbox'\r\nimport { checkboxGroupKey } from './checkbox-group'\r\n\r\ndefineOptions({ name: 'c-checkbox' })\r\n\r\nconst bem = createNamespace('checkbox')\r\nconst props = defineProps(checkboxProps)\r\nconst emit = defineEmits(checkboxEmits)\r\n\r\nconst group = inject(checkboxGroupKey, null)\r\n\r\nconst isDisabled = computed(\r\n  () => props.disabled || (group?.disabled.value ?? false)\r\n)\r\nconst sizeComputed = computed(() => group?.size.value ?? props.size)\r\nconst isChecked = computed(() => {\r\n  if (group) {\r\n    const list = group.values.value\r\n    return list.some((v) => v === props.label)\r\n  }\r\n  return !!props.modelValue\r\n})\r\n\r\nconst toggle = () => {\r\n  if (isDisabled.value) return\r\n  if (group) {\r\n    const checked = !isChecked.value\r\n    group.toggle(props.label!, checked)\r\n    return\r\n  }\r\n  const next = !isChecked.value\r\n  emit('update:modelValue', next)\r\n  emit('change', next)\r\n}\r\n\r\nconst indeterminate = computed(() => props.indeterminate)\r\nconst label = computed(() => props.label)\r\n</script>\r\n","<template>\r\n  <div :class=\"bem.b()\">\r\n    <slot />\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, provide, watch } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { checkboxGroupProps, checkboxGroupEmits, checkboxGroupKey } from './checkbox-group'\r\n\r\ndefineOptions({ name: 'c-checkbox-group' })\r\n\r\nconst bem = createNamespace('checkbox-group')\r\nconst props = defineProps(checkboxGroupProps)\r\nconst emit = defineEmits(checkboxGroupEmits)\r\n\r\nconst values = ref<Array<string | number | boolean>>([...props.modelValue])\r\nwatch(() => props.modelValue, v => { values.value = [...v] })\r\n\r\nconst toggle = (label: string | number | boolean, checked: boolean) => {\r\n  const set = new Set(values.value)\r\n  if (checked) {\r\n    set.add(label)\r\n  } else {\r\n    set.delete(label)\r\n  }\r\n  const next = Array.from(set)\r\n  values.value = next\r\n  emit('update:modelValue', next)\r\n  emit('change', next)\r\n}\r\n\r\nprovide(checkboxGroupKey, {\r\n  values,\r\n  disabled: ref(props.disabled),\r\n  size: ref(props.size),\r\n  toggle\r\n})\r\n</script>","import type { App } from 'vue'\r\nimport { withInstall } from '@cuixingjian/cui-utils/install'\r\nimport type { SFCWithInstall } from \"../types\"\r\nimport _Checkbox from './src/checkbox.vue'\r\nimport _CheckboxGroup from './src/checkbox-group.vue'\r\n\r\nexport const Checkbox: SFCWithInstall<typeof _Checkbox> = withInstall(_Checkbox)\r\nexport const CheckboxGroup: SFCWithInstall<typeof _CheckboxGroup> = withInstall(_CheckboxGroup)\r\nexport default Checkbox\r\n\r\nexport type { CheckboxProps } from './src/checkbox'\r\nexport type { CheckboxGroupProps } from './src/checkbox-group'\r\n\r\ndeclare module 'vue' {\r\n  export interface GlobalComponents {\r\n    CCheckbox: typeof _Checkbox\r\n    CCheckboxGroup: typeof _CheckboxGroup\r\n  }\r\n}","import type { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport const radioProps = {\r\n  // 选中值（与 label 比较）；单独使用时为当前值\r\n  modelValue: { type: [String, Number, Boolean] as PropType<string | number | boolean>, default: undefined },\r\n  // 当前单选的值（用于与 group/外部 v-model 比较）\r\n  label: { type: [String, Number, Boolean] as PropType<string | number | boolean>, default: undefined },\r\n  disabled: { type: Boolean, default: false },\r\n  size: { type: String as PropType<'small' | 'default' | 'large'>, default: 'default' },\r\n  // 块状选择样式\r\n  block: { type: Boolean, default: false },\r\n  // 单选框类型\r\n  type: { type: String as PropType<'radio' | 'button'>, default: 'radio' }\r\n} as const\r\n\r\nexport const radioEmits = {\r\n  'update:modelValue': (v: string | number | boolean) => true,\r\n  change: (v: string | number | boolean) => true\r\n}\r\n\r\nexport type RadioProps = ExtractPropTypes<typeof radioProps>\r\nexport type RadioEmits = typeof radioEmits","import type { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport const radioGroupProps = {\r\n  modelValue: { type: [String, Number, Boolean] as PropType<string | number | boolean>, default: undefined },\r\n  disabled: { type: Boolean, default: false },\r\n  size: { type: String as PropType<'small' | 'default' | 'large'>, default: 'default' },\r\n  // 块状选择样式\r\n  block: { type: Boolean, default: false },\r\n  // 单选框类型\r\n  type: { type: String as PropType<'radio' | 'button'>, default: 'radio' }\r\n} as const\r\n\r\nexport const radioGroupEmits = {\r\n  'update:modelValue': (v: string | number | boolean) => true,\r\n  change: (v: string | number | boolean) => true\r\n}\r\n\r\nexport type RadioGroupProps = ExtractPropTypes<typeof radioGroupProps>\r\nexport type RadioGroupEmits = typeof radioGroupEmits\r\n\r\nimport type { InjectionKey, Ref } from 'vue'\r\n\r\nexport const radioGroupKey: InjectionKey<{\r\n  value: Ref<string | number | boolean | undefined>\r\n  disabled: Ref<boolean>\r\n  size: Ref<'small' | 'default' | 'large'>\r\n  block: Ref<boolean>\r\n  type: Ref<'radio' | 'button'>\r\n  select: (val: string | number | boolean) => void\r\n}> = Symbol('radioGroup')","<template>\r\n  <label\r\n    :class=\"[\r\n        bem.b(),\r\n        bem.m(sizeComputed),\r\n        bem.m(typeComputed),\r\n        bem.is('disabled', isDisabled),\r\n        bem.is('checked', isChecked),\r\n        bem.is('block', blockComputed)\r\n      ]\"\r\n    role=\"radio\"\r\n    :aria-checked=\"isChecked ? 'true' : 'false'\"\r\n    :aria-disabled=\"isDisabled ? 'true' : 'false'\"\r\n    tabindex=\"0\"\r\n    @keydown.space.prevent=\"toggle\"\r\n    @click=\"toggle\"\r\n  >\r\n    <span :class=\"bem.e('box')\"></span>\r\n    <span v-if=\"$slots.default || label !== undefined\" :class=\"bem.e('label')\">\r\n      <slot>{{ label }}</slot>\r\n    </span>\r\n  </label>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, inject } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { radioProps, radioEmits } from './radio'\r\nimport { radioGroupKey } from './radio-group'\r\n\r\ndefineOptions({ name: 'c-radio' })\r\n\r\nconst bem = createNamespace('radio')\r\nconst props = defineProps(radioProps)\r\nconst emit = defineEmits(radioEmits)\r\n\r\nconst group = inject(radioGroupKey, null)\r\n\r\nconst isDisabled = computed(\r\n  () => props.disabled || (group?.disabled.value ?? false)\r\n)\r\nconst sizeComputed = computed(() => group?.size.value ?? props.size)\r\nconst blockComputed = computed(() => group?.block.value ?? props.block)\r\nconst typeComputed = computed(() => group?.type.value ?? props.type)\r\nconst isChecked = computed(() => {\r\n  if (group) {\r\n    return group.value.value === props.label\r\n  }\r\n  // 单独使用时：与外部 v-model 值比较\r\n  return props.modelValue === props.label\r\n})\r\n\r\nconst toggle = () => {\r\n  if (isDisabled.value) return\r\n  if (group) {\r\n    if (!isChecked.value) {\r\n      group.select(props.label as string | number | boolean)\r\n    }\r\n    return\r\n  }\r\n  if (!isChecked.value) {\r\n    const next = props.label as string | number | boolean\r\n    emit('update:modelValue', next)\r\n    emit('change', next)\r\n  }\r\n}\r\n\r\nconst label = computed(() => props.label)\r\n</script>\r\n","<template>\r\n  <div :class=\"[bem.b(), bem.is('block', block), bem.m(type)]\">\r\n    <slot />\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, provide, watch } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { radioGroupProps, radioGroupEmits, radioGroupKey } from './radio-group'\r\n\r\ndefineOptions({ name: 'c-radio-group' })\r\n\r\nconst bem = createNamespace('radio-group')\r\nconst props = defineProps(radioGroupProps)\r\nconst emit = defineEmits(radioGroupEmits)\r\n\r\nconst { block, type } = props\r\n\r\nconst value = ref<string | number | boolean | undefined>(props.modelValue)\r\nwatch(() => props.modelValue, v => { value.value = v })\r\n\r\nconst select = (val: string | number | boolean) => {\r\n  if (value.value === val) return\r\n  value.value = val\r\n  emit('update:modelValue', val)\r\n  emit('change', val)\r\n}\r\n\r\nprovide(radioGroupKey, {\r\n  value,\r\n  disabled: ref(props.disabled),\r\n  size: ref(props.size),\r\n  block: ref(props.block),\r\n  type: ref(props.type),\r\n  select\r\n})\r\n</script>","import { withInstall } from \"@cuixingjian/cui-utils/install\";\r\nimport type { SFCWithInstall } from \"../types\";\r\nimport _Radio from \"./src/radio.vue\";\r\nimport _RadioGroup from \"./src/radio-group.vue\";\r\n\r\nexport const Radio: SFCWithInstall<typeof _Radio> = withInstall(_Radio);\r\nexport const RadioGroup: SFCWithInstall<typeof _RadioGroup> = withInstall(_RadioGroup);\r\nexport default Radio;\r\n\r\nexport type { RadioProps } from './src/radio'\r\nexport type { RadioGroupProps } from './src/radio-group'\r\n\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    CRadio: typeof _Radio;\r\n    CRadioGroup: typeof _RadioGroup;\r\n  }\r\n}","import type { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport type SkeletonThrottle = number | { leading?: number; trailing?: number }\r\n\r\nexport const skeletonProps = {\r\n  // 是否处于加载中（true 显示骨架；false 显示真实内容）\r\n  loading: {\r\n    type: Boolean,\r\n    default: true\r\n  },\r\n  // 段落（行）数量\r\n  rows: {\r\n    type: Number,\r\n    default: 3\r\n  },\r\n  // 是否启用闪烁动画\r\n  animated: {\r\n    type: Boolean,\r\n    default: true\r\n  },\r\n  // 批量渲染骨架的数量（常用于列表数据占位）\r\n  count: {\r\n    type: Number,\r\n    default: 1\r\n  },\r\n  // 防止渲染抖动：支持 number（等价于 { leading: xxx }）与 object\r\n  throttle: {\r\n    type: [Number, Object] as PropType<SkeletonThrottle>,\r\n    default: 0\r\n  },\r\n  // 首行宽度百分比（默认 33%），用于更真实的文本占位效果\r\n  firstLinePercent: {\r\n    type: Number,\r\n    default: 33\r\n  },\r\n  // 最后一行宽度百分比（默认 80%），用于更真实的文本占位效果\r\n  lastLinePercent: {\r\n    type: Number,\r\n    default: 80\r\n  }\r\n} as const\r\n\r\nexport type SkeletonProps = ExtractPropTypes<typeof skeletonProps>\r\n\r\nexport const skeletonEmits = {}\r\nexport type SkeletonEmits = typeof skeletonEmits","<template>\r\n  <div v-if=\"displayLoading\" :class=\"[bem.b(), bem.is('animated', animated)]\">\r\n    <div v-for=\"i in count\" :key=\"i\" :class=\"bem.e('item')\">\r\n      <div v-for=\"r in rows\" :key=\"r\" :class=\"bem.e('line')\" :style=\"lineStyle(r)\"></div>\r\n    </div>\r\n  </div>\r\n  <template v-else>\r\n    <slot />\r\n  </template>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, watch, onBeforeUnmount } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { skeletonProps } from './skeleton'\r\n\r\n// 组件名\r\ndefineOptions({ name: 'c-skeleton' })\r\n\r\nconst bem = createNamespace('skeleton')\r\nconst props = defineProps(skeletonProps)\r\n\r\n// 显示骨架的内部状态（受 throttle 控制）\r\nconst displayLoading = ref(!!props.loading)\r\nlet leadingTimer: number | null = null\r\nlet trailingTimer: number | null = null\r\n\r\nconst parseThrottle = () => {\r\n  const th = props.throttle as number | { leading?: number; trailing?: number }\r\n  if (typeof th === 'number') {\r\n    return { leading: Math.max(0, th), trailing: 0 }\r\n  }\r\n  return {\r\n    leading: Math.max(0, th?.leading ?? 0),\r\n    trailing: Math.max(0, th?.trailing ?? 0)\r\n  }\r\n}\r\n\r\nconst applyLoading = (next: boolean) => {\r\n  const { leading, trailing } = parseThrottle()\r\n  // 清理定时器，避免竞态\r\n  if (leadingTimer) { window.clearTimeout(leadingTimer); leadingTimer = null }\r\n  if (trailingTimer) { window.clearTimeout(trailingTimer); trailingTimer = null }\r\n\r\n  if (next) {\r\n    // 显示骨架：受 leading 控制\r\n    if (leading > 0) {\r\n      leadingTimer = window.setTimeout(() => { displayLoading.value = true }, leading)\r\n    } else {\r\n      displayLoading.value = true\r\n    }\r\n  } else {\r\n    // 隐藏骨架：受 trailing 控制\r\n    if (trailing > 0) {\r\n      trailingTimer = window.setTimeout(() => { displayLoading.value = false }, trailing)\r\n    } else {\r\n      displayLoading.value = false\r\n    }\r\n  }\r\n}\r\n\r\nwatch(() => props.loading, (val) => {\r\n  applyLoading(!!val)\r\n}, { immediate: true })\r\n\r\nonBeforeUnmount(() => {\r\n  if (leadingTimer) window.clearTimeout(leadingTimer)\r\n  if (trailingTimer) window.clearTimeout(trailingTimer)\r\n})\r\n\r\n// 首行宽度（默认 33%）与最后一行宽度（默认 80%）更贴近真实文本\r\nconst lineStyle = (row: number) => {\r\n  // 首行\r\n  if (row === 1) {\r\n    const w = Math.max(0, Math.min(100, props.firstLinePercent))\r\n    return { width: w + '%' }\r\n  }\r\n  // 最后一行\r\n  if (row === props.rows) {\r\n    const w = Math.max(0, Math.min(100, props.lastLinePercent))\r\n    return { width: w + '%' }\r\n  }\r\n  // 其他行保持默认宽度\r\n  return {}\r\n}\r\n\r\nconst { rows, count, animated } = props\r\n</script>","// Skeleton 组件入口文件\r\n\r\nimport { withInstall } from \"@cuixingjian/cui-utils/install\";\r\nimport type { SFCWithInstall } from \"../types\";\r\nimport _Skeleton from \"./src/skeleton.vue\";\r\n\r\nexport * from \"./src/skeleton\";\r\n// 若后续需要额外类型导出，可在 ./src/instance.ts 中扩展\r\nconst Skeleton: SFCWithInstall<typeof _Skeleton> = withInstall(_Skeleton);\r\n\r\nexport default Skeleton;\r\n\r\n// 在vue中方便提示\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    CSkeleton: typeof Skeleton;\r\n  }\r\n}","import type { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport type DatePickerSize = 'small' | 'default' | 'large'\r\nexport type DateLike = string | Date | null\r\nexport type DatePickerType = 'date' | 'time' | 'week' | 'month' | 'quarter' | 'year'\r\n\r\nexport const datePickerProps = {\r\n  // 选中值（字符串或 Date），建议使用字符串格式 'YYYY-MM-DD'\r\n  modelValue: {\r\n    type: [String, Date, Object] as PropType<DateLike>,\r\n    default: null\r\n  },\r\n  // 显示格式（日期默认 YYYY-MM-DD；当 type=time 且未显式传入时走 HH:mm:ss）\r\n  format: {\r\n    type: String,\r\n    default: 'YYYY-MM-DD'\r\n  },\r\n  // 选择器类型：date/time/week/month/quarter/year\r\n  type: {\r\n    type: String as PropType<DatePickerType>,\r\n    default: 'date'\r\n  },\r\n  // 占位符\r\n  placeholder: {\r\n    type: String,\r\n    default: '请选择日期'\r\n  },\r\n  // 禁用整组件\r\n  disabled: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否可清除\r\n  clearable: {\r\n    type: Boolean,\r\n    default: true\r\n  },\r\n  // 输入框尺寸\r\n  size: {\r\n    type: String as PropType<DatePickerSize>,\r\n    default: 'default'\r\n  },\r\n  // 禁用某些日期（仅 date/week/month/year/quarter 模式生效）\r\n  disabledDate: {\r\n    type: Function as PropType<(date: Date) => boolean>,\r\n    default: undefined\r\n  },\r\n  // 弹层是否与输入框同宽\r\n  popperMatchWidth: {\r\n    type: Boolean,\r\n    default: true\r\n  },\r\n  // 日期类型可选择时间（在弹层右侧显示时间列）\r\n  showTime: {\r\n    type: Boolean,\r\n    default: false\r\n  }\r\n} as const\r\n\r\nexport type DatePickerProps = ExtractPropTypes<typeof datePickerProps>\r\n\r\nexport const datePickerEmits = {\r\n  'update:modelValue': (v: DateLike) => true,\r\n  change: (v: DateLike) => true,\r\n  openChange: (open: boolean) => true\r\n}\r\n\r\nexport type DatePickerEmits = typeof datePickerEmits","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, defineComponent } from 'vue'\nconst _hoisted_1 = {\n  xmlns: 'http://www.w3.org/2000/svg',\n  'xmlns:xlink': 'http://www.w3.org/1999/xlink',\n  viewBox: '0 0 512 512'\n}\nexport default defineComponent({\n  name: 'TimeOutline',\n  render: function render(_ctx, _cache) {\n    return (\n      _openBlock(),\n      _createElementBlock(\n        'svg',\n        _hoisted_1,\n        _cache[0] ||\n          (_cache[0] = [\n            _createElementVNode(\n              'path',\n              {\n                d: 'M256 64C150 64 64 150 64 256s86 192 192 192s192-86 192-192S362 64 256 64z',\n                fill: 'none',\n                stroke: 'currentColor',\n                'stroke-miterlimit': '10',\n                'stroke-width': '32'\n              },\n              null,\n              -1 /* HOISTED */\n            ),\n            _createElementVNode(\n              'path',\n              {\n                fill: 'none',\n                stroke: 'currentColor',\n                'stroke-linecap': 'round',\n                'stroke-linejoin': 'round',\n                'stroke-width': '32',\n                d: 'M256 128v144h96'\n              },\n              null,\n              -1 /* HOISTED */\n            )\n          ])\n      )\n    )\n  }\n})\n","<script setup lang=\"ts\">\r\nimport { ref, computed, watch, onBeforeUnmount } from 'vue'\r\nimport { datePickerProps, datePickerEmits, type DateLike } from './datepicker'\r\nimport { Calendar, TimeOutline } from '@vicons/ionicons5'\r\n\r\nconst props = defineProps(datePickerProps)\r\nconst emit = defineEmits(datePickerEmits)\r\n\r\ndefineOptions({ name: 'CDatePicker' })\r\n\r\n// 面板显示隐藏\r\nconst visible = ref(false)\r\n// 输入框悬浮状态（用于切换清空按钮与日历图标）\r\nconst isHovered = ref(false)\r\n// 面板模式：日期/年份/月份（仅日期类型使用）\r\nconst panelMode = ref<'date' | 'year' | 'month'>('date')\r\n\r\n// 容器引用与外部点击关闭\r\nconst pickerRef = ref<HTMLElement | null>(null)\r\nfunction onClickOutside(e: MouseEvent) {\r\n  if (!visible.value) return\r\n  const el = pickerRef.value\r\n  if (!el) return\r\n  const target = e.target as Node\r\n  if (!el.contains(target)) {\r\n    closePanel()\r\n  }\r\n}\r\n// 根据面板状态注册/移除事件\r\nwatch(visible, (v) => {\r\n  if (typeof document === 'undefined') return\r\n  const fn = onClickOutside as EventListener\r\n  if (v) document.addEventListener('mousedown', fn)\r\n  else document.removeEventListener('mousedown', fn)\r\n})\r\n\r\nonBeforeUnmount(() => {\r\n  const fn = onClickOutside as EventListener\r\n  document.removeEventListener('mousedown', fn)\r\n})\r\n\r\n// 当前面板显示的年月（以 Date 表示）\r\nconst panelDate = ref(new Date())\r\n\r\n// 内部选中值（Date 或 null），用于对齐字符串传入的情况\r\nconst innerValue = ref<Date | null>(null)\r\nconst hoveredDate = ref<Date | null>(null)\r\n\r\n// 初始化 innerValue\r\nconst parseToDate = (v: DateLike): Date | null => {\r\n  if (!v) return null\r\n  if (v instanceof Date) return v\r\n  // 简单解析 YYYY-MM-DD\r\n  const m = /^\\d{4}-\\d{2}-\\d{2}$/.exec(v as string)\r\n  if (m) {\r\n    const [y, mo, d] = (v as string).split('-').map((n) => Number(n))\r\n    const dt = new Date(y, mo - 1, d)\r\n    if (!Number.isNaN(dt.getTime())) return dt\r\n  }\r\n  // 解析 HH:mm 或 HH:mm:ss\r\n  const t = /^\\d{2}:\\d{2}(:\\d{2})?$/.exec(v as string)\r\n  if (t) {\r\n    const parts = (v as string).split(':').map((n) => Number(n))\r\n    const [h, mi, s = 0] = parts\r\n    const dt = new Date()\r\n    dt.setHours(h, mi, s, 0)\r\n    return dt\r\n  }\r\n  const dt = new Date(v as string)\r\n  return Number.isNaN(dt.getTime()) ? null : dt\r\n}\r\n\r\n// 有效格式：time 默认 HH:mm:ss，否则使用 props.format\r\nconst effectiveFormat = computed(() => {\r\n  if (props.type === 'time') {\r\n    return props.format && props.format !== 'YYYY-MM-DD'\r\n      ? props.format\r\n      : 'HH:mm:ss'\r\n  }\r\n  if (props.type === 'month') {\r\n    return props.format && props.format !== 'YYYY-MM-DD'\r\n      ? props.format\r\n      : 'YYYY-MM'\r\n  }\r\n  if (props.type === 'year') {\r\n    return props.format && props.format !== 'YYYY-MM-DD' ? props.format : 'YYYY'\r\n  }\r\n  if (props.type === 'quarter') {\r\n    return props.format && props.format !== 'YYYY-MM-DD'\r\n      ? props.format\r\n      : 'YYYY-[Q]Q'\r\n  }\r\n  if (props.type === 'date' && props.showTime) {\r\n    return props.format && props.format !== 'YYYY-MM-DD'\r\n      ? props.format\r\n      : 'YYYY-MM-DD HH:mm:ss'\r\n  }\r\n  return props.format\r\n})\r\n\r\nconst format = (d: Date | null, fmt = effectiveFormat.value) => {\r\n  if (!d) return ''\r\n  const pad2 = (n: number) => String(n).padStart(2, '0')\r\n  const map: Record<string, string> = {\r\n    YYYY: String(d.getFullYear()),\r\n    MM: pad2(d.getMonth() + 1),\r\n    DD: pad2(d.getDate()),\r\n    HH: pad2(d.getHours()),\r\n    mm: pad2(d.getMinutes()),\r\n    ss: pad2(d.getSeconds()),\r\n    'YYYY-[Q]Q': `${d.getFullYear()}-Q${Math.floor(d.getMonth() / 3) + 1}`\r\n  }\r\n  // 特别处理季度格式\r\n  if (fmt === 'YYYY-[Q]Q') return map['YYYY-[Q]Q']\r\n  return fmt.replace(/YYYY|MM|DD|HH|mm|ss/g, (k) => map[k])\r\n}\r\n\r\n// 同步外部值到内部\r\nwatch(\r\n  () => props.modelValue,\r\n  (v) => {\r\n    innerValue.value = parseToDate(v)\r\n    if (innerValue.value) panelDate.value = new Date(innerValue.value)\r\n  },\r\n  { immediate: true }\r\n)\r\n\r\n// 根据类型初始化面板模式\r\nwatch(\r\n  () => props.type,\r\n  (t) => {\r\n    if (t === 'month' || t === 'quarter') {\r\n      panelMode.value = 'month'\r\n    } else if (t === 'year') {\r\n      panelMode.value = 'year'\r\n    } else {\r\n      panelMode.value = 'date'\r\n    }\r\n  },\r\n  { immediate: true }\r\n)\r\n\r\n// 输入框显示文本\r\nconst displayText = computed(() => {\r\n  if (props.type === 'week') {\r\n    const base = hoveredDate.value || innerValue.value\r\n    if (!base) return ''\r\n    if (isHovered.value || hoveredDate.value) {\r\n      const { year: wy, week: wn } = getISOWeekInfo(getWeekStart(base))\r\n      return `${wy}-${String(wn).padStart(2, '0')}周`\r\n    }\r\n    return format(getWeekStart(base))\r\n  }\r\n  return format(innerValue.value)\r\n})\r\n\r\n// 计算当月信息\r\nconst year = computed(() => panelDate.value.getFullYear())\r\nconst month = computed(() => panelDate.value.getMonth()) // 0-11\r\n\r\nconst firstDayOfMonth = computed(() => new Date(year.value, month.value, 1))\r\nconst startWeekdayMon = computed(() => (firstDayOfMonth.value.getDay() + 6) % 7) // 周一为一周起始\r\nconst daysInMonth = computed(() =>\r\n  new Date(year.value, month.value + 1, 0).getDate()\r\n)\r\nconst weekLabels = ['一', '二', '三', '四', '五', '六', '日']\r\n// 年份页起始（按 12 年分页）\r\nconst yearPageStart = computed(() => Math.floor(year.value / 12) * 12)\r\nconst yearGrid = computed(() =>\r\n  Array.from({ length: 12 }, (_, i) => yearPageStart.value + i)\r\n)\r\n// 月份网格（1-12）\r\nconst monthGrid = computed(() => Array.from({ length: 12 }, (_, i) => i))\r\nconst quarterGrid = computed(() => Array.from({ length: 4 }, (_, i) => i))\r\n\r\n// 生成 6x7 日格子（包含前后月补位）\r\nconst calendarDays = computed(() => {\r\n  const cells: { date: Date; currentMonth: boolean; disabled: boolean }[] = []\r\n  const start = new Date(year.value, month.value, 1 - startWeekdayMon.value)\r\n  for (let i = 0; i < 42; i++) {\r\n    const dt = new Date(\r\n      start.getFullYear(),\r\n      start.getMonth(),\r\n      start.getDate() + i\r\n    )\r\n    const currentMonth = dt.getMonth() === month.value\r\n    const disabled = !!props.disabledDate?.(dt)\r\n    cells.push({ date: dt, currentMonth, disabled })\r\n  }\r\n  return cells\r\n})\r\n\r\nfunction openPanel() {\r\n  if (props.disabled) return\r\n  visible.value = true\r\n  emit('openChange', true)\r\n}\r\nfunction closePanel() {\r\n  visible.value = false\r\n  emit('openChange', false)\r\n}\r\n\r\nfunction selectDate(d: Date | null) {\r\n  if (!d) return\r\n  if (props.disabledDate?.(d)) return\r\n  // 点击补位日期：切换到对应月份并选中\r\n  panelDate.value = new Date(d.getFullYear(), d.getMonth(), 1)\r\n  innerValue.value = d\r\n  if (props.type === 'date' && props.showTime) {\r\n    // 开启 showTime 时，等待用户在右侧选择时间并点击确定\r\n    return\r\n  }\r\n  const out: DateLike = format(d)\r\n  emit('update:modelValue', out)\r\n  emit('change', out)\r\n  closePanel()\r\n}\r\n\r\n// duplicate declarations removed (prevYear/nextYear/prevMonth/nextMonth/prevYearsPage/nextYearsPage/openYearPanel/openMonthPanel/selectYear/selectMonth/selectQuarter/clear/selectToday)\r\nfunction prevYear() {\r\n  panelDate.value = new Date(year.value - 1, month.value, 1)\r\n}\r\nfunction nextYear() {\r\n  panelDate.value = new Date(year.value + 1, month.value, 1)\r\n}\r\nfunction prevMonth() {\r\n  panelDate.value = new Date(year.value, month.value - 1, 1)\r\n}\r\nfunction nextMonth() {\r\n  panelDate.value = new Date(year.value, month.value + 1, 1)\r\n}\r\nfunction prevYearsPage() {\r\n  panelDate.value = new Date(year.value - 12, month.value, 1)\r\n}\r\nfunction nextYearsPage() {\r\n  panelDate.value = new Date(year.value + 12, month.value, 1)\r\n}\r\nfunction openYearPanel() {\r\n  panelMode.value = 'year'\r\n}\r\nfunction openMonthPanel() {\r\n  panelMode.value = 'month'\r\n}\r\nfunction selectYear(y: number) {\r\n  panelDate.value = new Date(y, month.value, 1)\r\n  if (props.type === 'year') {\r\n    const dt = new Date(y, 0, 1)\r\n    innerValue.value = dt\r\n    const out: DateLike = format(dt)\r\n    emit('update:modelValue', out)\r\n    emit('change', out)\r\n    closePanel()\r\n  } else {\r\n    panelMode.value = 'month'\r\n  }\r\n}\r\nfunction selectMonth(m: number) {\r\n  panelDate.value = new Date(year.value, m, 1)\r\n  if (props.type === 'month') {\r\n    const dt = new Date(year.value, m, 1)\r\n    innerValue.value = dt\r\n    const out: DateLike = format(dt)\r\n    emit('update:modelValue', out)\r\n    emit('change', out)\r\n    closePanel()\r\n  } else {\r\n    panelMode.value = 'date'\r\n  }\r\n}\r\nfunction selectThisMonth() {\r\n  const now = new Date()\r\n  const y = now.getFullYear()\r\n  const m = now.getMonth()\r\n  panelDate.value = new Date(y, m, 1)\r\n  if (props.type === 'month') {\r\n    const dt = new Date(y, m, 1)\r\n    innerValue.value = dt\r\n    const out: DateLike = format(dt)\r\n    emit('update:modelValue', out)\r\n    emit('change', out)\r\n    closePanel()\r\n  }\r\n}\r\nfunction selectQuarter(q: number) {\r\n  if (props.type !== 'quarter') return\r\n  const dt = new Date(year.value, q * 3, 1)\r\n  innerValue.value = dt\r\n  const out: DateLike = format(dt)\r\n  emit('update:modelValue', out)\r\n  emit('change', out)\r\n  closePanel()\r\n}\r\nfunction clear() {\r\n  innerValue.value = null\r\n  emit('update:modelValue', '')\r\n  emit('change', '')\r\n}\r\n// 新增：计算周起始（周一）\r\nfunction getWeekStart(d: Date) {\r\n  const dt = new Date(d)\r\n  const weekday = (dt.getDay() + 6) % 7\r\n  dt.setDate(dt.getDate() - weekday)\r\n  dt.setHours(0, 0, 0, 0)\r\n  return dt\r\n}\r\nfunction getISOWeekInfo(d: Date) {\r\n  const dt = new Date(d)\r\n  dt.setHours(0, 0, 0, 0)\r\n  const weekdayMon = (dt.getDay() + 6) % 7\r\n  const thursday = new Date(dt)\r\n  thursday.setDate(dt.getDate() + (3 - weekdayMon))\r\n  const weekYear = thursday.getFullYear()\r\n  const firstThursday = new Date(weekYear, 0, 4)\r\n  const firstWeekStart = new Date(firstThursday)\r\n  firstWeekStart.setDate(\r\n    firstThursday.getDate() - ((firstThursday.getDay() + 6) % 7)\r\n  )\r\n  firstWeekStart.setHours(0, 0, 0, 0)\r\n  const diff = thursday.getTime() - firstWeekStart.getTime()\r\n  const week = Math.floor(diff / (7 * 24 * 3600 * 1000)) + 1\r\n  return { year: weekYear, week }\r\n}\r\nfunction eqWeek(a: Date, b: Date) {\r\n  return getWeekStart(a).getTime() === getWeekStart(b).getTime()\r\n}\r\nfunction onCellEnter(d: Date) {\r\n  if (props.type !== 'week') return\r\n  hoveredDate.value = d\r\n}\r\nfunction onCellLeave() {\r\n  if (props.type !== 'week') return\r\n  hoveredDate.value = null\r\n}\r\n\r\nfunction selectToday() {\r\n  const dt = new Date()\r\n  dt.setHours(0, 0, 0, 0)\r\n  if (props.disabledDate?.(dt)) {\r\n    closePanel()\r\n    return\r\n  }\r\n  selectDate(dt)\r\n}\r\n// 时间面板数据与交互\r\nconst hours = Array.from({ length: 24 }, (_, i) => i)\r\nconst minutes = Array.from({ length: 60 }, (_, i) => i)\r\nconst seconds = Array.from({ length: 60 }, (_, i) => i)\r\nconst selectedTime = ref<{\r\n  h: number | null\r\n  m: number | null\r\n  s: number | null\r\n}>({ h: null, m: null, s: null })\r\n\r\nwatch(\r\n  () => innerValue.value,\r\n  (v) => {\r\n    if (!v) return\r\n    if (props.type !== 'time' && !(props.type === 'date' && props.showTime))\r\n      return\r\n    selectedTime.value = {\r\n      h: v.getHours(),\r\n      m: v.getMinutes(),\r\n      s: v.getSeconds()\r\n    }\r\n  },\r\n  { immediate: true }\r\n)\r\n\r\nfunction setHour(h: number) {\r\n  selectedTime.value.h = h\r\n}\r\nfunction setMinute(m: number) {\r\n  selectedTime.value.m = m\r\n}\r\nconst timeHeadLabel = computed(() => {\r\n  const pad = (v: number | null) =>\r\n    v == null ? '--' : String(v).padStart(2, '0')\r\n  return `${pad(selectedTime.value.h)}:${pad(selectedTime.value.m)}:${pad(\r\n    selectedTime.value.s\r\n  )}`\r\n})\r\nfunction setSecond(s: number) {\r\n  selectedTime.value.s = s\r\n}\r\n\r\nfunction applyTime() {\r\n  const { h, m, s } = selectedTime.value\r\n  if (h == null || m == null || s == null) return\r\n  const base = new Date()\r\n  base.setHours(h, m, s, 0)\r\n  innerValue.value = base\r\n  const out: DateLike = format(base)\r\n  emit('update:modelValue', out)\r\n  emit('change', out)\r\n  closePanel()\r\n}\r\nfunction applyDateTime() {\r\n  if (!innerValue.value) return\r\n  const { h, m, s } = selectedTime.value\r\n  if (h == null || m == null || s == null) return\r\n  const base = new Date(innerValue.value)\r\n  base.setHours(h, m, s, 0)\r\n  innerValue.value = base\r\n  const out: DateLike = format(base)\r\n  emit('update:modelValue', out)\r\n  emit('change', out)\r\n  closePanel()\r\n}\r\nfunction selectNow() {\r\n  const now = new Date()\r\n  selectedTime.value = {\r\n    h: now.getHours(),\r\n    m: now.getMinutes(),\r\n    s: now.getSeconds()\r\n  }\r\n  applyTime()\r\n}\r\nfunction selectNowDateTime() {\r\n  const now = new Date()\r\n  selectedTime.value = {\r\n    h: now.getHours(),\r\n    m: now.getMinutes(),\r\n    s: now.getSeconds()\r\n  }\r\n  applyDateTime()\r\n}\r\n</script>\r\n\r\n<template>\r\n  <div\r\n    ref=\"pickerRef\"\r\n    class=\"c-date-picker\"\r\n    :class=\"[`c-date-picker--${props.size}`, { 'is-disabled': props.disabled }]\"\r\n  >\r\n    <div\r\n      class=\"c-date-picker__input\"\r\n      @click=\"openPanel\"\r\n      @mouseenter=\"isHovered = true\"\r\n      @mouseleave=\"isHovered = false\"\r\n    >\r\n      <input :placeholder=\"props.placeholder\" :value=\"displayText\" readonly />\r\n      <template\r\n        v-if=\"props.clearable && innerValue && isHovered && !props.disabled\"\r\n      >\r\n        <button class=\"c-date-picker__clear\" @click.stop=\"clear\">×</button>\r\n      </template>\r\n      <span v-else class=\"c-date-picker__icon\">\r\n        <template v-if=\"props.type === 'time'\">\r\n          <c-icon size=\"14\"><component :is=\"TimeOutline\" /></c-icon>\r\n        </template>\r\n        <template v-else>\r\n          <!-- Align DatePicker calendar icon with DateRangePicker -->\r\n          <svg\r\n            viewBox=\"0 0 24 24\"\r\n            xmlns=\"http://www.w3.org/2000/svg\"\r\n            fill=\"none\"\r\n            stroke=\"currentColor\"\r\n            stroke-width=\"1.5\"\r\n            width=\"14\"\r\n            height=\"14\"\r\n          >\r\n            <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\r\n            <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\r\n            <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\r\n            <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\r\n            <circle cx=\"8\" cy=\"14\" r=\"0.5\" />\r\n            <circle cx=\"12\" cy=\"14\" r=\"0.5\" />\r\n            <circle cx=\"16\" cy=\"14\" r=\"0.5\" />\r\n            <circle cx=\"8\" cy=\"18\" r=\"0.5\" />\r\n            <circle cx=\"12\" cy=\"18\" r=\"0.5\" />\r\n          </svg>\r\n        </template>\r\n      </span>\r\n    </div>\r\n\r\n    <transition name=\"c-date-picker-fade\">\r\n      <div\r\n        v-if=\"visible\"\r\n        class=\"c-date-picker__popper\"\r\n        :style=\"props.popperMatchWidth ? { minWidth: '100%' } : {}\"\r\n      >\r\n        <!-- 时间面板 -->\r\n        <div v-if=\"props.type === 'time'\" class=\"c-date-picker__time\">\r\n          <div class=\"c-date-picker__time-head\">\r\n            <div class=\"c-date-picker__time-title\">{{ timeHeadLabel }}</div>\r\n          </div>\r\n          <div class=\"c-date-picker__time-col\">\r\n            <button\r\n              v-for=\"h in hours\"\r\n              :key=\"h\"\r\n              :class=\"{ 'is-selected': selectedTime.h === h }\"\r\n              @click=\"setHour(h)\"\r\n            >\r\n              {{ String(h).padStart(2, '0') }}\r\n            </button>\r\n          </div>\r\n          <div class=\"c-date-picker__time-col\">\r\n            <button\r\n              v-for=\"m in minutes\"\r\n              :key=\"m\"\r\n              :class=\"{ 'is-selected': selectedTime.m === m }\"\r\n              @click=\"setMinute(m)\"\r\n            >\r\n              {{ String(m).padStart(2, '0') }}\r\n            </button>\r\n          </div>\r\n          <div class=\"c-date-picker__time-col\">\r\n            <button\r\n              v-for=\"s in seconds\"\r\n              :key=\"s\"\r\n              :class=\"{ 'is-selected': selectedTime.s === s }\"\r\n              @click=\"setSecond(s)\"\r\n            >\r\n              {{ String(s).padStart(2, '0') }}\r\n            </button>\r\n          </div>\r\n        </div>\r\n        <div\r\n          v-if=\"props.type === 'time'\"\r\n          class=\"c-date-picker__footer c-date-picker__footer--time\"\r\n        >\r\n          <div class=\"c-date-picker__today\" @click=\"selectNow\">此刻</div>\r\n          <button\r\n            class=\"c-date-picker__confirm\"\r\n            :disabled=\"\r\n              selectedTime.h == null ||\r\n              selectedTime.m == null ||\r\n              selectedTime.s == null\r\n            \"\r\n            @click=\"applyTime\"\r\n          >\r\n            确定\r\n          </button>\r\n        </div>\r\n\r\n        <div\r\n          v-else\r\n          :class=\"{\r\n            'c-date-picker__datetime': props.type === 'date' && props.showTime\r\n          }\"\r\n        >\r\n          <div class=\"c-date-picker__main\">\r\n            <!-- 日期面板：保留年/月双箭头 -->\r\n            <div\r\n              class=\"c-date-picker__header\"\r\n              v-if=\"\r\n                panelMode === 'date' &&\r\n                (props.type === 'date' || props.type === 'week')\r\n              \"\r\n            >\r\n              <button\r\n                class=\"c-date-picker__nav c-date-picker__nav--year-prev\"\r\n                @click=\"prevYear\"\r\n              >\r\n                «\r\n              </button>\r\n              <button\r\n                class=\"c-date-picker__nav c-date-picker__nav--month-prev\"\r\n                @click=\"prevMonth\"\r\n              >\r\n                ‹\r\n              </button>\r\n              <span class=\"c-date-picker__label\"\r\n                ><span class=\"c-date-picker__label-year\" @click=\"openYearPanel\"\r\n                  >{{ year }}年</span\r\n                >\r\n                <span\r\n                  v-if=\"props.type === 'date'\"\r\n                  class=\"c-date-picker__label-month\"\r\n                  @click=\"openMonthPanel\"\r\n                  >{{ month + 1 }}月</span\r\n                ></span\r\n              >\r\n              <button\r\n                class=\"c-date-picker__nav c-date-picker__nav--month-next\"\r\n                @click=\"nextMonth\"\r\n              >\r\n                ›\r\n              </button>\r\n              <button\r\n                class=\"c-date-picker__nav c-date-picker__nav--year-next\"\r\n                @click=\"nextYear\"\r\n              >\r\n                »\r\n              </button>\r\n            </div>\r\n            <!-- 年/月面板：仅保留左右各一个箭头，每次翻一页 -->\r\n            <div\r\n              class=\"c-date-picker__header c-date-picker__header--simple\"\r\n              v-else-if=\"\r\n                panelMode !== 'date' ||\r\n                (props.type !== 'date' && props.type !== 'week')\r\n              \"\r\n            >\r\n              <button\r\n                class=\"c-date-picker__nav c-date-picker__nav--prev\"\r\n                @click=\"panelMode === 'year' ? prevYearsPage() : prevYear()\"\r\n              >\r\n                ‹\r\n              </button>\r\n              <span class=\"c-date-picker__label\"\r\n                ><span class=\"c-date-picker__label-year\" @click=\"openYearPanel\"\r\n                  >{{ year }}年</span\r\n                >\r\n                <span\r\n                  v-if=\"props.type === 'date'\"\r\n                  class=\"c-date-picker__label-month\"\r\n                  @click=\"openMonthPanel\"\r\n                  >{{ month + 1 }}月</span\r\n                ></span\r\n              >\r\n              <button\r\n                class=\"c-date-picker__nav c-date-picker__nav--next\"\r\n                @click=\"panelMode === 'year' ? nextYearsPage() : nextYear()\"\r\n              >\r\n                ›\r\n              </button>\r\n            </div>\r\n\r\n            <div\r\n              class=\"c-date-picker__calendar\"\r\n              v-if=\"\r\n                panelMode === 'date' &&\r\n                (props.type === 'date' || props.type === 'week')\r\n              \"\r\n            >\r\n              <div class=\"c-date-picker__week\">\r\n                <span v-for=\"w in weekLabels\" :key=\"w\">{{ w }}</span>\r\n              </div>\r\n              <div class=\"c-date-picker__days\">\r\n                <button\r\n                  v-for=\"(cell, i) in calendarDays\"\r\n                  :key=\"i\"\r\n                  :disabled=\"cell.disabled\"\r\n                  :class=\"[\r\n                    {\r\n                      'is-other-month': !cell.currentMonth,\r\n                      'is-today': format(cell.date) === format(new Date()),\r\n                      'is-hover-row':\r\n                        props.type === 'week' &&\r\n                        hoveredDate &&\r\n                        eqWeek(cell.date, hoveredDate),\r\n                      'is-selected':\r\n                        props.type !== 'week'\r\n                          ? innerValue &&\r\n                            format(cell.date) === format(innerValue)\r\n                          : innerValue && eqWeek(cell.date, innerValue)\r\n                    }\r\n                  ]\"\r\n                  @mouseenter=\"onCellEnter(cell.date)\"\r\n                  @mouseleave=\"onCellLeave\"\r\n                  @click=\"selectDate(cell.date)\"\r\n                >\r\n                  {{ cell.date.getDate() }}\r\n                </button>\r\n              </div>\r\n            </div>\r\n            <div\r\n              class=\"c-date-picker__years\"\r\n              v-else-if=\"panelMode === 'year' && props.type !== 'quarter'\"\r\n            >\r\n              <button\r\n                v-for=\"y in yearGrid\"\r\n                :key=\"y\"\r\n                class=\"c-date-picker__year-item\"\r\n                :class=\"{ 'is-selected': y === year }\"\r\n                @click=\"selectYear(y)\"\r\n              >\r\n                {{ y }}\r\n              </button>\r\n            </div>\r\n            <div\r\n              class=\"c-date-picker__months\"\r\n              v-else-if=\"panelMode === 'month' && props.type !== 'quarter'\"\r\n            >\r\n              <button\r\n                v-for=\"m in monthGrid\"\r\n                :key=\"m\"\r\n                class=\"c-date-picker__month-item\"\r\n                :class=\"{ 'is-selected': m === month }\"\r\n                @click=\"selectMonth(m)\"\r\n              >\r\n                {{ m + 1 }}月\r\n              </button>\r\n            </div>\r\n            <div\r\n              class=\"c-date-picker__months\"\r\n              v-else-if=\"props.type === 'quarter'\"\r\n            >\r\n              <button\r\n                v-for=\"q in quarterGrid\"\r\n                :key=\"q\"\r\n                class=\"c-date-picker__month-item\"\r\n                :class=\"{\r\n                  'is-selected':\r\n                    innerValue && Math.floor(innerValue.getMonth() / 3) === q\r\n                }\"\r\n                @click=\"selectQuarter(q)\"\r\n              >\r\n                {{ `Q${q + 1}` }}\r\n              </button>\r\n            </div>\r\n          </div>\r\n          <!-- 右侧：时间面板（仅在 date+showTime 显示） -->\r\n          <div\r\n            v-if=\"props.type === 'date' && props.showTime\"\r\n            class=\"c-date-picker__time\"\r\n          >\r\n            <div class=\"c-date-picker__time-head\">\r\n              <div class=\"c-date-picker__time-title\">{{ timeHeadLabel }}</div>\r\n            </div>\r\n            <div class=\"c-date-picker__time-col\">\r\n              <button\r\n                v-for=\"h in hours\"\r\n                :key=\"h\"\r\n                :class=\"{ 'is-selected': selectedTime.h === h }\"\r\n                @click=\"setHour(h)\"\r\n              >\r\n                {{ String(h).padStart(2, '0') }}\r\n              </button>\r\n            </div>\r\n            <div class=\"c-date-picker__time-col\">\r\n              <button\r\n                v-for=\"m in minutes\"\r\n                :key=\"m\"\r\n                :class=\"{ 'is-selected': selectedTime.m === m }\"\r\n                @click=\"setMinute(m)\"\r\n              >\r\n                {{ String(m).padStart(2, '0') }}\r\n              </button>\r\n            </div>\r\n            <div class=\"c-date-picker__time-col\">\r\n              <button\r\n                v-for=\"s in seconds\"\r\n                :key=\"s\"\r\n                :class=\"{ 'is-selected': selectedTime.s === s }\"\r\n                @click=\"setSecond(s)\"\r\n              >\r\n                {{ String(s).padStart(2, '0') }}\r\n              </button>\r\n            </div>\r\n          </div>\r\n          <!-- 时间模式底部：确认按钮（仅在 date+showTime 显示） -->\r\n          <div\r\n            v-if=\"props.type === 'date' && props.showTime\"\r\n            class=\"c-date-picker__footer c-date-picker__footer--time\"\r\n          >\r\n            <div class=\"c-date-picker__today\" @click=\"selectToday\">今天</div>\r\n            <button\r\n              class=\"c-date-picker__confirm\"\r\n              :disabled=\"\r\n                !innerValue ||\r\n                selectedTime.h == null ||\r\n                selectedTime.m == null ||\r\n                selectedTime.s == null\r\n              \"\r\n              @click=\"applyDateTime\"\r\n            >\r\n              确定\r\n            </button>\r\n          </div>\r\n          <div\r\n            class=\"c-date-picker__footer\"\r\n            :class=\"{ 'c-date-picker__footer--date': props.type === 'date' }\"\r\n            v-if=\"\r\n              (props.type === 'date' && !props.showTime) ||\r\n              props.type === 'week'\r\n            \"\r\n          >\r\n            <button class=\"c-date-picker__today\" @click=\"selectToday\">\r\n              今天\r\n            </button>\r\n          </div>\r\n          <div\r\n            class=\"c-date-picker__footer c-date-picker__footer--month\"\r\n            v-if=\"props.type === 'month'\"\r\n          >\r\n            <button class=\"c-date-picker__this-month\" @click=\"selectThisMonth\">\r\n              当月\r\n            </button>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </transition>\r\n  </div>\r\n</template>\r\n","// DatePicker 组件入口文件\r\n\r\nimport { withInstall } from \"@cuixingjian/cui-utils/install\";\r\nimport type { SFCWithInstall } from \"../types\";\r\nimport _DatePicker from \"./src/datepicker.vue\";\r\n\r\nexport * from \"./src/datepicker\";\r\nexport * from \"./src/instance\";\r\nconst DatePicker: SFCWithInstall<typeof _DatePicker> = withInstall(_DatePicker);\r\n\r\nexport default DatePicker;\r\n\r\n// 在vue中方便提示\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    CDatePicker: typeof DatePicker;\r\n  }\r\n}","import type { ExtractPropTypes, PropType } from 'vue'\r\nimport type { DatePickerSize, DateLike } from '../../datepicker/src/datepicker'\r\n\r\nexport type DateRangeModel = [DateLike, DateLike]\r\n\r\nexport const dateRangePickerProps = {\r\n  // 选中值（[开始, 结束]；字符串或 Date），建议使用字符串格式 'YYYY-MM-DD'\r\n  modelValue: {\r\n    type: Array as PropType<DateRangeModel>,\r\n    default: () => [null, null]\r\n  },\r\n  // 显示格式（日期默认 YYYY-MM-DD；开启 showTime 默认 YYYY-MM-DD HH:mm:ss）\r\n  format: {\r\n    type: String,\r\n    default: 'YYYY-MM-DD'\r\n  },\r\n  // 占位符（输入框）\r\n  placeholder: {\r\n    type: String,\r\n    default: '选择日期范围'\r\n  },\r\n  // 开始/结束占位符（输入框内两段文案）\r\n  startPlaceholder: {\r\n    type: String,\r\n    default: '开始日期'\r\n  },\r\n  endPlaceholder: {\r\n    type: String,\r\n    default: '结束日期'\r\n  },\r\n  // 禁用整组件\r\n  disabled: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否可清除\r\n  clearable: {\r\n    type: Boolean,\r\n    default: true\r\n  },\r\n  // 输入框尺寸\r\n  size: {\r\n    type: String as PropType<DatePickerSize>,\r\n    default: 'default'\r\n  },\r\n  // 禁用某些日期（同时作用于开始与结束）\r\n  disabledDate: {\r\n    type: Function as PropType<(date: Date) => boolean>,\r\n    default: undefined\r\n  },\r\n  // 弹层是否与输入框同宽\r\n  popperMatchWidth: {\r\n    type: Boolean,\r\n    default: true\r\n  },\r\n  // 日期类型可选择时间（在每侧显示时间列与“确定”）\r\n  showTime: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 输入框中值分隔符\r\n  valueSeparator: {\r\n    type: String,\r\n    default: ' 至 '\r\n  },\r\n  // 自定义输入框前置图标（默认日历）。传入图标组件。\r\n  prefixIcon: {\r\n    type: Object as PropType<any>,\r\n    default: undefined\r\n  }\r\n} as const\r\n\r\nexport type DateRangePickerProps = ExtractPropTypes<typeof dateRangePickerProps>\r\n\r\nexport const dateRangePickerEmits = {\r\n  'update:modelValue': (v: DateRangeModel) => true,\r\n  change: (v: DateRangeModel) => true,\r\n  openChange: (open: boolean) => true,\r\n  // 对齐 antd：在选择面板变更（选择了开始或结束）时触发\r\n  calendarChange: (v: DateRangeModel) => true\r\n}\r\n\r\nexport type DateRangePickerEmits = typeof dateRangePickerEmits","<script setup lang=\"ts\">\r\nimport { ref, computed, watch, onBeforeUnmount, nextTick } from 'vue';\r\nimport {\r\n  dateRangePickerProps,\r\n  dateRangePickerEmits,\r\n  type DateRangeModel\r\n} from './daterange';\r\nimport { Calendar } from '@vicons/ionicons5';\r\n\r\nconst props = defineProps(dateRangePickerProps);\r\nconst emit = defineEmits(dateRangePickerEmits);\r\n\r\ndefineOptions({ name: 'CDateRangePicker' });\r\n\r\n// 面板显示/隐藏与外部点击关闭\r\nconst visible = ref(false);\r\nconst isHovered = ref(false);\r\nconst pickerRef = ref<HTMLElement | null>(null);\r\n\r\nconst hoverPanel = ref<'left' | 'right' | null>(null);\r\n\r\nfunction onClickOutside(e: MouseEvent) {\r\n  if (!visible.value) return;\r\n  const el = pickerRef.value;\r\n  if (!el) return;\r\n  const target = e.target as Node;\r\n  if (!el.contains(target)) closePanel();\r\n}\r\n\r\nwatch(visible, (v) => {\r\n  if (typeof document === 'undefined') return;\r\n  const fn = onClickOutside as EventListener;\r\n  if (v) document.addEventListener('mousedown', fn);\r\n  else document.removeEventListener('mousedown', fn);\r\n});\r\n\r\nonBeforeUnmount(() => {\r\n  const fn = onClickOutside as EventListener;\r\n  document.removeEventListener('mousedown', fn);\r\n});\r\n\r\nfunction openPanel() {\r\n  if (props.disabled) return;\r\n  visible.value = true;\r\n  emit('openChange', true);\r\n  hoverPanel.value = null;\r\n  hoverDate.value = null;\r\n}\r\n\r\nfunction closePanel() {\r\n  // 清除编辑状态\r\n  editingTarget.value = null;\r\n  originalValues.value = { start: null, end: null };\r\n\r\n  // 清除悬停状态\r\n  hoverDate.value = null;\r\n  hoverPanel.value = null;\r\n\r\n  // 恢复picker显示状态\r\n  pickerStartDate.value = innerStart.value;\r\n  pickerEndDate.value = innerEnd.value;\r\n\r\n  visible.value = false;\r\n  emit('openChange', false);\r\n}\r\n\r\n// 解析与格式化\r\nconst effectiveFormat = computed(() => {\r\n  if (props.showTime) {\r\n    return props.format && props.format !== 'YYYY-MM-DD'\r\n      ? props.format\r\n      : 'YYYY-MM-DD HH:mm:ss';\r\n  }\r\n  return props.format;\r\n});\r\n\r\nconst pad2 = (n: number) => String(n).padStart(2, '0');\r\nconst format = (d: Date | null, fmt = effectiveFormat.value) => {\r\n  if (!d) return '';\r\n  const map: Record<string, string> = {\r\n    YYYY: String(d.getFullYear()),\r\n    MM: pad2(d.getMonth() + 1),\r\n    DD: pad2(d.getDate()),\r\n    HH: pad2(d.getHours()),\r\n    mm: pad2(d.getMinutes()),\r\n    ss: pad2(d.getSeconds())\r\n  };\r\n  return fmt.replace(/YYYY|MM|DD|HH|mm|ss/g, (k) => map[k]);\r\n};\r\n\r\nconst normalizeDate = (d: Date) => {\r\n  const x = new Date(d);\r\n  x.setHours(0, 0, 0, 0);\r\n  return x;\r\n};\r\n\r\n// 内部值与面板月份\r\nconst innerStart = ref<Date | null>(null);\r\nconst innerEnd = ref<Date | null>(null);\r\nconst panelStart = ref(new Date());\r\nconst panelEnd = computed(() => {\r\n  const nextMonth = new Date(panelStart.value);\r\n  nextMonth.setMonth(nextMonth.getMonth() + 1);\r\n  return nextMonth;\r\n});\r\n\r\n// picker显示状态（用于控制重新选择时的显示）\r\nconst pickerStartDate = ref<Date | null>(null);\r\nconst pickerEndDate = ref<Date | null>(null);\r\n\r\n// 时分秒状态管理\r\nconst selectedTimeStart = ref({ h: 0, m: 0, s: 0 });\r\nconst selectedTimeEnd = ref({ h: 23, m: 59, s: 59 });\r\n\r\n// 时分秒选项\r\nconst hours = Array.from({ length: 24 }, (_, i) => i);\r\nconst minutes = Array.from({ length: 60 }, (_, i) => i);\r\nconst seconds = Array.from({ length: 60 }, (_, i) => i);\r\n\r\nwatch(\r\n  () => props.modelValue,\r\n  (v) => {\r\n    const [s, e] = v || [null, null];\r\n    innerStart.value = s instanceof Date ? s : s ? new Date(s as any) : null;\r\n    innerEnd.value = e instanceof Date ? e : e ? new Date(e as any) : null;\r\n    // 同步picker显示状态\r\n    pickerStartDate.value = innerStart.value;\r\n    pickerEndDate.value = innerEnd.value;\r\n    if (innerStart.value) {\r\n      panelStart.value = new Date(\r\n        innerStart.value.getFullYear(),\r\n        innerStart.value.getMonth(),\r\n        1\r\n      );\r\n    }\r\n  },\r\n  { immediate: true }\r\n);\r\n\r\n// 同步时分秒状态\r\nwatch([innerStart, innerEnd], ([start, end]) => {\r\n  if (props.showTime) {\r\n    if (start) {\r\n      selectedTimeStart.value = {\r\n        h: start.getHours(),\r\n        m: start.getMinutes(),\r\n        s: start.getSeconds()\r\n      };\r\n    }\r\n    if (end) {\r\n      selectedTimeEnd.value = {\r\n        h: end.getHours(),\r\n        m: end.getMinutes(),\r\n        s: end.getSeconds()\r\n      };\r\n    }\r\n  }\r\n});\r\n\r\n// 输入框显示文本\r\nconst startText = computed(() => {\r\n  // 编辑开始日期时，如果有悬停日期则显示悬停日期，否则显示当前开始日期\r\n  if (editingTarget.value === 'start' && hoverDate.value) {\r\n    return format(hoverDate.value);\r\n  }\r\n  return format(innerStart.value);\r\n});\r\n\r\nconst endText = computed(() => {\r\n  // 编辑结束日期时，如果有悬停日期则显示悬停日期，否则显示当前结束日期\r\n  if (editingTarget.value === 'end' && hoverDate.value) {\r\n    return format(hoverDate.value);\r\n  }\r\n  return format(innerEnd.value);\r\n});\r\n\r\nfunction clear() {\r\n  innerStart.value = null;\r\n  innerEnd.value = null;\r\n  pickerStartDate.value = null;\r\n  pickerEndDate.value = null;\r\n  editingTarget.value = null;\r\n  emit('update:modelValue', [null, null]);\r\n  emit('change', [null, null]);\r\n}\r\n\r\n// 日历计算\r\nconst weekLabels = ['一', '二', '三', '四', '五', '六', '日'];\r\n\r\nconst yearStart = computed(() => panelStart.value.getFullYear());\r\nconst monthStart = computed(() => panelStart.value.getMonth());\r\nconst yearEnd = computed(() => panelEnd.value.getFullYear());\r\nconst monthEnd = computed(() => panelEnd.value.getMonth());\r\n\r\nfunction getCalendarDays(year: number, month: number) {\r\n  const firstDay = new Date(year, month, 1);\r\n  const lastDay = new Date(year, month + 1, 0);\r\n  const startWeekday = (firstDay.getDay() + 6) % 7;\r\n  const days = [];\r\n\r\n  // 上月末尾\r\n  for (let i = startWeekday - 1; i >= 0; i--) {\r\n    const d = new Date(year, month, -i);\r\n    days.push({\r\n      date: d,\r\n      currentMonth: false,\r\n      disabled: props.disabledDate?.(d) || false\r\n    });\r\n  }\r\n\r\n  // 当月\r\n  for (let i = 1; i <= lastDay.getDate(); i++) {\r\n    const d = new Date(year, month, i);\r\n    days.push({\r\n      date: d,\r\n      currentMonth: true,\r\n      disabled: props.disabledDate?.(d) || false\r\n    });\r\n  }\r\n\r\n  // 下月开头\r\n  const remaining = 42 - days.length;\r\n  for (let i = 1; i <= remaining; i++) {\r\n    const d = new Date(year, month + 1, i);\r\n    days.push({\r\n      date: d,\r\n      currentMonth: false,\r\n      disabled: props.disabledDate?.(d) || false\r\n    });\r\n  }\r\n\r\n  return days;\r\n}\r\n\r\nconst calendarDaysStart = computed(() =>\r\n  getCalendarDays(yearStart.value, monthStart.value)\r\n);\r\nconst calendarDaysEnd = computed(() =>\r\n  getCalendarDays(yearEnd.value, monthEnd.value)\r\n);\r\n\r\n// 导航\r\nfunction prevYearStart() {\r\n  panelStart.value = new Date(yearStart.value - 1, monthStart.value, 1);\r\n}\r\nfunction nextYearStart() {\r\n  panelStart.value = new Date(yearStart.value + 1, monthStart.value, 1);\r\n}\r\nfunction prevMonthStart() {\r\n  panelStart.value = new Date(yearStart.value, monthStart.value - 1, 1);\r\n}\r\nfunction nextMonthStart() {\r\n  panelStart.value = new Date(yearStart.value, monthStart.value + 1, 1);\r\n}\r\n\r\nfunction prevYearEnd() {\r\n  panelStart.value = new Date(yearStart.value - 1, monthStart.value, 1);\r\n}\r\nfunction nextYearEnd() {\r\n  panelStart.value = new Date(yearStart.value + 1, monthStart.value, 1);\r\n}\r\nfunction prevMonthEnd() {\r\n  panelStart.value = new Date(yearStart.value, monthStart.value - 1, 1);\r\n}\r\nfunction nextMonthEnd() {\r\n  panelStart.value = new Date(yearStart.value, monthStart.value + 1, 1);\r\n}\r\n\r\n// 时分秒更新函数\r\nfunction updateStartTime(type: 'h' | 'm' | 's', value: number) {\r\n  selectedTimeStart.value[type] = value;\r\n  if (innerStart.value) {\r\n    const newDate = new Date(innerStart.value);\r\n    newDate.setHours(\r\n      selectedTimeStart.value.h,\r\n      selectedTimeStart.value.m,\r\n      selectedTimeStart.value.s\r\n    );\r\n    innerStart.value = newDate;\r\n  }\r\n}\r\n\r\nfunction updateEndTime(type: 'h' | 'm' | 's', value: number) {\r\n  selectedTimeEnd.value[type] = value;\r\n  if (innerEnd.value) {\r\n    const newDate = new Date(innerEnd.value);\r\n    newDate.setHours(\r\n      selectedTimeEnd.value.h,\r\n      selectedTimeEnd.value.m,\r\n      selectedTimeEnd.value.s\r\n    );\r\n    innerEnd.value = newDate;\r\n  }\r\n}\r\n\r\n// 鼠标滚轮修改时分秒\r\nfunction onWheelStart(e: WheelEvent, type: 'h' | 'm' | 's') {\r\n  e.preventDefault();\r\n  const delta = e.deltaY > 0 ? -1 : 1;\r\n  const current = selectedTimeStart.value[type];\r\n  let max = 23;\r\n  if (type === 'm' || type === 's') max = 59;\r\n\r\n  let newValue = current + delta;\r\n  if (newValue < 0) newValue = max;\r\n  if (newValue > max) newValue = 0;\r\n\r\n  updateStartTime(type, newValue);\r\n}\r\n\r\nfunction onWheelEnd(e: WheelEvent, type: 'h' | 'm' | 's') {\r\n  e.preventDefault();\r\n  const delta = e.deltaY > 0 ? -1 : 1;\r\n  const current = selectedTimeEnd.value[type];\r\n  let max = 23;\r\n  if (type === 'm' || type === 's') max = 59;\r\n\r\n  let newValue = current + delta;\r\n  if (newValue < 0) newValue = max;\r\n  if (newValue > max) newValue = 0;\r\n\r\n  updateEndTime(type, newValue);\r\n}\r\n\r\n// 点击-输入模式（仅数字，正则校验）\r\nconst editingStartUnit = ref<'h' | 'm' | 's' | null>(null);\r\nconst editingEndUnit = ref<'h' | 'm' | 's' | null>(null);\r\nconst startInputValue = ref<string>('');\r\nconst endInputValue = ref<string>('');\r\n\r\nconst startInputHRef = ref<HTMLInputElement | null>(null);\r\nconst startInputMRef = ref<HTMLInputElement | null>(null);\r\nconst startInputSRef = ref<HTMLInputElement | null>(null);\r\nconst endInputHRef = ref<HTMLInputElement | null>(null);\r\nconst endInputMRef = ref<HTMLInputElement | null>(null);\r\nconst endInputSRef = ref<HTMLInputElement | null>(null);\r\n\r\nfunction startEdit(unit: 'h' | 'm' | 's') {\r\n  editingStartUnit.value = unit;\r\n  startInputValue.value = String(selectedTimeStart.value[unit]).padStart(2, '0');\r\n  nextTick(() => {\r\n    const map: Record<'h' | 'm' | 's', typeof startInputHRef> = {\r\n      h: startInputHRef,\r\n      m: startInputMRef,\r\n      s: startInputSRef\r\n    };\r\n    map[unit].value?.select();\r\n  });\r\n}\r\n\r\nfunction endEdit(unit: 'h' | 'm' | 's') {\r\n  editingEndUnit.value = unit;\r\n  endInputValue.value = String(selectedTimeEnd.value[unit]).padStart(2, '0');\r\n  nextTick(() => {\r\n    const map: Record<'h' | 'm' | 's', typeof endInputHRef> = {\r\n      h: endInputHRef,\r\n      m: endInputMRef,\r\n      s: endInputSRef\r\n    };\r\n    map[unit].value?.select();\r\n  });\r\n}\r\n\r\nfunction onStartInput(e: Event) {\r\n  const t = e.target as HTMLInputElement;\r\n  const v = t.value.replace(/\\D/g, '').slice(0, 2);\r\n  t.value = v;\r\n  startInputValue.value = v;\r\n}\r\n\r\nfunction onEndInput(e: Event) {\r\n  const t = e.target as HTMLInputElement;\r\n  const v = t.value.replace(/\\D/g, '').slice(0, 2);\r\n  t.value = v;\r\n  endInputValue.value = v;\r\n}\r\n\r\nconst HOUR_RE = /^(?:[01]\\d|2[0-3])$/;\r\nconst MS_RE = /^[0-5]\\d$/;\r\n\r\nfunction commitStart(unit: 'h' | 'm' | 's') {\r\n  const v = startInputValue.value;\r\n  const ok = unit === 'h' ? HOUR_RE.test(v) : MS_RE.test(v);\r\n  if (ok) updateStartTime(unit, parseInt(v, 10));\r\n  editingStartUnit.value = null;\r\n}\r\n\r\nfunction commitEnd(unit: 'h' | 'm' | 's') {\r\n  const v = endInputValue.value;\r\n  const ok = unit === 'h' ? HOUR_RE.test(v) : MS_RE.test(v);\r\n  if (ok) updateEndTime(unit, parseInt(v, 10));\r\n  editingEndUnit.value = null;\r\n}\r\n\r\n// 新的状态管理：基于当前编辑目标\r\nconst editingTarget = ref<'start' | 'end' | null>(null); // 当前正在编辑的目标\r\nconst hoverDate = ref<Date | null>(null); // 鼠标悬停的日期\r\nconst originalValues = ref<{ start: Date | null; end: Date | null }>({\r\n  start: null,\r\n  end: null\r\n}); // 编辑前的原始值\r\n\r\n// 输入框悬停状态\r\nconst isInputHovered = ref(false);\r\n\r\nconst showClearIcon = computed(() => {\r\n  return (\r\n    isInputHovered.value &&\r\n    props.clearable &&\r\n    (startText.value || endText.value) &&\r\n    !props.disabled\r\n  );\r\n});\r\n\r\nfunction onInputMouseEnter() {\r\n  isInputHovered.value = true;\r\n}\r\n\r\nfunction onInputMouseLeave() {\r\n  isInputHovered.value = false;\r\n}\r\n\r\n// 新的输入框点击处理逻辑\r\nfunction onStartInputClick() {\r\n  // 保存当前值作为原始值\r\n  originalValues.value.start = innerStart.value;\r\n  originalValues.value.end = innerEnd.value;\r\n\r\n  if (props.showTime) {\r\n    // showTime模式下：不设置editingTarget（避免小蓝条），但设置picker日期以显示选择状态\r\n    editingTarget.value = null;\r\n    if (innerStart.value) {\r\n      pickerStartDate.value = new Date(innerStart.value);\r\n    }\r\n    if (innerEnd.value) {\r\n      pickerEndDate.value = new Date(innerEnd.value);\r\n    }\r\n  } else {\r\n    // 非showTime模式的原有逻辑\r\n    editingTarget.value = 'start';\r\n    if (innerStart.value && innerEnd.value) {\r\n      pickerStartDate.value = null;\r\n    } else if (innerStart.value) {\r\n      pickerStartDate.value = new Date(innerStart.value);\r\n    }\r\n  }\r\n\r\n  openPanel();\r\n}\r\n\r\nfunction onEndInputClick() {\r\n  // 保存当前值作为原始值\r\n  originalValues.value.start = innerStart.value;\r\n  originalValues.value.end = innerEnd.value;\r\n\r\n  if (props.showTime) {\r\n    // showTime模式下：不设置editingTarget（避免小蓝条），但设置picker日期以显示选择状态\r\n    editingTarget.value = null;\r\n    if (innerStart.value) {\r\n      pickerStartDate.value = new Date(innerStart.value);\r\n    }\r\n    if (innerEnd.value) {\r\n      pickerEndDate.value = new Date(innerEnd.value);\r\n    }\r\n  } else {\r\n    // 非showTime模式的原有逻辑\r\n    editingTarget.value = 'end';\r\n    if (!innerStart.value) {\r\n      editingTarget.value = 'start';\r\n    } else if (innerEnd.value) {\r\n      pickerEndDate.value = null;\r\n    }\r\n  }\r\n\r\n  openPanel();\r\n}\r\n\r\nfunction onHoverStart(d: Date) {\r\n  const nd = normalizeDate(d);\r\n  if (\r\n    nd.getFullYear() !== yearStart.value ||\r\n    nd.getMonth() !== monthStart.value\r\n  ) {\r\n    return;\r\n  }\r\n\r\n  // 在showTime模式下，如果已经选择了完整的日期范围，不显示悬停效果\r\n  if (\r\n    props.showTime &&\r\n    innerStart.value &&\r\n    innerEnd.value &&\r\n    !editingTarget.value\r\n  ) {\r\n    return;\r\n  }\r\n\r\n  hoverPanel.value = 'left';\r\n  hoverDate.value = nd;\r\n\r\n  // 如果正在编辑状态，实现预览效果\r\n  if (editingTarget.value) {\r\n    if (editingTarget.value === 'start') {\r\n      // 预览开始日期\r\n      innerStart.value = nd;\r\n    } else if (editingTarget.value === 'end') {\r\n      // 预览结束日期\r\n      innerEnd.value = nd;\r\n    }\r\n  }\r\n}\r\n\r\nfunction onHoverEnd(d: Date) {\r\n  const nd = normalizeDate(d);\r\n  if (nd.getFullYear() !== yearEnd.value || nd.getMonth() !== monthEnd.value) {\r\n    return;\r\n  }\r\n\r\n  // 在showTime模式下，如果已经选择了完整的日期范围，不显示悬停效果\r\n  if (\r\n    props.showTime &&\r\n    innerStart.value &&\r\n    innerEnd.value &&\r\n    !editingTarget.value\r\n  ) {\r\n    return;\r\n  }\r\n\r\n  hoverPanel.value = 'right';\r\n  hoverDate.value = nd;\r\n\r\n  // 如果正在编辑状态，实现预览效果\r\n  if (editingTarget.value) {\r\n    if (editingTarget.value === 'start') {\r\n      // 预览开始日期\r\n      innerStart.value = nd;\r\n    } else if (editingTarget.value === 'end') {\r\n      // 预览结束日期\r\n      innerEnd.value = nd;\r\n    }\r\n  }\r\n}\r\n\r\nfunction clearHover() {\r\n  hoverDate.value = null;\r\n  hoverPanel.value = null;\r\n\r\n  // 如果正在编辑状态，恢复到编辑前的状态\r\n  if (editingTarget.value && originalValues.value.start !== null) {\r\n    innerStart.value = originalValues.value.start;\r\n    innerEnd.value = originalValues.value.end;\r\n  }\r\n}\r\n\r\nfunction onPanelMouseEnter() {\r\n  // 如果正在编辑状态，恢复到编辑前的状态\r\n  if (editingTarget.value && originalValues.value.start !== null) {\r\n    innerStart.value = originalValues.value.start;\r\n    innerEnd.value = originalValues.value.end;\r\n\r\n    // 根据编辑目标设置picker状态\r\n    if (editingTarget.value === 'start') {\r\n      pickerStartDate.value = null; // 清除开始日期的选中状态\r\n      pickerEndDate.value = innerEnd.value;\r\n    } else if (editingTarget.value === 'end') {\r\n      pickerStartDate.value = innerStart.value;\r\n      pickerEndDate.value = null; // 清除结束日期的选中状态\r\n    }\r\n  }\r\n}\r\n\r\nfunction onPanelMouseLeave() {\r\n  // 清除悬停状态\r\n  hoverDate.value = null;\r\n  hoverPanel.value = null;\r\n\r\n  // 如果正在编辑状态，恢复到原始值\r\n  if (editingTarget.value && originalValues.value.start !== null) {\r\n    innerStart.value = originalValues.value.start;\r\n    innerEnd.value = originalValues.value.end;\r\n\r\n    // 恢复正常的picker状态显示\r\n    pickerStartDate.value = innerStart.value;\r\n    pickerEndDate.value = innerEnd.value;\r\n  }\r\n}\r\n\r\nfunction isInPreviewRange(d: Date) {\r\n  const nd = normalizeDate(d);\r\n\r\n  // 如果有完整的开始和结束日期，显示选中范围\r\n  if (innerStart.value && innerEnd.value) {\r\n    const s = normalizeDate(innerStart.value);\r\n    const e = normalizeDate(innerEnd.value);\r\n\r\n    // 在编辑状态下，如果有悬停日期，显示悬停预览范围\r\n    if (editingTarget.value && hoverDate.value) {\r\n      if (editingTarget.value === 'start') {\r\n        // 编辑开始日期：显示悬停日期到原结束日期的范围\r\n        const h = hoverDate.value;\r\n        const min = h <= e ? h : e;\r\n        const max = h >= e ? h : e;\r\n        return nd >= min && nd <= max;\r\n      } else {\r\n        // 编辑结束日期：显示开始日期到悬停日期的范围\r\n        const h = hoverDate.value;\r\n        const min = s <= h ? s : h;\r\n        const max = s >= h ? s : h;\r\n        return nd >= min && nd <= max;\r\n      }\r\n    }\r\n\r\n    // 正常情况：显示开始到结束的范围\r\n    return nd >= s && nd <= e;\r\n  }\r\n\r\n  // 如果有开始日期和悬浮日期（非编辑状态），显示预览范围\r\n  if (innerStart.value && hoverDate.value && !editingTarget.value) {\r\n    const s = normalizeDate(innerStart.value);\r\n    const h = hoverDate.value;\r\n    const min = s <= h ? s : h;\r\n    const max = s >= h ? s : h;\r\n    return nd >= min && nd <= max;\r\n  }\r\n\r\n  return false;\r\n}\r\n\r\nfunction onClickDay(d: Date) {\r\n  if (props.disabledDate?.(d)) return;\r\n  selectDate(new Date(d));\r\n}\r\n\r\nfunction selectDate(d: Date) {\r\n  if (props.disabledDate?.(d)) return;\r\n  const selectedDate = new Date(d);\r\n\r\n  // 根据当前编辑目标进行选择\r\n  if (editingTarget.value === 'start') {\r\n    selectStartDate(selectedDate);\r\n    return;\r\n  }\r\n\r\n  if (editingTarget.value === 'end') {\r\n    selectEndDate(selectedDate);\r\n    return;\r\n  }\r\n\r\n  // 如果没有编辑目标，按照默认逻辑\r\n  if (!innerStart.value && !innerEnd.value) {\r\n    // 没有任何日期，设为开始日期\r\n    editingTarget.value = 'start';\r\n    selectStartDate(selectedDate);\r\n    return;\r\n  }\r\n\r\n  if (innerStart.value && !innerEnd.value) {\r\n    // 只有开始日期，设为结束日期\r\n    editingTarget.value = 'end';\r\n    selectEndDate(selectedDate);\r\n    return;\r\n  }\r\n\r\n  // 在showTime模式下，如果已经选择了完整的日期范围，再次点击日期会清空之前的选择\r\n  if (props.showTime && innerStart.value && innerEnd.value) {\r\n    // 清空所有选择，重新开始\r\n    innerStart.value = null;\r\n    innerEnd.value = null;\r\n    pickerStartDate.value = null;\r\n    pickerEndDate.value = null;\r\n    editingTarget.value = 'start';\r\n    selectStartDate(selectedDate);\r\n    return;\r\n  }\r\n}\r\n\r\nfunction selectStartDate(d: Date) {\r\n  if (props.disabledDate?.(d)) return;\r\n\r\n  // 更新面板月份（如果在左侧面板选择）\r\n  if (hoverPanel.value === 'left') {\r\n    panelStart.value = new Date(d.getFullYear(), d.getMonth(), 1);\r\n  }\r\n\r\n  // 设置开始日期\r\n  innerStart.value = new Date(d);\r\n  pickerStartDate.value = new Date(d);\r\n\r\n  // 在showTime模式下，保持现有时间或初始化时分秒\r\n  if (props.showTime) {\r\n    // 如果已经有时间选择，保持不变；否则初始化为00:00:00\r\n    if (!selectedTimeStart.value) {\r\n      selectedTimeStart.value = { h: 0, m: 0, s: 0 };\r\n    }\r\n    // 应用当前选择的时间到日期\r\n    innerStart.value.setHours(\r\n      selectedTimeStart.value.h,\r\n      selectedTimeStart.value.m,\r\n      selectedTimeStart.value.s,\r\n      0\r\n    );\r\n  }\r\n\r\n  // 清除悬停状态\r\n  hoverDate.value = null;\r\n  hoverPanel.value = null;\r\n\r\n  // 选择开始日期后，总是清空结束日期，让用户重新选择\r\n  innerEnd.value = null;\r\n  pickerEndDate.value = null;\r\n\r\n  // 在showTime模式下，同时清除结束时间的选择\r\n  if (props.showTime) {\r\n    // 重置为默认结束时间 23:59:59，避免类型为非空对象时报错\r\n    selectedTimeEnd.value = { h: 0, m: 0, s: 0 };\r\n  }\r\n\r\n  // 发出日历变化事件\r\n  emit('calendarChange', [\r\n    format(innerStart.value),\r\n    innerEnd.value ? format(innerEnd.value) : null\r\n  ]);\r\n\r\n  // 选择开始日期后，总是自动切换到选择结束日期状态\r\n  editingTarget.value = 'end';\r\n}\r\n\r\nfunction selectEndDate(d: Date) {\r\n  if (props.disabledDate?.(d)) return;\r\n\r\n  // 设置结束日期\r\n  innerEnd.value = new Date(d);\r\n  pickerEndDate.value = new Date(d);\r\n\r\n  // 在showTime模式下，保持现有时间或初始化时分秒\r\n  if (props.showTime) {\r\n    // 如果已经有时间选择，保持不变；否则初始化为23:59:59\r\n    if (!selectedTimeEnd.value) {\r\n      selectedTimeEnd.value = { h: 23, m: 59, s: 59 };\r\n    }\r\n    // 应用当前选择的时间到日期\r\n    innerEnd.value.setHours(\r\n      selectedTimeEnd.value.h,\r\n      selectedTimeEnd.value.m,\r\n      selectedTimeEnd.value.s,\r\n      999\r\n    );\r\n  }\r\n\r\n  // 清除悬停状态\r\n  hoverDate.value = null;\r\n  hoverPanel.value = null;\r\n\r\n  // 如果开始日期存在且大于结束日期，交换它们\r\n  if (\r\n    innerStart.value &&\r\n    innerStart.value.getTime() > innerEnd.value.getTime()\r\n  ) {\r\n    const temp = new Date(innerStart.value);\r\n    innerStart.value = new Date(innerEnd.value);\r\n    innerEnd.value = temp;\r\n\r\n    // 同时交换picker状态\r\n    pickerStartDate.value = innerStart.value;\r\n    pickerEndDate.value = innerEnd.value;\r\n\r\n    // 更新面板显示\r\n    if (hoverPanel.value === 'left') {\r\n      panelStart.value = new Date(\r\n        innerStart.value.getFullYear(),\r\n        innerStart.value.getMonth(),\r\n        1\r\n      );\r\n    }\r\n  }\r\n\r\n  // 发出日历变化事件\r\n  if (innerStart.value) {\r\n    emit('calendarChange', [format(innerStart.value), format(innerEnd.value)]);\r\n  }\r\n\r\n  // 完成选择，清除编辑状态（showTime模式下也不显示小蓝条）\r\n  editingTarget.value = null;\r\n\r\n  // 如果不是时间模式，选择结束日期后自动关闭面板并提交值\r\n  if (!props.showTime && innerStart.value) {\r\n    const out: DateRangeModel = [\r\n      format(innerStart.value),\r\n      format(innerEnd.value)\r\n    ];\r\n    emit('update:modelValue', out);\r\n    emit('change', out);\r\n    closePanel();\r\n  }\r\n}\r\n</script>\r\n\r\n<template>\r\n  <div class=\"c-date-range-picker\" ref=\"pickerRef\">\r\n    <!-- 输入框区域 -->\r\n    <div\r\n      class=\"c-date-range-picker__inputs\"\r\n      :class=\"{ 'is-focus': visible, 'is-has-time': props.showTime }\"\r\n      @mouseenter=\"onInputMouseEnter\"\r\n      @mouseleave=\"onInputMouseLeave\"\r\n    >\r\n      <div\r\n        class=\"c-date-range-picker__input\"\r\n        :class=\"{ 'is-active': editingTarget === 'start' }\"\r\n        @click.stop=\"onStartInputClick\"\r\n      >\r\n        <span\r\n          class=\"c-date-range-picker__input-text\"\r\n          :class=\"{ 'is-placeholder': !startText }\"\r\n        >\r\n          {{ startText || '开始日期' }}\r\n        </span>\r\n      </div>\r\n      <span class=\"c-date-range-picker__separator\">{{\r\n        props.valueSeparator\r\n      }}</span>\r\n      <div\r\n        class=\"c-date-range-picker__input\"\r\n        :class=\"{ 'is-active': editingTarget === 'end' }\"\r\n        @click.stop=\"onEndInputClick\"\r\n      >\r\n        <span\r\n          class=\"c-date-range-picker__input-text\"\r\n          :class=\"{ 'is-placeholder': !endText }\"\r\n        >\r\n          {{ endText || '结束日期' }}\r\n        </span>\r\n      </div>\r\n\r\n      <!-- 右侧独立区域 -->\r\n      <div class=\"c-date-range-picker__suffix\">\r\n        <!-- 清空按钮 -->\r\n        <button\r\n          v-if=\"props.clearable && (startText || endText) && !props.disabled\"\r\n          class=\"c-date-range-picker__clear\"\r\n          @click.stop=\"clear\"\r\n          v-show=\"showClearIcon\"\r\n        >\r\n          ×\r\n        </button>\r\n\r\n        <!-- 日历图标 -->\r\n        <div class=\"c-date-range-picker__icon\" v-show=\"!showClearIcon\">\r\n          <svg\r\n            viewBox=\"0 0 24 24\"\r\n            xmlns=\"http://www.w3.org/2000/svg\"\r\n            fill=\"none\"\r\n            stroke=\"currentColor\"\r\n            stroke-width=\"1.5\"\r\n          >\r\n            <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\r\n            <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\r\n            <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\r\n            <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\r\n            <circle cx=\"8\" cy=\"14\" r=\"0.5\" />\r\n            <circle cx=\"12\" cy=\"14\" r=\"0.5\" />\r\n            <circle cx=\"16\" cy=\"14\" r=\"0.5\" />\r\n            <circle cx=\"8\" cy=\"18\" r=\"0.5\" />\r\n            <circle cx=\"12\" cy=\"18\" r=\"0.5\" />\r\n          </svg>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- 弹层：双面板 -->\r\n    <div\r\n      v-if=\"visible\"\r\n      class=\"c-date-range-picker__popper\"\r\n      @mouseenter=\"onPanelMouseEnter\"\r\n      @mouseleave=\"onPanelMouseLeave\"\r\n    >\r\n      <div class=\"c-date-range-picker__panels\">\r\n        <!-- 左面板 -->\r\n        <div class=\"c-date-range-picker__panel\">\r\n          <div class=\"c-date-range-picker__header\">\r\n            <button @click=\"prevYearStart\">«</button>\r\n            <button @click=\"prevMonthStart\">‹</button>\r\n            <span>{{ yearStart }}年 {{ monthStart + 1 }}月</span>\r\n            <button @click=\"nextMonthStart\">›</button>\r\n            <button @click=\"nextYearStart\">»</button>\r\n          </div>\r\n          <div class=\"c-date-range-picker__weeks\">\r\n            <span\r\n              v-for=\"w in weekLabels\"\r\n              :key=\"w\"\r\n              class=\"c-date-range-picker__week\"\r\n              >{{ w }}</span\r\n            >\r\n          </div>\r\n          <div class=\"c-date-range-picker__days\">\r\n            <div\r\n              v-for=\"cell in calendarDaysStart\"\r\n              :key=\"cell.date.getTime() + '-start'\"\r\n              class=\"c-date-range-picker__day\"\r\n              :class=\"[\r\n                cell.currentMonth ? 'is-current' : 'is-out',\r\n                cell.disabled ? 'is-disabled' : '',\r\n                cell.currentMonth &&\r\n                pickerStartDate &&\r\n                normalizeDate(pickerStartDate).getTime() ===\r\n                  normalizeDate(cell.date).getTime()\r\n                  ? 'is-selected'\r\n                  : '',\r\n                cell.currentMonth &&\r\n                pickerEndDate &&\r\n                normalizeDate(pickerEndDate).getTime() ===\r\n                  normalizeDate(cell.date).getTime()\r\n                  ? 'is-selected'\r\n                  : '',\r\n                cell.currentMonth &&\r\n                pickerStartDate &&\r\n                normalizeDate(pickerStartDate).getTime() ===\r\n                  normalizeDate(cell.date).getTime()\r\n                  ? 'is-range-start'\r\n                  : '',\r\n                cell.currentMonth &&\r\n                pickerEndDate &&\r\n                normalizeDate(pickerEndDate).getTime() ===\r\n                  normalizeDate(cell.date).getTime()\r\n                  ? 'is-range-end'\r\n                  : '',\r\n                // 候选样式：只在悬停且编辑状态匹配时显示\r\n                cell.currentMonth &&\r\n                hoverPanel === 'left' &&\r\n                editingTarget === 'start' &&\r\n                hoverDate &&\r\n                hoverDate.getTime() === normalizeDate(cell.date).getTime()\r\n                  ? 'is-range-start'\r\n                  : '',\r\n                cell.currentMonth &&\r\n                hoverPanel === 'left' &&\r\n                editingTarget === 'end' &&\r\n                hoverDate &&\r\n                hoverDate.getTime() === normalizeDate(cell.date).getTime()\r\n                  ? 'is-range-end'\r\n                  : '',\r\n                cell.currentMonth && isInPreviewRange(cell.date)\r\n                  ? 'is-in-range'\r\n                  : ''\r\n              ]\"\r\n              @click=\"\r\n                !cell.disabled && cell.currentMonth && onClickDay(cell.date)\r\n              \"\r\n              @mouseenter=\"cell.currentMonth && onHoverStart(cell.date)\"\r\n            >\r\n              {{ cell.date.getDate() }}\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- 右面板 -->\r\n        <div class=\"c-date-range-picker__panel\">\r\n          <div class=\"c-date-range-picker__header\">\r\n            <button @click=\"prevYearEnd\">«</button>\r\n            <button @click=\"prevMonthEnd\">‹</button>\r\n            <span>{{ yearEnd }}年 {{ monthEnd + 1 }}月</span>\r\n            <button @click=\"nextMonthEnd\">›</button>\r\n            <button @click=\"nextYearEnd\">»</button>\r\n          </div>\r\n          <div class=\"c-date-range-picker__weeks\">\r\n            <span\r\n              v-for=\"w in weekLabels\"\r\n              :key=\"w + '-r'\"\r\n              class=\"c-date-range-picker__week\"\r\n              >{{ w }}</span\r\n            >\r\n          </div>\r\n          <div class=\"c-date-range-picker__days\">\r\n            <div\r\n              v-for=\"cell in calendarDaysEnd\"\r\n              :key=\"cell.date.getTime() + '-end'\"\r\n              class=\"c-date-range-picker__day\"\r\n              :class=\"[\r\n                cell.currentMonth ? 'is-current' : 'is-out',\r\n                cell.disabled ? 'is-disabled' : '',\r\n                pickerStartDate &&\r\n                normalizeDate(pickerStartDate).getTime() ===\r\n                  normalizeDate(cell.date).getTime()\r\n                  ? 'is-selected'\r\n                  : '',\r\n                pickerEndDate &&\r\n                normalizeDate(pickerEndDate).getTime() ===\r\n                  normalizeDate(cell.date).getTime()\r\n                  ? 'is-selected'\r\n                  : '',\r\n                pickerStartDate &&\r\n                normalizeDate(pickerStartDate).getTime() ===\r\n                  normalizeDate(cell.date).getTime()\r\n                  ? 'is-range-start'\r\n                  : '',\r\n                pickerEndDate &&\r\n                normalizeDate(pickerEndDate).getTime() ===\r\n                  normalizeDate(cell.date).getTime()\r\n                  ? 'is-range-end'\r\n                  : '',\r\n                // 候选样式：只在悬停且编辑状态匹配时显示\r\n                cell.currentMonth &&\r\n                hoverPanel === 'right' &&\r\n                editingTarget === 'start' &&\r\n                hoverDate &&\r\n                hoverDate.getTime() === normalizeDate(cell.date).getTime()\r\n                  ? 'is-range-start'\r\n                  : '',\r\n                cell.currentMonth &&\r\n                hoverPanel === 'right' &&\r\n                editingTarget === 'end' &&\r\n                hoverDate &&\r\n                hoverDate.getTime() === normalizeDate(cell.date).getTime()\r\n                  ? 'is-range-end'\r\n                  : '',\r\n                cell.currentMonth && isInPreviewRange(cell.date)\r\n                  ? 'is-in-range'\r\n                  : ''\r\n              ]\"\r\n              @click=\"\r\n                !cell.disabled && cell.currentMonth && onClickDay(cell.date)\r\n              \"\r\n              @mouseenter=\"cell.currentMonth && onHoverEnd(cell.date)\"\r\n            >\r\n              {{ cell.date.getDate() }}\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <!-- 时分秒选择器 -->\r\n      <div\r\n        v-if=\"props.showTime && (innerStart || innerEnd)\"\r\n        class=\"c-date-range-picker__time-panel\"\r\n      >\r\n        <!-- 开始时间 -->\r\n        <div v-if=\"innerStart\" class=\"c-date-range-picker__time-section\">\r\n          <div class=\"c-date-range-picker__time-label\">开始时间</div>\r\n          <div class=\"c-date-range-picker__time-selectors\">\r\n            <div class=\"c-date-range-picker__time-selector\">\r\n              <input\r\n                v-if=\"editingStartUnit === 'h'\"\r\n                ref=\"startInputHRef\"\r\n                class=\"c-date-range-picker__time-input\"\r\n                v-model=\"startInputValue\"\r\n                inputmode=\"numeric\"\r\n                maxlength=\"2\"\r\n                pattern=\"(?:[01]\\\\d|2[0-3])\"\r\n                @input=\"onStartInput\"\r\n                @blur=\"commitStart('h')\"\r\n                @keydown.enter.prevent=\"commitStart('h')\"\r\n              />\r\n              <div\r\n                v-else\r\n                class=\"c-date-range-picker__time-value\"\r\n                @wheel=\"onWheelStart($event, 'h')\"\r\n                @click=\"startEdit('h')\"\r\n              >\r\n                {{ String(selectedTimeStart.h).padStart(2, '0') }}\r\n              </div>\r\n              <span class=\"c-date-range-picker__time-separator\">:</span>\r\n            </div>\r\n            <div class=\"c-date-range-picker__time-selector\">\r\n              <input\r\n                v-if=\"editingStartUnit === 'm'\"\r\n                ref=\"startInputMRef\"\r\n                class=\"c-date-range-picker__time-input\"\r\n                v-model=\"startInputValue\"\r\n                inputmode=\"numeric\"\r\n                maxlength=\"2\"\r\n                pattern=\"[0-5]\\\\d\"\r\n                @input=\"onStartInput\"\r\n                @blur=\"commitStart('m')\"\r\n                @keydown.enter.prevent=\"commitStart('m')\"\r\n              />\r\n              <div\r\n                v-else\r\n                class=\"c-date-range-picker__time-value\"\r\n                @wheel=\"onWheelStart($event, 'm')\"\r\n                @click=\"startEdit('m')\"\r\n              >\r\n                {{ String(selectedTimeStart.m).padStart(2, '0') }}\r\n              </div>\r\n              <span class=\"c-date-range-picker__time-separator\">:</span>\r\n            </div>\r\n            <div class=\"c-date-range-picker__time-selector\">\r\n              <input\r\n                v-if=\"editingStartUnit === 's'\"\r\n                ref=\"startInputSRef\"\r\n                class=\"c-date-range-picker__time-input\"\r\n                v-model=\"startInputValue\"\r\n                inputmode=\"numeric\"\r\n                maxlength=\"2\"\r\n                pattern=\"[0-5]\\\\d\"\r\n                @input=\"onStartInput\"\r\n                @blur=\"commitStart('s')\"\r\n                @keydown.enter.prevent=\"commitStart('s')\"\r\n              />\r\n              <div\r\n                v-else\r\n                class=\"c-date-range-picker__time-value\"\r\n                @wheel=\"onWheelStart($event, 's')\"\r\n                @click=\"startEdit('s')\"\r\n              >\r\n                {{ String(selectedTimeStart.s).padStart(2, '0') }}\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- 结束时间 -->\r\n        <div v-if=\"innerEnd\" class=\"c-date-range-picker__time-section\">\r\n          <div class=\"c-date-range-picker__time-label\">结束时间</div>\r\n          <div class=\"c-date-range-picker__time-selectors\">\r\n            <div class=\"c-date-range-picker__time-selector\">\r\n              <input\r\n                v-if=\"editingEndUnit === 'h'\"\r\n                ref=\"endInputHRef\"\r\n                class=\"c-date-range-picker__time-input\"\r\n                v-model=\"endInputValue\"\r\n                inputmode=\"numeric\"\r\n                maxlength=\"2\"\r\n                pattern=\"(?:[01]\\\\d|2[0-3])\"\r\n                @input=\"onEndInput\"\r\n                @blur=\"commitEnd('h')\"\r\n                @keydown.enter.prevent=\"commitEnd('h')\"\r\n              />\r\n              <div\r\n                v-else\r\n                class=\"c-date-range-picker__time-value\"\r\n                @wheel=\"onWheelEnd($event, 'h')\"\r\n                @click=\"endEdit('h')\"\r\n              >\r\n                {{ String(selectedTimeEnd.h).padStart(2, '0') }}\r\n              </div>\r\n              <span class=\"c-date-range-picker__time-separator\">:</span>\r\n            </div>\r\n            <div class=\"c-date-range-picker__time-selector\">\r\n              <input\r\n                v-if=\"editingEndUnit === 'm'\"\r\n                ref=\"endInputMRef\"\r\n                class=\"c-date-range-picker__time-input\"\r\n                v-model=\"endInputValue\"\r\n                inputmode=\"numeric\"\r\n                maxlength=\"2\"\r\n                pattern=\"[0-5]\\\\d\"\r\n                @input=\"onEndInput\"\r\n                @blur=\"commitEnd('m')\"\r\n                @keydown.enter.prevent=\"commitEnd('m')\"\r\n              />\r\n              <div\r\n                v-else\r\n                class=\"c-date-range-picker__time-value\"\r\n                @wheel=\"onWheelEnd($event, 'm')\"\r\n                @click=\"endEdit('m')\"\r\n              >\r\n                {{ String(selectedTimeEnd.m).padStart(2, '0') }}\r\n              </div>\r\n              <span class=\"c-date-range-picker__time-separator\">:</span>\r\n            </div>\r\n            <div class=\"c-date-range-picker__time-selector\">\r\n              <input\r\n                v-if=\"editingEndUnit === 's'\"\r\n                ref=\"endInputSRef\"\r\n                class=\"c-date-range-picker__time-input\"\r\n                v-model=\"endInputValue\"\r\n                inputmode=\"numeric\"\r\n                maxlength=\"2\"\r\n                pattern=\"[0-5]\\\\d\"\r\n                @input=\"onEndInput\"\r\n                @blur=\"commitEnd('s')\"\r\n                @keydown.enter.prevent=\"commitEnd('s')\"\r\n              />\r\n              <div\r\n                v-else\r\n                class=\"c-date-range-picker__time-value\"\r\n                @wheel=\"onWheelEnd($event, 's')\"\r\n                @click=\"endEdit('s')\"\r\n              >\r\n                {{ String(selectedTimeEnd.s).padStart(2, '0') }}\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n","// DateRangePicker 组件入口文件\r\n\r\nimport { withInstall } from \"@cuixingjian/cui-utils/install\";\r\nimport type { SFCWithInstall } from \"../types\";\r\nimport _DateRangePicker from \"./src/daterange.vue\";\r\n\r\nexport * from \"./src/daterange\";\r\nexport * from \"./src/instance\";\r\nconst DateRangePicker: SFCWithInstall<typeof _DateRangePicker> = withInstall(_DateRangePicker);\r\n\r\nexport default DateRangePicker;\r\n\r\n// 在vue中方便提示\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    CDateRangePicker: typeof DateRangePicker;\r\n  }\r\n}","import type { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport type TabsType = 'line' | 'slider' | 'card'\r\nexport type TabPosition = 'top' | 'right' | 'bottom' | 'left'\r\n\r\nexport const tabsProps = {\r\n  modelValue: {\r\n    type: [String, Number] as PropType<string | number>,\r\n    default: ''\r\n  },\r\n  type: {\r\n    type: String as PropType<TabsType>,\r\n    default: 'line'\r\n  },\r\n  tabPosition: {\r\n    type: String as PropType<TabPosition>,\r\n    default: 'top'\r\n  },\r\n  // 是否显示底部指示条（仅 line 风格）\r\n  showIndicator: {\r\n    type: Boolean,\r\n    default: true\r\n  },\r\n  stretch: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  editable: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  closable: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  beforeLeave: {\r\n    type: Function as PropType<(activeName: string | number, oldName: string | number) => boolean | Promise<boolean>>,\r\n    default: undefined\r\n  }\r\n} as const\r\n\r\nexport type TabsProps = ExtractPropTypes<typeof tabsProps>\r\n\r\nexport const tabsEmits = {\r\n  'update:modelValue': (v: string | number) => true,\r\n  tabClick: (name: string | number) => true,\r\n  tabAdd: () => true,\r\n  tabRemove: (name: string | number) => true\r\n}\r\n\r\nexport type TabsEmits = typeof tabsEmits","<template>\r\n  <div\r\n    ref=\"tabsRef\"\r\n    :class=\"[\r\n      bem.b(),\r\n      bem.m(type),\r\n      bem.m(tabPosition),\r\n      stretch && bem.is('stretch', true),\r\n      props.showIndicator && bem.is('indicator', true)\r\n    ]\"\r\n  >\r\n    <div :class=\"bem.e('nav')\">\r\n      <ul :class=\"bem.e('list')\">\r\n        <div\r\n          v-if=\"type === 'slider'\"\r\n          :class=\"bem.e('slider')\"\r\n          :style=\"sliderStyle\"\r\n        ></div>\r\n        <div\r\n          v-if=\"type === 'line' && showIndicator\"\r\n          :class=\"bem.e('indicator')\"\r\n          :style=\"indicatorStyle\"\r\n        ></div>\r\n        <li\r\n          v-for=\"pane in panes\"\r\n          :key=\"pane.name\"\r\n          :class=\"[\r\n            bem.e('item'),\r\n            pane.disabled && 'is-disabled',\r\n            pane.name === active && 'is-active'\r\n          ]\"\r\n          @click=\"onTabClick(pane)\"\r\n        >\r\n          <span :class=\"bem.e('label')\">\r\n            <Render v-if=\"pane.labelSlot\" :render=\"pane.labelSlot\" />\r\n            <template v-else>{{ pane.label }}</template>\r\n          </span>\r\n          <button\r\n            v-if=\"isPaneClosable(pane)\"\r\n            :class=\"bem.e('close')\"\r\n            @click.stop=\"onTabRemove(pane)\"\r\n            aria-label=\"close tab\"\r\n          >\r\n            ×\r\n          </button>\r\n        </li>\r\n        <li v-if=\"editable\" :class=\"bem.e('item')\">\r\n          <button :class=\"bem.e('add')\" @click=\"onTabAdd\" aria-label=\"add tab\">\r\n            ＋\r\n          </button>\r\n        </li>\r\n      </ul>\r\n    </div>\r\n    <div :class=\"bem.e('content')\">\r\n      <div :class=\"bem.e('content-wrapper')\" :style=\"contentWrapperStyle\">\r\n        <slot />\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, watch, provide, nextTick, onMounted, defineComponent } from 'vue';\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create';\r\nimport { tabsProps, tabsEmits } from './tabs';\r\n\r\ndefineOptions({ name: 'c-tabs' });\r\nconst bem = createNamespace('tabs');\r\nconst props = defineProps(tabsProps);\r\nconst emit = defineEmits(tabsEmits);\r\n\r\ntype PaneMeta = {\r\n  uid: number;\r\n  label: string;\r\n  name: string | number;\r\n  disabled: boolean;\r\n  closable?: boolean;\r\n  labelSlot?: () => any;\r\n};\r\n\r\nconst panes = ref<PaneMeta[]>([]);\r\nconst active = ref<string | number>(props.modelValue);\r\nconst prevActive = ref<string | number>(props.modelValue);\r\nconst slideDir = ref<'left' | 'right'>('left');\r\n\r\n// 组件引用\r\nconst tabsRef = ref<HTMLElement>();\r\n\r\n// slider 风格：基于数量与索引计算滑块样式\r\nconst sliderStyle = ref<Record<string, string>>({});\r\n\r\n// line 风格：动态指示器样式\r\nconst indicatorStyle = ref<Record<string, string>>({});\r\n\r\n// 轮播图内容切换样式\r\nconst contentWrapperStyle = ref<Record<string, string>>({});\r\n\r\nconst updateSlider = async () => {\r\n  if (panes.value.length === 0 || props.type !== 'slider') return;\r\n\r\n  const currentIndex = panes.value.findIndex((p) => p.name === active.value);\r\n  if (currentIndex === -1) return;\r\n\r\n  await nextTick();\r\n\r\n  // 通过ref获取当前组件的根元素，避免多个tabs组件时选择器冲突\r\n  const tabsContainer = tabsRef.value;\r\n  if (!tabsContainer) return;\r\n\r\n  const tabItems = tabsContainer.querySelectorAll('.c-tabs__item');\r\n  if (!tabItems || tabItems.length === 0) return;\r\n\r\n  const activeTab = tabItems[currentIndex] as HTMLElement;\r\n  if (!activeTab) return;\r\n\r\n  const tabsList = tabsContainer.querySelector('.c-tabs__list') as HTMLElement;\r\n  if (!tabsList) return;\r\n\r\n  // 计算相对于列表容器的位置和尺寸\r\n  const listRect = tabsList.getBoundingClientRect();\r\n  const tabRect = activeTab.getBoundingClientRect();\r\n\r\n  // 根据tabPosition决定滑块的位置和尺寸\r\n  const isVertical = props.tabPosition === 'left' || props.tabPosition === 'right';\r\n  \r\n  if (isVertical) {\r\n    const top = tabRect.top - listRect.top;\r\n    const height = tabRect.height;\r\n    \r\n    sliderStyle.value = {\r\n      top: `${top}px`,\r\n      height: `${height}px`,\r\n      left: '2px',\r\n      right: '2px',\r\n      width: 'auto',\r\n      transition: 'top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), height 0.3s cubic-bezier(0.645, 0.045, 0.355, 1)'\r\n    };\r\n  } else {\r\n    const left = tabRect.left - listRect.left;\r\n    const width = tabRect.width;\r\n    \r\n    sliderStyle.value = {\r\n      left: `${left}px`,\r\n      width: `${width}px`,\r\n      top: '2px',\r\n      bottom: '2px',\r\n      height: 'auto',\r\n      transition: 'left 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1)'\r\n    };\r\n  }\r\n};\r\n\r\nconst updateIndicator = async () => {\r\n  if (panes.value.length === 0 || props.type !== 'line' || !props.showIndicator)\r\n    return;\r\n\r\n  const currentIndex = panes.value.findIndex((p) => p.name === active.value);\r\n  if (currentIndex === -1) return;\r\n\r\n  await nextTick();\r\n\r\n  // 通过ref获取当前组件的根元素，避免多个tabs组件时选择器冲突\r\n  const tabsContainer = tabsRef.value;\r\n  if (!tabsContainer) return;\r\n\r\n  const tabItems = tabsContainer.querySelectorAll('.c-tabs__item');\r\n  if (!tabItems || tabItems.length === 0) return;\r\n\r\n  const activeTab = tabItems[currentIndex] as HTMLElement;\r\n  if (!activeTab) return;\r\n\r\n  const tabsNav = tabsContainer.querySelector('.c-tabs__nav') as HTMLElement;\r\n  if (!tabsNav) return;\r\n\r\n  // 计算相对于导航容器的位置和尺寸\r\n  const navRect = tabsNav.getBoundingClientRect();\r\n  const tabRect = activeTab.getBoundingClientRect();\r\n\r\n  // 根据tabPosition决定指示器的位置和尺寸\r\n  const isVertical = props.tabPosition === 'left' || props.tabPosition === 'right';\r\n  \r\n  if (isVertical) {\r\n    const top = tabRect.top - navRect.top;\r\n    const height = tabRect.height;\r\n    \r\n    indicatorStyle.value = {\r\n      top: `${top}px`,\r\n      height: `${height}px`,\r\n      width: '2px',\r\n      left: props.tabPosition === 'left' ? 'auto' : '0px',\r\n      right: props.tabPosition === 'left' ? '0px' : 'auto',\r\n      transition: 'top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), height 0.3s cubic-bezier(0.645, 0.045, 0.355, 1)'\r\n    };\r\n  } else {\r\n    const left = tabRect.left - navRect.left;\r\n    const width = tabRect.width;\r\n    \r\n    indicatorStyle.value = {\r\n      left: `${left}px`,\r\n      width: `${width}px`,\r\n      height: '2px',\r\n      top: props.tabPosition === 'bottom' ? '0px' : 'auto',\r\n      bottom: props.tabPosition === 'bottom' ? 'auto' : '0px',\r\n      transition: 'left 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1)'\r\n    };\r\n  }\r\n};\r\n\r\nconst updateContentPosition = () => {\r\n  if (panes.value.length === 0) return;\r\n\r\n  const currentIndex = panes.value.findIndex((p) => p.name === active.value);\r\n  const translateX = currentIndex >= 0 ? -currentIndex * 100 : 0;\r\n\r\n  contentWrapperStyle.value = {\r\n    width: `${panes.value.length * 100}%`,\r\n    transform: `translateX(${translateX}%)`,\r\n    transition: 'transform 0.3s ease',\r\n    display: 'flex'\r\n  };\r\n};\r\n\r\n// 统一的样式更新函数，避免重复调用\r\nconst updateStyles = async () => {\r\n  await updateSlider();\r\n  await updateIndicator();\r\n  updateContentPosition();\r\n};\r\n\r\nwatch(\r\n  () => props.modelValue,\r\n  async (v) => {\r\n    prevActive.value = active.value;\r\n    active.value = v;\r\n    const panesOrder = panes.value.map((p) => p.name);\r\n    const prevIdx = panesOrder.indexOf(prevActive.value);\r\n    const nextIdx = panesOrder.indexOf(v);\r\n    if (prevIdx !== -1 && nextIdx !== -1) {\r\n      slideDir.value = nextIdx > prevIdx ? 'left' : 'right';\r\n    }\r\n    await nextTick();\r\n    await updateStyles();\r\n  },\r\n  { immediate: true }\r\n);\r\n\r\nconst registerPane = (pane: PaneMeta) => {\r\n  // 避免重复注册\r\n  const i = panes.value.findIndex((p) => p.uid === pane.uid);\r\n  if (i === -1) {\r\n    panes.value.push(pane);\r\n    // 如果是第一个 pane 且没有设置 active，则设置为第一个\r\n    if (panes.value.length === 1 && !active.value) {\r\n      active.value = pane.name;\r\n    }\r\n  }\r\n  nextTick(updateStyles);\r\n};\r\n\r\nconst unregisterPane = (uid: number) => {\r\n  panes.value = panes.value.filter((p) => p.uid !== uid);\r\n  nextTick(updateStyles);\r\n};\r\n\r\n// 组件挂载后初始化滑块位置\r\nonMounted(() => {\r\n  nextTick(updateStyles);\r\n});\r\n\r\nconst isPaneClosable = (pane: PaneMeta) => {\r\n  return pane.closable ?? props.closable;\r\n};\r\n\r\nconst tryLeave = async (next: string | number) => {\r\n  if (!props.beforeLeave) return true;\r\n  try {\r\n    const res = props.beforeLeave(next, active.value);\r\n    return typeof res === 'boolean' ? res : await res;\r\n  } catch (e) {\r\n    return false;\r\n  }\r\n};\r\n\r\nconst onTabClick = async (pane: PaneMeta) => {\r\n  if (pane.disabled) return;\r\n  if (pane.name === active.value) return;\r\n  const ok = await tryLeave(pane.name);\r\n  if (!ok) return;\r\n  \r\n  const panesOrder = panes.value.map((p) => p.name);\r\n  const prevIdx = panesOrder.indexOf(active.value);\r\n  const nextIdx = panesOrder.indexOf(pane.name);\r\n  if (prevIdx !== -1 && nextIdx !== -1) {\r\n    slideDir.value = nextIdx > prevIdx ? 'left' : 'right';\r\n  }\r\n  \r\n  active.value = pane.name;\r\n  emit('update:modelValue', pane.name);\r\n  emit('tabClick', pane.name);\r\n  \r\n  await nextTick();\r\n  await updateStyles();\r\n};\r\n\r\nconst onTabAdd = () => {\r\n  emit('tabAdd');\r\n};\r\n\r\nconst onTabRemove = (pane: PaneMeta) => {\r\n  emit('tabRemove', pane.name);\r\n};\r\n\r\nprovide('c-tabs', {\r\n  active,\r\n  editable: ref(props.editable),\r\n  closable: ref(props.closable),\r\n  slideDir,\r\n  registerPane,\r\n  unregisterPane\r\n});\r\n\r\n// 内部渲染器：用于渲染从子 Pane 传来的 label 插槽渲染函数\r\nconst Render = defineComponent<{ render?: () => any }>({\r\n  name: 'CTabsRender',\r\n  props: { render: Function as any },\r\n  setup(props) {\r\n    return () => (props.render ? props.render() : null);\r\n  }\r\n});\r\n</script>","import type { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport const tabPaneProps = {\r\n  label: { type: String, default: '' },\r\n  name: { type: [String, Number] as PropType<string | number>, default: undefined },\r\n  disabled: { type: Boolean, default: false },\r\n  closable: { type: Boolean, default: undefined }\r\n} as const\r\n\r\nexport type TabPaneProps = ExtractPropTypes<typeof tabPaneProps>","<template>\r\n  <div :class=\"bem.e('pane')\" :style=\"paneStyle\">\r\n    <slot />\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport {\r\n  inject,\r\n  onMounted,\r\n  onBeforeUnmount,\r\n  computed,\r\n  getCurrentInstance,\r\n  useSlots\r\n} from 'vue';\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create';\r\nimport { tabPaneProps } from './tab-pane';\r\n\r\ndefineOptions({ name: 'c-tab-pane' });\r\nconst bem = createNamespace('tabs');\r\nconst props = defineProps(tabPaneProps);\r\n\r\nconst instance = getCurrentInstance()!;\r\nconst ctx = inject<any>('c-tabs', null);\r\nconst slots = useSlots();\r\n\r\nconst name = computed<string | number>(() => props.name ?? instance.uid);\r\n\r\nonMounted(() => {\r\n  ctx?.registerPane?.({\r\n    uid: instance.uid,\r\n    label: props.label,\r\n    name: name.value,\r\n    disabled: props.disabled,\r\n    closable: props.closable,\r\n    labelSlot: slots.label ? () => slots.label?.() : undefined\r\n  });\r\n});\r\n\r\nonBeforeUnmount(() => {\r\n  ctx?.unregisterPane?.(instance.uid);\r\n});\r\n\r\n// 计算面板样式，用于轮播图定位\r\nconst paneStyle = computed(() => ({\r\n  minWidth: '100%',\r\n  flexShrink: 0\r\n}));\r\n</script>","import { withInstall } from \"@cuixingjian/cui-utils/install\";\r\nimport type { SFCWithInstall } from \"../types\";\r\nimport _Tabs from \"./src/tabs.vue\";\r\nimport _TabPane from \"./src/tab-pane.vue\";\r\n\r\nexport * from \"./src/tabs\";\r\nexport * from \"./src/tab-pane\";\r\n\r\nconst Tabs: SFCWithInstall<typeof _Tabs> = withInstall(_Tabs);\r\nconst TabPane: SFCWithInstall<typeof _TabPane> = withInstall(_TabPane);\r\n\r\nexport { TabPane };\r\nexport default Tabs;\r\n\r\n// 在 vue 中方便提示\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    CTabs: typeof Tabs;\r\n    CTabPane: typeof TabPane;\r\n  }\r\n}","import { ExtractPropTypes } from 'vue'\r\n\r\nexport const backTopProps = {\r\n  // 触发滚动的对象（CSS 选择器），不传则监听 window\r\n  target: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 滚动高度达到此参数值才出现\r\n  visibilityHeight: {\r\n    type: Number,\r\n    default: 200\r\n  },\r\n  // 控制其显示位置，距离页面右边距（px）\r\n  right: {\r\n    type: Number,\r\n    default: 40\r\n  },\r\n  // 控制其显示位置，距离页面底部距离（px）\r\n  bottom: {\r\n    type: Number,\r\n    default: 40\r\n  }\r\n} as const\r\n\r\nexport type BackTopProps = ExtractPropTypes<typeof backTopProps>\r\n\r\nexport const backTopEmits = {\r\n  click: () => true,\r\n  show: () => true,\r\n  hide: () => true\r\n}\r\n\r\nexport type BackTopEmits = typeof backTopEmits","<template>\r\n  <transition name=\"c-backtop-fade\">\r\n    <div\r\n      v-show=\"visible\"\r\n      :class=\"ns.b()\"\r\n      :style=\"positionStyle\"\r\n      @click=\"handleClick\"\r\n    >\r\n      <slot> ↑ </slot>\r\n    </div>\r\n  </transition>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { onMounted, onBeforeUnmount, ref, computed, nextTick } from 'vue';\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create';\r\nimport { backTopProps, backTopEmits } from './backtop';\r\n\r\nconst ns = createNamespace('backtop');\r\ndefineOptions({ name: 'c-backtop' });\r\n\r\nconst props = defineProps(backTopProps);\r\nconst emit = defineEmits(backTopEmits);\r\n\r\nconst visible = ref(false);\r\nlet scrollTarget: Window | HTMLElement = window;\r\n\r\nconst positionStyle = computed(() => ({\r\n  right: props.right + 'px',\r\n  bottom: props.bottom + 'px',\r\n  position: 'fixed'\r\n}));\r\n\r\nconst getScrollTop = () => {\r\n  if (scrollTarget === window) {\r\n    return (\r\n      window.pageYOffset ||\r\n      document.documentElement.scrollTop ||\r\n      document.body.scrollTop ||\r\n      0\r\n    );\r\n  } else {\r\n    return (scrollTarget as HTMLElement).scrollTop;\r\n  }\r\n};\r\n\r\nconst setScrollTop = (top: number) => {\r\n  if (scrollTarget === window) {\r\n    window.scrollTo({ top, behavior: 'smooth' });\r\n  } else {\r\n    (scrollTarget as HTMLElement).scrollTo({ top, behavior: 'smooth' });\r\n  }\r\n};\r\n\r\nconst handleScroll = () => {\r\n  const shouldShow = getScrollTop() >= props.visibilityHeight;\r\n  if (shouldShow !== visible.value) {\r\n    visible.value = shouldShow;\r\n    emit(shouldShow ? 'show' : 'hide');\r\n  }\r\n};\r\n\r\nconst resolveTarget = () => {\r\n  if (!props.target) {\r\n    scrollTarget = window;\r\n    return;\r\n  }\r\n  const el = document.querySelector(props.target);\r\n  scrollTarget = (el as HTMLElement) || window;\r\n};\r\n\r\nconst handleClick = () => {\r\n  setScrollTop(0);\r\n  emit('click');\r\n};\r\n\r\nonMounted(() => {\r\n  nextTick(() => {\r\n    resolveTarget();\r\n    const t = scrollTarget as any;\r\n    const add = t === window ? window : t;\r\n    add.addEventListener('scroll', handleScroll, { passive: true });\r\n    // 初始化可见性\r\n    handleScroll();\r\n  });\r\n});\r\n\r\nonBeforeUnmount(() => {\r\n  const t = scrollTarget as any;\r\n  const rm = t === window ? window : t;\r\n  rm.removeEventListener('scroll', handleScroll);\r\n});\r\n</script>\r\n","import { withInstall } from \"@cuixingjian/cui-utils/install\";\r\nimport type { SFCWithInstall } from \"../types\";\r\nimport _BackTop from \"./src/backtop.vue\";\r\n\r\nexport * from \"./src/backtop\";\r\n\r\nconst BackTop: SFCWithInstall<typeof _BackTop> = withInstall(_BackTop);\r\n\r\nexport default BackTop;\r\n\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    CBackTop: typeof BackTop;\r\n  }\r\n}","import type { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport interface TreeNodeData {\r\n  label?: string\r\n  key?: string | number\r\n  children?: TreeNodeData[]\r\n  disabled?: boolean\r\n  isLeaf?: boolean\r\n  [key: string]: any\r\n}\r\n\r\nexport const treeProps = {\r\n  data: {\r\n    type: Array as PropType<TreeNodeData[]>,\r\n    default: () => []\r\n  },\r\n  nodeKey: {\r\n    type: String,\r\n    default: 'id'\r\n  },\r\n  label: {\r\n    type: String,\r\n    default: 'label'\r\n  },\r\n  children: {\r\n    type: String,\r\n    default: 'children'\r\n  },\r\n  showCheckbox: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  checkStrictly: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  defaultExpandAll: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  defaultExpandedKeys: {\r\n    type: Array as PropType<(string | number)[]>,\r\n    default: () => []\r\n  },\r\n  defaultCheckedKeys: {\r\n    type: Array as PropType<(string | number)[]>,\r\n    default: () => []\r\n  },\r\n  autoExpandParent: {\r\n    type: Boolean,\r\n    default: true\r\n  },\r\n  expandOnClickNode: {\r\n    type: Boolean,\r\n    default: true\r\n  },\r\n  checkOnClickNode: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  checkDescendants: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  accordion: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  indent: {\r\n    type: Number,\r\n    default: 18\r\n  },\r\n  icon: {\r\n    type: [String, Function] as PropType<string | ((node: TreeNodeData) => any)>,\r\n    default: undefined\r\n  },\r\n  emptyText: {\r\n    type: String,\r\n    default: '暂无数据'\r\n  },\r\n  draggable: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  allowDrop: {\r\n    type: Function as PropType<(draggingNode: TreeNodeData, dropNode: TreeNodeData, type: 'before' | 'inner' | 'after') => boolean>,\r\n    default: undefined\r\n  },\r\n  allowDrag: {\r\n    type: Function as PropType<(node: TreeNodeData) => boolean>,\r\n    default: undefined\r\n  },\r\n  lazy: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  load: {\r\n    type: Function as PropType<(node: TreeNodeData, resolve: (data: TreeNodeData[]) => void) => void>,\r\n    default: undefined\r\n  },\r\n  filterNodeMethod: {\r\n    type: Function as PropType<(value: any, data: TreeNodeData, node: any) => boolean>,\r\n    default: undefined\r\n  },\r\n  renderAfterExpand: {\r\n    type: Boolean,\r\n    default: true\r\n  },\r\n  highlightCurrent: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  currentNodeKey: {\r\n    type: [String, Number] as PropType<string | number>,\r\n    default: undefined\r\n  }\r\n} as const\r\n\r\nexport const treeEmits = {\r\n  'node-click': (data: TreeNodeData, node: any, e: MouseEvent) => true,\r\n  'node-contextmenu': (e: MouseEvent, data: TreeNodeData, node: any) => true,\r\n  'node-check': (data: TreeNodeData, checked: { checkedKeys: (string | number)[], checkedNodes: TreeNodeData[], halfCheckedKeys: (string | number)[], halfCheckedNodes: TreeNodeData[] }) => true,\r\n  'node-expand': (data: TreeNodeData, node: any) => true,\r\n  'node-collapse': (data: TreeNodeData, node: any) => true,\r\n  'check-change': (data: TreeNodeData, checked: boolean) => true,\r\n  'current-change': (data: TreeNodeData, node: any) => true,\r\n  'node-drag-start': (node: TreeNodeData, e: DragEvent) => true,\r\n  'node-drag-enter': (draggingNode: TreeNodeData, dropNode: TreeNodeData, e: DragEvent) => true,\r\n  'node-drag-leave': (draggingNode: TreeNodeData, dropNode: TreeNodeData, e: DragEvent) => true,\r\n  'node-drag-over': (draggingNode: TreeNodeData, dropNode: TreeNodeData, e: DragEvent) => true,\r\n  'node-drag-end': (draggingNode: TreeNodeData, e: DragEvent) => true,\r\n  'node-drop': (draggingNode: TreeNodeData, dropNode: TreeNodeData, dropType: 'before' | 'inner' | 'after', e: DragEvent) => true\r\n}\r\n\r\nexport type TreeProps = ExtractPropTypes<typeof treeProps>\r\nexport type TreeEmits = typeof treeEmits\r\n\r\n","import type { ExtractPropTypes, PropType } from 'vue'\r\nimport type { TreeNodeData, TreeNode } from './tree'\r\n\r\nexport const treeNodeProps = {\r\n  node: {\r\n    type: Object as PropType<TreeNode>,\r\n    required: true\r\n  },\r\n  renderContent: {\r\n    type: Function as PropType<(h: any, node: TreeNode) => any>,\r\n    default: undefined\r\n  },\r\n  showCheckbox: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  checkStrictly: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  accordion: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  indent: {\r\n    type: Number,\r\n    default: 18\r\n  },\r\n  icon: {\r\n    type: [String, Function] as PropType<string | ((node: TreeNode) => any)>,\r\n    default: undefined\r\n  },\r\n  draggable: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  lazy: {\r\n    type: Boolean,\r\n    default: false\r\n  }\r\n} as const\r\n\r\nexport type TreeNodeProps = ExtractPropTypes<typeof treeNodeProps>\r\n\r\n","<template>\r\n  <div\r\n    v-show=\"node.visible\"\r\n    :class=\"[\r\n      bem.b(),\r\n      bem.is('expanded', node.expanded),\r\n      bem.is('current', isCurrent),\r\n      bem.is('disabled', node.disabled),\r\n      bem.is('dragging', isDragging),\r\n      bem.is('drop-inner', isDropInner),\r\n      bem.is('drop-before', isDropBefore),\r\n      bem.is('drop-after', isDropAfter)\r\n    ]\"\r\n    :draggable=\"draggable && !node.disabled\"\r\n    @dragstart.stop=\"handleDragStart\"\r\n    @dragenter.stop=\"handleDragEnter\"\r\n    @dragover.stop=\"handleDragOver\"\r\n    @dragleave.stop=\"handleDragLeave\"\r\n    @drop.stop=\"handleDrop\"\r\n    @dragend.stop=\"handleDragEnd\"\r\n  >\r\n    <div\r\n      :class=\"bem.e('content')\"\r\n      :style=\"{ paddingLeft: `${(node.level - 1) * indent}px` }\"\r\n      @click.stop=\"handleClick\"\r\n      @contextmenu.stop=\"handleContextMenu\"\r\n    >\r\n      <span\r\n        :class=\"[\r\n          bem.e('expand-icon'),\r\n          bem.is('expanded', node.expanded),\r\n          bem.is('loading', node.loading)\r\n        ]\"\r\n        @click.stop=\"handleExpandIconClick\"\r\n      >\r\n        <c-icon v-if=\"node.loading\" :class=\"[bem.e('icon'), bem.e('loading-icon')]\">\r\n          <svg\r\n            viewBox=\"0 0 1024 1024\"\r\n            xmlns=\"http://www.w3.org/2000/svg\"\r\n            width=\"14\"\r\n            height=\"14\"\r\n          >\r\n            <path\r\n              fill=\"currentColor\"\r\n              d=\"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 832a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0-768c17.696 0 32 14.304 32 32v192c0 17.696-14.304 32-32 32s-32-14.304-32-32V160c0-17.696 14.304-32 32-32z\"\r\n            />\r\n          </svg>\r\n        </c-icon>\r\n        <c-icon v-else-if=\"node.children.length > 0 || (!node.isLeaf && props.lazy)\" :class=\"bem.e('icon')\">\r\n          <svg\r\n            viewBox=\"0 0 16 16\"\r\n            xmlns=\"http://www.w3.org/2000/svg\"\r\n            width=\"14\"\r\n            height=\"14\"\r\n          >\r\n            <path\r\n              fill=\"currentColor\"\r\n              d=\"M5 3 L11 8 L5 13 Z\"\r\n            />\r\n          </svg>\r\n        </c-icon>\r\n        <span v-else :class=\"bem.e('placeholder')\"></span>\r\n      </span>\r\n\r\n      <c-checkbox\r\n        v-if=\"showCheckbox\"\r\n        :model-value=\"node.checked\"\r\n        :indeterminate=\"node.indeterminate\"\r\n        :disabled=\"node.disabled\"\r\n        :class=\"bem.e('checkbox')\"\r\n        @click.stop\r\n        @update:model-value=\"handleCheck\"\r\n      />\r\n\r\n      <span v-if=\"icon\" :class=\"bem.e('icon-wrapper')\">\r\n        <component :is=\"icon\" v-if=\"typeof icon === 'function'\" :node=\"node\" />\r\n        <c-icon v-else :class=\"bem.e('icon')\">\r\n          <component :is=\"icon\" />\r\n        </c-icon>\r\n      </span>\r\n\r\n      <span :class=\"bem.e('label')\">\r\n        <slot :node=\"node\" :data=\"node.data\">\r\n          <component\r\n            :is=\"renderContent\"\r\n            v-if=\"renderContent\"\r\n            :node=\"node\"\r\n          />\r\n          <span v-else>{{ node.label }}</span>\r\n        </slot>\r\n      </span>\r\n    </div>\r\n\r\n    <transition\r\n      name=\"c-tree-collapse\"\r\n      @enter=\"onEnter\"\r\n      @after-enter=\"onAfterEnter\"\r\n      @leave=\"onLeave\"\r\n      @after-leave=\"onAfterLeave\"\r\n    >\r\n      <div\r\n        v-show=\"node.expanded\"\r\n        :class=\"bem.e('children')\"\r\n        ref=\"childrenRef\"\r\n      >\r\n        <c-tree-node\r\n          v-for=\"child in node.children\"\r\n          :key=\"child.key\"\r\n          :node=\"child\"\r\n          :show-checkbox=\"showCheckbox\"\r\n          :check-strictly=\"checkStrictly\"\r\n          :accordion=\"accordion\"\r\n          :indent=\"indent\"\r\n          :icon=\"icon\"\r\n          :render-content=\"renderContent\"\r\n          :draggable=\"draggable\"\r\n          :lazy=\"lazy\"\r\n        >\r\n          <template #default=\"{ node: childNode, data }\">\r\n            <slot :node=\"childNode\" :data=\"data\" />\r\n          </template>\r\n        </c-tree-node>\r\n      </div>\r\n    </transition>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { inject, ref, computed } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { treeNodeProps } from './tree-node'\r\nimport type { TreeNode } from './instance'\r\n// Checkbox 和 Icon 组件通过全局注册使用\r\n\r\ndefineOptions({ name: 'c-tree-node' })\r\n\r\nconst bem = createNamespace('tree-node')\r\nconst props = defineProps(treeNodeProps)\r\n\r\nconst childrenRef = ref<HTMLElement | null>(null)\r\n\r\nconst treeContext = inject<{\r\n  handleNodeClick: (node: TreeNode, e: MouseEvent) => void\r\n  handleNodeContextMenu: (node: TreeNode, e: MouseEvent) => void\r\n  handleNodeExpand: (node: TreeNode) => void\r\n  handleNodeCheck: (node: TreeNode, checked: boolean) => void\r\n  handleNodeCollapse: (node: TreeNode) => void\r\n  handleDragStart: (node: TreeNode, e: DragEvent) => void\r\n  handleDragEnter: (node: TreeNode, e: DragEvent) => void\r\n  handleDragOver: (node: TreeNode, e: DragEvent) => void\r\n  handleDragLeave: (node: TreeNode, e: DragEvent) => void\r\n  handleDrop: (node: TreeNode, e: DragEvent) => void\r\n  handleDragEnd: (node: TreeNode, e: DragEvent) => void\r\n  draggingNode: any\r\n  dropType: any\r\n  dropNode: any\r\n  currentNodeKey: any\r\n  highlightCurrent: any\r\n} | null>('CUI_TREE', null)\r\n\r\nconst handleClick = (e: MouseEvent) => {\r\n  if (props.node.disabled) return\r\n  treeContext?.handleNodeClick(props.node, e)\r\n}\r\n\r\nconst handleContextMenu = (e: MouseEvent) => {\r\n  if (props.node.disabled) return\r\n  treeContext?.handleNodeContextMenu(props.node, e)\r\n}\r\n\r\nconst handleExpandIconClick = () => {\r\n  if (props.node.disabled || props.node.isLeaf) return\r\n  if (props.node.expanded) {\r\n    treeContext?.handleNodeCollapse(props.node)\r\n  } else {\r\n    treeContext?.handleNodeExpand(props.node)\r\n  }\r\n}\r\n\r\nconst handleCheck = (checked: boolean) => {\r\n  if (props.node.disabled) return\r\n  treeContext?.handleNodeCheck(props.node, checked)\r\n}\r\n\r\n// 拖拽相关\r\nconst handleDragStart = (e: DragEvent) => {\r\n  if (!props.draggable || props.node.disabled) {\r\n    e.preventDefault()\r\n    return\r\n  }\r\n  treeContext?.handleDragStart(props.node, e)\r\n}\r\n\r\nconst handleDragEnter = (e: DragEvent) => {\r\n  if (!props.draggable || props.node.disabled) return\r\n  treeContext?.handleDragEnter(props.node, e)\r\n}\r\n\r\nconst handleDragOver = (e: DragEvent) => {\r\n  if (!props.draggable || props.node.disabled) return\r\n  treeContext?.handleDragOver(props.node, e)\r\n}\r\n\r\nconst handleDragLeave = (e: DragEvent) => {\r\n  if (!props.draggable || props.node.disabled) return\r\n  treeContext?.handleDragLeave(props.node, e)\r\n}\r\n\r\nconst handleDrop = (e: DragEvent) => {\r\n  if (!props.draggable || props.node.disabled) return\r\n  treeContext?.handleDrop(props.node, e)\r\n}\r\n\r\nconst handleDragEnd = (e: DragEvent) => {\r\n  if (!props.draggable || props.node.disabled) return\r\n  treeContext?.handleDragEnd(props.node, e)\r\n}\r\n\r\n// 计算拖拽状态\r\nconst isDragging = computed(() => {\r\n  const draggingNode = treeContext?.draggingNode?.value\r\n  return draggingNode?.key === props.node.key\r\n})\r\n\r\nconst isDropInner = computed(() => {\r\n  const dropNode = treeContext?.dropNode?.value\r\n  const dropType = treeContext?.dropType?.value\r\n  return dropNode?.key === props.node.key && dropType === 'inner'\r\n})\r\n\r\nconst isDropBefore = computed(() => {\r\n  const dropNode = treeContext?.dropNode?.value\r\n  const dropType = treeContext?.dropType?.value\r\n  return dropNode?.key === props.node.key && dropType === 'before'\r\n})\r\n\r\nconst isDropAfter = computed(() => {\r\n  const dropNode = treeContext?.dropNode?.value\r\n  const dropType = treeContext?.dropType?.value\r\n  return dropNode?.key === props.node.key && dropType === 'after'\r\n})\r\n\r\n// 计算是否为当前节点（用于高亮显示）\r\nconst isCurrent = computed(() => {\r\n  return treeContext?.highlightCurrent?.value && treeContext?.currentNodeKey?.value === props.node.key\r\n})\r\n\r\n// 展开动画 - 从上到下展开\r\nconst onEnter = (el: Element) => {\r\n  const element = el as HTMLElement\r\n  // 初始状态：高度为0，隐藏\r\n  element.style.height = '0'\r\n  element.style.opacity = '0'\r\n  element.style.overflow = 'hidden'\r\n  element.style.willChange = 'height, opacity'\r\n  \r\n  // 使用 requestAnimationFrame 确保在下一帧执行，更流畅\r\n  requestAnimationFrame(() => {\r\n    requestAnimationFrame(() => {\r\n      // 强制浏览器重排，确保初始状态生效\r\n      void element.offsetHeight\r\n      // 获取实际内容高度\r\n      const height = element.scrollHeight\r\n      // 设置目标高度，触发过渡动画\r\n      element.style.height = `${height}px`\r\n      element.style.opacity = '1'\r\n    })\r\n  })\r\n}\r\n\r\nconst onAfterEnter = (el: Element) => {\r\n  const element = el as HTMLElement\r\n  // 动画完成后，设置为 auto 以适应内容变化\r\n  element.style.height = 'auto'\r\n  element.style.overflow = ''\r\n  element.style.willChange = ''\r\n}\r\n\r\n// 折叠动画 - 从下到上收起\r\nconst onLeave = (el: Element) => {\r\n  const element = el as HTMLElement\r\n  // 记录当前实际高度\r\n  const height = element.scrollHeight\r\n  element.style.height = `${height}px`\r\n  element.style.overflow = 'hidden'\r\n  element.style.willChange = 'height, opacity'\r\n  \r\n  // 使用 requestAnimationFrame 确保在下一帧执行，更流畅\r\n  requestAnimationFrame(() => {\r\n    requestAnimationFrame(() => {\r\n      // 强制浏览器重排\r\n      void element.offsetHeight\r\n      // 设置为0，触发折叠动画\r\n      element.style.height = '0'\r\n      element.style.opacity = '0'\r\n    })\r\n  })\r\n}\r\n\r\nconst onAfterLeave = (el: Element) => {\r\n  const element = el as HTMLElement\r\n  // 动画完成后清理样式\r\n  element.style.height = ''\r\n  element.style.opacity = ''\r\n  element.style.overflow = ''\r\n  element.style.willChange = ''\r\n}\r\n</script>\r\n\r\n<style scoped></style>\r\n\r\n","<template>\r\n  <div :class=\"bem.b()\">\r\n    <div v-if=\"treeData.length === 0\" :class=\"bem.e('empty-text')\">\r\n      {{ props.emptyText }}\r\n    </div>\r\n    <c-tree-node\r\n      v-for=\"node in treeData\"\r\n      :key=\"node.key\"\r\n      :node=\"node\"\r\n      :show-checkbox=\"props.showCheckbox\"\r\n      :check-strictly=\"checkStrictly\"\r\n      :accordion=\"props.accordion\"\r\n      :indent=\"props.indent\"\r\n      :icon=\"props.icon\"\r\n      :render-content=\"renderContent\"\r\n      :draggable=\"props.draggable\"\r\n      :lazy=\"props.lazy\"\r\n    >\r\n      <template #default=\"{ node: childNode, data }\">\r\n        <slot :node=\"childNode\" :data=\"data\" />\r\n      </template>\r\n    </c-tree-node>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, computed, provide, watch } from \"vue\";\r\nimport { createNamespace } from \"@cuixingjian/cui-utils/create\";\r\nimport { treeProps, treeEmits, type TreeNodeData } from \"./tree\";\r\nimport type { TreeNode, TreeInstance } from \"./instance\";\r\nimport CTreeNode from \"./tree-node.vue\";\r\n\r\ndefineOptions({ name: \"c-tree\" });\r\n\r\nconst bem = createNamespace(\"tree\");\r\nconst props = defineProps(treeProps);\r\nconst emit = defineEmits(treeEmits);\r\n\r\n// 树节点数据\r\nconst treeData = ref<TreeNode[]>([]);\r\n// 当前选中的节点\r\nconst currentNodeKey = ref<string | number | undefined>(undefined);\r\n// 展开的节点 keys\r\nconst expandedKeys = ref<Set<string | number>>(new Set());\r\n// 选中的节点 keys\r\nconst checkedKeys = ref<Set<string | number>>(new Set());\r\n// 半选中的节点 keys（用于级联选择）\r\nconst halfCheckedKeys = ref<Set<string | number>>(new Set());\r\n// 拖拽相关常量\r\ntype DropType = 'before' | 'inner' | 'after';\r\nconst DROP_THRESHOLD = 0.25; // 拖拽区域阈值（25%）\r\nconst DRAG_EXPAND_DELAY = 800; // 拖拽展开延迟（毫秒）\r\n\r\n// 拖拽相关状态\r\nconst draggingNode = ref<TreeNode | null>(null);\r\nconst dropType = ref<DropType | null>(null);\r\nconst dropNode = ref<TreeNode | null>(null);\r\n// 用于延迟展开节点\r\nlet dragOverExpandTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n// 清除拖拽展开定时器\r\nconst clearDragExpandTimer = () => {\r\n  if (dragOverExpandTimer) {\r\n    clearTimeout(dragOverExpandTimer);\r\n    dragOverExpandTimer = null;\r\n  }\r\n};\r\n\r\n// 清除拖拽状态\r\nconst clearDragState = () => {\r\n  dropType.value = null;\r\n  dropNode.value = null;\r\n  clearDragExpandTimer();\r\n};\r\n\r\n// 检查是否拖拽到自己\r\nconst isDraggingSelf = (node: TreeNode): boolean => {\r\n  return draggingNode.value?.key === node.key;\r\n};\r\n\r\n// 手风琴模式：关闭同级其他节点\r\nconst collapseSiblings = (node: TreeNode) => {\r\n  if (!props.accordion) return;\r\n  \r\n  const siblings = node.parent ? node.parent.children : treeData.value;\r\n  siblings.forEach((sibling) => {\r\n    if (sibling.key !== node.key && sibling.expanded) {\r\n      setNodeExpanded(sibling.key, false);\r\n      if (sibling.parent) {\r\n        emit(\"node-collapse\", sibling.data, sibling);\r\n      }\r\n    }\r\n  });\r\n};\r\n\r\n// 将原始数据转换为 TreeNode\r\nconst normalizeNode = (\r\n  data: TreeNodeData,\r\n  parent: TreeNode | null = null,\r\n  level: number = 1\r\n): TreeNode => {\r\n  const key = data[props.nodeKey] ?? data.key ?? String(Math.random());\r\n  const label = data[props.label] ?? data.label ?? \"\";\r\n  const children = data[props.children] ?? data.children ?? [];\r\n  const disabled = data.disabled ?? false;\r\n  \r\n  // 懒加载模式下，isLeaf 由数据明确指定，否则根据 children 判断\r\n  let isLeaf: boolean;\r\n  if (props.lazy) {\r\n    isLeaf = data.isLeaf ?? false;\r\n  } else {\r\n    isLeaf = data.isLeaf ?? children.length === 0;\r\n  }\r\n\r\n  // 计算初始展开状态\r\n  // 手风琴模式下，defaultExpandAll 不应该自动展开所有节点\r\n  let initialExpanded = false;\r\n  if (props.accordion) {\r\n    // 手风琴模式：只根据 defaultExpandedKeys 判断\r\n    initialExpanded = props.defaultExpandedKeys.includes(key);\r\n  } else {\r\n    // 非手风琴模式：根据 defaultExpandAll 或 defaultExpandedKeys 判断\r\n    initialExpanded =\r\n      props.defaultExpandAll || props.defaultExpandedKeys.includes(key);\r\n  }\r\n\r\n  const node: TreeNode = {\r\n    data,\r\n    key,\r\n    label,\r\n    level,\r\n    parent,\r\n    children: [],\r\n    expanded: initialExpanded,\r\n    checked: props.defaultCheckedKeys.includes(key),\r\n    indeterminate: false,\r\n    disabled,\r\n    isLeaf,\r\n    visible: true,\r\n    loading: false,\r\n  };\r\n\r\n  // 懒加载模式：不递归处理子节点，等待 load 回调\r\n  if (props.lazy) {\r\n    // 如果已有子数据，仍然递归处理（用于已加载过的节点）\r\n    if (children.length > 0) {\r\n      node.children = children.map((child) =>\r\n        normalizeNode(child, node, level + 1)\r\n      );\r\n    }\r\n  } else {\r\n    // 非懒加载模式：递归处理子节点\r\n  if (children.length > 0) {\r\n      node.children = children.map((child) =>\r\n        normalizeNode(child, node, level + 1)\r\n      );\r\n    }\r\n  }\r\n\r\n  // 初始化展开状态\r\n  if (node.expanded) {\r\n    expandedKeys.value.add(key);\r\n  }\r\n\r\n  // 初始化选中状态\r\n  if (node.checked) {\r\n    checkedKeys.value.add(key);\r\n  }\r\n\r\n  return node;\r\n};\r\n\r\n// 初始化树数据\r\nconst initTreeData = () => {\r\n  treeData.value = props.data.map((item) => normalizeNode(item));\r\n  \r\n  // 处理默认展开的节点\r\n  if (props.defaultExpandedKeys.length > 0) {\r\n    if (props.accordion) {\r\n      // 手风琴模式：只展开第一个匹配的节点\r\n      const firstKey = props.defaultExpandedKeys[0];\r\n      const firstNode = findNode(firstKey);\r\n      if (firstNode) {\r\n        // 先关闭所有同级节点\r\n        collapseSiblings(firstNode);\r\n        // 展开第一个节点\r\n        expandedKeys.value.add(firstKey);\r\n        setNodeExpanded(firstKey, true);\r\n      }\r\n    } else {\r\n      // 非手风琴模式：展开所有指定的节点\r\n      props.defaultExpandedKeys.forEach((key) => {\r\n        expandedKeys.value.add(key);\r\n        setNodeExpanded(key, true);\r\n      });\r\n    }\r\n  } else if (props.defaultExpandAll && props.accordion) {\r\n    // 手风琴模式 + defaultExpandAll：只展开第一个根节点\r\n    if (treeData.value.length > 0) {\r\n      const firstNode = treeData.value[0];\r\n      // 关闭其他根节点\r\n      treeData.value.forEach((sibling, index) => {\r\n        if (index !== 0) {\r\n          setNodeExpanded(sibling.key, false);\r\n        }\r\n      });\r\n      // 展开第一个节点\r\n      if (!firstNode.isLeaf) {\r\n        expandedKeys.value.add(firstNode.key);\r\n        setNodeExpanded(firstNode.key, true);\r\n      }\r\n    }\r\n  }\r\n  \r\n  // 处理默认选中的节点\r\n  if (props.defaultCheckedKeys.length > 0) {\r\n    props.defaultCheckedKeys.forEach((key) => {\r\n      checkedKeys.value.add(key);\r\n      setNodeChecked(key, true);\r\n    });\r\n  }\r\n};\r\n\r\n// 查找节点\r\nconst findNode = (\r\n  key: string | number,\r\n  nodes: TreeNode[] = treeData.value\r\n): TreeNode | null => {\r\n  for (const node of nodes) {\r\n    if (node.key === key) {\r\n      return node;\r\n    }\r\n    if (node.children.length > 0) {\r\n      const found = findNode(key, node.children);\r\n      if (found) return found;\r\n    }\r\n  }\r\n  return null;\r\n};\r\n\r\n// 设置节点展开状态\r\nconst setNodeExpanded = (key: string | number, expanded: boolean) => {\r\n  const node = findNode(key);\r\n  if (node && !node.isLeaf) {\r\n    node.expanded = expanded;\r\n    if (expanded) {\r\n      expandedKeys.value.add(key);\r\n    } else {\r\n      expandedKeys.value.delete(key);\r\n    }\r\n  }\r\n};\r\n\r\n// 设置节点选中状态\r\nconst setNodeChecked = (\r\n  key: string | number,\r\n  checked: boolean,\r\n  deep = false\r\n) => {\r\n  const node = findNode(key);\r\n  if (!node || node.disabled) return;\r\n\r\n  node.checked = checked;\r\n  if (checked) {\r\n    checkedKeys.value.add(key);\r\n  } else {\r\n    checkedKeys.value.delete(key);\r\n  }\r\n  node.indeterminate = false;\r\n\r\n  // 严格模式：不级联更新\r\n  if (props.checkStrictly) {\r\n    return;\r\n  }\r\n\r\n  // 级联选择子节点\r\n  if (deep && node.children.length > 0) {\r\n    node.children.forEach((child) => {\r\n      if (!child.disabled) {\r\n        setNodeChecked(child.key, checked, true);\r\n      }\r\n    });\r\n  }\r\n\r\n  // 更新父节点的选中状态\r\n  updateParentChecked(node.parent);\r\n};\r\n\r\n// 更新父节点的选中状态（级联）\r\nconst updateParentChecked = (parent: TreeNode | null) => {\r\n  if (!parent) return;\r\n\r\n  const checkedChildren = parent.children.filter(\r\n    (child) => child.checked\r\n  ).length;\r\n  const halfCheckedChildren = parent.children.filter(\r\n    (child) => child.indeterminate\r\n  ).length;\r\n\r\n  if (\r\n    checkedChildren === parent.children.length &&\r\n    parent.children.length > 0\r\n  ) {\r\n    parent.checked = true;\r\n    parent.indeterminate = false;\r\n    checkedKeys.value.add(parent.key);\r\n    halfCheckedKeys.value.delete(parent.key);\r\n  } else if (checkedChildren > 0 || halfCheckedChildren > 0) {\r\n    parent.checked = false;\r\n    parent.indeterminate = true;\r\n    checkedKeys.value.delete(parent.key);\r\n    halfCheckedKeys.value.add(parent.key);\r\n  } else {\r\n    parent.checked = false;\r\n    parent.indeterminate = false;\r\n    checkedKeys.value.delete(parent.key);\r\n    halfCheckedKeys.value.delete(parent.key);\r\n  }\r\n\r\n  // 递归更新父节点\r\n  updateParentChecked(parent.parent);\r\n};\r\n\r\n// 处理节点点击\r\nconst handleNodeClick = (node: TreeNode, e: MouseEvent) => {\r\n  if (node.disabled) return;\r\n\r\n  // 设置当前节点\r\n  currentNodeKey.value = node.key;\r\n  emit(\"current-change\", node.data, node);\r\n  emit(\"node-click\", node.data, node, e);\r\n\r\n  // 根据配置决定是否展开/选中\r\n  if (props.expandOnClickNode && !node.isLeaf) {\r\n    if (node.expanded) {\r\n      handleNodeCollapse(node);\r\n    } else {\r\n      handleNodeExpand(node);\r\n    }\r\n  }\r\n\r\n  if (props.checkOnClickNode && props.showCheckbox) {\r\n    handleNodeCheck(node, !node.checked);\r\n  }\r\n};\r\n\r\n// 处理节点右键菜单\r\nconst handleNodeContextMenu = (node: TreeNode, e: MouseEvent) => {\r\n  if (node.disabled) return;\r\n  emit(\"node-contextmenu\", e, node.data, node);\r\n};\r\n\r\n// 处理节点展开\r\nconst handleNodeExpand = (node: TreeNode) => {\r\n  if (node.disabled || node.isLeaf) return;\r\n\r\n  // 懒加载模式：如果节点没有子节点且没有加载过，触发 load 回调\r\n  if (props.lazy && props.load && node.children.length === 0 && !node.loading) {\r\n    node.loading = true;\r\n    \r\n    props.load(node.data, (data: TreeNodeData[]) => {\r\n      node.loading = false;\r\n      if (data && data.length > 0) {\r\n        node.children = data.map((child) =>\r\n          normalizeNode(child, node, node.level + 1)\r\n        );\r\n        node.isLeaf = false;\r\n    } else {\r\n        node.isLeaf = true;\r\n      }\r\n      \r\n      // 加载完成后展开节点\r\n      if (!node.isLeaf) {\r\n        setNodeExpanded(node.key, true);\r\n        emit(\"node-expand\", node.data, node);\r\n        }\r\n    });\r\n    return;\r\n  }\r\n\r\n  // 手风琴模式：关闭同级其他节点\r\n  collapseSiblings(node);\r\n\r\n  setNodeExpanded(node.key, true);\r\n  emit(\"node-expand\", node.data, node);\r\n};\r\n\r\n// 处理节点折叠\r\nconst handleNodeCollapse = (node: TreeNode) => {\r\n  if (node.disabled || node.isLeaf) return;\r\n  setNodeExpanded(node.key, false);\r\n  emit(\"node-collapse\", node.data, node);\r\n};\r\n\r\n// 处理节点选中\r\nconst handleNodeCheck = (node: TreeNode, checked: boolean) => {\r\n  if (node.disabled) return;\r\n\r\n  setNodeChecked(node.key, checked, true);\r\n\r\n  // 严格模式：不级联更新子节点\r\n  if (!props.checkStrictly) {\r\n  // 更新所有子节点\r\n  const updateChildren = (n: TreeNode, checked: boolean) => {\r\n    n.children.forEach((child) => {\r\n      if (!child.disabled) {\r\n          child.checked = checked;\r\n          child.indeterminate = false;\r\n        if (checked) {\r\n            checkedKeys.value.add(child.key);\r\n        } else {\r\n            checkedKeys.value.delete(child.key);\r\n        }\r\n          halfCheckedKeys.value.delete(child.key);\r\n          updateChildren(child, checked);\r\n      }\r\n      });\r\n    };\r\n\r\n    updateChildren(node, checked);\r\n    updateParentChecked(node.parent);\r\n  }\r\n\r\n  // 获取所有选中的节点和半选中的节点\r\n  const checkedNodes: TreeNodeData[] = [];\r\n  const halfCheckedNodes: TreeNodeData[] = [];\r\n  \r\n  const collectNodes = (nodes: TreeNode[]) => {\r\n    nodes.forEach((n) => {\r\n      if (n.checked) {\r\n        checkedNodes.push(n.data);\r\n      }\r\n      if (n.indeterminate) {\r\n        halfCheckedNodes.push(n.data);\r\n      }\r\n      if (n.children.length > 0) {\r\n        collectNodes(n.children);\r\n      }\r\n    });\r\n  };\r\n  collectNodes(treeData.value);\r\n\r\n  emit(\"check-change\", node.data, checked);\r\n  emit(\"node-check\", node.data, {\r\n    checkedKeys: Array.from(checkedKeys.value),\r\n    checkedNodes,\r\n    halfCheckedKeys: Array.from(halfCheckedKeys.value),\r\n    halfCheckedNodes,\r\n  });\r\n};\r\n\r\n// 拖拽处理函数 - 完全按照 ElementPlus 逻辑\r\nconst handleDragStart = (node: TreeNode, e: DragEvent) => {\r\n  if (!props.draggable || node.disabled) {\r\n    e.preventDefault();\r\n    return;\r\n  }\r\n  \r\n  // 如果提供了 allowDrag 函数，使用它来判断是否允许拖拽\r\n  if (props.allowDrag && !props.allowDrag(node.data)) {\r\n    e.preventDefault();\r\n    return;\r\n  }\r\n  \r\n  draggingNode.value = node;\r\n  emit(\"node-drag-start\", node.data, e);\r\n  \r\n  if (e.dataTransfer) {\r\n    e.dataTransfer.effectAllowed = \"move\";\r\n    // 创建一个透明的拖拽图像，移除白色光影效果\r\n    const dragImage = document.createElement('div');\r\n    dragImage.style.position = 'absolute';\r\n    dragImage.style.top = '-9999px';\r\n    dragImage.style.width = '1px';\r\n    dragImage.style.height = '1px';\r\n    dragImage.style.opacity = '0';\r\n    document.body.appendChild(dragImage);\r\n    e.dataTransfer.setDragImage(dragImage, 0, 0);\r\n    // 延迟移除，确保拖拽图像已设置\r\n    setTimeout(() => {\r\n      document.body.removeChild(dragImage);\r\n    }, 0);\r\n  }\r\n};\r\n\r\n// 判断是否允许拖拽到目标位置\r\nconst isAllowDrop = (draggingNode: TreeNode, dropNode: TreeNode, type: DropType): boolean => {\r\n  // 不能拖拽到自己\r\n  if (draggingNode.key === dropNode.key) {\r\n    return false;\r\n  }\r\n  \r\n  // 默认允许任意拖入拖出，无限制\r\n  // 如果提供了 allowDrop 函数，使用它来判断（允许用户自定义限制）\r\n  if (props.allowDrop) {\r\n    return props.allowDrop(draggingNode.data, dropNode.data, type);\r\n  }\r\n  \r\n  return true;\r\n};\r\n\r\n// 计算拖拽位置类型 - 改进拖拽界限，使其更清晰，两个节点之间只有一档位置\r\nconst calcDropType = (node: TreeNode, e: DragEvent): DropType | null => {\r\n  const targetElement = e.currentTarget as HTMLElement;\r\n  const clientY = e.clientY;\r\n  \r\n  // 查找 content 元素（用于计算拖拽位置）\r\n  const contentElement = targetElement.querySelector('.c-tree-node__content') as HTMLElement;\r\n  if (!contentElement) return null;\r\n  \r\n  const contentRect = contentElement.getBoundingClientRect();\r\n  \r\n  // 如果节点已展开且有子节点，检查鼠标是否在子节点区域内\r\n  if (node.expanded && node.children.length > 0) {\r\n    const childrenContainer = targetElement.querySelector('.c-tree-node__children') as HTMLElement;\r\n    if (childrenContainer) {\r\n      const childrenRect = childrenContainer.getBoundingClientRect();\r\n      // 如果鼠标在子节点容器内（不包括容器底部边缘），不触发父节点的 drop 状态\r\n      if (clientY >= childrenRect.top && clientY < childrenRect.bottom) {\r\n        return null;\r\n      }\r\n      // 如果鼠标在子节点容器下方，直接返回 after，允许拖入到最后一个父集的下面\r\n      if (clientY >= childrenRect.bottom) {\r\n        return 'after';\r\n      }\r\n    }\r\n  }\r\n  \r\n  // 基于 content 区域计算拖拽位置\r\n  // 上方 25% 为 before，下方 25% 为 after，中间 50% 为 inner\r\n  const threshold = contentRect.height * DROP_THRESHOLD;\r\n  const relativeTop = clientY - contentRect.top;\r\n  \r\n  // 上方 25%: before\r\n  if (relativeTop < threshold) {\r\n    return 'before';\r\n  }\r\n  \r\n  // 下方 25%: after\r\n  if (relativeTop > contentRect.height - threshold) {\r\n    return 'after';\r\n  }\r\n  \r\n  // 中间 50%: inner（允许所有节点，包括叶子节点）\r\n  return 'inner';\r\n};\r\n\r\nconst handleDragEnter = (node: TreeNode, e: DragEvent) => {\r\n  if (!draggingNode.value) return;\r\n  \r\n  e.preventDefault();\r\n  e.stopPropagation();\r\n  \r\n  // 拖拽到自己时，清除 drop 状态\r\n  if (isDraggingSelf(node)) {\r\n    clearDragState();\r\n    return;\r\n  }\r\n  \r\n  emit(\"node-drag-enter\", draggingNode.value.data, node.data, e);\r\n};\r\n\r\nconst handleDragOver = (node: TreeNode, e: DragEvent) => {\r\n  if (!draggingNode.value) return;\r\n  \r\n  e.preventDefault();\r\n  e.stopPropagation();\r\n  \r\n  // 拖拽到自己时，禁止放置\r\n  if (isDraggingSelf(node)) {\r\n    if (e.dataTransfer) {\r\n      e.dataTransfer.dropEffect = \"none\";\r\n    }\r\n    clearDragState();\r\n    return;\r\n  }\r\n  \r\n  // 计算 drop 位置\r\n  const type = calcDropType(node, e);\r\n  if (!type) {\r\n    clearDragState();\r\n    return;\r\n  }\r\n  \r\n  // 检查是否允许放置\r\n  if (!isAllowDrop(draggingNode.value, node, type)) {\r\n    if (e.dataTransfer) {\r\n      e.dataTransfer.dropEffect = \"none\";\r\n    }\r\n    clearDragState();\r\n    return;\r\n  }\r\n  \r\n  // 允许放置\r\n  if (e.dataTransfer) {\r\n    e.dataTransfer.dropEffect = \"move\";\r\n  }\r\n  \r\n  // 更新 drop 状态（这会触发视觉反馈）\r\n  const prevDropNode = dropNode.value;\r\n  dropType.value = type;\r\n  dropNode.value = node;\r\n  \r\n  // ElementPlus 逻辑：拖拽到节点内部时，延迟展开\r\n  if (type === 'inner' && !node.expanded && !node.isLeaf) {\r\n    // 如果是新节点或不同类型，重新设置定时器\r\n    if (!prevDropNode || prevDropNode.key !== node.key) {\r\n      clearDragExpandTimer();\r\n      dragOverExpandTimer = setTimeout(() => {\r\n        if (dropNode.value?.key === node.key && dropType.value === 'inner') {\r\n          setNodeExpanded(node.key, true);\r\n        }\r\n      }, DRAG_EXPAND_DELAY);\r\n    }\r\n  } else {\r\n    clearDragExpandTimer();\r\n  }\r\n  \r\n  emit(\"node-drag-over\", draggingNode.value.data, node.data, e);\r\n};\r\n\r\nconst handleDragLeave = (node: TreeNode, e: DragEvent) => {\r\n  if (!draggingNode.value) return;\r\n  \r\n  e.stopPropagation();\r\n  \r\n  // ElementPlus 的 dragLeave 逻辑：\r\n  // 检查是否真正离开了节点区域（排除子元素触发的 leave）\r\n  const target = e.currentTarget as HTMLElement;\r\n  const relatedTarget = e.relatedTarget as HTMLElement;\r\n  \r\n  // 如果 relatedTarget 是当前节点的子元素，则不清除状态\r\n  if (relatedTarget && target.contains(relatedTarget)) {\r\n    return;\r\n  }\r\n  \r\n  // 清除当前节点的 drop 状态\r\n  if (dropNode.value?.key === node.key) {\r\n    dropType.value = null;\r\n    dropNode.value = null;\r\n  }\r\n  \r\n  emit(\"node-drag-leave\", draggingNode.value.data, node.data, e);\r\n};\r\n\r\nconst handleDrop = (node: TreeNode, e: DragEvent) => {\r\n  if (!draggingNode.value || !dropNode.value || !dropType.value) return;\r\n  \r\n  e.preventDefault();\r\n  e.stopPropagation();\r\n  \r\n  clearDragExpandTimer();\r\n  \r\n  // 再次检查是否允许放置\r\n  if (!isAllowDrop(draggingNode.value, dropNode.value, dropType.value)) {\r\n    return;\r\n  }\r\n  \r\n  // 保存拖拽信息，用于事件\r\n  const dragNode = draggingNode.value;\r\n  const targetNode = dropNode.value;\r\n  const type = dropType.value;\r\n  \r\n  // 执行节点移动\r\n  moveNode(dragNode, targetNode, type);\r\n  \r\n  // 发出 drop 事件\r\n  emit(\"node-drop\", dragNode.data, targetNode.data, type, e);\r\n  \r\n  // 清理状态\r\n  draggingNode.value = null;\r\n  clearDragState();\r\n};\r\n\r\nconst handleDragEnd = (node: TreeNode, e: DragEvent) => {\r\n  emit(\"node-drag-end\", node.data, e);\r\n  \r\n  // 清理拖拽状态\r\n  draggingNode.value = null;\r\n  clearDragState();\r\n};\r\n\r\n// 移动节点的核心逻辑 - 完全按照 ElementPlus 逻辑\r\nconst moveNode = (draggingNode: TreeNode, dropNode: TreeNode, dropType: DropType) => {\r\n  // 查找节点在树中的位置\r\n  const findNodeInTree = (nodes: TreeNode[], targetKey: string | number): { parentArray: TreeNode[], index: number, node: TreeNode } | null => {\r\n    for (let i = 0; i < nodes.length; i++) {\r\n      if (nodes[i].key === targetKey) {\r\n        return { parentArray: nodes, index: i, node: nodes[i] };\r\n      }\r\n      if (nodes[i].children.length > 0) {\r\n        const found = findNodeInTree(nodes[i].children, targetKey);\r\n        if (found) return found;\r\n      }\r\n    }\r\n    return null;\r\n  };\r\n  \r\n  // 从原位置移除节点\r\n  const removeNode = (nodes: TreeNode[], targetKey: string | number): TreeNode | null => {\r\n    for (let i = 0; i < nodes.length; i++) {\r\n      if (nodes[i].key === targetKey) {\r\n        return nodes.splice(i, 1)[0];\r\n      }\r\n      if (nodes[i].children.length > 0) {\r\n        const removed = removeNode(nodes[i].children, targetKey);\r\n        if (removed) return removed;\r\n      }\r\n    }\r\n    return null;\r\n  };\r\n  \r\n  // 更新节点层级和父节点关系，同时更新 isLeaf 状态\r\n  const updateNodeLevel = (node: TreeNode, level: number, parent: TreeNode | null) => {\r\n    node.level = level;\r\n    node.parent = parent;\r\n    // 更新 isLeaf：如果有子节点，则不是叶子节点\r\n    if (node.children.length > 0) {\r\n      node.isLeaf = false;\r\n    }\r\n    node.children.forEach((child) => {\r\n      updateNodeLevel(child, level + 1, node);\r\n    });\r\n  };\r\n  \r\n  // 先查找两个节点的位置\r\n  const dragInfo = findNodeInTree(treeData.value, draggingNode.key);\r\n  const dropInfo = findNodeInTree(treeData.value, dropNode.key);\r\n  \r\n  if (!dragInfo || !dropInfo) return;\r\n  \r\n  const { parentArray: dragParentArray, index: dragIndex } = dragInfo;\r\n  const { parentArray: dropParentArray, index: dropIndex, node: targetNode } = dropInfo;\r\n  \r\n  // 从原位置移除节点\r\n  const removedNode = removeNode(treeData.value, draggingNode.key);\r\n  if (!removedNode) return;\r\n  \r\n  // 重新查找目标节点位置（因为移除可能影响索引）\r\n  const newDropInfo = findNodeInTree(treeData.value, dropNode.key);\r\n  if (!newDropInfo) return;\r\n  \r\n  const { parentArray: newDropParentArray, index: newDropIndex, node: newTargetNode } = newDropInfo;\r\n  \r\n  // 计算插入位置\r\n  let insertIndex = newDropIndex;\r\n  \r\n  // 如果是 after 类型，插入位置需要 +1\r\n  if (dropType === 'after') {\r\n    insertIndex = newDropIndex + 1;\r\n  }\r\n  // before 和 inner 类型使用 newDropIndex（inner 类型不需要这个索引，但保持一致性）\r\n  \r\n  // 执行移动\r\n  if (dropType === 'before' || dropType === 'after') {\r\n    newDropParentArray.splice(insertIndex, 0, removedNode);\r\n    updateNodeLevel(removedNode, newTargetNode.level, newTargetNode.parent);\r\n  } else if (dropType === 'inner') {\r\n    newTargetNode.children.push(removedNode);\r\n    newTargetNode.isLeaf = false; // 确保目标节点不是叶子节点\r\n    updateNodeLevel(removedNode, newTargetNode.level + 1, newTargetNode);\r\n    // 确保目标节点展开\r\n    if (!newTargetNode.expanded) {\r\n      setNodeExpanded(newTargetNode.key, true);\r\n    }\r\n  }\r\n};\r\n\r\n// 提供上下文给子组件\r\nprovide(\"CUI_TREE\", {\r\n  handleNodeClick,\r\n  handleNodeContextMenu,\r\n  handleNodeExpand,\r\n  handleNodeCheck,\r\n  handleNodeCollapse,\r\n  handleDragStart,\r\n  handleDragEnter,\r\n  handleDragOver,\r\n  handleDragLeave,\r\n  handleDrop,\r\n  handleDragEnd,\r\n  draggingNode,\r\n  dropType,\r\n  dropNode,\r\n  currentNodeKey,\r\n  highlightCurrent: computed(() => props.highlightCurrent),\r\n});\r\n\r\n// 暴露的方法\r\nconst setCheckedKeys = (keys: (string | number)[], leafOnly = false) => {\r\n  // 先清除所有已选中的节点，确保响应式更新\r\n  const clearAllChecked = (nodes: TreeNode[]) => {\r\n    nodes.forEach((node) => {\r\n      if (node.checked || node.indeterminate) {\r\n        node.checked = false;\r\n        node.indeterminate = false;\r\n        checkedKeys.value.delete(node.key);\r\n        halfCheckedKeys.value.delete(node.key);\r\n      }\r\n      if (node.children.length > 0) {\r\n        clearAllChecked(node.children);\r\n      }\r\n    });\r\n  };\r\n  clearAllChecked(treeData.value);\r\n\r\n  // 然后设置新的选中节点\r\n  const setKeys = (nodes: TreeNode[]) => {\r\n    nodes.forEach((node) => {\r\n      if (leafOnly && !node.isLeaf) {\r\n        setKeys(node.children);\r\n        return;\r\n      }\r\n      const checked = keys.includes(node.key);\r\n      if (checked && !node.disabled) {\r\n        setNodeChecked(node.key, true, true);\r\n      }\r\n      if (node.children.length > 0) {\r\n        setKeys(node.children);\r\n      }\r\n    });\r\n  };\r\n  setKeys(treeData.value);\r\n};\r\n\r\nconst getCheckedKeys = (leafOnly = false): (string | number)[] => {\r\n  const keys: (string | number)[] = [];\r\n  const getKeys = (nodes: TreeNode[]) => {\r\n    nodes.forEach((node) => {\r\n      if (node.checked && (!leafOnly || node.isLeaf)) {\r\n        keys.push(node.key);\r\n      }\r\n      if (node.children.length > 0) {\r\n        getKeys(node.children);\r\n      }\r\n    });\r\n  };\r\n  getKeys(treeData.value);\r\n  return keys;\r\n};\r\n\r\nconst setChecked = (key: string | number, checked: boolean, deep = false) => {\r\n  setNodeChecked(key, checked, deep);\r\n};\r\n\r\nconst getCheckedNodes = (leafOnly = false): TreeNodeData[] => {\r\n  const nodes: TreeNodeData[] = [];\r\n  const getNodes = (treeNodes: TreeNode[]) => {\r\n    treeNodes.forEach((node) => {\r\n      if (node.checked && (!leafOnly || node.isLeaf)) {\r\n        nodes.push(node.data);\r\n      }\r\n      if (node.children.length > 0) {\r\n        getNodes(node.children);\r\n      }\r\n    });\r\n  };\r\n  getNodes(treeData.value);\r\n  return nodes;\r\n};\r\n\r\nconst setExpandedKeys = (keys: (string | number)[]) => {\r\n  expandedKeys.value.clear();\r\n  \r\n  if (props.accordion && keys.length > 0) {\r\n    // 手风琴模式：只展开第一个节点，并关闭其同级节点\r\n    const firstKey = keys[0];\r\n    const firstNode = findNode(firstKey);\r\n    if (firstNode) {\r\n      // 关闭所有同级节点\r\n      collapseSiblings(firstNode);\r\n      // 展开第一个节点\r\n      setNodeExpanded(firstKey, true);\r\n    }\r\n  } else {\r\n    // 非手风琴模式：展开所有指定的节点\r\n    keys.forEach((key) => {\r\n      setNodeExpanded(key, true);\r\n    });\r\n  }\r\n};\r\n\r\nconst getExpandedKeys = (): (string | number)[] => {\r\n  return Array.from(expandedKeys.value);\r\n};\r\n\r\nconst setExpanded = (key: string | number, expanded: boolean) => {\r\n  if (expanded && props.accordion) {\r\n    // 手风琴模式：展开节点时，关闭同级其他节点\r\n    const node = findNode(key);\r\n    if (node) {\r\n      collapseSiblings(node);\r\n    }\r\n  }\r\n  setNodeExpanded(key, expanded);\r\n};\r\n\r\nconst getCurrentKey = (): string | number | undefined => {\r\n  return currentNodeKey.value;\r\n};\r\n\r\nconst getCurrentNode = (): TreeNodeData | undefined => {\r\n  if (!currentNodeKey.value) return undefined;\r\n  const node = findNode(currentNodeKey.value);\r\n  return node?.data;\r\n};\r\n\r\nconst setCurrentKey = (key: string | number) => {\r\n  const node = findNode(key);\r\n  if (node && !node.disabled) {\r\n    currentNodeKey.value = key;\r\n    emit(\"current-change\", node.data, node);\r\n}\r\n};\r\n\r\nconst filter = (value: any) => {\r\n  const filterNode = (node: TreeNode): boolean => {\r\n    // 使用自定义过滤方法或默认过滤方法\r\n    const match = props.filterNodeMethod \r\n      ? props.filterNodeMethod(value, node.data, node)\r\n      : node.label.toLowerCase().includes(String(value).toLowerCase());\r\n    \r\n    let childMatch = false;\r\n    if (node.children.length > 0) {\r\n      node.children.forEach((child) => {\r\n        if (filterNode(child)) {\r\n          childMatch = true;\r\n        }\r\n      });\r\n    }\r\n    node.visible = match || childMatch;\r\n    \r\n    // 如果子节点匹配，且 autoExpandParent 为 true，则自动展开父节点\r\n    if (childMatch && !node.expanded && props.autoExpandParent) {\r\n      setNodeExpanded(node.key, true);\r\n    }\r\n    return match || childMatch;\r\n  };\r\n  treeData.value.forEach((node) => {\r\n    filterNode(node);\r\n  });\r\n};\r\n\r\nconst updateKeyChildren = (key: string | number, data: TreeNodeData[]) => {\r\n  const node = findNode(key);\r\n  if (node) {\r\n    node.children = data.map((item) =>\r\n      normalizeNode(item, node, node.level + 1)\r\n    );\r\n  }\r\n};\r\n\r\n// 获取半选中的节点 keys\r\nconst getHalfCheckedKeys = (): (string | number)[] => {\r\n  return Array.from(halfCheckedKeys.value);\r\n};\r\n\r\n// 获取半选中的节点\r\nconst getHalfCheckedNodes = (): TreeNodeData[] => {\r\n  const nodes: TreeNodeData[] = [];\r\n  const getNodes = (treeNodes: TreeNode[]) => {\r\n    treeNodes.forEach((node) => {\r\n      if (node.indeterminate) {\r\n        nodes.push(node.data);\r\n      }\r\n      if (node.children.length > 0) {\r\n        getNodes(node.children);\r\n      }\r\n    });\r\n  };\r\n  getNodes(treeData.value);\r\n  return nodes;\r\n};\r\n\r\n// 设置当前节点（通过节点数据）\r\nconst setCurrentNode = (nodeData: TreeNodeData) => {\r\n  const key = nodeData[props.nodeKey] ?? nodeData.key;\r\n  if (key !== undefined) {\r\n    setCurrentKey(key);\r\n  }\r\n};\r\n\r\n// 获取节点\r\nconst getNode = (key: string | number): TreeNode | null => {\r\n  return findNode(key);\r\n};\r\n\r\n// 移除节点\r\nconst remove = (key: string | number) => {\r\n  const removeFromTree = (nodes: TreeNode[], targetKey: string | number): boolean => {\r\n    for (let i = 0; i < nodes.length; i++) {\r\n      if (nodes[i].key === targetKey) {\r\n        nodes.splice(i, 1);\r\n        return true;\r\n      }\r\n      if (nodes[i].children.length > 0) {\r\n        if (removeFromTree(nodes[i].children, targetKey)) {\r\n          return true;\r\n        }\r\n      }\r\n    }\r\n    return false;\r\n  };\r\n  \r\n  removeFromTree(treeData.value, key);\r\n  // 清理相关状态\r\n  checkedKeys.value.delete(key);\r\n  halfCheckedKeys.value.delete(key);\r\n  expandedKeys.value.delete(key);\r\n  if (currentNodeKey.value === key) {\r\n    currentNodeKey.value = undefined;\r\n  }\r\n};\r\n\r\n// 追加子节点\r\nconst append = (data: TreeNodeData, parentKey: string | number) => {\r\n  const parent = findNode(parentKey);\r\n  if (parent) {\r\n    const newNode = normalizeNode(data, parent, parent.level + 1);\r\n    parent.children.push(newNode);\r\n    parent.isLeaf = false;\r\n    // 如果父节点未展开，则展开它\r\n    if (!parent.expanded) {\r\n      setNodeExpanded(parentKey, true);\r\n    }\r\n  }\r\n};\r\n\r\n// 在节点前插入\r\nconst insertBefore = (data: TreeNodeData, refKey: string | number) => {\r\n  const refNode = findNode(refKey);\r\n  if (!refNode) return;\r\n  \r\n  const insertIntoTree = (nodes: TreeNode[], targetKey: string | number): boolean => {\r\n    for (let i = 0; i < nodes.length; i++) {\r\n      if (nodes[i].key === targetKey) {\r\n        const newNode = normalizeNode(data, refNode.parent, refNode.level);\r\n        nodes.splice(i, 0, newNode);\r\n        return true;\r\n      }\r\n      if (nodes[i].children.length > 0) {\r\n        if (insertIntoTree(nodes[i].children, targetKey)) {\r\n          return true;\r\n        }\r\n      }\r\n    }\r\n    return false;\r\n  };\r\n  \r\n  insertIntoTree(treeData.value, refKey);\r\n};\r\n\r\n// 在节点后插入\r\nconst insertAfter = (data: TreeNodeData, refKey: string | number) => {\r\n  const refNode = findNode(refKey);\r\n  if (!refNode) return;\r\n  \r\n  const insertIntoTree = (nodes: TreeNode[], targetKey: string | number): boolean => {\r\n    for (let i = 0; i < nodes.length; i++) {\r\n      if (nodes[i].key === targetKey) {\r\n        const newNode = normalizeNode(data, refNode.parent, refNode.level);\r\n        nodes.splice(i + 1, 0, newNode);\r\n        return true;\r\n      }\r\n      if (nodes[i].children.length > 0) {\r\n        if (insertIntoTree(nodes[i].children, targetKey)) {\r\n          return true;\r\n  }\r\n}\r\n    }\r\n    return false;\r\n  };\r\n  \r\n  insertIntoTree(treeData.value, refKey);\r\n};\r\n\r\n// 暴露实例方法\r\ndefineExpose<TreeInstance>({\r\n  setCheckedKeys,\r\n  getCheckedKeys,\r\n  setChecked,\r\n  getCheckedNodes,\r\n  getHalfCheckedKeys,\r\n  getHalfCheckedNodes,\r\n  setExpandedKeys,\r\n  getExpandedKeys,\r\n  setExpanded,\r\n  getCurrentKey,\r\n  getCurrentNode,\r\n  setCurrentKey,\r\n  setCurrentNode,\r\n  getNode,\r\n  remove,\r\n  append,\r\n  insertBefore,\r\n  insertAfter,\r\n  filter,\r\n  updateKeyChildren,\r\n});\r\n\r\n// 监听数据变化\r\nwatch(\r\n  () => props.data,\r\n  () => {\r\n    initTreeData();\r\n  },\r\n  { immediate: true, deep: true }\r\n);\r\n\r\n// 监听 currentNodeKey prop 的变化\r\nwatch(\r\n  () => props.currentNodeKey,\r\n  (newKey) => {\r\n    if (newKey !== undefined && newKey !== currentNodeKey.value) {\r\n      setCurrentKey(newKey);\r\n    }\r\n  }\r\n);\r\n\r\n// 计算属性\r\nconst checkStrictly = computed(() => props.checkStrictly);\r\nconst renderContent = computed(() => undefined); // 暂时不支持自定义渲染\r\n</script>\r\n\r\n<style scoped></style>\r\n","import { withInstall } from '@cuixingjian/cui-utils/install'\r\nimport type { SFCWithInstall } from \"../types\"\r\nimport _Tree from './src/tree.vue'\r\n\r\nexport * from './src/tree'\r\nexport * from './src/instance'\r\nexport * from './src/tree-node'\r\n\r\nconst Tree: SFCWithInstall<typeof _Tree> = withInstall(_Tree)\r\n\r\nexport default Tree\r\n\r\ndeclare module 'vue' {\r\n  export interface GlobalComponents {\r\n    CTree: typeof Tree\r\n  }\r\n}\r\n\r\n","// form 组件相关属性和 TypeScript 类型定义\r\n\r\nimport { ExtractPropTypes, PropType } from 'vue'\r\nimport type { FormRules } from './types'\r\n\r\nexport const formProps = {\r\n  // 表单数据对象\r\n  model: {\r\n    type: Object as PropType<Record<string, any>>,\r\n    required: true,\r\n    default: () => ({})\r\n  },\r\n  // 表单验证规则\r\n  rules: {\r\n    type: Object as PropType<FormRules>,\r\n    default: () => ({})\r\n  },\r\n  // 表单标签宽度\r\n  labelWidth: {\r\n    type: [String, Number] as PropType<string | number>,\r\n    default: ''\r\n  },\r\n  // 表单标签位置\r\n  labelPosition: {\r\n    type: String as PropType<'left' | 'right' | 'top'>,\r\n    default: 'right'\r\n  },\r\n  // 表单尺寸\r\n  size: {\r\n    type: String as PropType<'large' | 'default' | 'small'>,\r\n    default: 'default'\r\n  },\r\n  // 是否显示必填字段的标签旁边的红色星号\r\n  requiredAsteriskPosition: {\r\n    type: String as PropType<'left' | 'right'>,\r\n    default: 'left'\r\n  },\r\n  // 是否禁用表单\r\n  disabled: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否在输入框中显示校验结果反馈图标\r\n  statusIcon: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否显示校验错误信息\r\n  showMessage: {\r\n    type: Boolean,\r\n    default: true\r\n  },\r\n  // 是否在规则改变时立即触发一次验证\r\n  validateOnRuleChange: {\r\n    type: Boolean,\r\n    default: true\r\n  }\r\n} as const\r\n\r\nexport type FormProps = ExtractPropTypes<typeof formProps>\r\n\r\n// form 事件\r\nexport const formEmits = {\r\n  validate: (prop: string, isValid: boolean, message: string) => true\r\n}\r\n\r\nexport type FormEmits = typeof formEmits\r\n\r\n","<template>\r\n  <form :class=\"[bem.b(), bem.m(labelPosition), bem.m(size)]\">\r\n    <slot></slot>\r\n  </form>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { provide, ref, watch } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { formProps, formEmits } from './form'\r\nimport type { ValidateCallback, ValidateError, FormRules } from './types'\r\n\r\ndefineOptions({\r\n  name: 'CForm'\r\n})\r\n\r\nconst bem = createNamespace('form')\r\nconst props = defineProps(formProps)\r\nconst emit = defineEmits(formEmits)\r\n\r\n// 表单项列表\r\nconst fields = ref<Array<{\r\n  validate: (trigger?: string, callback?: (error?: string) => void) => void\r\n  clearValidate: () => void\r\n  resetField: () => void\r\n  prop: string\r\n}>>([])\r\n\r\n// 添加表单项\r\nfunction addField(field: any): void {\r\n  if (field) {\r\n    fields.value.push(field)\r\n  }\r\n}\r\n\r\n// 移除表单项\r\nfunction removeField(field: any): void {\r\n  if (field && field.prop) {\r\n    const index = fields.value.findIndex(item => item.prop === field.prop)\r\n    if (index > -1) {\r\n      fields.value.splice(index, 1)\r\n    }\r\n  }\r\n}\r\n\r\n// 校验整个表单\r\nfunction validate(callback?: ValidateCallback): void {\r\n  if (!props.model) {\r\n    callback && callback(false, [])\r\n    return\r\n  }\r\n\r\n  let valid = true\r\n  const errors: ValidateError[] = []\r\n  let count = 0\r\n  const total = fields.value.length\r\n\r\n  if (total === 0) {\r\n    callback && callback(true)\r\n    return\r\n  }\r\n\r\n  const finish = () => {\r\n    count++\r\n    if (count >= total) {\r\n      callback && callback(valid, errors.length > 0 ? errors : undefined)\r\n    }\r\n  }\r\n\r\n  fields.value.forEach(field => {\r\n    field.validate(undefined, (error) => {\r\n      if (error) {\r\n        valid = false\r\n        errors.push({\r\n          field: field.prop,\r\n          message: error\r\n        })\r\n      }\r\n      finish()\r\n    })\r\n  })\r\n}\r\n\r\n// 校验指定字段\r\nfunction validateField(prop: string, callback?: (error?: string) => void): void {\r\n  const field = fields.value.find(item => item.prop === prop)\r\n  if (field) {\r\n    field.validate(undefined, callback)\r\n  } else {\r\n    callback && callback()\r\n  }\r\n}\r\n\r\n// 清空校验\r\nfunction clearValidate(props?: string | string[]): void {\r\n  if (!props) {\r\n    fields.value.forEach(field => {\r\n      field.clearValidate()\r\n    })\r\n  } else {\r\n    const propsArray = Array.isArray(props) ? props : [props]\r\n    propsArray.forEach(prop => {\r\n      const field = fields.value.find(item => item.prop === prop)\r\n      if (field) {\r\n        field.clearValidate()\r\n      }\r\n    })\r\n  }\r\n}\r\n\r\n// 重置表单\r\nfunction resetFields(): void {\r\n  if (!props.model) {\r\n    return\r\n  }\r\n\r\n  fields.value.forEach(field => {\r\n    field.resetField()\r\n  })\r\n}\r\n\r\n// 提供数据给 FormItem 组件\r\nprovide('formContext', {\r\n  model: props.model,\r\n  rules: props.rules || {},\r\n  labelWidth: props.labelWidth,\r\n  labelPosition: props.labelPosition,\r\n  size: props.size,\r\n  disabled: props.disabled,\r\n  showMessage: props.showMessage,\r\n  validateField,\r\n  clearValidate,\r\n  addField,\r\n  removeField\r\n})\r\n\r\n// 暴露方法\r\ndefineExpose({\r\n  validate,\r\n  validateField,\r\n  clearValidate,\r\n  resetFields\r\n})\r\n</script>\r\n\r\n","// form-item 组件相关属性和 TypeScript 类型定义\r\n\r\nimport { ExtractPropTypes, PropType } from 'vue'\r\nimport type { FormRule } from './types'\r\n\r\nexport const formItemProps = {\r\n  // 表单域 model 字段\r\n  prop: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 标签文本\r\n  label: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 标签宽度\r\n  labelWidth: {\r\n    type: [String, Number] as PropType<string | number>,\r\n    default: ''\r\n  },\r\n  // 是否必填\r\n  required: {\r\n    type: Boolean,\r\n    default: undefined\r\n  },\r\n  // 表单验证规则\r\n  rules: {\r\n    type: [Object, Array] as PropType<FormRule | FormRule[]>,\r\n    default: undefined\r\n  },\r\n  // 表单域验证错误信息\r\n  error: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 是否显示校验错误信息\r\n  showMessage: {\r\n    type: Boolean,\r\n    default: true\r\n  },\r\n  // 用于控制该表单域下组件的尺寸\r\n  size: {\r\n    type: String as PropType<'large' | 'default' | 'small'>,\r\n    default: ''\r\n  }\r\n} as const\r\n\r\nexport type FormItemProps = ExtractPropTypes<typeof formItemProps>\r\n\r\n// form-item 事件\r\nexport const formItemEmits = {\r\n  blur: (value: any) => true,\r\n  change: (value: any) => true\r\n}\r\n\r\nexport type FormItemEmits = typeof formItemEmits\r\n\r\n","// 异步校验器实现\r\n\r\nimport type { FormRule, ValidatorFunction } from './types'\r\n\r\nexport class AsyncValidator {\r\n  private rules: FormRule[]\r\n  private field: string\r\n\r\n  constructor(rules: FormRule[], field: string) {\r\n    this.rules = rules\r\n    this.field = field\r\n  }\r\n\r\n  validate(value: any, callback: (error?: Error) => void): void {\r\n    const rules = this.rules.filter(rule => rule.required || value !== undefined && value !== null && value !== '')\r\n    \r\n    if (rules.length === 0) {\r\n      callback()\r\n      return\r\n    }\r\n\r\n    let error: Error | null = null\r\n    let completed = 0\r\n    const total = rules.length\r\n\r\n    const finish = (err?: Error) => {\r\n      if (err && !error) {\r\n        error = err\r\n      }\r\n      completed++\r\n      if (completed >= total) {\r\n        callback(error || undefined)\r\n      }\r\n    }\r\n\r\n    for (const rule of rules) {\r\n      this.validateRule(rule, value, finish)\r\n    }\r\n  }\r\n\r\n  private validateRule(rule: FormRule, value: any, callback: (error?: Error) => void): void {\r\n    // required 校验\r\n    if (rule.required) {\r\n      if (this.isEmpty(value)) {\r\n        callback(new Error(rule.message || `${this.field} 是必填项`))\r\n        return\r\n      }\r\n    }\r\n\r\n    // 如果值为空且不是必填，跳过其他校验\r\n    if (this.isEmpty(value) && !rule.required) {\r\n      callback()\r\n      return\r\n    }\r\n\r\n    // type 校验\r\n    if (rule.type && !this.validateType(value, rule.type)) {\r\n      callback(new Error(rule.message || `${this.field} 类型不正确`))\r\n      return\r\n    }\r\n\r\n    // min 校验\r\n    if (rule.min !== undefined) {\r\n      const length = this.getLength(value)\r\n      if (length < rule.min) {\r\n        callback(new Error(rule.message || `${this.field} 长度不能小于 ${rule.min}`))\r\n        return\r\n      }\r\n    }\r\n\r\n    // max 校验\r\n    if (rule.max !== undefined) {\r\n      const length = this.getLength(value)\r\n      if (length > rule.max) {\r\n        callback(new Error(rule.message || `${this.field} 长度不能大于 ${rule.max}`))\r\n        return\r\n      }\r\n    }\r\n\r\n    // pattern 校验\r\n    if (rule.pattern && !rule.pattern.test(String(value))) {\r\n      callback(new Error(rule.message || `${this.field} 格式不正确`))\r\n      return\r\n    }\r\n\r\n    // validator 自定义校验\r\n    if (rule.validator) {\r\n      rule.validator(rule, value, callback)\r\n      return\r\n    }\r\n\r\n    callback()\r\n  }\r\n\r\n  private isEmpty(value: any): boolean {\r\n    if (value === null || value === undefined || value === '') {\r\n      return true\r\n    }\r\n    if (Array.isArray(value) && value.length === 0) {\r\n      return true\r\n    }\r\n    if (typeof value === 'object' && Object.keys(value).length === 0) {\r\n      return true\r\n    }\r\n    return false\r\n  }\r\n\r\n  private getLength(value: any): number {\r\n    if (typeof value === 'string' || Array.isArray(value)) {\r\n      return value.length\r\n    }\r\n    if (typeof value === 'number') {\r\n      return value\r\n    }\r\n    return 0\r\n  }\r\n\r\n  private validateType(value: any, type: string): boolean {\r\n    switch (type) {\r\n      case 'string':\r\n        return typeof value === 'string'\r\n      case 'number':\r\n        return typeof value === 'number' && !isNaN(value)\r\n      case 'boolean':\r\n        return typeof value === 'boolean'\r\n      case 'integer':\r\n        return Number.isInteger(value)\r\n      case 'float':\r\n        return typeof value === 'number' && !isNaN(value) && !Number.isInteger(value)\r\n      case 'array':\r\n        return Array.isArray(value)\r\n      case 'object':\r\n        return typeof value === 'object' && value !== null && !Array.isArray(value)\r\n      case 'email':\r\n        return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(String(value))\r\n      case 'url':\r\n        try {\r\n          new URL(String(value))\r\n          return true\r\n        } catch {\r\n          return false\r\n        }\r\n      case 'date':\r\n        return value instanceof Date && !isNaN(value.getTime())\r\n      default:\r\n        return true\r\n    }\r\n  }\r\n}\r\n\r\n","<template>\r\n  <div :class=\"bem.b()\">\r\n    <label\r\n      v-if=\"label || $slots.label\"\r\n      :class=\"bem.e('label')\"\r\n      :style=\"labelStyle\"\r\n    >\r\n      <span v-if=\"isRequired\" :class=\"bem.e('label-asterisk')\">*</span>\r\n      <slot name=\"label\">{{ label }}</slot>\r\n    </label>\r\n    <div :class=\"bem.e('content')\">\r\n      <slot></slot>\r\n      <div\r\n        :class=\"[bem.e('error'), { [bem.em('error', 'hidden')]: !validateMessage || !showMessage }]\"\r\n      >\r\n        {{ validateMessage }}\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, inject, ref, provide, watch, onMounted, onBeforeUnmount } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { formItemProps, formItemEmits } from './form-item'\r\nimport type { FormRule } from './types'\r\nimport { AsyncValidator } from './async-validator'\r\n\r\ndefineOptions({\r\n  name: 'CFormItem'\r\n})\r\n\r\nconst bem = createNamespace('form-item')\r\nconst props = defineProps(formItemProps)\r\nconst emit = defineEmits(formItemEmits)\r\n\r\n// 注入 Form 组件提供的数据\r\nconst formContext = inject<{\r\n  model: Record<string, any>\r\n  rules: Record<string, FormRule | FormRule[]>\r\n  labelWidth: string | number\r\n  labelPosition: string\r\n  size: string\r\n  disabled: boolean\r\n  showMessage: boolean\r\n  validateField: (prop: string, callback?: (error?: string) => void) => void\r\n  clearValidate: (props?: string | string[]) => void\r\n  addField: (field: any) => void\r\n  removeField: (field: any) => void\r\n} | null>('formContext', null)\r\n\r\n// 校验错误信息\r\nconst validateMessage = ref('')\r\nconst validateState = ref<'validating' | 'success' | 'error'>('')\r\n\r\n// 当前字段的值\r\nconst currentValue = computed(() => {\r\n  if (!props.prop || !formContext || !formContext.model) {\r\n    return undefined\r\n  }\r\n  return formContext.model[props.prop]\r\n})\r\n\r\n// 是否必填\r\nconst isRequired = computed(() => {\r\n  if (props.required !== undefined) {\r\n    return props.required\r\n  }\r\n  \r\n  if (!formContext) {\r\n    return false\r\n  }\r\n  \r\n  const rules = getRules()\r\n  if (rules && rules.length > 0) {\r\n    return rules.some(rule => rule.required)\r\n  }\r\n  \r\n  return false\r\n})\r\n\r\n// 标签样式\r\nconst labelStyle = computed(() => {\r\n  const style: Record<string, string> = {}\r\n  \r\n  if (!formContext) {\r\n    return style\r\n  }\r\n  \r\n  if (formContext.labelPosition === 'top') {\r\n    return style\r\n  }\r\n  \r\n  const labelWidth = props.labelWidth || formContext.labelWidth\r\n  if (labelWidth) {\r\n    style.width = typeof labelWidth === 'number' ? `${labelWidth}px` : labelWidth\r\n  }\r\n  \r\n  return style\r\n})\r\n\r\n// 获取校验规则\r\nfunction getRules(): FormRule[] {\r\n  const rules: FormRule[] = []\r\n  \r\n  if (!formContext) {\r\n    return rules\r\n  }\r\n  \r\n  // 优先使用 form-item 的 rules\r\n  if (props.rules) {\r\n    const itemRules = Array.isArray(props.rules) ? props.rules : [props.rules]\r\n    rules.push(...itemRules)\r\n  } else if (props.prop && formContext.rules && formContext.rules[props.prop]) {\r\n    // 使用 form 的 rules\r\n    const formRules = formContext.rules[props.prop]\r\n    const formRulesArray = Array.isArray(formRules) ? formRules : [formRules]\r\n    rules.push(...formRulesArray)\r\n  }\r\n  \r\n  return rules\r\n}\r\n\r\n// 校验字段\r\nfunction validate(trigger?: string, callback?: (error?: string) => void): void {\r\n  const rules = getRules()\r\n  \r\n  if (!rules || rules.length === 0) {\r\n    callback && callback()\r\n    return\r\n  }\r\n  \r\n  // 过滤触发时机\r\n  const filteredRules = rules.filter(rule => {\r\n    if (!trigger) return true\r\n    if (!rule.trigger) return true\r\n    const triggers = Array.isArray(rule.trigger) ? rule.trigger : [rule.trigger]\r\n    return triggers.includes(trigger)\r\n  })\r\n  \r\n  if (filteredRules.length === 0) {\r\n    callback && callback()\r\n    return\r\n  }\r\n  \r\n  validateState.value = 'validating'\r\n  \r\n  const validator = new AsyncValidator(filteredRules, props.label || props.prop)\r\n  validator.validate(currentValue.value, (error) => {\r\n    if (error) {\r\n      validateMessage.value = error.message\r\n      validateState.value = 'error'\r\n      callback && callback(error.message)\r\n      emit('change', currentValue.value)\r\n    } else {\r\n      validateMessage.value = ''\r\n      validateState.value = 'success'\r\n      callback && callback()\r\n      emit('change', currentValue.value)\r\n    }\r\n  })\r\n}\r\n\r\n// 清空校验\r\nfunction clearValidate(): void {\r\n  validateMessage.value = ''\r\n  validateState.value = ''\r\n}\r\n\r\n// 重置字段\r\nfunction resetField(): void {\r\n  validateMessage.value = ''\r\n  validateState.value = ''\r\n  if (props.prop && formContext && formContext.model) {\r\n    formContext.model[props.prop] = undefined\r\n  }\r\n}\r\n\r\n// 暴露方法\r\ndefineExpose({\r\n  validate,\r\n  clearValidate,\r\n  resetField,\r\n  validateMessage,\r\n  validateState\r\n})\r\n\r\n// 注册到 Form 组件\r\nonMounted(() => {\r\n  if (formContext && formContext.addField) {\r\n    formContext.addField({\r\n      validate,\r\n      clearValidate,\r\n      resetField,\r\n      prop: props.prop\r\n    })\r\n  }\r\n})\r\n\r\nonBeforeUnmount(() => {\r\n  if (formContext && formContext.removeField) {\r\n    formContext.removeField({\r\n      prop: props.prop\r\n    })\r\n  }\r\n})\r\n\r\n// 监听值变化，触发 change 校验\r\nwatch(\r\n  () => currentValue.value,\r\n  () => {\r\n    // 只在有规则时进行校验，且已有错误时实时校验\r\n    const rules = getRules()\r\n    if (rules.length > 0 && validateState.value === 'error') {\r\n      validate('change')\r\n    }\r\n  },\r\n  { deep: true }\r\n)\r\n\r\n// 提供校验状态和方法给子组件\r\nprovide('formItem', {\r\n  validate,\r\n  clearValidate,\r\n  validateState: computed(() => validateState.value),\r\n  validateMessage: computed(() => validateMessage.value)\r\n})\r\n</script>\r\n\r\n","import type { App } from 'vue'\r\nimport { withInstall } from '@cuixingjian/cui-utils/install'\r\nimport type { SFCWithInstall } from \"../types\"\r\nimport _Form from './src/form.vue'\r\nimport _FormItem from './src/form-item.vue'\r\n\r\nexport const Form: SFCWithInstall<typeof _Form> = withInstall(_Form)\r\nexport const FormItem: SFCWithInstall<typeof _FormItem> = withInstall(_FormItem)\r\nexport default Form\r\n\r\nexport type { FormProps } from './src/form'\r\nexport type { FormItemProps } from './src/form-item'\r\nexport type { FormInstance } from './src/instance'\r\nexport type { FormRule, FormRules, ValidateCallback, ValidateError } from './src/types'\r\n\r\ndeclare module 'vue' {\r\n  export interface GlobalComponents {\r\n    CForm: typeof _Form\r\n    CFormItem: typeof _FormItem\r\n  }\r\n}\r\n\r\n","import type { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport type MenuMode = 'horizontal' | 'vertical' | 'inline'\r\nexport type MenuTrigger = 'hover' | 'click'\r\n\r\nexport const menuProps = {\r\n  // 当前激活的菜单项（受控模式使用 selectedKeys）\r\n  modelValue: {\r\n    type: [String, Number, Array] as PropType<string | number | Array<string | number>>,\r\n    default: ''\r\n  },\r\n  // 当前选中的菜单项 key 数组（受控模式）\r\n  selectedKeys: {\r\n    type: Array as PropType<Array<string | number>>,\r\n    default: undefined\r\n  },\r\n  // 初始选中的菜单项 key 数组（非受控模式）\r\n  defaultSelectedKeys: {\r\n    type: Array as PropType<Array<string | number>>,\r\n    default: () => []\r\n  },\r\n  // 当前展开的 SubMenu 菜单项 key 数组（受控模式）\r\n  openKeys: {\r\n    type: Array as PropType<Array<string | number>>,\r\n    default: undefined\r\n  },\r\n  // 初始展开的 SubMenu 菜单项 key 数组（非受控模式）\r\n  defaultOpenKeys: {\r\n    type: Array as PropType<Array<string | number>>,\r\n    default: () => []\r\n  },\r\n  // 菜单模式：水平、垂直或内嵌\r\n  mode: {\r\n    type: String as PropType<MenuMode>,\r\n    default: 'vertical'\r\n  },\r\n  // 是否折叠（仅垂直模式）\r\n  collapse: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 内嵌菜单是否收起（仅inline模式）\r\n  inlineCollapsed: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 内嵌模式的菜单缩进宽度\r\n  inlineIndent: {\r\n    type: Number,\r\n    default: 24\r\n  },\r\n  // 子菜单的触发方式\r\n  // 水平模式默认 hover，垂直模式默认 click\r\n  trigger: {\r\n    type: String as PropType<MenuTrigger>,\r\n    default: undefined\r\n  },\r\n  // 是否开启路由模式\r\n  router: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 菜单项的唯一标识字段名\r\n  uniqueOpened: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否允许多选\r\n  multiple: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 自定义展开图标\r\n  expandIcon: {\r\n    type: [String, Object, Function] as PropType<string | object | ((props: any) => any)>,\r\n    default: undefined\r\n  },\r\n  // 在子菜单展示之前就渲染进 DOM\r\n  forceSubMenuRender: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 菜单背景色\r\n  backgroundColor: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 文字颜色\r\n  textColor: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 激活文字颜色\r\n  activeTextColor: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 鼠标悬停背景色\r\n  hoverBackgroundColor: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 鼠标悬停文字颜色\r\n  hoverTextColor: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 激活菜单的背景色\r\n  activeBackgroundColor: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 子菜单的背景色\r\n  subMenuBackgroundColor: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 子菜单的文字颜色\r\n  subMenuTextColor: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 子菜单鼠标移入背景颜色\r\n  subMenuHoverBackgroundColor: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 子菜单鼠标移入文字颜色\r\n  subMenuHoverTextColor: {\r\n    type: String,\r\n    default: ''\r\n  }\r\n} as const\r\n\r\nexport type MenuProps = ExtractPropTypes<typeof menuProps>\r\n\r\nexport const menuEmits = {\r\n  'update:modelValue': (value: string | number | Array<string | number>) => true,\r\n  'update:selectedKeys': (keys: Array<string | number>) => true,\r\n  'update:openKeys': (keys: Array<string | number>) => true,\r\n  'select': (info: { key: string | number; selectedKeys: Array<string | number> }) => true,\r\n  'deselect': (info: { key: string | number; selectedKeys: Array<string | number> }) => true,\r\n  'openChange': (openKeys: Array<string | number>) => true,\r\n  'open': (index: string | number) => true,\r\n  'close': (index: string | number) => true\r\n}\r\n\r\nexport type MenuEmits = typeof menuEmits\r\n\r\n","<template>\r\n  <ul\r\n    :class=\"[\r\n      bem.b(),\r\n      bem.m(mode),\r\n      bem.is('collapse', collapse),\r\n      bem.is('inline-collapsed', inlineCollapsed)\r\n    ]\"\r\n    :style=\"menuStyle\"\r\n  >\r\n    <slot></slot>\r\n  </ul>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, computed, provide, watch } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { menuProps, menuEmits } from './menu'\r\nimport type { MenuContext } from './types'\r\n\r\ndefineOptions({ name: 'c-menu' })\r\n\r\nconst bem = createNamespace('menu')\r\nconst props = defineProps(menuProps)\r\nconst emit = defineEmits(menuEmits)\r\n\r\n// 当前激活的菜单项（兼容旧版v-model）\r\nconst activeIndex = ref<string | number | Array<string | number>>(\r\n  props.modelValue || (Array.isArray(props.defaultSelectedKeys) && props.defaultSelectedKeys.length > 0 \r\n    ? props.multiple ? props.defaultSelectedKeys : props.defaultSelectedKeys[0] \r\n    : '')\r\n)\r\n\r\n// 选中的菜单项 key 数组（受控或非受控）\r\nconst selectedKeys = ref<Array<string | number>>(\r\n  props.selectedKeys || props.defaultSelectedKeys || []\r\n)\r\n\r\n// 打开的 sub-menu 索引列表（受控或非受控）\r\nconst openedMenus = ref<Array<string | number>>(\r\n  props.openKeys || props.defaultOpenKeys || []\r\n)\r\n\r\n// 菜单样式\r\nconst menuStyle = computed(() => {\r\n  const style: Record<string, string> = {}\r\n  if (props.backgroundColor) {\r\n    style.backgroundColor = props.backgroundColor\r\n  }\r\n  if (props.textColor) {\r\n    style.color = props.textColor\r\n  }\r\n  // 添加CSS变量支持悬停颜色\r\n  if (props.hoverBackgroundColor) {\r\n    style['--menu-hover-bg-color'] = props.hoverBackgroundColor\r\n  }\r\n  if (props.hoverTextColor) {\r\n    style['--menu-hover-text-color'] = props.hoverTextColor\r\n  }\r\n  // 添加CSS变量支持激活背景色\r\n  if (props.activeBackgroundColor) {\r\n    style['--menu-active-bg-color'] = props.activeBackgroundColor\r\n  }\r\n  // 添加CSS变量支持子菜单颜色\r\n  if (props.subMenuBackgroundColor) {\r\n    style['--menu-submenu-bg-color'] = props.subMenuBackgroundColor\r\n  }\r\n  if (props.subMenuTextColor) {\r\n    style['--menu-submenu-text-color'] = props.subMenuTextColor\r\n  }\r\n  if (props.subMenuHoverBackgroundColor) {\r\n    style['--menu-submenu-hover-bg-color'] = props.subMenuHoverBackgroundColor\r\n  }\r\n  if (props.subMenuHoverTextColor) {\r\n    style['--menu-submenu-hover-text-color'] = props.subMenuHoverTextColor\r\n  }\r\n  // inline模式的缩进由子菜单处理，这里不需要设置\r\n  return style\r\n})\r\n\r\n// 监听 modelValue 变化（兼容旧版）\r\nwatch(\r\n  () => props.modelValue,\r\n  (val) => {\r\n    if (val !== undefined && val !== '') {\r\n      activeIndex.value = val\r\n      if (Array.isArray(val)) {\r\n        selectedKeys.value = val\r\n      } else {\r\n        selectedKeys.value = [val]\r\n      }\r\n    }\r\n  },\r\n  { immediate: true }\r\n)\r\n\r\n// 监听 selectedKeys 变化（受控模式）\r\nwatch(\r\n  () => props.selectedKeys,\r\n  (val) => {\r\n    if (val !== undefined) {\r\n      selectedKeys.value = [...val]\r\n      if (val.length === 1) {\r\n        activeIndex.value = val[0]\r\n      } else if (val.length > 1) {\r\n        activeIndex.value = val\r\n      } else {\r\n        activeIndex.value = ''\r\n      }\r\n    }\r\n  },\r\n  { immediate: true, deep: true }\r\n)\r\n\r\n// 监听 openKeys 变化（受控模式）\r\nwatch(\r\n  () => props.openKeys,\r\n  (val) => {\r\n    if (val !== undefined) {\r\n      openedMenus.value = [...val]\r\n    }\r\n  },\r\n  { immediate: true, deep: true }\r\n)\r\n\r\n// 判断索引是否激活（用于子菜单递归检查）\r\nconst isActive = (index: string | number): boolean => {\r\n  // 优先使用 selectedKeys\r\n  if (selectedKeys.value.length > 0) {\r\n    return selectedKeys.value.includes(index)\r\n  }\r\n  // 兼容旧版 activeIndex\r\n  if (Array.isArray(activeIndex.value)) {\r\n    return activeIndex.value.includes(index)\r\n  }\r\n  // 检查是否是子索引（如 '2-1' 包含 '2'）\r\n  if (typeof activeIndex.value === 'string' && typeof index === 'string') {\r\n    return activeIndex.value === index || activeIndex.value.startsWith(`${index}-`)\r\n  }\r\n  return activeIndex.value === index\r\n}\r\n\r\n// 判断索引是否被选中\r\nconst isSelected = (index: string | number): boolean => {\r\n  return selectedKeys.value.includes(index)\r\n}\r\n\r\n// 处理菜单项选择\r\nconst handleSelect = (index: string | number) => {\r\n  if (props.multiple) {\r\n    // 多选模式\r\n    if (selectedKeys.value.includes(index)) {\r\n      // 如果已选中，则取消选中\r\n      handleDeselect(index)\r\n      return\r\n    }\r\n    selectedKeys.value = [...selectedKeys.value, index]\r\n    activeIndex.value = [...selectedKeys.value]\r\n  } else {\r\n    // 单选模式\r\n    selectedKeys.value = [index]\r\n    activeIndex.value = index\r\n  }\r\n  \r\n  emit('update:modelValue', activeIndex.value)\r\n  emit('update:selectedKeys', selectedKeys.value)\r\n  emit('select', { key: index, selectedKeys: [...selectedKeys.value] })\r\n}\r\n\r\n// 处理菜单项取消选择\r\nconst handleDeselect = (index: string | number) => {\r\n  if (!props.multiple) return\r\n  \r\n  selectedKeys.value = selectedKeys.value.filter(k => k !== index)\r\n  activeIndex.value = selectedKeys.value.length === 1 \r\n    ? selectedKeys.value[0] \r\n    : selectedKeys.value.length > 1 \r\n    ? [...selectedKeys.value] \r\n    : ''\r\n  \r\n  emit('update:modelValue', activeIndex.value)\r\n  emit('update:selectedKeys', selectedKeys.value)\r\n  emit('deselect', { key: index, selectedKeys: [...selectedKeys.value] })\r\n}\r\n\r\n// 处理 sub-menu 打开\r\nconst handleSubMenuOpen = (index: string | number) => {\r\n  if (props.uniqueOpened) {\r\n    // 如果设置了唯一打开，先关闭其他\r\n    openedMenus.value = [index]\r\n  } else {\r\n    if (!openedMenus.value.includes(index)) {\r\n      openedMenus.value = [...openedMenus.value, index]\r\n    }\r\n  }\r\n  \r\n  // 受控模式需要触发更新\r\n  if (props.openKeys === undefined) {\r\n    emit('update:openKeys', openedMenus.value)\r\n  }\r\n  emit('openChange', [...openedMenus.value])\r\n  emit('open', index)\r\n}\r\n\r\n// 处理 sub-menu 关闭\r\nconst handleSubMenuClose = (index: string | number) => {\r\n  openedMenus.value = openedMenus.value.filter(i => i !== index)\r\n  \r\n  // 受控模式需要触发更新\r\n  if (props.openKeys === undefined) {\r\n    emit('update:openKeys', openedMenus.value)\r\n  }\r\n  emit('openChange', [...openedMenus.value])\r\n  emit('close', index)\r\n}\r\n\r\n// 计算实际的 trigger 值\r\n// 如果未指定，水平模式默认 hover，垂直和内嵌模式默认 click\r\nconst actualTrigger = computed(() => {\r\n  if (props.trigger) {\r\n    return props.trigger\r\n  }\r\n  return props.mode === 'horizontal' ? 'hover' : 'click'\r\n})\r\n\r\n// 计算实际的 mode（inline模式时，如果inlineCollapsed为true，则使用vertical模式）\r\nconst actualMode = computed(() => {\r\n  if (props.mode === 'inline' && props.inlineCollapsed) {\r\n    return 'vertical'\r\n  }\r\n  return props.mode\r\n})\r\n\r\n// 提供上下文给子组件\r\nprovide<MenuContext>('c-menu', {\r\n  activeIndex,\r\n  selectedKeys,\r\n  openedMenus,\r\n  mode: actualMode,\r\n  collapse: computed(() => props.collapse),\r\n  inlineCollapsed: computed(() => props.inlineCollapsed),\r\n  inlineIndent: computed(() => props.inlineIndent),\r\n  trigger: actualTrigger,\r\n  router: computed(() => props.router),\r\n  uniqueOpened: computed(() => props.uniqueOpened),\r\n  multiple: computed(() => props.multiple),\r\n  expandIcon: computed(() => props.expandIcon),\r\n  forceSubMenuRender: computed(() => props.forceSubMenuRender),\r\n  activeTextColor: computed(() => props.activeTextColor),\r\n  textColor: computed(() => props.textColor),\r\n  hoverBackgroundColor: computed(() => props.hoverBackgroundColor),\r\n  hoverTextColor: computed(() => props.hoverTextColor),\r\n  activeBackgroundColor: computed(() => props.activeBackgroundColor),\r\n  subMenuBackgroundColor: computed(() => props.subMenuBackgroundColor),\r\n  subMenuTextColor: computed(() => props.subMenuTextColor),\r\n  subMenuHoverBackgroundColor: computed(() => props.subMenuHoverBackgroundColor),\r\n  subMenuHoverTextColor: computed(() => props.subMenuHoverTextColor),\r\n  handleSelect,\r\n  handleDeselect,\r\n  handleSubMenuOpen,\r\n  handleSubMenuClose,\r\n  isActive,\r\n  isSelected\r\n})\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n\r\n\r\n","import type { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport const menuItemProps = {\r\n  // 菜单项的唯一标识\r\n  index: {\r\n    type: [String, Number] as PropType<string | number>,\r\n    required: true\r\n  },\r\n  // 是否禁用\r\n  disabled: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 路由跳转地址（router 模式下）\r\n  route: {\r\n    type: [String, Object] as PropType<string | object>,\r\n    default: undefined\r\n  }\r\n} as const\r\n\r\nexport type MenuItemProps = ExtractPropTypes<typeof menuItemProps>\r\n\r\nexport const menuItemEmits = {\r\n  click: (evt: MouseEvent) => evt instanceof MouseEvent\r\n}\r\n\r\nexport type MenuItemEmits = typeof menuItemEmits\r\n\r\n","<template>\r\n  <li\r\n    :class=\"[\r\n      bem.e('item'),\r\n      bem.is('active', isActive),\r\n      bem.is('selected', isSelected),\r\n      bem.is('disabled', disabled)\r\n    ]\"\r\n    :style=\"itemStyle\"\r\n    @click=\"handleClick\"\r\n  >\r\n    <slot></slot>\r\n  </li>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, inject, getCurrentInstance } from 'vue'\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { menuItemProps, menuItemEmits } from './menu-item'\r\nimport type { MenuContext } from './types'\r\n\r\ndefineOptions({ name: 'c-menu-item' })\r\n\r\nconst bem = createNamespace('menu')\r\nconst props = defineProps(menuItemProps)\r\nconst emit = defineEmits(menuItemEmits)\r\n\r\nconst ctx = inject<MenuContext | null>('c-menu', null)\r\nconst instance = getCurrentInstance()\r\n\r\n// 判断是否激活\r\nconst isActive = computed(() => {\r\n  if (!ctx) return false\r\n  return ctx.isActive(props.index)\r\n})\r\n\r\n// 判断是否被选中（用于多选模式）\r\nconst isSelected = computed(() => {\r\n  if (!ctx) return false\r\n  return ctx.isSelected(props.index)\r\n})\r\n\r\n// 菜单项样式\r\nconst itemStyle = computed(() => {\r\n  const style: Record<string, string> = {}\r\n  if (isActive.value && ctx?.activeTextColor.value) {\r\n    style.color = ctx.activeTextColor.value\r\n  } else if (ctx?.textColor.value) {\r\n    style.color = ctx.textColor.value\r\n  }\r\n  return style\r\n})\r\n\r\n// 处理点击事件\r\nconst handleClick = async (evt: MouseEvent) => {\r\n  if (props.disabled) {\r\n    evt.preventDefault()\r\n    return\r\n  }\r\n  \r\n  emit('click', evt)\r\n  \r\n  if (ctx) {\r\n    ctx.handleSelect(props.index)\r\n    \r\n    // 路由模式处理\r\n    if (ctx.router.value && props.route) {\r\n      const router = instance?.appContext.config.globalProperties.$router\r\n      if (router) {\r\n        try {\r\n          if (typeof props.route === 'string') {\r\n            await router.push(props.route)\r\n          } else {\r\n            await router.push(props.route)\r\n          }\r\n        } catch (error) {\r\n          console.warn('Menu router navigation failed:', error)\r\n        }\r\n      }\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n\r\n","import type { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport const subMenuProps = {\r\n  // 子菜单的唯一标识\r\n  index: {\r\n    type: [String, Number] as PropType<string | number>,\r\n    required: true\r\n  },\r\n  // 子菜单标题\r\n  title: {\r\n    type: String,\r\n    default: ''\r\n  },\r\n  // 是否禁用\r\n  disabled: {\r\n    type: Boolean,\r\n    default: false\r\n  },\r\n  // 是否默认展开\r\n  defaultOpen: {\r\n    type: Boolean,\r\n    default: false\r\n  }\r\n} as const\r\n\r\nexport type SubMenuProps = ExtractPropTypes<typeof subMenuProps>\r\n\r\nexport const subMenuEmits = {\r\n  open: (index: string | number) => true,\r\n  close: (index: string | number) => true\r\n}\r\n\r\nexport type SubMenuEmits = typeof subMenuEmits\r\n\r\n","<template>\r\n  <li\r\n    :class=\"[\r\n      bem.e('submenu'),\r\n      bem.is('active', isActive),\r\n      bem.is('opened', isOpened),\r\n      bem.is('disabled', disabled),\r\n      bem.is('inline', ctx?.mode.value === 'inline'),\r\n    ]\"\r\n    @mouseenter=\"handleSubMenuContainerEnter\"\r\n    @mouseleave=\"handleSubMenuContainerLeave\"\r\n  >\r\n    <div\r\n      :class=\"bem.e('submenu-title')\"\r\n      :style=\"titleStyle\"\r\n      @click=\"handleTitleClick\"\r\n    >\r\n      <slot name=\"title\">\r\n        <span>{{ title }}</span>\r\n      </slot>\r\n      <div v-if=\"!isCollapsed\" :class=\"bem.e('submenu-icon')\">\r\n        <slot name=\"expandIcon\">\r\n          <i\r\n            v-if=\"!customExpandIcon\"\r\n            :class=\"[bem.e('submenu-icon-inner'), bem.is('opened', isOpened)]\"\r\n          >\r\n            <svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\r\n              <path\r\n                fill=\"currentColor\"\r\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.24a30.592 30.592 0 0 0 42.752 0l340.288-331.712a29.12 29.12 0 0 0 0-41.6 30.592 30.592 0 0 0-40.832 0z\"\r\n              ></path>\r\n            </svg>\r\n          </i>\r\n          <component\r\n            v-else\r\n            :is=\"customExpandIcon\"\r\n            :isSubMenu=\"true\"\r\n            :isOpened=\"isOpened\"\r\n          />\r\n        </slot>\r\n      </div>\r\n    </div>\r\n    <transition name=\"submenu\">\r\n      <ul\r\n        v-show=\"shouldRender && (isOpened || forceRender)\"\r\n        :class=\"bem.e('submenu-list')\"\r\n        :style=\"subMenuListStyle\"\r\n        @mouseenter=\"handleSubMenuMouseEnter\"\r\n        @mouseleave=\"handleSubMenuMouseLeave\"\r\n      >\r\n        <slot></slot>\r\n      </ul>\r\n    </transition>\r\n  </li>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, inject, ref, onMounted, watch, onBeforeUnmount } from \"vue\";\r\nimport { createNamespace } from \"@cuixingjian/cui-utils/create\";\r\nimport { subMenuProps, subMenuEmits } from \"./sub-menu\";\r\nimport type { MenuContext } from \"./types\";\r\n\r\ndefineOptions({ name: \"c-sub-menu\" });\r\n\r\nconst bem = createNamespace(\"menu\");\r\nconst props = defineProps(subMenuProps);\r\nconst emit = defineEmits(subMenuEmits);\r\n\r\nconst ctx = inject<MenuContext | null>(\"c-menu\", null);\r\n\r\n// 是否打开\r\nconst isOpened = ref(props.defaultOpen);\r\n\r\n// 是否折叠\r\nconst isCollapsed = computed(() => ctx?.collapse.value || false);\r\n\r\n// 自定义展开图标\r\nconst customExpandIcon = computed(() => ctx?.expandIcon.value);\r\n\r\n// 是否强制渲染\r\nconst forceRender = computed(() => ctx?.forceSubMenuRender.value || false);\r\n\r\n// 是否应该渲染（用于forceSubMenuRender）\r\nconst shouldRender = computed(() => {\r\n  if (forceRender.value) return true;\r\n  return isOpened.value;\r\n});\r\n\r\n// 子菜单列表样式（用于inline模式的缩进）\r\nconst subMenuListStyle = computed(() => {\r\n  const style: Record<string, string> = {};\r\n  // inline模式的缩进由CSS处理，这里不需要设置\r\n  return style;\r\n});\r\n\r\n// 鼠标离开定时器（用于水平模式延迟关闭）\r\nlet mouseLeaveTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n// 清理定时器\r\nconst clearTimer = () => {\r\n  if (mouseLeaveTimer) {\r\n    clearTimeout(mouseLeaveTimer);\r\n    mouseLeaveTimer = null;\r\n  }\r\n};\r\n\r\n// 判断是否激活（递归检查子菜单中是否有激活项）\r\nconst isActive = computed(() => {\r\n  if (!ctx) return false;\r\n  // 使用菜单上下文提供的 isActive 方法，支持递归检查\r\n  return ctx.isActive(props.index);\r\n});\r\n\r\n// 标题样式\r\nconst titleStyle = computed(() => {\r\n  const style: Record<string, string> = {};\r\n  if (isActive.value && ctx?.activeTextColor.value) {\r\n    style.color = ctx.activeTextColor.value;\r\n  } else if (ctx?.textColor.value) {\r\n    style.color = ctx.textColor.value;\r\n  }\r\n  return style;\r\n});\r\n\r\n// 处理标题点击\r\nconst handleTitleClick = () => {\r\n  if (props.disabled) return;\r\n\r\n  if (ctx?.trigger.value === \"click\" || ctx?.mode.value === \"inline\") {\r\n    // click模式或inline模式都支持点击切换\r\n    toggle();\r\n  } else if (ctx?.mode.value === \"vertical\" && ctx?.trigger.value === \"hover\") {\r\n    // 垂直模式下 hover 触发也支持点击切换\r\n    toggle();\r\n  }\r\n};\r\n\r\n// 处理子菜单容器鼠标进入（整个 li 区域）\r\nconst handleSubMenuContainerEnter = () => {\r\n  if (props.disabled) return;\r\n\r\n  // 清除关闭定时器\r\n  clearTimer();\r\n\r\n  // inline模式不支持hover触发\r\n  if (ctx?.mode.value === \"inline\") return;\r\n\r\n  if (ctx?.trigger.value === \"hover\") {\r\n    // 水平模式和垂直模式都支持 hover\r\n    if (!isOpened.value) {\r\n      open();\r\n    }\r\n  }\r\n};\r\n\r\n// 处理子菜单容器鼠标离开（整个 li 区域）\r\nconst handleSubMenuContainerLeave = () => {\r\n  if (props.disabled) return;\r\n\r\n  // inline模式不支持hover触发\r\n  if (ctx?.mode.value === \"inline\") return;\r\n\r\n  if (ctx?.trigger.value === \"hover\" && ctx?.mode.value === \"horizontal\") {\r\n    // 水平模式下延迟关闭，提升用户体验\r\n    mouseLeaveTimer = setTimeout(() => {\r\n      if (isOpened.value) {\r\n        close();\r\n      }\r\n    }, 200);\r\n  }\r\n};\r\n\r\n// 处理子菜单列表鼠标进入（防止鼠标移动到子菜单时关闭）\r\nconst handleSubMenuMouseEnter = () => {\r\n  // 清除关闭定时器，保持菜单打开\r\n  clearTimer();\r\n};\r\n\r\n// 处理子菜单列表鼠标离开\r\nconst handleSubMenuMouseLeave = () => {\r\n  // 这个事件会在容器离开事件之后触发，所以不需要额外处理\r\n  // 关闭逻辑已经在 handleSubMenuContainerLeave 中处理\r\n};\r\n\r\n// 打开子菜单\r\nconst open = () => {\r\n  if (isOpened.value) return;\r\n  isOpened.value = true;\r\n  if (ctx) {\r\n    ctx.handleSubMenuOpen(props.index);\r\n  }\r\n  emit(\"open\", props.index);\r\n};\r\n\r\n// 关闭子菜单\r\nconst close = () => {\r\n  if (!isOpened.value) return;\r\n  isOpened.value = false;\r\n  if (ctx) {\r\n    ctx.handleSubMenuClose(props.index);\r\n  }\r\n  emit(\"close\", props.index);\r\n};\r\n\r\n// 切换子菜单\r\nconst toggle = () => {\r\n  if (isOpened.value) {\r\n    close();\r\n  } else {\r\n    open();\r\n  }\r\n};\r\n\r\n// 监听 openedMenus 变化（用于 uniqueOpened 模式）\r\nwatch(\r\n  () => ctx?.openedMenus.value,\r\n  (openedMenus) => {\r\n    if (!ctx) return;\r\n    if (openedMenus && openedMenus.includes(props.index)) {\r\n      if (!isOpened.value) {\r\n        isOpened.value = true;\r\n      }\r\n    } else {\r\n      if (isOpened.value && ctx.uniqueOpened.value) {\r\n        isOpened.value = false;\r\n      }\r\n    }\r\n  },\r\n  { immediate: true }\r\n);\r\n\r\n// 监听激活状态变化，自动展开包含激活项的子菜单\r\nwatch(\r\n  () => isActive.value,\r\n  (active) => {\r\n    if (active && !isOpened.value && ctx?.mode.value === \"vertical\") {\r\n      // 垂直模式下，如果子菜单中有激活项，自动展开\r\n      open();\r\n    }\r\n  },\r\n  { immediate: true }\r\n);\r\n\r\nonMounted(() => {\r\n  if (props.defaultOpen && ctx) {\r\n    ctx.handleSubMenuOpen(props.index);\r\n  }\r\n});\r\n\r\nonBeforeUnmount(() => {\r\n  clearTimer();\r\n});\r\n</script>\r\n\r\n<style scoped>\r\n/* 动画样式已移至全局 menu.scss */\r\n</style>\r\n","import type { ExtractPropTypes } from 'vue'\r\n\r\nexport const menuItemGroupProps = {\r\n  // 分组标题\r\n  title: {\r\n    type: String,\r\n    default: ''\r\n  }\r\n} as const\r\n\r\nexport type MenuItemGroupProps = ExtractPropTypes<typeof menuItemGroupProps>\r\n\r\n","<template>\r\n  <li :class=\"bem.e('item-group')\">\r\n    <div :class=\"bem.e('item-group-title')\">\r\n      <slot name=\"title\">{{ title }}</slot>\r\n    </div>\r\n    <ul :class=\"bem.e('item-group-list')\">\r\n      <slot></slot>\r\n    </ul>\r\n  </li>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\nimport { menuItemGroupProps } from './menu-item-group'\r\n\r\ndefineOptions({ name: 'c-menu-item-group' })\r\n\r\nconst bem = createNamespace('menu')\r\nconst props = defineProps(menuItemGroupProps)\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n\r\n","<template>\r\n  <li :class=\"bem.e('divider')\" role=\"separator\"></li>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { createNamespace } from '@cuixingjian/cui-utils/create'\r\n\r\ndefineOptions({ name: 'c-menu-divider' })\r\n\r\nconst bem = createNamespace('menu')\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n\r\n","import { withInstall } from \"@cuixingjian/cui-utils/install\";\r\nimport type { SFCWithInstall } from \"../types\";\r\nimport _Menu from \"./src/menu.vue\";\r\nimport _MenuItem from \"./src/menu-item.vue\";\r\nimport _SubMenu from \"./src/sub-menu.vue\";\r\nimport _MenuItemGroup from \"./src/menu-item-group.vue\";\r\nimport _MenuDivider from \"./src/menu-divider.vue\";\r\n\r\nexport * from \"./src/menu\";\r\nexport * from \"./src/menu-item\";\r\nexport * from \"./src/sub-menu\";\r\nexport * from \"./src/menu-item-group\";\r\nexport * from \"./src/types\";\r\n\r\nconst Menu: SFCWithInstall<typeof _Menu> = withInstall(_Menu);\r\nconst MenuItem: SFCWithInstall<typeof _MenuItem> = withInstall(_MenuItem);\r\nconst SubMenu: SFCWithInstall<typeof _SubMenu> = withInstall(_SubMenu);\r\nconst MenuItemGroup: SFCWithInstall<typeof _MenuItemGroup> = withInstall(_MenuItemGroup);\r\nconst MenuDivider: SFCWithInstall<typeof _MenuDivider> = withInstall(_MenuDivider);\r\n\r\n// 添加静态属性，类似 Ant Design 的 Menu.ItemGroup 和 Menu.Divider\r\n(Menu as any).ItemGroup = MenuItemGroup;\r\n(Menu as any).Divider = MenuDivider;\r\n\r\nexport { MenuItem, SubMenu, MenuItemGroup, MenuDivider };\r\nexport default Menu;\r\n\r\n// 在 vue 中方便提示\r\ndeclare module \"vue\" {\r\n  export interface GlobalComponents {\r\n    CMenu: typeof Menu;\r\n    CMenuItem: typeof MenuItem;\r\n    CSubMenu: typeof SubMenu;\r\n    CMenuItemGroup: typeof MenuItemGroup;\r\n    CMenuDivider: typeof MenuDivider;\r\n  }\r\n}\r\n\r\n","import { makeInstaller } from \"./make-installer\"\r\n\r\n// 导入所有组件\r\nimport {\r\n  Button,\r\n  Icon,\r\n  Carousel,\r\n  CarouselItem,\r\n  Select,\r\n  TreeSelect,\r\n  Row,\r\n  Col,\r\n  Watermark,\r\n  Input,\r\n  Color,\r\n  ColorPicker,\r\n  Pagination,\r\n  Table,\r\n  TableColumn,\r\n  Breadcrumb,\r\n  BreadcrumbItem,\r\n  Switch,\r\n  Skeleton,\r\n  DatePicker,\r\n  DateRangePicker,\r\n  BackTop,\r\n  Tree,\r\n  Tabs,\r\n  TabPane,\r\n  Tooltip,\r\n  Checkbox,\r\n  CheckboxGroup,\r\n  Radio,\r\n  RadioGroup,\r\n  CMessage\r\n} from \"./components\"\r\n\r\n// 创建组件列表\r\nconst components = [\r\n  Button,\r\n  Icon,\r\n  Carousel,\r\n  CarouselItem,\r\n  Select,\r\n  TreeSelect,\r\n  Row,\r\n  Col,\r\n  Watermark,\r\n  Input,\r\n  Color,\r\n  ColorPicker,\r\n  Pagination,\r\n  Table,\r\n  TableColumn,\r\n  Breadcrumb,\r\n  BreadcrumbItem,\r\n  Switch,\r\n  Skeleton,\r\n  DatePicker,\r\n  DateRangePicker,\r\n  BackTop,\r\n  Tree,\r\n  Tabs,\r\n  TabPane,\r\n  Tooltip,\r\n  Checkbox,\r\n  CheckboxGroup,\r\n  Radio,\r\n  RadioGroup,\r\n  CMessage\r\n]\r\n\r\n// 创建默认安装器\r\nexport default makeInstaller(components)\r\n","var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\n\nexport {\n  __spreadValues\n};\n","import {\n  __spreadValues\n} from \"./chunk-5JBD5THX.js\";\n\n// function/merge.ts\nfunction isPlainObject(val) {\n  if (val === null || typeof val !== \"object\") return false;\n  const proto = Object.getPrototypeOf(val);\n  return proto === Object.prototype || proto === null;\n}\nfunction merge(target, source, options = {}) {\n  const { deep = true, arrayStrategy = \"replace\", immutable = true } = options;\n  const out = immutable ? __spreadValues({}, target) : target;\n  const keys = Reflect.ownKeys(source);\n  for (const key of keys) {\n    const sVal = source[key];\n    const tVal = out[key];\n    if (Array.isArray(sVal)) {\n      if (arrayStrategy === \"concat\") {\n        const base = Array.isArray(tVal) ? tVal.slice() : [];\n        out[key] = base.concat(sVal.map((v) => isPlainObject(v) ? __spreadValues({}, v) : v));\n      } else {\n        ;\n        out[key] = sVal.map((v) => isPlainObject(v) ? __spreadValues({}, v) : v);\n      }\n      continue;\n    }\n    if (deep && isPlainObject(sVal) && isPlainObject(tVal)) {\n      ;\n      out[key] = merge(__spreadValues({}, tVal), sVal, { deep, arrayStrategy, immutable: false });\n      continue;\n    }\n    ;\n    out[key] = sVal;\n  }\n  return out;\n}\nvar merge_default = merge;\n\nexport {\n  merge,\n  merge_default\n};\n","// function/throttle.ts\nfunction throttle(fn, wait = 200, options = {}) {\n  let timer = null;\n  let lastInvokeTime = 0;\n  let lastArgs = null;\n  let lastThis = null;\n  let trailingPending = false;\n  const { immediate = false } = options;\n  const invoke = () => {\n    if (lastArgs) {\n      fn.apply(lastThis, lastArgs);\n      lastArgs = null;\n      lastThis = null;\n    }\n  };\n  const throttled = function(...args) {\n    const now = Date.now();\n    lastArgs = args;\n    lastThis = this;\n    if (immediate && (lastInvokeTime === 0 || now - lastInvokeTime >= wait)) {\n      fn.apply(this, args);\n      lastInvokeTime = now;\n      trailingPending = false;\n      if (!timer) {\n        timer = setTimeout(() => {\n          if (trailingPending) {\n            invoke();\n            lastInvokeTime = Date.now();\n          }\n          timer = null;\n          trailingPending = false;\n        }, wait);\n      }\n      return;\n    }\n    trailingPending = true;\n    if (!timer) {\n      const elapsed = lastInvokeTime ? now - lastInvokeTime : 0;\n      const remaining = wait - elapsed;\n      const delay = remaining > 0 ? remaining : wait;\n      timer = setTimeout(() => {\n        invoke();\n        lastInvokeTime = Date.now();\n        timer = null;\n        trailingPending = false;\n      }, delay);\n    }\n  };\n  throttled.cancel = () => {\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n    trailingPending = false;\n    lastArgs = null;\n    lastThis = null;\n  };\n  throttled.flush = () => {\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n    if (trailingPending || lastArgs) {\n      invoke();\n      lastInvokeTime = Date.now();\n      trailingPending = false;\n    }\n  };\n  return throttled;\n}\nvar throttle_default = throttle;\n\nexport {\n  throttle,\n  throttle_default\n};\n","// function/uniqueBy.ts\nfunction getByPath(obj, path) {\n  const parts = path.split(\".\");\n  let cur = obj;\n  for (const p of parts) {\n    if (cur == null) return void 0;\n    cur = cur[p];\n  }\n  return cur;\n}\nfunction uniqueBy(list, selector, options = {}) {\n  const { keep = \"first\" } = options;\n  if (!Array.isArray(list) || list.length === 0) return [];\n  const map = /* @__PURE__ */ new Map();\n  const makeKey = (item) => {\n    if (typeof selector === \"function\") {\n      return selector(item);\n    }\n    if (typeof selector === \"string\") {\n      return getByPath(item, selector);\n    }\n    if (Array.isArray(selector)) {\n      return selector.map((k) => getByPath(item, k)).join(\"|\");\n    }\n    if (item === null) return item;\n    const t = typeof item;\n    if (t === \"object\") return JSON.stringify(item);\n    return item;\n  };\n  for (const it of list) {\n    const key = makeKey(it);\n    if (!map.has(key)) {\n      map.set(key, it);\n    } else if (keep === \"last\") {\n      map.set(key, it);\n    }\n  }\n  return Array.from(map.values());\n}\nvar uniqueBy_default = uniqueBy;\n\nexport {\n  uniqueBy,\n  uniqueBy_default\n};\n","// install.ts\nvar withInstall = (main, extra) => {\n  main.install = (app) => {\n    for (const comp of [main, ...Object.values(extra != null ? extra : {})]) {\n      app.component(comp.name, comp);\n    }\n  };\n  if (extra) {\n    for (const [key, comp] of Object.entries(extra)) {\n      main[key] = comp;\n    }\n  }\n  return main;\n};\nvar withInstallFunction = (fn, name) => {\n  fn.install = (app) => {\n    fn._context = app._context;\n    app.config.globalProperties[name] = fn;\n  };\n  return fn;\n};\nvar withInstallDirective = (directive, name) => {\n  directive.install = (app) => {\n    app.directive(name, directive);\n  };\n  return directive;\n};\n\nexport {\n  withInstall,\n  withInstallFunction,\n  withInstallDirective\n};\n","import {\n  withInstallDirective\n} from \"./chunk-HURRAOO3.js\";\nimport {\n  __spreadValues\n} from \"./chunk-5JBD5THX.js\";\n\n// directives/lazy.ts\nvar LAZY_SYMBOL = Symbol(\"cui-v-lazy\");\nfunction resolveOptions(el, value) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;\n  const opts = typeof value === \"string\" ? { src: value } : value || {};\n  const srcAttr = (_a = opts.srcAttr) != null ? _a : \"data-src\";\n  const srcsetAttr = (_b = opts.srcsetAttr) != null ? _b : \"data-srcset\";\n  const bgAttr = (_c = opts.bgAttr) != null ? _c : \"data-bg\";\n  return {\n    root: (_d = opts.root) != null ? _d : null,\n    rootMargin: (_e = opts.rootMargin) != null ? _e : \"0px\",\n    threshold: (_f = opts.threshold) != null ? _f : 0,\n    src: (_h = (_g = opts.src) != null ? _g : el.getAttribute(srcAttr)) != null ? _h : void 0,\n    srcset: (_j = (_i = opts.srcset) != null ? _i : el.getAttribute(srcsetAttr)) != null ? _j : void 0,\n    bg: (_l = (_k = opts.bg) != null ? _k : el.getAttribute(bgAttr)) != null ? _l : void 0,\n    srcAttr,\n    srcsetAttr,\n    bgAttr,\n    beforeLoad: opts.beforeLoad,\n    onLoad: opts.onLoad,\n    onError: opts.onError,\n    once: (_m = opts.once) != null ? _m : true\n  };\n}\nfunction load(el, options) {\n  var _a, _b, _c;\n  try {\n    (_a = options.beforeLoad) == null ? void 0 : _a.call(options, el);\n    const { src, srcset, bg, srcAttr, srcsetAttr, bgAttr } = options;\n    if (srcset && (el instanceof HTMLImageElement || el.tagName === \"SOURCE\")) {\n      ;\n      el.srcset = srcset;\n    }\n    if (src && el instanceof HTMLImageElement) {\n      el.src = src;\n    } else if (bg) {\n      ;\n      el.style.backgroundImage = `url(\"${bg}\")`;\n    }\n    if (src && srcAttr) el.removeAttribute(srcAttr);\n    if (srcset && srcsetAttr) el.removeAttribute(srcsetAttr);\n    if (bg && bgAttr) el.removeAttribute(bgAttr);\n    (_b = options.onLoad) == null ? void 0 : _b.call(options, el);\n  } catch (e) {\n    (_c = options.onError) == null ? void 0 : _c.call(options, el, e);\n  }\n}\nvar lazy = {\n  mounted(el, binding) {\n    var _a, _b, _c;\n    const opts = resolveOptions(el, binding.value);\n    const state = {\n      io: null,\n      options: __spreadValues({\n        srcAttr: opts.srcAttr,\n        srcsetAttr: opts.srcsetAttr,\n        bgAttr: opts.bgAttr\n      }, opts)\n    };\n    if (!(\"IntersectionObserver\" in window)) {\n      load(el, state.options);\n      el[LAZY_SYMBOL] = state;\n      return;\n    }\n    state.io = new IntersectionObserver(\n      (entries) => {\n        entries.forEach((entry) => {\n          var _a2;\n          if (entry.isIntersecting) {\n            load(el, state.options);\n            if (state.options.once) (_a2 = state.io) == null ? void 0 : _a2.unobserve(el);\n          }\n        });\n      },\n      {\n        root: (_a = state.options.root) != null ? _a : null,\n        rootMargin: (_b = state.options.rootMargin) != null ? _b : \"0px\",\n        threshold: (_c = state.options.threshold) != null ? _c : 0\n      }\n    );\n    state.io.observe(el);\n    el[LAZY_SYMBOL] = state;\n  },\n  updated(el, binding) {\n    var _a, _b, _c, _d, _e;\n    const prev = el[LAZY_SYMBOL];\n    (_a = prev == null ? void 0 : prev.io) == null ? void 0 : _a.unobserve(el);\n    const opts = resolveOptions(el, binding.value);\n    const state = {\n      io: (_b = prev == null ? void 0 : prev.io) != null ? _b : null,\n      options: __spreadValues({\n        srcAttr: opts.srcAttr,\n        srcsetAttr: opts.srcsetAttr,\n        bgAttr: opts.bgAttr\n      }, opts)\n    };\n    if (!(\"IntersectionObserver\" in window)) {\n      load(el, state.options);\n      el[LAZY_SYMBOL] = state;\n      return;\n    }\n    if (!state.io) {\n      state.io = new IntersectionObserver(\n        (entries) => {\n          entries.forEach((entry) => {\n            var _a2;\n            if (entry.isIntersecting) {\n              load(el, state.options);\n              if (state.options.once) (_a2 = state.io) == null ? void 0 : _a2.unobserve(el);\n            }\n          });\n        },\n        {\n          root: (_c = state.options.root) != null ? _c : null,\n          rootMargin: (_d = state.options.rootMargin) != null ? _d : \"0px\",\n          threshold: (_e = state.options.threshold) != null ? _e : 0\n        }\n      );\n    }\n    state.io.observe(el);\n    el[LAZY_SYMBOL] = state;\n  },\n  unmounted(el) {\n    var _a;\n    const state = el[LAZY_SYMBOL];\n    (_a = state == null ? void 0 : state.io) == null ? void 0 : _a.disconnect();\n    if (state) delete el[LAZY_SYMBOL];\n  }\n};\nvar VLazy = withInstallDirective(lazy, \"lazy\");\nvar lazy_default = VLazy;\n\nexport {\n  VLazy,\n  lazy_default\n};\n","import {\n  withInstallDirective\n} from \"./chunk-HURRAOO3.js\";\nimport {\n  __spreadValues\n} from \"./chunk-5JBD5THX.js\";\n\n// directives/permission.ts\nvar PERMISSION_SYMBOL = Symbol(\"cui-v-permission\");\nfunction resolveOptions(value) {\n  if (typeof value === \"string\" || Array.isArray(value)) {\n    return { value };\n  }\n  return value || {};\n}\nfunction hasPermission(perm, options) {\n  if (options.check) return !!options.check(perm);\n  const list = options.permissions || [];\n  return list.includes(perm);\n}\nfunction evaluateAllowed(options) {\n  var _a;\n  const strategy = (_a = options.strategy) != null ? _a : \"any\";\n  const value = options.value;\n  const perms = Array.isArray(value) ? value : value ? [value] : [];\n  if (perms.length === 0) {\n    return true;\n  }\n  const results = perms.map((p) => hasPermission(p, options));\n  switch (strategy) {\n    case \"all\":\n      return results.every(Boolean);\n    case \"not\":\n      return results.every((r) => !r);\n    case \"any\":\n    default:\n      return results.some(Boolean);\n  }\n}\nfunction applyHide(el, state, allowed) {\n  if (allowed) {\n    if (state.prevDisplay !== null) {\n      el.style.display = state.prevDisplay;\n      state.prevDisplay = null;\n    } else {\n      el.style.removeProperty(\"display\");\n    }\n  } else {\n    if (state.prevDisplay === null) {\n      state.prevDisplay = el.style.display || \"\";\n    }\n    el.style.display = \"none\";\n  }\n}\nfunction applyDisable(el, state, allowed) {\n  if (allowed) {\n    if (state.disabledApplied) {\n      el.removeAttribute(\"aria-disabled\");\n      el.style.pointerEvents = \"\";\n      el.style.userSelect = \"\";\n      const name = el.tagName.toLowerCase();\n      if (name === \"input\" || name === \"textarea\" || name === \"select\" || name === \"button\") {\n        ;\n        el.disabled = false;\n      } else {\n        const tabindex = el.getAttribute(\"data-prev-tabindex\");\n        if (tabindex !== null) {\n          el.setAttribute(\"tabindex\", tabindex);\n          el.removeAttribute(\"data-prev-tabindex\");\n        } else {\n          el.removeAttribute(\"tabindex\");\n        }\n      }\n      state.disabledApplied = false;\n    }\n  } else {\n    if (!state.disabledApplied) {\n      el.setAttribute(\"aria-disabled\", \"true\");\n      el.style.pointerEvents = \"none\";\n      el.style.userSelect = \"none\";\n      const name = el.tagName.toLowerCase();\n      if (name === \"input\" || name === \"textarea\" || name === \"select\" || name === \"button\") {\n        ;\n        el.disabled = true;\n      } else {\n        const prevTab = el.getAttribute(\"tabindex\");\n        if (prevTab !== null) el.setAttribute(\"data-prev-tabindex\", prevTab);\n        el.setAttribute(\"tabindex\", \"-1\");\n      }\n      state.disabledApplied = true;\n    }\n  }\n}\nfunction applyRemove(el, state, allowed) {\n  const parent = el.parentNode;\n  if (allowed) {\n    if (state.placeholder && parent) {\n      parent.insertBefore(el, state.placeholder);\n      parent.removeChild(state.placeholder);\n      state.placeholder = null;\n    }\n  } else {\n    if (!state.placeholder && parent) {\n      state.placeholder = document.createComment(\"cui-permission-placeholder\");\n      parent.insertBefore(state.placeholder, el.nextSibling);\n      parent.removeChild(el);\n    }\n  }\n}\nfunction applyMode(el, state, allowed) {\n  switch (state.options.mode) {\n    case \"remove\":\n      applyRemove(el, state, allowed);\n      break;\n    case \"disable\":\n      applyDisable(el, state, allowed);\n      break;\n    case \"hide\":\n    default:\n      applyHide(el, state, allowed);\n      break;\n  }\n}\nvar permission = {\n  mounted(el, binding) {\n    var _a, _b, _c, _d, _e;\n    const opts = resolveOptions(binding.value);\n    const options = __spreadValues({\n      strategy: (_a = opts.strategy) != null ? _a : \"any\",\n      mode: (_b = opts.mode) != null ? _b : \"hide\",\n      enabled: (_c = opts.enabled) != null ? _c : true\n    }, opts);\n    const state = {\n      options,\n      placeholder: null,\n      prevDisplay: null,\n      disabledApplied: false\n    };\n    const allowed = options.enabled ? evaluateAllowed(options) : true;\n    applyMode(el, state, allowed);\n    if (allowed) (_d = options.onGranted) == null ? void 0 : _d.call(options, el);\n    else (_e = options.onDenied) == null ? void 0 : _e.call(options, el);\n    el[PERMISSION_SYMBOL] = state;\n  },\n  updated(el, binding) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n    const prev = el[PERMISSION_SYMBOL];\n    const opts = resolveOptions(binding.value);\n    const options = __spreadValues(__spreadValues({\n      strategy: (_b = opts.strategy) != null ? _b : (_a = prev == null ? void 0 : prev.options.strategy) != null ? _a : \"any\",\n      mode: (_d = opts.mode) != null ? _d : (_c = prev == null ? void 0 : prev.options.mode) != null ? _c : \"hide\",\n      enabled: (_f = opts.enabled) != null ? _f : (_e = prev == null ? void 0 : prev.options.enabled) != null ? _e : true\n    }, prev == null ? void 0 : prev.options), opts);\n    const state = {\n      options,\n      placeholder: (_g = prev == null ? void 0 : prev.placeholder) != null ? _g : null,\n      prevDisplay: (_h = prev == null ? void 0 : prev.prevDisplay) != null ? _h : null,\n      disabledApplied: (_i = prev == null ? void 0 : prev.disabledApplied) != null ? _i : false\n    };\n    const allowed = options.enabled ? evaluateAllowed(options) : true;\n    applyMode(el, state, allowed);\n    if (allowed) (_j = options.onGranted) == null ? void 0 : _j.call(options, el);\n    else (_k = options.onDenied) == null ? void 0 : _k.call(options, el);\n    el[PERMISSION_SYMBOL] = state;\n  },\n  unmounted(el) {\n    const state = el[PERMISSION_SYMBOL];\n    if (state == null ? void 0 : state.placeholder) {\n      state.placeholder = null;\n    }\n    if (state) delete el[PERMISSION_SYMBOL];\n  }\n};\nvar VPermission = withInstallDirective(permission, \"permission\");\nvar permission_default = VPermission;\n\nexport {\n  VPermission,\n  permission_default\n};\n","// function/debounce.ts\nfunction debounce(fn, wait = 200, options = {}) {\n  let timer = null;\n  let lastArgs = null;\n  let lastThis = null;\n  const { immediate = false } = options;\n  const invoke = () => {\n    if (lastArgs) {\n      fn.apply(lastThis, lastArgs);\n      lastArgs = null;\n      lastThis = null;\n    }\n  };\n  const debounced = function(...args) {\n    lastArgs = args;\n    lastThis = this;\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n    if (immediate && !timer) {\n      fn.apply(this, args);\n    }\n    timer = setTimeout(() => {\n      if (!immediate) {\n        invoke();\n      }\n      timer = null;\n    }, wait);\n  };\n  debounced.cancel = () => {\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n    lastArgs = null;\n    lastThis = null;\n  };\n  debounced.flush = () => {\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n    invoke();\n  };\n  return debounced;\n}\nvar debounce_default = debounce;\n\nexport {\n  debounce,\n  debounce_default\n};\n","// function/deepClone.ts\nfunction deepClone(input, cache = /* @__PURE__ */ new WeakMap()) {\n  if (!isObject(input)) return input;\n  if (cache.has(input)) {\n    return cache.get(input);\n  }\n  if (input instanceof Date) {\n    return new Date(input.getTime());\n  }\n  if (input instanceof RegExp) {\n    const re = new RegExp(input.source, input.flags);\n    re.lastIndex = input.lastIndex;\n    return re;\n  }\n  if (input instanceof ArrayBuffer) {\n    const copy = input.slice(0);\n    return copy;\n  }\n  if (input instanceof DataView) {\n    const buffer = deepClone(input.buffer, cache);\n    const copy = new DataView(buffer, input.byteOffset, input.byteLength);\n    return copy;\n  }\n  if (ArrayBuffer.isView(input) && !(input instanceof DataView)) {\n    const Ctor = input.constructor;\n    return new Ctor(input);\n  }\n  if (input instanceof Map) {\n    const result2 = /* @__PURE__ */ new Map();\n    cache.set(input, result2);\n    input.forEach((v, k) => {\n      const keyClone = isObject(k) ? deepClone(k, cache) : k;\n      const valClone = isObject(v) ? deepClone(v, cache) : v;\n      result2.set(keyClone, valClone);\n    });\n    return result2;\n  }\n  if (input instanceof Set) {\n    const result2 = /* @__PURE__ */ new Set();\n    cache.set(input, result2);\n    input.forEach((v) => {\n      const valClone = isObject(v) ? deepClone(v, cache) : v;\n      result2.add(valClone);\n    });\n    return result2;\n  }\n  if (typeof input === \"function\" || input instanceof Promise || input instanceof Error || input instanceof WeakMap || input instanceof WeakSet) {\n    return input;\n  }\n  if (Array.isArray(input)) {\n    const arr = [];\n    cache.set(input, arr);\n    for (let i = 0; i < input.length; i++) {\n      const val = input[i];\n      arr[i] = isObject(val) ? deepClone(val, cache) : val;\n    }\n    return arr;\n  }\n  const proto = Object.getPrototypeOf(input);\n  const result = Object.create(proto);\n  cache.set(input, result);\n  const keys = Reflect.ownKeys(input);\n  for (const key of keys) {\n    const desc = Object.getOwnPropertyDescriptor(input, key);\n    if (!desc) continue;\n    if (\"value\" in desc) {\n      const value = desc.value;\n      const cloned = isObject(value) ? deepClone(value, cache) : value;\n      Object.defineProperty(result, key, {\n        value: cloned,\n        writable: desc.writable,\n        enumerable: desc.enumerable,\n        configurable: desc.configurable\n      });\n    } else {\n      Object.defineProperty(result, key, {\n        get: desc.get,\n        set: desc.set,\n        enumerable: desc.enumerable,\n        configurable: desc.configurable\n      });\n    }\n  }\n  return result;\n}\nfunction isObject(val) {\n  return typeof val === \"object\" && val !== null || typeof val === \"function\";\n}\nvar deepClone_default = deepClone;\n\nexport {\n  deepClone,\n  deepClone_default\n};\n","// function/deepEqual.ts\nfunction deepEqual(a, b) {\n  if (a === b) {\n    return a !== 0 || 1 / a === 1 / b;\n  }\n  if (Number.isNaN(a) && Number.isNaN(b)) return true;\n  const typeA = typeof a;\n  const typeB = typeof b;\n  if (typeA !== \"object\" || a === null) return false;\n  if (typeB !== \"object\" || b === null) return false;\n  const seenA = /* @__PURE__ */ new WeakMap();\n  const seenB = /* @__PURE__ */ new WeakMap();\n  return equalObject(a, b, seenA, seenB);\n}\nfunction equalObject(a, b, seenA, seenB) {\n  if (a === b) return true;\n  if (Number.isNaN(a) && Number.isNaN(b)) return true;\n  if (typeof a === \"object\" && typeof b === \"object\") {\n    const cachedA = seenA.get(a);\n    if (cachedA) return cachedA === b;\n    const cachedB = seenB.get(b);\n    if (cachedB) return cachedB === a;\n    seenA.set(a, b);\n    seenB.set(b, a);\n  }\n  const tagA = getTag(a);\n  const tagB = getTag(b);\n  if (tagA !== tagB) return false;\n  switch (tagA) {\n    case \"Date\":\n      return a.getTime() === b.getTime();\n    case \"RegExp\":\n      return a.source === b.source && a.flags === b.flags;\n    case \"ArrayBuffer\":\n      return bufferEqual(new Uint8Array(a), new Uint8Array(b));\n    case \"DataView\":\n      return bufferEqual(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength));\n    case \"Int8Array\":\n    case \"Uint8Array\":\n    case \"Uint8ClampedArray\":\n    case \"Int16Array\":\n    case \"Uint16Array\":\n    case \"Int32Array\":\n    case \"Uint32Array\":\n    case \"Float32Array\":\n    case \"Float64Array\":\n    case \"BigInt64Array\":\n    case \"BigUint64Array\":\n      return bufferEqual(a, b);\n    case \"Error\":\n      return a.name === b.name && a.message === b.message;\n    case \"Map\":\n      return mapEqual(a, b, seenA, seenB);\n    case \"Set\":\n      return setEqual(a, b, seenA, seenB);\n    case \"Array\":\n      return arrayEqual(a, b, seenA, seenB);\n    case \"Object\":\n      return plainObjectEqual(a, b, seenA, seenB);\n    default:\n      return false;\n  }\n}\nfunction getTag(val) {\n  const toString = Object.prototype.toString.call(val);\n  return toString.slice(8, -1);\n}\nfunction bufferEqual(a, b) {\n  const len = a.length;\n  if (len !== b.length) return false;\n  for (let i = 0; i < len; i++) {\n    if (a[i] !== b[i]) return false;\n  }\n  return true;\n}\nfunction arrayEqual(a, b, seenA, seenB) {\n  const len = a.length;\n  if (len !== b.length) return false;\n  for (let i = 0; i < len; i++) {\n    if (!equalObject(a[i], b[i], seenA, seenB)) return false;\n  }\n  return true;\n}\nfunction plainObjectEqual(a, b, seenA, seenB) {\n  const keysA = Reflect.ownKeys(a);\n  const keysB = Reflect.ownKeys(b);\n  if (keysA.length !== keysB.length) return false;\n  for (const key of keysA) {\n    if (!keysB.includes(key)) return false;\n  }\n  for (const key of keysA) {\n    const va = Reflect.get(a, key);\n    const vb = Reflect.get(b, key);\n    if (!equalObject(va, vb, seenA, seenB)) return false;\n  }\n  return true;\n}\nfunction mapEqual(a, b, seenA, seenB) {\n  if (a.size !== b.size) return false;\n  const used = /* @__PURE__ */ new Set();\n  for (const [ka, va] of a) {\n    let found = false;\n    let index = 0;\n    for (const [kb, vb] of b) {\n      if (used.has(index)) {\n        index++;\n        continue;\n      }\n      if (equalObject(ka, kb, seenA, seenB) && equalObject(va, vb, seenA, seenB)) {\n        used.add(index);\n        found = true;\n        break;\n      }\n      index++;\n    }\n    if (!found) return false;\n  }\n  return true;\n}\nfunction setEqual(a, b, seenA, seenB) {\n  if (a.size !== b.size) return false;\n  const used = /* @__PURE__ */ new Set();\n  const arrB = Array.from(b);\n  let idx = 0;\n  for (const va of a) {\n    let found = false;\n    for (let i = 0; i < arrB.length; i++) {\n      if (used.has(i)) continue;\n      if (equalObject(va, arrB[i], seenA, seenB)) {\n        used.add(i);\n        found = true;\n        break;\n      }\n    }\n    if (!found) return false;\n    idx++;\n  }\n  return true;\n}\nvar deepEqual_default = deepEqual;\n\nexport {\n  deepEqual,\n  deepEqual_default\n};\n","// function/isEmpty.ts\nfunction isPlainObject(val) {\n  if (val === null || typeof val !== \"object\") return false;\n  const proto = Object.getPrototypeOf(val);\n  return proto === Object.prototype || proto === null;\n}\nfunction isEmpty(value, options = {}) {\n  const { trimString = true, treatNaNEmpty = true } = options;\n  if (value == null) return true;\n  const t = typeof value;\n  if (t === \"string\") {\n    const s = trimString ? value.trim() : value;\n    return s.length === 0;\n  }\n  if (t === \"number\") {\n    return treatNaNEmpty && Number.isNaN(value);\n  }\n  if (Array.isArray(value)) return value.length === 0;\n  if (ArrayBuffer.isView(value)) {\n    if (typeof value.length === \"number\") return value.length === 0;\n    if (typeof value.byteLength === \"number\") return value.byteLength === 0;\n  }\n  if (value instanceof ArrayBuffer) return value.byteLength === 0;\n  if (value instanceof DataView) return value.byteLength === 0;\n  if (value instanceof Map || value instanceof Set) return value.size === 0;\n  if (value instanceof Date) return Number.isNaN(value.getTime());\n  if (isPlainObject(value)) return Reflect.ownKeys(value).length === 0;\n  return false;\n}\nvar isEmpty_default = isEmpty;\n\nexport {\n  isEmpty,\n  isEmpty_default\n};\n","// function/keyBy.ts\nfunction getByPath(obj, path) {\n  const parts = path.split(\".\");\n  let cur = obj;\n  for (const p of parts) {\n    if (cur == null) return void 0;\n    cur = cur[p];\n  }\n  return cur;\n}\nfunction keyBy(list, selector, options = {}) {\n  const { keep = \"last\", skipEmptyKey = true } = options;\n  const out = {};\n  const makeKey = (item) => {\n    if (typeof selector === \"function\") {\n      const k = selector(item);\n      return k;\n    }\n    const val = getByPath(item, selector);\n    if (val === null || val === void 0) return void 0;\n    const t = typeof val;\n    if (t === \"string\" || t === \"number\" || t === \"symbol\") return val;\n    return String(val);\n  };\n  for (const it of list) {\n    const key = makeKey(it);\n    if (key === void 0 && skipEmptyKey) continue;\n    if (key === void 0) {\n      const k = \"undefined\";\n      if (keep === \"first\") {\n        if (!(k in out)) Reflect.set(out, k, it);\n      } else {\n        Reflect.set(out, k, it);\n      }\n      continue;\n    }\n    if (keep === \"first\") {\n      if (!(key in out)) Reflect.set(out, key, it);\n    } else {\n      Reflect.set(out, key, it);\n    }\n  }\n  return out;\n}\nvar keyBy_default = keyBy;\n\nexport {\n  keyBy,\n  keyBy_default\n};\n","// function/lazyLoadImage.ts\nfunction toElements(targets) {\n  if (typeof targets === \"string\") {\n    return Array.from(document.querySelectorAll(targets));\n  }\n  return Array.from(targets);\n}\nfunction loadElement(el, opts) {\n  const { srcAttr, srcsetAttr, bgAttr, beforeLoad, onLoad, onError } = opts;\n  try {\n    beforeLoad == null ? void 0 : beforeLoad(el);\n    const src = el.getAttribute(srcAttr);\n    const srcset = el.getAttribute(srcsetAttr);\n    const bg = el.getAttribute(bgAttr);\n    if (srcset && (el instanceof HTMLImageElement || el.tagName === \"SOURCE\")) {\n      el.srcset = srcset;\n    }\n    if (src && el instanceof HTMLImageElement) {\n      el.src = src;\n    } else if (bg) {\n      el.style.backgroundImage = `url(\"${bg}\")`;\n    }\n    if (src) el.removeAttribute(srcAttr);\n    if (srcset) el.removeAttribute(srcsetAttr);\n    if (bg) el.removeAttribute(bgAttr);\n    onLoad == null ? void 0 : onLoad(el);\n  } catch (e) {\n    onError == null ? void 0 : onError(el, e);\n  }\n}\nfunction lazyLoadImage(targets, options = {}) {\n  const {\n    root = null,\n    rootMargin = \"0px\",\n    threshold = 0,\n    srcAttr = \"data-src\",\n    srcsetAttr = \"data-srcset\",\n    bgAttr = \"data-bg\",\n    beforeLoad,\n    onLoad,\n    onError,\n    once = true\n  } = options;\n  const opts = { root, rootMargin, threshold, srcAttr, srcsetAttr, bgAttr, beforeLoad, onLoad, onError, once };\n  let elements = toElements(targets);\n  let io = null;\n  const immediateLoad = () => {\n    elements.forEach((el) => loadElement(el, opts));\n  };\n  const observe = () => {\n    if (!(\"IntersectionObserver\" in window)) {\n      immediateLoad();\n      return;\n    }\n    io = new IntersectionObserver((entries) => {\n      entries.forEach((entry) => {\n        const el = entry.target;\n        if (entry.isIntersecting) {\n          loadElement(el, opts);\n          if (once) io == null ? void 0 : io.unobserve(el);\n        }\n      });\n    }, { root, rootMargin, threshold });\n    elements.forEach((el) => io.observe(el));\n  };\n  observe();\n  return {\n    updateTargets(newTargets) {\n      elements = toElements(newTargets);\n      if (io) {\n        elements.forEach((el) => io.observe(el));\n      } else {\n        immediateLoad();\n      }\n    },\n    disconnect() {\n      io == null ? void 0 : io.disconnect();\n      io = null;\n    },\n    refresh() {\n      if (!io) immediateLoad();\n    }\n  };\n}\nvar lazyLoadImage_default = lazyLoadImage;\n\nexport {\n  lazyLoadImage,\n  lazyLoadImage_default\n};\n","// create.ts\nvar _bem = (prefixName, blockSuffix, element, modifier) => {\n  if (blockSuffix) {\n    prefixName += `-${blockSuffix}`;\n  }\n  if (element) {\n    prefixName += `__${element}`;\n  }\n  if (modifier) {\n    prefixName += `--${modifier}`;\n  }\n  return prefixName;\n};\nvar createBEM = (prefixName) => {\n  const b = (blockSuffix = \"\") => _bem(prefixName, blockSuffix, \"\", \"\");\n  const e = (element = \"\") => element && element !== \"\" ? _bem(prefixName, \"\", element, \"\") : \"\";\n  const m = (modifier = \"\") => modifier && modifier !== \"\" ? _bem(prefixName, \"\", \"\", modifier) : \"\";\n  const be = (blockSuffix = \"\", element = \"\") => blockSuffix && element ? _bem(prefixName, blockSuffix, element, \"\") : \"\";\n  const bm = (blockSuffix = \"\", modifier = \"\") => blockSuffix && modifier ? _bem(prefixName, blockSuffix, \"\", modifier) : \"\";\n  const em = (element = \"\", modifier = \"\") => element && modifier ? _bem(prefixName, \"\", element, modifier) : \"\";\n  const bem = (blockSuffix = \"\", element = \"\", modifier = \"\") => blockSuffix && element && modifier ? _bem(prefixName, blockSuffix, element, modifier) : \"\";\n  const is = (name, state) => state ? `is-${name}` : \"\";\n  return {\n    b,\n    e,\n    m,\n    be,\n    bm,\n    em,\n    bem,\n    is\n  };\n};\nvar createNamespace = (name) => {\n  const prefixedName = `c-${name}`;\n  return createBEM(prefixedName);\n};\n\nexport {\n  createNamespace\n};\n","import {\n  withInstallDirective\n} from \"./chunk-HURRAOO3.js\";\nimport {\n  __spreadValues\n} from \"./chunk-5JBD5THX.js\";\n\n// directives/clickOut.ts\nvar CLICK_OUTSIDE_SYMBOL = Symbol(\"cui-v-click-outside\");\nfunction resolveOptions(value) {\n  if (typeof value === \"function\") {\n    return { onOutside: value };\n  }\n  return value || {};\n}\nfunction isExcluded(target, exclude) {\n  if (!exclude || !target) return false;\n  const t = target;\n  for (const item of exclude) {\n    if (typeof item === \"string\") {\n      const el = document.querySelector(item);\n      if (el && el.contains(t)) return true;\n    } else if (item && item.contains(t)) {\n      return true;\n    }\n  }\n  return false;\n}\nvar clickOutside = {\n  mounted(el, binding) {\n    var _a, _b, _c;\n    const opts = resolveOptions(binding.value);\n    const options = __spreadValues({\n      events: (_a = opts.events) != null ? _a : [\"click\", \"touchstart\", \"pointerdown\"],\n      capture: (_b = opts.capture) != null ? _b : true,\n      enabled: (_c = opts.enabled) != null ? _c : true\n    }, opts);\n    const handler = (event) => {\n      var _a2;\n      (_a2 = options.onOutside) == null ? void 0 : _a2.call(options, event);\n    };\n    const listener = (event) => {\n      if (!options.enabled) return;\n      const target = event.target;\n      if (el.contains(target)) return;\n      if (isExcluded(target, options.exclude)) return;\n      handler(event);\n    };\n    options.events.forEach((evt) => document.addEventListener(evt, listener, { capture: options.capture }));\n    el[CLICK_OUTSIDE_SYMBOL] = { options, handler, listener };\n  },\n  updated(el, binding) {\n    var _a, _b, _c;\n    const prev = el[CLICK_OUTSIDE_SYMBOL];\n    prev == null ? void 0 : prev.options.events.forEach((evt) => document.removeEventListener(evt, prev.listener, { capture: prev.options.capture }));\n    const opts = resolveOptions(binding.value);\n    const options = __spreadValues({\n      events: (_a = opts.events) != null ? _a : [\"click\", \"touchstart\", \"pointerdown\"],\n      capture: (_b = opts.capture) != null ? _b : true,\n      enabled: (_c = opts.enabled) != null ? _c : true\n    }, opts);\n    const handler = (event) => {\n      var _a2;\n      (_a2 = options.onOutside) == null ? void 0 : _a2.call(options, event);\n    };\n    const listener = (event) => {\n      if (!options.enabled) return;\n      const target = event.target;\n      if (el.contains(target)) return;\n      if (isExcluded(target, options.exclude)) return;\n      handler(event);\n    };\n    options.events.forEach((evt) => document.addEventListener(evt, listener, { capture: options.capture }));\n    el[CLICK_OUTSIDE_SYMBOL] = { options, handler, listener };\n  },\n  unmounted(el) {\n    const state = el[CLICK_OUTSIDE_SYMBOL];\n    state == null ? void 0 : state.options.events.forEach((evt) => document.removeEventListener(evt, state.listener, { capture: state.options.capture }));\n    if (state) delete el[CLICK_OUTSIDE_SYMBOL];\n  }\n};\nvar VClickOutside = withInstallDirective(clickOutside, \"click-outside\");\nvar clickOut_default = VClickOutside;\n\nexport {\n  VClickOutside,\n  clickOut_default\n};\n","import {\n  withInstallDirective\n} from \"./chunk-HURRAOO3.js\";\nimport {\n  __spreadValues\n} from \"./chunk-5JBD5THX.js\";\n\n// directives/copy.ts\nvar COPY_SYMBOL = Symbol(\"cui-v-copy\");\nfunction resolveOptions(value) {\n  if (typeof value === \"string\") {\n    return { text: value };\n  }\n  if (typeof value === \"function\") {\n    return { getText: value };\n  }\n  return value || {};\n}\nfunction toElement(ref) {\n  if (!ref) return null;\n  if (typeof ref === \"string\") return document.querySelector(ref);\n  return ref;\n}\nasync function resolveText(el, options) {\n  var _a, _b, _c;\n  if (options.text != null) return options.text;\n  if (options.getText) {\n    const r = options.getText();\n    return typeof (r == null ? void 0 : r.then) === \"function\" ? await r : r;\n  }\n  const srcEl = toElement(options.source) || el;\n  const attr = (_a = options.attr) != null ? _a : \"data-copy\";\n  const fromAttr = (_b = srcEl.getAttribute) == null ? void 0 : _b.call(srcEl, attr);\n  if (fromAttr != null) return fromAttr;\n  const tc = (_c = srcEl.textContent) != null ? _c : \"\";\n  return tc.trim();\n}\nasync function copyText(text) {\n  var _a;\n  if (!text) throw new Error(\"empty_text\");\n  if ((_a = navigator.clipboard) == null ? void 0 : _a.writeText) {\n    await navigator.clipboard.writeText(text);\n    return;\n  }\n  const ta = document.createElement(\"textarea\");\n  ta.value = text;\n  ta.style.position = \"fixed\";\n  ta.style.left = \"-9999px\";\n  ta.style.top = \"0\";\n  document.body.appendChild(ta);\n  ta.focus();\n  ta.select();\n  const ok = document.execCommand(\"copy\");\n  document.body.removeChild(ta);\n  if (!ok) throw new Error(\"execCommand_failed\");\n}\nfunction createListener(el, state) {\n  const { options } = state;\n  const listener = async (event) => {\n    var _a, _b;\n    if (!options.enabled) return;\n    if (options.prevent) event.preventDefault();\n    if (options.stop) event.stopPropagation();\n    try {\n      const text = await resolveText(el, options);\n      await copyText(text);\n      (_a = options.onCopied) == null ? void 0 : _a.call(options, text, event);\n    } catch (e) {\n      (_b = options.onError) == null ? void 0 : _b.call(options, e, event);\n    }\n  };\n  return listener;\n}\nvar copy = {\n  mounted(el, binding) {\n    var _a, _b, _c, _d, _e, _f;\n    const opts = resolveOptions(binding.value);\n    const options = __spreadValues({\n      enabled: (_a = opts.enabled) != null ? _a : true,\n      events: (_b = opts.events) != null ? _b : [\"click\"],\n      attr: (_c = opts.attr) != null ? _c : \"data-copy\",\n      prevent: (_d = opts.prevent) != null ? _d : false,\n      stop: (_e = opts.stop) != null ? _e : false,\n      capture: (_f = opts.capture) != null ? _f : false\n    }, opts);\n    const state = { options, listener: () => {\n    } };\n    const listener = createListener(el, state);\n    state.listener = listener;\n    options.events.forEach((evt) => el.addEventListener(evt, listener, { capture: options.capture }));\n    el[COPY_SYMBOL] = state;\n  },\n  updated(el, binding) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;\n    const prev = el[COPY_SYMBOL];\n    prev == null ? void 0 : prev.options.events.forEach((evt) => el.removeEventListener(evt, prev.listener, { capture: prev.options.capture }));\n    const opts = resolveOptions(binding.value);\n    const options = __spreadValues(__spreadValues({\n      enabled: (_b = opts.enabled) != null ? _b : (_a = prev == null ? void 0 : prev.options.enabled) != null ? _a : true,\n      events: (_d = opts.events) != null ? _d : (_c = prev == null ? void 0 : prev.options.events) != null ? _c : [\"click\"],\n      attr: (_f = opts.attr) != null ? _f : (_e = prev == null ? void 0 : prev.options.attr) != null ? _e : \"data-copy\",\n      prevent: (_h = opts.prevent) != null ? _h : (_g = prev == null ? void 0 : prev.options.prevent) != null ? _g : false,\n      stop: (_j = opts.stop) != null ? _j : (_i = prev == null ? void 0 : prev.options.stop) != null ? _i : false,\n      capture: (_l = opts.capture) != null ? _l : (_k = prev == null ? void 0 : prev.options.capture) != null ? _k : false\n    }, prev == null ? void 0 : prev.options), opts);\n    const state = { options, listener: () => {\n    } };\n    const listener = createListener(el, state);\n    state.listener = listener;\n    options.events.forEach((evt) => el.addEventListener(evt, listener, { capture: options.capture }));\n    el[COPY_SYMBOL] = state;\n  },\n  unmounted(el) {\n    const state = el[COPY_SYMBOL];\n    if (state) {\n      state.options.events.forEach((evt) => el.removeEventListener(evt, state.listener, { capture: state.options.capture }));\n      delete el[COPY_SYMBOL];\n    }\n  }\n};\nvar VCopy = withInstallDirective(copy, \"copy\");\nvar copy_default = VCopy;\n\nexport {\n  VCopy,\n  copy_default\n};\n","import {\n  withInstallDirective\n} from \"./chunk-HURRAOO3.js\";\nimport {\n  __spreadValues\n} from \"./chunk-5JBD5THX.js\";\n\n// directives/debounceClick.ts\nvar DEBOUNCE_CLICK_SYMBOL = Symbol(\"cui-v-debounce-click\");\nfunction resolveOptions(value) {\n  if (typeof value === \"function\") {\n    return { onClick: value };\n  }\n  return value || {};\n}\nfunction createListener(state) {\n  const { options } = state;\n  const invoke = (event) => {\n    var _a;\n    if (!event) return;\n    (_a = options.onClick) == null ? void 0 : _a.call(options, event);\n  };\n  const scheduleTrailing = () => {\n    const wait = options.wait;\n    state.timer = window.setTimeout(() => {\n      const evt = state.pendingEvent;\n      state.pendingEvent = null;\n      state.timer = null;\n      if (options.trailing) invoke(evt);\n    }, wait);\n  };\n  const listener = (event) => {\n    if (!options.enabled) return;\n    if (options.prevent) event.preventDefault();\n    if (options.stop) event.stopPropagation();\n    if (options.leading) {\n      if (state.timer == null) {\n        invoke(event);\n        state.pendingEvent = options.trailing ? event : null;\n        scheduleTrailing();\n      } else {\n        state.pendingEvent = options.trailing ? event : state.pendingEvent;\n      }\n    } else {\n      state.pendingEvent = event;\n      if (state.timer != null) {\n        window.clearTimeout(state.timer);\n        state.timer = null;\n      }\n      scheduleTrailing();\n    }\n  };\n  return listener;\n}\nvar debounceClick = {\n  mounted(el, binding) {\n    var _a, _b, _c, _d, _e, _f, _g;\n    const opts = resolveOptions(binding.value);\n    const options = __spreadValues({\n      wait: (_a = opts.wait) != null ? _a : 200,\n      leading: (_b = opts.leading) != null ? _b : false,\n      trailing: (_c = opts.trailing) != null ? _c : true,\n      enabled: (_d = opts.enabled) != null ? _d : true,\n      prevent: (_e = opts.prevent) != null ? _e : false,\n      stop: (_f = opts.stop) != null ? _f : false,\n      capture: (_g = opts.capture) != null ? _g : false\n    }, opts);\n    const state = {\n      options,\n      listener: () => {\n      },\n      timer: null,\n      pendingEvent: null\n    };\n    const listener = createListener(state);\n    state.listener = listener;\n    el.addEventListener(\"click\", listener, { capture: options.capture });\n    el[DEBOUNCE_CLICK_SYMBOL] = state;\n  },\n  updated(el, binding) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;\n    const prev = el[DEBOUNCE_CLICK_SYMBOL];\n    prev && el.removeEventListener(\"click\", prev.listener, { capture: prev.options.capture });\n    const opts = resolveOptions(binding.value);\n    const options = __spreadValues(__spreadValues({\n      wait: (_b = opts.wait) != null ? _b : (_a = prev == null ? void 0 : prev.options.wait) != null ? _a : 200,\n      leading: (_d = opts.leading) != null ? _d : (_c = prev == null ? void 0 : prev.options.leading) != null ? _c : false,\n      trailing: (_f = opts.trailing) != null ? _f : (_e = prev == null ? void 0 : prev.options.trailing) != null ? _e : true,\n      enabled: (_h = opts.enabled) != null ? _h : (_g = prev == null ? void 0 : prev.options.enabled) != null ? _g : true,\n      prevent: (_j = opts.prevent) != null ? _j : (_i = prev == null ? void 0 : prev.options.prevent) != null ? _i : false,\n      stop: (_l = opts.stop) != null ? _l : (_k = prev == null ? void 0 : prev.options.stop) != null ? _k : false,\n      capture: (_n = opts.capture) != null ? _n : (_m = prev == null ? void 0 : prev.options.capture) != null ? _m : false\n    }, prev == null ? void 0 : prev.options), opts);\n    const state = {\n      options,\n      listener: () => {\n      },\n      timer: (_o = prev == null ? void 0 : prev.timer) != null ? _o : null,\n      pendingEvent: (_p = prev == null ? void 0 : prev.pendingEvent) != null ? _p : null\n    };\n    const listener = createListener(state);\n    state.listener = listener;\n    el.addEventListener(\"click\", listener, { capture: options.capture });\n    el[DEBOUNCE_CLICK_SYMBOL] = state;\n  },\n  unmounted(el) {\n    const state = el[DEBOUNCE_CLICK_SYMBOL];\n    if (state) {\n      el.removeEventListener(\"click\", state.listener, { capture: state.options.capture });\n      if (state.timer != null) {\n        window.clearTimeout(state.timer);\n      }\n      delete el[DEBOUNCE_CLICK_SYMBOL];\n    }\n  }\n};\nvar VDebounceClick = withInstallDirective(debounceClick, \"debounce-click\");\nvar debounceClick_default = VDebounceClick;\n\nexport {\n  VDebounceClick,\n  debounceClick_default\n};\n","import {\n  withInstallDirective\n} from \"./chunk-HURRAOO3.js\";\nimport {\n  __spreadValues\n} from \"./chunk-5JBD5THX.js\";\n\n// directives/drag.ts\nvar DRAG_SYMBOL = Symbol(\"cui-v-drag\");\nfunction resolveOptions(value) {\n  if (typeof value === \"boolean\") {\n    return { disabled: !value };\n  }\n  return value || {};\n}\nfunction getHandle(el, handle) {\n  if (!handle) return el;\n  if (typeof handle === \"string\") {\n    return el.querySelector(handle) || el;\n  }\n  return handle;\n}\nfunction getContainment(el, containment) {\n  if (!containment) return null;\n  if (containment === \"parent\") return el.parentElement;\n  return containment;\n}\nfunction extractTransform(el) {\n  const style = window.getComputedStyle(el);\n  const t = style.transform;\n  if (!t || t === \"none\") return { tx: 0, ty: 0 };\n  const match = t.match(/matrix\\(([^)]+)\\)/);\n  if (match && match[1]) {\n    const parts = match[1].split(\",\").map((s) => parseFloat(s.trim()));\n    return { tx: parts[4] || 0, ty: parts[5] || 0 };\n  }\n  const match3d = t.match(/matrix3d\\(([^)]+)\\)/);\n  if (match3d && match3d[1]) {\n    const parts = match3d[1].split(\",\").map((s) => parseFloat(s.trim()));\n    return { tx: parts[12] || 0, ty: parts[13] || 0 };\n  }\n  return { tx: 0, ty: 0 };\n}\nfunction applyTransform(el, tx, ty) {\n  const style = el.style;\n  const current = style.transform || \"\";\n  const withoutTranslate = current.replace(/translate3d\\([^)]*\\)/g, \"\").replace(/translate\\([^)]*\\)/g, \"\").trim();\n  style.transform = `${withoutTranslate}${withoutTranslate ? \" \" : \"\"}translate(${tx}px, ${ty}px)`;\n  style.willChange = \"transform\";\n}\nfunction applyLeftTop(el, tx, ty) {\n  el.style.position = el.style.position || \"relative\";\n  el.style.left = `${tx}px`;\n  el.style.top = `${ty}px`;\n}\nfunction clampByBounds(tx, ty, bounds) {\n  if (!bounds) return { tx, ty };\n  return {\n    tx: Math.min(Math.max(tx, bounds.minTx), bounds.maxTx),\n    ty: Math.min(Math.max(ty, bounds.minTy), bounds.maxTy)\n  };\n}\nvar drag = {\n  mounted(el, binding) {\n    var _a, _b, _c, _d, _e;\n    const opts = resolveOptions(binding.value);\n    const options = __spreadValues({\n      axis: (_a = opts.axis) != null ? _a : \"both\",\n      useTransform: (_b = opts.useTransform) != null ? _b : true,\n      disabled: (_c = opts.disabled) != null ? _c : false\n    }, opts);\n    const handleEl = getHandle(el, options.handle);\n    const containmentEl = getContainment(el, (_d = options.containment) != null ? _d : null);\n    const state = {\n      options,\n      startX: 0,\n      startY: 0,\n      startTx: 0,\n      startTy: 0,\n      tx: 0,\n      ty: 0,\n      moving: false,\n      cleanup: null,\n      handleEl,\n      containmentEl,\n      bounds: null,\n      rafId: null,\n      pendingTx: null,\n      pendingTy: null,\n      prevTransition: \"\",\n      prevUserSelect: \"\",\n      prevCursor: \"\",\n      onPointerDownRef: null,\n      onPointerMoveRef: null,\n      onPointerUpRef: null\n    };\n    const onPointerDown = (e) => {\n      var _a2, _b2, _c2;\n      if (state.options.disabled) return;\n      const isMouse = e.pointerType === \"mouse\";\n      if (isMouse && e.button !== 0) return;\n      state.moving = true;\n      state.startX = e.clientX;\n      state.startY = e.clientY;\n      if (state.options.useTransform) {\n        const { tx, ty } = extractTransform(el);\n        state.startTx = tx;\n        state.startTy = ty;\n      } else {\n        state.startTx = parseFloat(el.style.left || \"0\") || 0;\n        state.startTy = parseFloat(el.style.top || \"0\") || 0;\n      }\n      state.bounds = null;\n      if (state.containmentEl) {\n        const cRect = state.containmentEl.getBoundingClientRect();\n        const eRect = el.getBoundingClientRect();\n        const offsetLeft = eRect.left - cRect.left;\n        const offsetRightGap = cRect.right - eRect.right;\n        const offsetTop = eRect.top - cRect.top;\n        const offsetBottomGap = cRect.bottom - eRect.bottom;\n        state.bounds = {\n          minTx: state.startTx - offsetLeft,\n          maxTx: state.startTx + offsetRightGap,\n          minTy: state.startTy - offsetTop,\n          maxTy: state.startTy + offsetBottomGap\n        };\n      }\n      state.prevTransition = el.style.transition || \"\";\n      state.prevUserSelect = el.style.userSelect || \"\";\n      state.prevCursor = el.style.cursor || \"\";\n      el.style.transition = \"none\";\n      el.style.userSelect = \"none\";\n      el.style.cursor = \"grabbing\";\n      (_a2 = el.setPointerCapture) == null ? void 0 : _a2.call(el, e.pointerId);\n      el.style.touchAction = \"none\";\n      state.cleanup = attachMoveListeners();\n      (_c2 = (_b2 = state.options).onStart) == null ? void 0 : _c2.call(_b2, e, { tx: state.startTx, ty: state.startTy, moving: true });\n    };\n    const onPointerMove = (e) => {\n      var _a2, _b2;\n      if (!state.moving) return;\n      const dx = e.clientX - state.startX;\n      const dy = e.clientY - state.startY;\n      let nextTx = state.startTx + (state.options.axis === \"y\" ? 0 : dx);\n      let nextTy = state.startTy + (state.options.axis === \"x\" ? 0 : dy);\n      const clamped = clampByBounds(nextTx, nextTy, state.bounds);\n      nextTx = clamped.tx;\n      nextTy = clamped.ty;\n      state.tx = nextTx;\n      state.ty = nextTy;\n      state.pendingTx = nextTx;\n      state.pendingTy = nextTy;\n      if (state.rafId == null) {\n        state.rafId = requestAnimationFrame(() => {\n          var _a3, _b3;\n          state.rafId = null;\n          const tx = (_a3 = state.pendingTx) != null ? _a3 : state.tx;\n          const ty = (_b3 = state.pendingTy) != null ? _b3 : state.ty;\n          if (state.options.useTransform) {\n            applyTransform(el, tx, ty);\n          } else {\n            applyLeftTop(el, tx, ty);\n          }\n        });\n      }\n      (_b2 = (_a2 = state.options).onMove) == null ? void 0 : _b2.call(_a2, e, { tx: state.tx, ty: state.ty, moving: true });\n    };\n    const onPointerUp = (e) => {\n      var _a2, _b2, _c2, _d2;\n      if (!state.moving) return;\n      state.moving = false;\n      (_a2 = el.releasePointerCapture) == null ? void 0 : _a2.call(el, e.pointerId);\n      el.style.touchAction = \"\";\n      if (state.rafId != null) {\n        cancelAnimationFrame(state.rafId);\n        state.rafId = null;\n      }\n      state.pendingTx = null;\n      state.pendingTy = null;\n      el.style.transition = state.prevTransition;\n      el.style.userSelect = state.prevUserSelect;\n      el.style.cursor = state.prevCursor;\n      (_b2 = state.cleanup) == null ? void 0 : _b2.call(state);\n      state.cleanup = null;\n      (_d2 = (_c2 = state.options).onEnd) == null ? void 0 : _d2.call(_c2, e, { tx: state.tx, ty: state.ty, moving: false });\n    };\n    const attachMoveListeners = () => {\n      const moveTarget = window;\n      moveTarget.addEventListener(\"pointermove\", onPointerMove);\n      moveTarget.addEventListener(\"pointerup\", onPointerUp);\n      moveTarget.addEventListener(\"pointercancel\", onPointerUp);\n      return () => {\n        moveTarget.removeEventListener(\"pointermove\", onPointerMove);\n        moveTarget.removeEventListener(\"pointerup\", onPointerUp);\n        moveTarget.removeEventListener(\"pointercancel\", onPointerUp);\n      };\n    };\n    state.onPointerDownRef = onPointerDown;\n    state.onPointerMoveRef = onPointerMove;\n    state.onPointerUpRef = onPointerUp;\n    (_e = state.handleEl) == null ? void 0 : _e.addEventListener(\"pointerdown\", state.onPointerDownRef);\n    el[DRAG_SYMBOL] = __spreadValues({}, state);\n  },\n  updated(el, binding) {\n    var _a, _b, _c, _d, _e, _f, _g, _h;\n    const prev = el[DRAG_SYMBOL];\n    const opts = resolveOptions(binding.value);\n    const options = __spreadValues({\n      axis: (_b = opts.axis) != null ? _b : (_a = prev == null ? void 0 : prev.options.axis) != null ? _a : \"both\",\n      useTransform: (_d = opts.useTransform) != null ? _d : (_c = prev == null ? void 0 : prev.options.useTransform) != null ? _c : true,\n      disabled: (_f = opts.disabled) != null ? _f : (_e = prev == null ? void 0 : prev.options.disabled) != null ? _e : false\n    }, opts);\n    const handleEl = getHandle(el, options.handle);\n    const containmentEl = getContainment(el, (_g = options.containment) != null ? _g : null);\n    if ((prev == null ? void 0 : prev.handleEl) && prev.handleEl !== handleEl && prev.onPointerDownRef) {\n      prev.handleEl.removeEventListener(\"pointerdown\", prev.onPointerDownRef);\n    }\n    const onPointerDown = (e) => {\n      var _a2, _b2, _c2;\n      if (options.disabled) return;\n      const isMouse = e.pointerType === \"mouse\";\n      if (isMouse && e.button !== 0) return;\n      const state = el[DRAG_SYMBOL];\n      state.moving = true;\n      state.startX = e.clientX;\n      state.startY = e.clientY;\n      if (options.useTransform) {\n        const { tx, ty } = extractTransform(el);\n        state.startTx = tx;\n        state.startTy = ty;\n      } else {\n        state.startTx = parseFloat(el.style.left || \"0\") || 0;\n        state.startTy = parseFloat(el.style.top || \"0\") || 0;\n      }\n      state.prevTransition = el.style.transition || \"\";\n      state.prevUserSelect = el.style.userSelect || \"\";\n      state.prevCursor = el.style.cursor || \"\";\n      el.style.transition = \"none\";\n      el.style.userSelect = \"none\";\n      el.style.cursor = \"grabbing\";\n      (_a2 = el.setPointerCapture) == null ? void 0 : _a2.call(el, e.pointerId);\n      el.style.touchAction = \"none\";\n      (_b2 = state.cleanup) == null ? void 0 : _b2.call(state);\n      state.cleanup = attachMoveListeners();\n      state.bounds = null;\n      const containmentElLocal = containmentEl;\n      if (containmentElLocal) {\n        const cRect = containmentElLocal.getBoundingClientRect();\n        const eRect = el.getBoundingClientRect();\n        const offsetLeft = eRect.left - cRect.left;\n        const offsetRightGap = cRect.right - eRect.right;\n        const offsetTop = eRect.top - cRect.top;\n        const offsetBottomGap = cRect.bottom - eRect.bottom;\n        state.bounds = {\n          minTx: state.startTx - offsetLeft,\n          maxTx: state.startTx + offsetRightGap,\n          minTy: state.startTy - offsetTop,\n          maxTy: state.startTy + offsetBottomGap\n        };\n      }\n      (_c2 = options.onStart) == null ? void 0 : _c2.call(options, e, { tx: state.startTx, ty: state.startTy, moving: true });\n    };\n    const onPointerMove = (e) => {\n      var _a2;\n      const state = el[DRAG_SYMBOL];\n      if (!state.moving) return;\n      const dx = e.clientX - state.startX;\n      const dy = e.clientY - state.startY;\n      let nextTx = state.startTx + (options.axis === \"y\" ? 0 : dx);\n      let nextTy = state.startTy + (options.axis === \"x\" ? 0 : dy);\n      const clamped = clampByBounds(nextTx, nextTy, el[DRAG_SYMBOL].bounds);\n      nextTx = clamped.tx;\n      nextTy = clamped.ty;\n      state.tx = nextTx;\n      state.ty = nextTy;\n      state.pendingTx = nextTx;\n      state.pendingTy = nextTy;\n      if (state.rafId == null) {\n        state.rafId = requestAnimationFrame(() => {\n          var _a3, _b2;\n          state.rafId = null;\n          const tx = (_a3 = state.pendingTx) != null ? _a3 : state.tx;\n          const ty = (_b2 = state.pendingTy) != null ? _b2 : state.ty;\n          if (options.useTransform) {\n            applyTransform(el, tx, ty);\n          } else {\n            applyLeftTop(el, tx, ty);\n          }\n        });\n      }\n      (_a2 = options.onMove) == null ? void 0 : _a2.call(options, e, { tx: state.tx, ty: state.ty, moving: true });\n    };\n    const onPointerUp = (e) => {\n      var _a2, _b2, _c2;\n      const state = el[DRAG_SYMBOL];\n      if (!state.moving) return;\n      state.moving = false;\n      (_a2 = el.releasePointerCapture) == null ? void 0 : _a2.call(el, e.pointerId);\n      el.style.touchAction = \"\";\n      if (state.rafId != null) {\n        cancelAnimationFrame(state.rafId);\n        state.rafId = null;\n      }\n      state.pendingTx = null;\n      state.pendingTy = null;\n      el.style.transition = state.prevTransition;\n      el.style.userSelect = state.prevUserSelect;\n      el.style.cursor = state.prevCursor;\n      (_b2 = state.cleanup) == null ? void 0 : _b2.call(state);\n      state.cleanup = null;\n      (_c2 = options.onEnd) == null ? void 0 : _c2.call(options, e, { tx: state.tx, ty: state.ty, moving: false });\n    };\n    const attachMoveListeners = () => {\n      const moveTarget = window;\n      moveTarget.addEventListener(\"pointermove\", onPointerMove);\n      moveTarget.addEventListener(\"pointerup\", onPointerUp);\n      moveTarget.addEventListener(\"pointercancel\", onPointerUp);\n      return () => {\n        moveTarget.removeEventListener(\"pointermove\", onPointerMove);\n        moveTarget.removeEventListener(\"pointerup\", onPointerUp);\n        moveTarget.removeEventListener(\"pointercancel\", onPointerUp);\n      };\n    };\n    if (prev) {\n      (_h = prev.cleanup) == null ? void 0 : _h.call(prev);\n      prev.cleanup = null;\n      prev.options = options;\n      prev.handleEl = handleEl;\n      prev.containmentEl = containmentEl;\n      prev.onPointerDownRef = onPointerDown;\n      prev.onPointerMoveRef = onPointerMove;\n      prev.onPointerUpRef = onPointerUp;\n      prev.attachMoveListeners = attachMoveListeners;\n      handleEl == null ? void 0 : handleEl.addEventListener(\"pointerdown\", prev.onPointerDownRef);\n    }\n  },\n  unmounted(el) {\n    var _a;\n    const state = el[DRAG_SYMBOL];\n    if ((state == null ? void 0 : state.rafId) != null) {\n      cancelAnimationFrame(state.rafId);\n      state.rafId = null;\n    }\n    (_a = state == null ? void 0 : state.cleanup) == null ? void 0 : _a.call(state);\n    if (state == null ? void 0 : state.handleEl) {\n      if (state.onPointerDownRef) state.handleEl.removeEventListener(\"pointerdown\", state.onPointerDownRef);\n    }\n    delete el[DRAG_SYMBOL];\n  }\n};\nvar VDrag = withInstallDirective(drag, \"drag\");\nvar drag_default = VDrag;\n\nexport {\n  VDrag,\n  drag_default\n};\n","import {\n  withInstallDirective\n} from \"./chunk-HURRAOO3.js\";\nimport {\n  __spreadValues\n} from \"./chunk-5JBD5THX.js\";\n\n// directives/focus.ts\nvar AUTO_FOCUS_SYMBOL = Symbol(\"cui-v-focus\");\nfunction resolveOptions(value) {\n  if (typeof value === \"boolean\") {\n    return { enabled: value };\n  }\n  return value || {};\n}\nfunction canProgrammaticallyFocus(el) {\n  const name = el.tagName.toLowerCase();\n  if (name === \"input\" || name === \"textarea\" || name === \"select\" || name === \"button\") {\n    return !el.disabled;\n  }\n  const tabindex = el.getAttribute(\"tabindex\");\n  const hasTabIndex = tabindex !== null && Number(tabindex) >= 0;\n  const isContentEditable = el.isContentEditable;\n  return hasTabIndex || isContentEditable;\n}\nfunction focusElement(el, options) {\n  var _a, _b;\n  try {\n    if (options.setTabIndexIfNeeded && !canProgrammaticallyFocus(el)) {\n      el.setAttribute(\"tabindex\", \"-1\");\n    }\n    el.focus();\n    if (options.select) {\n      if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement) {\n        el.select();\n      } else if (el.isContentEditable) {\n        const sel = window.getSelection();\n        if (sel) {\n          const range = document.createRange();\n          range.selectNodeContents(el);\n          sel.removeAllRanges();\n          sel.addRange(range);\n        }\n      }\n    }\n    (_a = options.onFocus) == null ? void 0 : _a.call(options, el);\n  } catch (e) {\n    (_b = options.onError) == null ? void 0 : _b.call(options, el, e);\n  }\n}\nfunction scheduleFocus(el, state) {\n  var _a;\n  if (!state.options.enabled) return;\n  if (state.timer) {\n    window.clearTimeout(state.timer);\n    state.timer = null;\n  }\n  const delay = (_a = state.options.delay) != null ? _a : 0;\n  state.timer = window.setTimeout(() => {\n    focusElement(el, state.options);\n    state.timer = null;\n  }, delay);\n}\nvar focus = {\n  mounted(el, binding) {\n    var _a, _b, _c, _d;\n    const opts = resolveOptions(binding.value);\n    const options = __spreadValues({\n      delay: (_a = opts.delay) != null ? _a : 0,\n      select: (_b = opts.select) != null ? _b : false,\n      enabled: (_c = opts.enabled) != null ? _c : true,\n      setTabIndexIfNeeded: (_d = opts.setTabIndexIfNeeded) != null ? _d : true\n    }, opts);\n    const state = { options, timer: null };\n    scheduleFocus(el, state);\n    el[AUTO_FOCUS_SYMBOL] = state;\n  },\n  updated(el, binding) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n    const prev = el[AUTO_FOCUS_SYMBOL];\n    const opts = resolveOptions(binding.value);\n    const options = __spreadValues(__spreadValues({\n      delay: (_b = opts.delay) != null ? _b : (_a = prev == null ? void 0 : prev.options.delay) != null ? _a : 0,\n      select: (_d = opts.select) != null ? _d : (_c = prev == null ? void 0 : prev.options.select) != null ? _c : false,\n      enabled: (_f = opts.enabled) != null ? _f : (_e = prev == null ? void 0 : prev.options.enabled) != null ? _e : true,\n      setTabIndexIfNeeded: (_h = opts.setTabIndexIfNeeded) != null ? _h : (_g = prev == null ? void 0 : prev.options.setTabIndexIfNeeded) != null ? _g : true\n    }, prev == null ? void 0 : prev.options), opts);\n    const state = { options, timer: (_i = prev == null ? void 0 : prev.timer) != null ? _i : null };\n    scheduleFocus(el, state);\n    el[AUTO_FOCUS_SYMBOL] = state;\n  },\n  unmounted(el) {\n    const state = el[AUTO_FOCUS_SYMBOL];\n    if (state == null ? void 0 : state.timer) {\n      window.clearTimeout(state.timer);\n    }\n    if (state) delete el[AUTO_FOCUS_SYMBOL];\n  }\n};\nvar VFocus = withInstallDirective(focus, \"focus\");\nvar focus_default = VFocus;\n\nexport {\n  VFocus,\n  focus_default\n};\n"],"mappings":"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","names":["components","install","withInstall","main","extra","app","comp","_bem","prefixName","blockSuffix","element","modifier","createBEM","name","state","createNamespace","prefixedName","buttonProps","buttonEmits","evt","fe","bem","props","__props","emit","__emit","handleClick","_createElementBlock","_normalizeClass","_unref","type","size","plain","round","circle","disabled","loading","nativeType","_createBlock","_component_c_icon","_renderSlot","_ctx","_createElementVNode","$slots","ie","u","_hoisted_2","X","Button","_Button","iconProps","spinClass","computed","style","styles","flipValue","le","Icon","_Icon","inputProps","inputEmits","value","slots","useSlots","formItem","inject","inputRef","ref","isFocused","isHovered","showPasswordVisible","textLength","showClearIcon","showPasswordIcon","showErrorIcon","suffixVisible","handleInput","event","handleChange","handleFocus","handleBlur","handleClear","nextTick","_a","togglePasswordVisible","handleKeydown","handleKeyup","handleMouseEnter","handleMouseLeave","__expose","readonly","prefixIcon","_openBlock","_resolveDynamicComponent","modelValue","placeholder","maxlength","autocomplete","autofocus","_cache","st","ve","_hoisted_3","suffixIcon","showWordLimit","G","_toDisplayString","rows","resize","textareaCountPlacement","Input","_Input","selectProps","selectEmits","visible","query","hoverIndex","isMultiple","selectedOptions","v","map","valueMap","val","hasValue","currentPlaceholder","visibleTagOptions","max","collapsedCount","collapseTooltipTitle","o","displayValue","option","normalizedOptions","filteredOptions","q","dropdownRef","start","keepsComputed","bufferComputed","visibleCount","totalHeight","offsetY","virtualOptions","end","handleScroll","el","top","s","maxStart","isSelected","handleClose","debounce","fn","delay","t","args","setQueryDebounced","target","handleOptionClick","cur","idx","removeTag","empty","watch","newVisible","index","opt","vClickOutside","binding","filterable","_Fragment","_renderList","_createVNode","_withModifiers","$event","_hoisted_1","clearable","_Transition","Ee","popperClass","noMatchText","noDataText","Select","_Select","carouselProps","carouselEmits","current","prev","carouselItemProps","activeIndex","hover","timer","carouselRef","itemCount","itemLabels","isInitialized","arrowDisplay","wrapperStyle","translateType","translateValue","baseStyle","startTimer","pauseTimer","next","setActiveItem","length","updateItemCount","defaultSlot","count","labels","countItems","vnodes","vnode","_b","autoplay","newIndex","onMounted","initialIndex","onBeforeUnmount","provide","direction","height","indicatorPosition","instance","getCurrentInstance","carousel","itemIndex","siblings","i","sibling","_c","isActive","itemStyle","handleItemClick","Carousel","_Carousel","CarouselItem","_CarouselItem","hotColors","hotGradientColors","copiedColors","getLuminance","hex","color","r","g","toLinear","c","rLinear","gLinear","bLinear","getTextColor","backgroundColor","copyColor","colorValue","err","item","key","_normalizeStyle","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_10","_hoisted_11","Color","_Color","colorPickerProps","colorPickerEmits","hexReg","rgbReg","enableAlpha","__publicField","b","rgb","matches","a","hsv","min","h","delta","x","m","format","VClickOutside","currentColor","saturationRef","hueRef","alphaRef","dragging","currentDragging","displayColor","saturationBackground","alphaBackground","hexInput","alphaPercentInput","isClearing","finalColor","saturationLeft","saturationTop","hueLeft","alphaLeft","updateColor","initColor","handleTriggerClick","clickOutsideOptions","handleSaturationMouseDown","e","updateSaturation","handleMouseMove","handleMouseUp","rect","left","handleHueMouseDown","updateHue","handleAlphaMouseDown","updateAlpha","alphaWrapperRef","handleHexChange","handleAlphaPercentKeydown","currentValue","selectionStart","selectionEnd","beforeText","afterText","newValue","num","handleAlphaPercentInput","strValue","numericValue","handleAlphaPercentChange","percent","clampedPercent","handleAlphaPercentBlur","handleAlphaPercentClear","isPredefineSelected","handlePredefineClick","CInput","predefine","ColorPicker","_ColorPicker","treeSelectProps","treeSelectEmits","createOption","label","children","node","keyField","labelField","childrenField","treeOptions","createTree","data","traverse","list","parent","normalizedTree","expandedKeys","isExpanded","k","toggleExpand","collectExpandableKeys","keys","stack","n","selectedTagNodes","findLabelPath","targetKey","child","normalizedLower","filteredTree","include","trySelectValue","normalizeOne","handleNodeClick","TreeSelect","_TreeSelect","watermarkProps","watermarkEmits","containerRef","watermarkRef","observer","base64Url","hasContent","containerStyle","watermarkStyle","generateWatermark","canvas","ctx","width","rotate","alpha","gap","offset","gapX","gapY","offsetX","img","fontSize","fontColor","fontStyle","fontWeight","fontFamily","text","y","observeWatermark","mutations","mutation","image","Watermark","_Watermark","rowProps","colProps","tag","justify","align","wrap","rowContext","colStyle","classList","classes","sizeProps","span","push","pull","Row","_Row","Col","_Col","paginationProps","paginationEmits","page","paginationContext","parentProps","isFirstPage","isLastPage","totalPages","pagerItems","totalTextParsed","sizeOptions","showSizeChanger","showTotal","setPage","goPrev","goNext","jumperInput","onJumperEnter","onSizeSelectChange","part","it","_component_c_select","Yt","_withKeys","MIN_PAGER_COUNT","DEFAULT_PAGER_COUNT","byCount","byTotal","shouldShow","rootClass","parseLayout","raw","right","groups","calculatePageRange","total","pagerCount","half","pages","items","normalizePage","calculateNewPage","newSize","newTotalPages","currentItemIndex","newPage","set","PaginationPart","Pagination","_Pagination","tableProps","tableEmits","MIN_THUMB_SIZE","SCROLL_THRESHOLD","DEFAULT_COLUMN_WIDTH","currentRowKey","innerPage","innerSize","shouldShowPagination","startIndex","endIndex","pageData","onPageChange","columnWidths","slotColumns","col","renderColumns","w","formatSize","thStyle","tdStyle","getRowClassName","row","getHeaderCellClassName","column","getCellClassName","rowIndex","columnIndex","handleRowClick","parseSizeNumber","resizeState","getColumnWidth","th","getNeighborIndex","currentIndex","onResizeStart","currentWidth","tr","ths","baseTotalWidth","sum","startWidths","orderKeys","resizeIndex","baseCol","neighborIndex","tableEl","tableLimitWidth","onMouseMove","onMouseUp","calculateAdjustedWidths","startWidth","targetWidth","neighborKey","neighborStart","adjustDelta","neighborWidth","allowedDelta","overflow","overflowTotal","capacity","updates","scrollStyle","innerTableStyle","acc","scrollRef","hasVScroll","hasHScroll","vThumbStyle","hThumbStyle","vThumbTop","vThumbHeight","hThumbLeft","hThumbWidth","isScrollbarActive","headerRef","headerOffsetX","headerTableStyle","calculateThumb","clientSize","scrollSize","scrollPos","ratio","maxPosition","scrollRange","position","updateThumbs","onScroll","scrollDragState","createScrollDragHandler","hasScroll","getThumbPos","getThumbSize","setScrollPos","startClientPos","startThumbPos","thumbSize","moveEvent","maxThumbPos","nextThumbPos","maxScroll","onVThumbMouseDown","pos","onHThumbMouseDown","ro","cleanupEventListeners","onUnmounted","cIndex","rIndex","rowKey","emptyText","_component_c_pagination","pageSizes","totalText","tableColumnProps","tableCtx","columnDef","Table","_Table","TableColumn","_TableColumn","ns","iconColor","onClose","onAfterLeave","_hoisted_4","Xe","POSITION_CLASS_MAP","MAX_MESSAGES","instances","nextId","ensureContainer","id","ensureGroup","container","group","renderGroup","gidx","MessageComp","TransitionGroup","render","message","options","duration","showIcon","closable","renderSlot","oldest","normalize","messageFacade","opts","CMessage","breadcrumbProps","breadcrumbEmits","uid","ariaLabel","breadcrumbItemProps","separator","router","navigate","showSeparator","last","isLast","to","Breadcrumb","_Breadcrumb","BreadcrumbItem","_BreadcrumbItem","tooltipProps","tooltipEmits","showTimer","hideTimer","clearTimers","onMouseEnter","onMouseLeave","theme","placement","content","Tooltip","_Tooltip","switchProps","switchEmits","useSwitch","isChecked","hasLabel","coreStyle","sizeKnob","sizeMargin","defaultWidth","effectiveWidth","knob","margin","travel","pending","showLoading","canProceed","res","onToggle","onKeydown","activeText","inactiveText","Switch","_Switch","checkboxProps","checkboxEmits","checkboxGroupProps","checkboxGroupEmits","checkboxGroupKey","isDisabled","sizeComputed","toggle","checked","indeterminate","values","Checkbox","_Checkbox","CheckboxGroup","_CheckboxGroup","radioProps","radioEmits","radioGroupProps","radioGroupEmits","radioGroupKey","blockComputed","typeComputed","block","select","Radio","_Radio","RadioGroup","_RadioGroup","skeletonProps","skeletonEmits","displayLoading","leadingTimer","trailingTimer","parseThrottle","applyLoading","leading","trailing","lineStyle","animated","Skeleton","_Skeleton","datePickerProps","datePickerEmits","open","TimeOutline","defineComponent","panelMode","pickerRef","onClickOutside","closePanel","panelDate","innerValue","hoveredDate","parseToDate","mo","d","dt","parts","mi","effectiveFormat","fmt","pad2","displayText","base","wy","wn","getISOWeekInfo","getWeekStart","year","month","firstDayOfMonth","startWeekdayMon","weekLabels","yearPageStart","yearGrid","_","monthGrid","quarterGrid","calendarDays","cells","currentMonth","openPanel","selectDate","out","prevYear","nextYear","prevMonth","nextMonth","prevYearsPage","nextYearsPage","openYearPanel","openMonthPanel","selectYear","selectMonth","selectThisMonth","now","selectQuarter","clear","weekday","weekdayMon","thursday","weekYear","firstThursday","firstWeekStart","diff","week","eqWeek","onCellEnter","onCellLeave","selectToday","hours","minutes","seconds","selectedTime","setHour","setMinute","timeHeadLabel","pad","setSecond","applyTime","applyDateTime","selectNow","It","_hoisted_8","_hoisted_9","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","cell","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","DatePicker","_DatePicker","dateRangePickerProps","dateRangePickerEmits","hoverPanel","hoverDate","editingTarget","originalValues","pickerStartDate","innerStart","pickerEndDate","innerEnd","normalizeDate","panelStart","panelEnd","selectedTimeStart","selectedTimeEnd","startText","endText","yearStart","monthStart","yearEnd","monthEnd","getCalendarDays","firstDay","lastDay","startWeekday","days","remaining","calendarDaysStart","calendarDaysEnd","prevYearStart","nextYearStart","prevMonthStart","nextMonthStart","prevYearEnd","nextYearEnd","prevMonthEnd","nextMonthEnd","updateStartTime","newDate","updateEndTime","onWheelStart","onWheelEnd","editingStartUnit","editingEndUnit","startInputValue","endInputValue","startInputHRef","startInputMRef","startInputSRef","endInputHRef","endInputMRef","endInputSRef","startEdit","unit","endEdit","onStartInput","onEndInput","HOUR_RE","MS_RE","commitStart","commitEnd","isInputHovered","onInputMouseEnter","onInputMouseLeave","onStartInputClick","onEndInputClick","onHoverStart","nd","onHoverEnd","onPanelMouseEnter","onPanelMouseLeave","isInPreviewRange","onClickDay","selectedDate","selectStartDate","selectEndDate","temp","tt","_withDirectives","DateRangePicker","_DateRangePicker","tabsProps","tabsEmits","panes","active","prevActive","slideDir","tabsRef","sliderStyle","indicatorStyle","contentWrapperStyle","updateSlider","p","tabsContainer","tabItems","activeTab","tabsList","listRect","tabRect","updateIndicator","tabsNav","navRect","updateContentPosition","translateX","updateStyles","panesOrder","prevIdx","nextIdx","registerPane","pane","unregisterPane","isPaneClosable","tryLeave","onTabClick","onTabAdd","onTabRemove","Render","tabPosition","stretch","showIndicator","_createTextVNode","editable","tabPaneProps","paneStyle","Tabs","_Tabs","TabPane","_TabPane","backTopProps","backTopEmits","scrollTarget","positionStyle","getScrollTop","setScrollTop","resolveTarget","BackTop","_BackTop","treeProps","treeEmits","draggingNode","dropNode","dropType","treeNodeProps","childrenRef","treeContext","handleContextMenu","handleExpandIconClick","handleCheck","handleDragStart","handleDragEnter","handleDragOver","handleDragLeave","handleDrop","handleDragEnd","isDragging","isDropInner","isDropBefore","isDropAfter","isCurrent","onEnter","onAfterEnter","onLeave","draggable","indent","showCheckbox","_component_c_checkbox","icon","renderContent","_component_c_tree_node","checkStrictly","accordion","lazy","_withCtx","childNode","DROP_THRESHOLD","DRAG_EXPAND_DELAY","treeData","currentNodeKey","checkedKeys","halfCheckedKeys","dragOverExpandTimer","clearDragExpandTimer","clearDragState","isDraggingSelf","collapseSiblings","setNodeExpanded","normalizeNode","level","isLeaf","initialExpanded","initTreeData","firstKey","firstNode","findNode","setNodeChecked","nodes","found","expanded","deep","updateParentChecked","checkedChildren","halfCheckedChildren","handleNodeCollapse","handleNodeExpand","handleNodeCheck","handleNodeContextMenu","updateChildren","checkedNodes","halfCheckedNodes","collectNodes","dragImage","isAllowDrop","calcDropType","targetElement","clientY","contentElement","contentRect","childrenContainer","childrenRect","threshold","relativeTop","prevDropNode","relatedTarget","dragNode","targetNode","moveNode","findNodeInTree","removeNode","removed","updateNodeLevel","dragInfo","dropInfo","dragParentArray","dragIndex","dropParentArray","dropIndex","removedNode","newDropInfo","newDropParentArray","newDropIndex","newTargetNode","insertIndex","setCheckedKeys","leafOnly","clearAllChecked","setKeys","getCheckedKeys","getKeys","setChecked","getCheckedNodes","getNodes","treeNodes","setExpandedKeys","getExpandedKeys","setExpanded","getCurrentKey","getCurrentNode","setCurrentKey","nodeData","removeFromTree","parentKey","newNode","refKey","refNode","insertIntoTree","filterNode","match","childMatch","newKey","CTreeNode","Tree","_Tree","formProps","formEmits","prop","isValid","fields","addField","field","removeField","validate","callback","valid","errors","finish","error","validateField","clearValidate","resetFields","labelPosition","formItemProps","formItemEmits","AsyncValidator","rules","rule","completed","formContext","validateMessage","validateState","isRequired","getRules","labelStyle","labelWidth","itemRules","formRules","formRulesArray","trigger","filteredRules","resetField","showMessage","Form","_Form","FormItem","_FormItem","menuProps","menuEmits","info","openKeys","selectedKeys","openedMenus","menuStyle","handleSelect","handleDeselect","handleSubMenuOpen","handleSubMenuClose","actualTrigger","actualMode","mode","collapse","inlineCollapsed","menuItemProps","menuItemEmits","subMenuProps","subMenuEmits","isOpened","isCollapsed","customExpandIcon","forceRender","shouldRender","subMenuListStyle","mouseLeaveTimer","clearTimer","titleStyle","handleTitleClick","handleSubMenuContainerEnter","handleSubMenuContainerLeave","close","handleSubMenuMouseEnter","handleSubMenuMouseLeave","title","menuItemGroupProps","Menu","_Menu","MenuItem","_MenuItem","SubMenu","_SubMenu","MenuItemGroup","_MenuItemGroup","MenuDivider","_MenuDivider","__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","__spreadValues","v","fn","p","it","el","_a","_l","__spreadValues","_a2","resolveOptions","_a","p","el","__spreadValues","fn","copy","v","va","ka","isPlainObject","getByPath","p","it","el","io","is","resolveOptions","el","_a","__spreadValues","_a2","resolveOptions","el","_a","ta","__spreadValues","_l","resolveOptions","createListener","_a","el","__spreadValues","_l","_n","_o","resolveOptions","el","_a","__spreadValues","_a2","resolveOptions","el","_a","__spreadValues"]}