@hkyhy/marsun-components-core 0.1.45 → 0.1.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/components/File/FilePreview/FilePreviewContent.js +108 -58
  2. package/dist/components/File/FilePreview/FilePreviewContent.js.map +1 -1
  3. package/dist/components/Form/index.d.ts +1 -1
  4. package/dist/components/Form/kneFormInfo.d.ts +2 -0
  5. package/dist/components/Form/kneFormInfo.js +18 -17
  6. package/dist/components/Form/kneFormInfo.js.map +1 -1
  7. package/dist/components/OrgTree/OrgTree.js +52 -43
  8. package/dist/components/OrgTree/OrgTree.js.map +1 -1
  9. package/dist/components/OrgTree/style.module.scss.js +5 -5
  10. package/dist/components/PermissionBindPanel/PermissionBindPanel.d.ts +4 -1
  11. package/dist/components/PermissionBindPanel/PermissionBindPanel.js +121 -117
  12. package/dist/components/PermissionBindPanel/PermissionBindPanel.js.map +1 -1
  13. package/dist/components/Stat/StatCard/index.d.ts +4 -0
  14. package/dist/components/Stat/StatCard/index.js +45 -29
  15. package/dist/components/Stat/StatCard/index.js.map +1 -1
  16. package/dist/components/Stat/StatCardList.d.ts +0 -2
  17. package/dist/components/Stat/StatCardList.js.map +1 -1
  18. package/dist/components/TooltipInfo/TooltipInfo.js +14 -8
  19. package/dist/components/TooltipInfo/TooltipInfo.js.map +1 -1
  20. package/dist/components/Upload/index.d.ts +6 -23
  21. package/dist/components/Upload/index.js +254 -141
  22. package/dist/components/Upload/index.js.map +1 -1
  23. package/dist/components/Upload/style.module.scss.js +22 -15
  24. package/dist/components/Upload/style.module.scss.js.map +1 -1
  25. package/dist/components/index.d.ts +1 -1
  26. package/dist/index.d.ts +1 -1
  27. package/dist/index.js +132 -131
  28. package/dist/marsun-components-core.css +1 -1
  29. package/dist/styles/global.css +1 -1
  30. package/package.json +7 -6
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Upload/index.tsx"],"sourcesContent":["import { Trash2, File, Inbox, Upload as UploadIcon } from '@/components/Icons';\nimport { Button, message, Tag, Typography, Upload } from 'antd';\nimport type { UploadFile } from 'antd/es/upload/interface';\nimport React from 'react';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\n/* ---------- types ---------- */\n\n/** 上传变体 */\nexport type UploadVariant = 'panel' | 'button';\n\nexport interface CommonUploadProps {\n /* ---- antd Form.Item 兼容属性 ---- */\n value?: UploadFile[];\n onChange?: (value: UploadFile[]) => void;\n\n /* ---- 容器/样式 ---- */\n className?: string;\n\n /* ---- 上传配置 ---- */\n /** 单文件大小限制(字节),默认 500MB */\n fileSize?: number;\n /** 最大上传数量 */\n maxLength?: number;\n multiple?: boolean;\n /** 目录上传模式(webkitdirectory),选中整个文件夹并保留 webkitRelativePath */\n directory?: boolean;\n size?: 'small' | 'middle' | 'large';\n accept?: string;\n\n /* ---- UI 变体 ---- */\n /** panel = 拖拽面板(Dragger 样式),button = 按钮(默认) */\n variant?: UploadVariant;\n children?: React.ReactNode;\n renderTips?: () => React.ReactNode;\n\n /* ---- 文件列表展示 ---- */\n /** 是否展示已上传文件列表,默认 true(tips 下方) */\n showFileList?: boolean;\n\n /* ---- 回调 ---- */\n onSave?: (fileList: UploadFile[]) => void;\n ossUpload?: boolean;\n onUpload?: (options: {\n file: File;\n onSuccess: (url?: string) => void;\n onError: (err: Error) => void;\n }) => Promise<void> | void;\n getPermission?: (file: File) => boolean;\n concurrentCount?: number;\n}\n\nexport type CommonUploadRef = {\n upload: () => void;\n uploading: boolean;\n};\n\n/* ---------- utils ---------- */\n\nconst formatSize = (bytes: number): string => {\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(0)}KB`;\n if (bytes < 1024 ** 3) return `${(bytes / 1024 / 1024).toFixed(0)}M`;\n return `${(bytes / 1024 ** 3).toFixed(1)}G`;\n};\n\nfunction buildTips(accept?: string, fileSize?: number, maxLength?: number): React.ReactNode {\n const parts: string[] = [];\n if (accept) {\n const exts = accept\n .split(',')\n .map((s) => s.trim().replace(/^\\./, ''))\n .filter(Boolean);\n if (exts.length) parts.push(`支持扩展名${exts.join(',')}`);\n }\n if (fileSize) parts.push(`单个文件大小不超过${formatSize(fileSize)}`);\n if (maxLength) parts.push(`最多上传${maxLength}个附件`);\n return parts.length ? (\n <Typography.Text type=\"secondary\" className={classNames('upload-item', styles['upload-item'])}>\n {parts.join(',')}\n </Typography.Text>\n ) : null;\n}\n\nfunction getExt(filename: string): string {\n const idx = filename.lastIndexOf('.');\n return idx >= 0 ? filename.slice(idx + 1).toUpperCase() : '';\n}\n\n/* ---------- 子组件:已上传文件列表 ---------- */\n\ninterface UploadedFilesProps {\n fileList: UploadFile[];\n onRemove: (uid: string) => void;\n}\n\nconst UploadedFiles: React.FC<UploadedFilesProps> = ({ fileList, onRemove }) => {\n if (!fileList.length) return null;\n\n return (\n <div className={classNames('upload-link', styles['upload-link'])}>\n {fileList.map((file) => (\n <div\n key={file.uid}\n className={classNames(\n classNames('upload-file-row', styles['upload-file-row']),\n file.status === 'error' &&\n classNames('upload-file-row-error', styles['upload-file-row-error']),\n )}\n >\n <div className={classNames('upload-label', styles['upload-label'])}>\n <File className={classNames('upload-value', styles['upload-value'])} />\n <span className={classNames('upload-meta', styles['upload-meta'])}>{file.name}</span>\n <Tag color=\"processing\" className={classNames('upload-icon', styles['upload-icon'])}>\n {getExt(file.name)}\n </Tag>\n {file.size && (\n <Typography.Text\n type=\"secondary\"\n className={classNames('upload-title', styles['upload-title'])}\n >\n {formatSize(file.size)}\n </Typography.Text>\n )}\n </div>\n <Button\n type=\"text\"\n danger\n size=\"small\"\n icon={<Trash2 />}\n onClick={() => onRemove(file.uid)}\n className={classNames('upload-desc', styles['upload-desc'])}\n />\n </div>\n ))}\n </div>\n );\n};\n\n/* ---------- 主组件 ---------- */\n\n/**\n * CommonUpload — 通用上传组件\n *\n * - 在 antd `<Form.Item>` 内使用时,通过 `value`/`onChange` 自动接入表单\n * - 独立使用时,通过 `onSave` 获取文件列表\n *\n * ## 两种变体\n *\n * - **`variant=\"button\"`(默认)** — 虚线边框按钮 + 底部提示文案 + 已传文件列表\n * - **`variant=\"panel\"`** — Dragger 拖拽面板 + 底部已传文件列表\n *\n * @example\n * ```tsx\n * // 在 Form.Item 中使用\n * <Form.Item name=\"files\" label=\"简历附件\" rules={[{ required: true, message: '请上传文件' }]}>\n * <CommonUpload accept=\".pdf,.jpg,.png\" maxLength={10} />\n * </Form.Item>\n *\n * // 独立使用(Modal 内、非表单场景)\n * <CommonUpload variant=\"panel\" accept=\".doc,.pdf\" onSave={(list) => setFiles(list)} />\n *\n * // ref 手动触发上传\n * const ref = useRef<CommonUploadRef>(null);\n * <CommonUpload ref={ref} onUpload={...} />;\n * ref.current?.upload();\n * ```\n */\nconst CommonUpload = React.forwardRef<CommonUploadRef, CommonUploadProps>(\n (\n {\n value,\n onChange,\n className,\n variant,\n size,\n children,\n renderTips,\n showFileList = true,\n fileSize,\n maxLength,\n multiple,\n directory,\n accept,\n onUpload,\n onSave,\n getPermission,\n concurrentCount,\n },\n ref,\n ) => {\n const [innerFileList, setInnerFileList] = React.useState<UploadFile[]>([]);\n const [uploading, setUploading] = React.useState(false);\n\n // 受控模式:value 优先;非受控:内部状态\n const fileList = value ?? innerFileList;\n const setFileList = React.useCallback(\n (next: UploadFile[] | ((prev: UploadFile[]) => UploadFile[])) => {\n const resolved = typeof next === 'function' ? next(fileList) : next;\n onChange?.(resolved);\n setInnerFileList(resolved);\n onSave?.(resolved);\n },\n [fileList, onChange, onSave],\n );\n\n const effectiveFileSize = fileSize ?? 500 * 1024 * 1024;\n const concurrent = concurrentCount ?? 3;\n\n const beforeUploadFn = React.useCallback(\n (file: File) => {\n if (getPermission && !getPermission(file)) {\n message.error('无权限上传此文件');\n return Upload.LIST_IGNORE;\n }\n if (file.size > effectiveFileSize) {\n message.error(`文件超出 ${formatSize(effectiveFileSize)} 限制`);\n return Upload.LIST_IGNORE;\n }\n return true;\n },\n [effectiveFileSize, getPermission],\n );\n\n const triggerUpload = React.useCallback(async () => {\n if (!onUpload || !fileList.length) return;\n setUploading(true);\n try {\n const pending = [...fileList];\n const pool: Promise<void>[] = [];\n while (pending.length) {\n const item = pending.shift();\n if (!item?.originFileObj) continue;\n const rawFile = item.originFileObj;\n pool.push(\n new Promise<void>((resolve) => {\n onUpload({\n file: rawFile,\n onSuccess: (url?) => {\n setFileList((prev) =>\n prev.map((f) =>\n f.uid === item.uid ? { ...f, status: 'done' as const, url: url ?? f.url } : f,\n ),\n );\n resolve();\n },\n onError: (_err: Error) => {\n message.error(`${item.name} 上传失败`);\n setFileList((prev) =>\n prev.map((f) => (f.uid === item.uid ? { ...f, status: 'error' as const } : f)),\n );\n resolve();\n },\n });\n }),\n );\n if (pool.length >= concurrent) await Promise.race(pool);\n }\n await Promise.allSettled(pool);\n onSave?.(fileList);\n } finally {\n setUploading(false);\n }\n }, [fileList, onUpload, concurrent, onSave, setFileList]);\n\n React.useImperativeHandle(ref, () => ({ upload: triggerUpload, uploading }), [\n triggerUpload,\n uploading,\n ]);\n\n const tips = renderTips?.() ?? buildTips(accept, fileSize, maxLength);\n\n if (variant === 'panel') {\n return (\n <div className={className}>\n <Upload.Dragger\n fileList={fileList}\n beforeUpload={beforeUploadFn}\n onChange={(info) => setFileList(info.fileList)}\n multiple={multiple}\n directory={directory}\n accept={accept}\n showUploadList={false}\n customRequest={({ onSuccess }) => onSuccess?.({})}\n >\n <p className={classNames('upload-drag-icon', styles['upload-drag-icon'])}>\n <Inbox />\n </p>\n <p className=\"ant-upload-text\">点击或拖拽文件到此区域上传</p>\n <p>{tips}</p>\n </Upload.Dragger>\n {showFileList && (\n <UploadedFiles\n fileList={fileList}\n onRemove={(uid) => setFileList((prev) => prev.filter((f) => f.uid !== uid))}\n />\n )}\n </div>\n );\n }\n\n // button mode (default)\n return (\n <div className={className}>\n <Upload\n fileList={fileList}\n beforeUpload={beforeUploadFn}\n onChange={(info) => setFileList(info.fileList)}\n multiple={multiple}\n directory={directory}\n accept={accept}\n showUploadList={false}\n customRequest={({ onSuccess }) => onSuccess?.({})}\n >\n {children ?? (\n <Button\n size={size}\n icon={<UploadIcon />}\n className={classNames('upload-toolbar', styles['upload-toolbar'])}\n >\n 点击上传\n </Button>\n )}\n </Upload>\n <div className={classNames('upload-list', styles['upload-list'])}>{tips}</div>\n {showFileList && (\n <UploadedFiles\n fileList={fileList}\n onRemove={(uid) => setFileList((prev) => prev.filter((f) => f.uid !== uid))}\n />\n )}\n </div>\n );\n },\n);\n\nCommonUpload.displayName = 'CommonUpload';\n\nexport default CommonUpload;\n"],"names":["formatSize","bytes","buildTips","accept","fileSize","maxLength","parts","exts","s","jsx","Typography","classNames","styles","getExt","filename","idx","UploadedFiles","fileList","onRemove","file","jsxs","File","Tag","Button","Trash2","CommonUpload","React","value","onChange","className","variant","size","children","renderTips","showFileList","multiple","directory","onUpload","onSave","getPermission","concurrentCount","ref","innerFileList","setInnerFileList","uploading","setUploading","setFileList","next","resolved","effectiveFileSize","concurrent","beforeUploadFn","message","Upload","triggerUpload","pending","pool","item","rawFile","resolve","url","prev","f","_err","tips","info","onSuccess","Inbox","uid","UploadIcon"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Upload/index.tsx"],"sourcesContent":["import { Trash2, File, Inbox, Plus, Upload as UploadIcon } from '@/components/Icons';\nimport { SEMANTIC_COLORS, SemanticTag } from '@/components/Tag';\nimport { Button, Image, message, Typography, Upload } from 'antd';\nimport type { UploadFile } from 'antd/es/upload/interface';\nimport React from 'react';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\n/* ---------- types ---------- */\n\n/** 上传变体 */\nexport type UploadVariant = 'panel' | 'button';\n\n/** 已选文件列表样式:text=行列表;picture-card=图片卡片(含预览) */\nexport type UploadListType = 'text' | 'picture-card';\n\nexport interface CommonUploadProps {\n /* ---- antd Form.Item 兼容属性 ---- */\n value?: UploadFile[];\n onChange?: (value: UploadFile[]) => void;\n\n /* ---- 容器/样式 ---- */\n className?: string;\n\n /* ---- 上传配置 ---- */\n /** 单文件大小限制(字节),默认 500MB */\n fileSize?: number;\n /** 最大上传数量 */\n maxLength?: number;\n multiple?: boolean;\n /** 目录上传模式(webkitdirectory),选中整个文件夹并保留 webkitRelativePath */\n directory?: boolean;\n size?: 'small' | 'middle' | 'large';\n accept?: string;\n\n /* ---- UI 变体 ---- */\n /** panel = 拖拽面板(Dragger 样式),button = 按钮(默认) */\n variant?: UploadVariant;\n /** 列表展现;图片场景用 picture-card(预览+缩略图) */\n listType?: UploadListType;\n children?: React.ReactNode;\n renderTips?: () => React.ReactNode;\n\n /* ---- 文件列表展示 ---- */\n /** 是否展示已上传文件列表,默认 true(tips 下方) */\n showFileList?: boolean;\n\n /* ---- 回调 ---- */\n onSave?: (fileList: UploadFile[]) => void;\n ossUpload?: boolean;\n onUpload?: (options: {\n file: File;\n onSuccess: (url?: string) => void;\n onError: (err: Error) => void;\n }) => Promise<void> | void;\n getPermission?: (file: File) => boolean;\n concurrentCount?: number;\n}\n\nexport type CommonUploadRef = {\n upload: () => void;\n uploading: boolean;\n};\n\n/* ---------- utils ---------- */\n\nconst formatSize = (bytes: number): string => {\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(0)}KB`;\n if (bytes < 1024 ** 3) return `${(bytes / 1024 / 1024).toFixed(0)}M`;\n return `${(bytes / 1024 ** 3).toFixed(1)}G`;\n};\n\nfunction buildTips(accept?: string, fileSize?: number, maxLength?: number): React.ReactNode {\n const parts: string[] = [];\n if (accept) {\n const exts = accept\n .split(',')\n .map((s) => s.trim().replace(/^\\./, ''))\n .filter(Boolean);\n if (exts.length) parts.push(`支持扩展名${exts.join(',')}`);\n }\n if (fileSize) parts.push(`单个文件大小不超过${formatSize(fileSize)}`);\n if (maxLength) parts.push(`最多上传${maxLength}个附件`);\n return parts.length ? (\n <Typography.Text type=\"secondary\" className={classNames('upload-item', styles['upload-item'])}>\n {parts.join(',')}\n </Typography.Text>\n ) : null;\n}\n\nfunction getExt(filename: string): string {\n const idx = filename.lastIndexOf('.');\n return idx >= 0 ? filename.slice(idx + 1).toUpperCase() : '';\n}\n\nfunction resolvePreviewUrl(file: UploadFile): string {\n if (file.url) return file.url;\n if (file.thumbUrl) return file.thumbUrl;\n if (file.originFileObj) return URL.createObjectURL(file.originFileObj);\n return '';\n}\n\n/* ---------- 子组件:文本行列表 ---------- */\n\ninterface UploadedFilesProps {\n fileList: UploadFile[];\n onRemove: (uid: string) => void;\n onPreview?: (file: UploadFile) => void;\n}\n\nconst UploadedFiles: React.FC<UploadedFilesProps> = ({ fileList, onRemove, onPreview }) => {\n if (!fileList.length) return null;\n\n return (\n <div className={classNames('upload-link', styles['upload-link'])}>\n {fileList.map((file) => {\n const previewable = Boolean(\n file.url || file.thumbUrl || file.originFileObj?.type?.startsWith('image/'),\n );\n return (\n <div\n key={file.uid}\n className={classNames(\n classNames('upload-file-row', styles['upload-file-row']),\n file.status === 'error' &&\n classNames('upload-file-row-error', styles['upload-file-row-error']),\n )}\n >\n <div className={classNames('upload-label', styles['upload-label'])}>\n {file.thumbUrl || (file.url && file.type?.startsWith('image/')) ? (\n <button\n type=\"button\"\n className={classNames('upload-thumb-btn', styles['upload-thumb-btn'])}\n onClick={() => onPreview?.(file)}\n title=\"预览\"\n >\n <img\n className={classNames('upload-thumb', styles['upload-thumb'])}\n src={file.thumbUrl || file.url}\n alt={file.name}\n />\n </button>\n ) : (\n <File className={classNames('upload-value', styles['upload-value'])} />\n )}\n <span className={classNames('upload-meta', styles['upload-meta'])}>{file.name}</span>\n <SemanticTag\n color={SEMANTIC_COLORS.INFO}\n className={classNames('upload-icon', styles['upload-icon'])}\n >\n {getExt(file.name)}\n </SemanticTag>\n {file.size ? (\n <Typography.Text\n type=\"secondary\"\n className={classNames('upload-title', styles['upload-title'])}\n >\n {formatSize(file.size)}\n </Typography.Text>\n ) : null}\n </div>\n <div className={classNames('upload-row-actions', styles['upload-row-actions'])}>\n {previewable && onPreview ? (\n <Button type=\"link\" size=\"small\" onClick={() => onPreview(file)}>\n 预览\n </Button>\n ) : null}\n <Button\n type=\"text\"\n danger\n size=\"small\"\n icon={<Trash2 />}\n onClick={() => onRemove(file.uid)}\n className={classNames('upload-desc', styles['upload-desc'])}\n />\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\n/* ---------- 主组件 ---------- */\n\n/**\n * CommonUpload — 通用上传组件\n *\n * - `listType=\"text\"`(默认):行列表;图片有缩略图时可「预览」\n * - `listType=\"picture-card\"`:antd 图片卡片(内置预览/删除图标)\n */\nconst CommonUpload = React.forwardRef<CommonUploadRef, CommonUploadProps>(\n (\n {\n value,\n onChange,\n className,\n variant,\n listType = 'text',\n size,\n children,\n renderTips,\n showFileList = true,\n fileSize,\n maxLength,\n multiple,\n directory,\n accept,\n onUpload,\n onSave,\n getPermission,\n concurrentCount,\n },\n ref,\n ) => {\n const [innerFileList, setInnerFileList] = React.useState<UploadFile[]>([]);\n const [uploading, setUploading] = React.useState(false);\n const [preview, setPreview] = React.useState<{ open: boolean; url: string; title: string }>({\n open: false,\n url: '',\n title: '',\n });\n const blobUrlsRef = React.useRef<string[]>([]);\n\n // 受控模式:value 优先;非受控:内部状态\n const fileList = value ?? innerFileList;\n const setFileList = React.useCallback(\n (next: UploadFile[] | ((prev: UploadFile[]) => UploadFile[])) => {\n const resolved = typeof next === 'function' ? next(fileList) : next;\n onChange?.(resolved);\n setInnerFileList(resolved);\n onSave?.(resolved);\n },\n [fileList, onChange, onSave],\n );\n\n const effectiveFileSize = fileSize ?? 500 * 1024 * 1024;\n const concurrent = concurrentCount ?? 3;\n\n const beforeUploadFn = React.useCallback(\n (file: File) => {\n if (getPermission && !getPermission(file)) {\n message.error('无权限上传此文件');\n return Upload.LIST_IGNORE;\n }\n if (file.size > effectiveFileSize) {\n message.error(`文件超出 ${formatSize(effectiveFileSize)} 限制`);\n return Upload.LIST_IGNORE;\n }\n return true;\n },\n [effectiveFileSize, getPermission],\n );\n\n const triggerUpload = React.useCallback(async () => {\n if (!onUpload || !fileList.length) return;\n setUploading(true);\n try {\n const pending = [...fileList];\n const pool: Promise<void>[] = [];\n while (pending.length) {\n const item = pending.shift();\n if (!item?.originFileObj) continue;\n const rawFile = item.originFileObj;\n pool.push(\n new Promise<void>((resolve) => {\n onUpload({\n file: rawFile,\n onSuccess: (url?) => {\n setFileList((prev) =>\n prev.map((f) =>\n f.uid === item.uid ? { ...f, status: 'done' as const, url: url ?? f.url } : f,\n ),\n );\n resolve();\n },\n onError: (_err: Error) => {\n message.error(`${item.name} 上传失败`);\n setFileList((prev) =>\n prev.map((f) => (f.uid === item.uid ? { ...f, status: 'error' as const } : f)),\n );\n resolve();\n },\n });\n }),\n );\n if (pool.length >= concurrent) await Promise.race(pool);\n }\n await Promise.allSettled(pool);\n onSave?.(fileList);\n } finally {\n setUploading(false);\n }\n }, [fileList, onUpload, concurrent, onSave, setFileList]);\n\n React.useImperativeHandle(ref, () => ({ upload: triggerUpload, uploading }), [\n triggerUpload,\n uploading,\n ]);\n\n const openPreview = React.useCallback((file: UploadFile) => {\n const url = resolvePreviewUrl(file);\n if (!url) {\n message.warning('暂无法预览该文件');\n return;\n }\n if (url.startsWith('blob:')) {\n blobUrlsRef.current.push(url);\n }\n setPreview({ open: true, url, title: file.name || '预览' });\n }, []);\n\n React.useEffect(\n () => () => {\n blobUrlsRef.current.forEach((u) => URL.revokeObjectURL(u));\n blobUrlsRef.current = [];\n },\n [],\n );\n\n const tips = renderTips?.() ?? buildTips(accept, fileSize, maxLength);\n const canAddMore = !maxLength || fileList.length < maxLength;\n\n const previewNode = (\n <Image\n alt={preview.title}\n style={{ display: 'none' }}\n src={preview.url}\n preview={{\n visible: preview.open,\n src: preview.url,\n onVisibleChange: (visible) => setPreview((prev) => ({ ...prev, open: visible })),\n }}\n />\n );\n\n if (listType === 'picture-card') {\n return (\n <div\n className={classNames('upload-picture-root', styles['upload-picture-root'], className)}\n >\n <Upload\n listType=\"picture-card\"\n fileList={fileList}\n beforeUpload={beforeUploadFn}\n onChange={(info) => setFileList(info.fileList)}\n onPreview={openPreview}\n multiple={multiple}\n directory={directory}\n accept={accept}\n showUploadList={{ showPreviewIcon: true, showRemoveIcon: true }}\n customRequest={({ onSuccess }) => onSuccess?.({})}\n className={classNames('upload-picture-card', styles['upload-picture-card'])}\n >\n {canAddMore ? (\n <div\n className={classNames('upload-picture-trigger', styles['upload-picture-trigger'])}\n >\n <Plus size={20} />\n <div\n className={classNames(\n 'upload-picture-trigger-text',\n styles['upload-picture-trigger-text'],\n )}\n >\n 上传图片\n </div>\n </div>\n ) : null}\n </Upload>\n {tips ? (\n <div className={classNames('upload-list', styles['upload-list'])}>{tips}</div>\n ) : null}\n {previewNode}\n </div>\n );\n }\n\n if (variant === 'panel') {\n return (\n <div className={className}>\n <Upload.Dragger\n fileList={fileList}\n beforeUpload={beforeUploadFn}\n onChange={(info) => setFileList(info.fileList)}\n multiple={multiple}\n directory={directory}\n accept={accept}\n showUploadList={false}\n customRequest={({ onSuccess }) => onSuccess?.({})}\n >\n <p className={classNames('upload-drag-icon', styles['upload-drag-icon'])}>\n <Inbox />\n </p>\n <p className=\"ant-upload-text\">点击或拖拽文件到此区域上传</p>\n <p>{tips}</p>\n </Upload.Dragger>\n {showFileList && (\n <UploadedFiles\n fileList={fileList}\n onRemove={(uid) => setFileList((prev) => prev.filter((f) => f.uid !== uid))}\n onPreview={openPreview}\n />\n )}\n {previewNode}\n </div>\n );\n }\n\n // button mode (default) + text list\n return (\n <div className={className}>\n <Upload\n fileList={fileList}\n beforeUpload={beforeUploadFn}\n onChange={(info) => setFileList(info.fileList)}\n multiple={multiple}\n directory={directory}\n accept={accept}\n showUploadList={false}\n customRequest={({ onSuccess }) => onSuccess?.({})}\n >\n {children ?? (\n <Button\n size={size}\n icon={<UploadIcon />}\n className={classNames('upload-toolbar', styles['upload-toolbar'])}\n >\n 点击上传\n </Button>\n )}\n </Upload>\n <div className={classNames('upload-list', styles['upload-list'])}>{tips}</div>\n {showFileList && (\n <UploadedFiles\n fileList={fileList}\n onRemove={(uid) => setFileList((prev) => prev.filter((f) => f.uid !== uid))}\n onPreview={openPreview}\n />\n )}\n {previewNode}\n </div>\n );\n },\n);\n\nCommonUpload.displayName = 'CommonUpload';\n\nexport default CommonUpload;\n"],"names":["formatSize","bytes","buildTips","accept","fileSize","maxLength","parts","exts","s","jsx","Typography","classNames","styles","getExt","filename","idx","resolvePreviewUrl","file","UploadedFiles","fileList","onRemove","onPreview","previewable","_b","_a","jsxs","_c","File","SemanticTag","SEMANTIC_COLORS","Button","Trash2","CommonUpload","React","value","onChange","className","variant","listType","size","children","renderTips","showFileList","multiple","directory","onUpload","onSave","getPermission","concurrentCount","ref","innerFileList","setInnerFileList","uploading","setUploading","preview","setPreview","blobUrlsRef","setFileList","next","resolved","effectiveFileSize","concurrent","beforeUploadFn","message","Upload","triggerUpload","pending","pool","item","rawFile","resolve","url","prev","f","_err","openPreview","u","tips","canAddMore","previewNode","Image","visible","info","onSuccess","Plus","Inbox","uid","UploadIcon"],"mappings":"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"}
@@ -1,19 +1,26 @@
1
- const o = {
2
- "upload-item": "_upload-item_xoraq_67",
3
- "upload-link": "_upload-link_xoraq_73",
4
- "upload-label": "_upload-label_xoraq_77",
5
- "upload-value": "_upload-value_xoraq_84",
6
- "upload-meta": "_upload-meta_xoraq_89",
7
- "upload-icon": "_upload-icon_xoraq_95",
8
- "upload-title": "_upload-title_xoraq_100",
9
- "upload-desc": "_upload-desc_xoraq_106",
10
- "upload-toolbar": "_upload-toolbar_xoraq_115",
11
- "upload-list": "_upload-list_xoraq_125",
12
- "upload-file-row": "_upload-file-row_xoraq_129",
13
- "upload-file-row-error": "_upload-file-row-error_xoraq_140",
14
- "upload-drag-icon": "_upload-drag-icon_xoraq_145"
1
+ const p = {
2
+ "upload-item": "_upload-item_1xwph_67",
3
+ "upload-link": "_upload-link_1xwph_73",
4
+ "upload-label": "_upload-label_1xwph_80",
5
+ "upload-thumb-btn": "_upload-thumb-btn_1xwph_87",
6
+ "upload-thumb": "_upload-thumb_1xwph_87",
7
+ "upload-row-actions": "_upload-row-actions_1xwph_107",
8
+ "upload-picture-root": "_upload-picture-root_1xwph_114",
9
+ "upload-picture-card": "_upload-picture-card_1xwph_119",
10
+ "upload-picture-trigger": "_upload-picture-trigger_1xwph_125",
11
+ "upload-picture-trigger-text": "_upload-picture-trigger-text_1xwph_134",
12
+ "upload-value": "_upload-value_1xwph_139",
13
+ "upload-meta": "_upload-meta_1xwph_144",
14
+ "upload-icon": "_upload-icon_1xwph_150",
15
+ "upload-title": "_upload-title_1xwph_155",
16
+ "upload-desc": "_upload-desc_1xwph_161",
17
+ "upload-toolbar": "_upload-toolbar_1xwph_170",
18
+ "upload-list": "_upload-list_1xwph_180",
19
+ "upload-file-row": "_upload-file-row_1xwph_184",
20
+ "upload-file-row-error": "_upload-file-row-error_1xwph_195",
21
+ "upload-drag-icon": "_upload-drag-icon_1xwph_200"
15
22
  };
16
23
  export {
17
- o as default
24
+ p as default
18
25
  };
19
26
  //# sourceMappingURL=style.module.scss.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}
@@ -16,7 +16,7 @@ export * from './Tag';
16
16
  export * from './TooltipInfo';
17
17
  export * from './Tour';
18
18
  export { default as CommonUpload } from './Upload';
19
- export type { CommonUploadProps, CommonUploadRef, UploadVariant } from './Upload';
19
+ export type { CommonUploadProps, CommonUploadRef, UploadListType, UploadVariant } from './Upload';
20
20
  export * from './VirtualScrollbar';
21
21
  export * from './Icons';
22
22
  export * from './Sparkline';
package/dist/index.d.ts CHANGED
@@ -42,7 +42,7 @@ export * from './components/Tag';
42
42
  export * from './components/TooltipInfo';
43
43
  export * from './components/Tour';
44
44
  export { default as CommonUpload } from './components/Upload';
45
- export type { CommonUploadProps, CommonUploadRef, UploadVariant } from './components/Upload';
45
+ export type { CommonUploadProps, CommonUploadRef, UploadListType, UploadVariant, } from './components/Upload';
46
46
  export * from './components/VirtualScrollbar';
47
47
  export * from './components/Icons';
48
48
  export * from './components/Sparkline';
package/dist/index.js CHANGED
@@ -132,39 +132,39 @@ import { default as hl } from "./components/ReactFilter/withFilterValue.js";
132
132
  import { CHUNK_METHOD_OPTIONS as Dl, EMBEDDING_MODEL_OPTIONS as Ml, PARSE_STATUS_CONFIG as Ll } from "./components/AgentHub/KnowledgeBase/constants/types.js";
133
133
  import { CITATION_LINK_PREFIX as Al, citationDisplayNumber as Ol, citationIdToIndex as _l, countUniqueCitedSources as bl, detectCitationIdBase as yl, extractCitationIdsFromContent as vl, extractCitationTitle as wl, formatCitationDocBasename as Bl, formatCitationMeta as Ul, formatCitationPositions as kl, injectCitationMarkdownLinks as Nl, normalizeCitation as Hl, parseCitationLinkHref as Vl, prepareCitationContent as Kl, resolveCitationTitle as zl, sanitizeCitationHtml as Gl, stripCitationFrontmatter as Yl } from "./components/AgentHub/Chat/utils/citationContent.js";
134
134
  import { COLUMN_CONFIG_COL_KEY as Xl, FLEX_SPACER_COL_KEY as ql, applyColumnConfig as Zl, columnsToConfig as jl, hideColumnAtPath as Jl, isInternalColumnKey as Ql } from "./components/Table/columnConfigUtils.js";
135
- import { CancelButton as ei, Form as ti, FormInfo as ri, FormModal as oi, FormSteps as ai, FormStepsModal as si, Input as li, InputNumber as ii, List as mi, MultiField as fi, RadioGroup as pi, ResetButton as ni, Select as di, SubmitButton as ui, Switch as xi, TableList as ci, TextArea as Fi } from "./components/Form/kneFormInfo.js";
136
- import { FILTER_CLASS as Ci } from "./components/ReactFilter/filterClassNames.js";
137
- import { FileItem as Ii } from "./components/File/FileItem/index.js";
138
- import { FilterProvider as gi, useFilterDeps as hi, useFilterFieldBridge as Ri, useFilterRegister as Di, useFilterState as Mi } from "./components/Filter/useFilterState.js";
139
- import { GroupList as Ei, RULES as Ai, default as Oi, compileErrMsg as _i, computedFieldValueFromFormData as bi, computedFormDataFormState as yi, filterEmpty as vi, findField as wi, formUtils as Bi, interceptors as Ui, isEmpty as ki, isNotEmpty as Ni, matchFields as Hi, preset as Vi, stateToError as Ki, stateToIsPass as zi, useField as Gi, useFormApi as Yi, useFormContext as Wi, useGroup as Xi, useReset as qi, useSubmit as Zi } from "@kne/react-form";
140
- import { MODAL_SIZE_BODY_HEIGHT as Ji, MODAL_SIZE_WIDTH as Qi, resolveModalSizeAnchor as $i, resolveModalWidth as em } from "./components/Modal/utils/resolveModalSize.js";
135
+ import { CancelButton as ei, Form as ti, FormInfo as ri, FormModal as oi, FormSteps as ai, FormStepsModal as si, Input as li, InputNumber as ii, List as mi, MultiField as fi, RadioGroup as pi, ResetButton as ni, Select as di, SubmitButton as ui, Switch as xi, TableList as ci, TextArea as Fi, TreeSelect as Si } from "./components/Form/kneFormInfo.js";
136
+ import { FILTER_CLASS as Pi } from "./components/ReactFilter/filterClassNames.js";
137
+ import { FileItem as Ti } from "./components/File/FileItem/index.js";
138
+ import { FilterProvider as hi, useFilterDeps as Ri, useFilterFieldBridge as Di, useFilterRegister as Mi, useFilterState as Li } from "./components/Filter/useFilterState.js";
139
+ import { GroupList as Ai, RULES as Oi, default as _i, compileErrMsg as bi, computedFieldValueFromFormData as yi, computedFormDataFormState as vi, filterEmpty as wi, findField as Bi, formUtils as Ui, interceptors as ki, isEmpty as Ni, isNotEmpty as Hi, matchFields as Vi, preset as Ki, stateToError as zi, stateToIsPass as Gi, useField as Yi, useFormApi as Wi, useFormContext as Xi, useGroup as qi, useReset as Zi, useSubmit as ji } from "@kne/react-form";
140
+ import { MODAL_SIZE_BODY_HEIGHT as Qi, MODAL_SIZE_WIDTH as $i, resolveModalSizeAnchor as em, resolveModalWidth as tm } from "./components/Modal/utils/resolveModalSize.js";
141
141
  import * as r from "./components/ReactFilter/fields/index.js";
142
- import { NumberRangeFilterItem as rm, InputFilterItem as om, SelectAddressFilterItem as am, SelectCascaderFilterItem as sm, SelectFunctionFilterItem as lm, SelectIndustryFilterItem as im, SelectTableListFilterItem as mm, SuperSelectFilterItem as fm } from "./components/ReactFilter/fields/index.js";
143
- import { PageShellProvider as nm, usePageShell as dm, usePageShellLoading as um } from "./components/Layout/PageShell/PageShellContext.js";
144
- import { SelectCascader as cm } from "@kne/super-select";
145
- import { default as Sm } from "./components/ReactFilter/fields/SelectTreeFilterItem.js";
146
- import { animateScrollFromTopToBottom as Pm, animateScrollTo as Im, getScrollBottom as Tm } from "./components/AgentHub/Chat/utils/smoothScroll.js";
147
- import { applyHiddenRows as hm, mergeTablePrefs as Rm, normalizeHiddenRowKeys as Dm, parseTablePrefs as Mm, serializeTablePrefs as Lm } from "./components/Table/tablePrefsUtils.js";
148
- import { buildDepsKey as Am, normalizeDependsOn as Om, resolveFilterLabel as _m, resolveFilterVisible as bm, resolveHidden as ym } from "./components/Filter/types.js";
149
- import { downloadFileItem as wm, getFileDownloadAuthHeaders as Bm, getFileDownloadUrl as Um } from "./components/File/utils/download.js";
150
- import { emptyTablePrefs as Nm } from "./components/Table/tablePrefsTypes.js";
151
- import { extractCitations as Vm, formatSessionTime as Km, getSessionDisplayName as zm, isWelcomeOnlyMessages as Gm, parseSessionMessages as Ym, toDisplayMessages as Wm } from "./components/AgentHub/Chat/utils/sessionMessages.js";
152
- import { default as qm, multiSelectInterceptor as Zm, singleSelectInterceptor as jm } from "./components/ReactFilter/filterInterceptors.js";
153
- import { formatLlmTextToHtml as Qm, parseLlmText as $m } from "./components/LlmFormattedText/parseLlmText.js";
154
- import { getFileExtension as tf, getFileIcon as rf, getFileTypeName as of, normalizeExtension as af, normalizeFileDisplayItem as sf, parseFileNameFromUrl as lf } from "./components/File/fileDisplay.js";
155
- import { hasCitationMarkers as ff, normalizeAssistantMarkdown as pf, normalizeDisplayText as nf, parseAssistantContent as df } from "./components/AgentHub/Chat/utils/messageContent.js";
156
- import { hasPermission as xf } from "./components/Auth/hasPermission.js";
157
- import { sanitizeMermaidChart as Ff, stripProseFromMermaid as Sf } from "./components/AgentHub/Chat/utils/sanitizeMermaidChart.js";
158
- import { useAutoScrollToBottom as Pf } from "./components/AgentHub/Chat/hooks/useAutoScrollToBottom.js";
159
- import { useChat as Tf } from "./components/AgentHub/Chat/hooks/useChat.js";
160
- import { useChatSessions as hf } from "./components/AgentHub/Chat/hooks/useChatSessions.js";
161
- import { useCitationPanel as Df } from "./components/AgentHub/Chat/hooks/useCitationPanel.js";
162
- import { useKBDocuments as Lf } from "./components/AgentHub/KnowledgeBase/hooks/useKBDocuments.js";
163
- import { useKnowledgeBase as Af } from "./components/AgentHub/KnowledgeBase/hooks/useKnowledgeBase.js";
164
- import { useMarsunAuth as _f, useMarsunCore as bf, useMarsunFetch as yf } from "./provider/context.js";
165
- import { useContext as wf } from "./components/ReactFilter/context.js";
166
- import { useSSECompletion as Uf } from "./components/AgentHub/Chat/hooks/useSSECompletion.js";
167
- import { useTypewriter as Nf } from "./components/AgentHub/Chat/hooks/useTypewriter.js";
142
+ import { NumberRangeFilterItem as om, InputFilterItem as am, SelectAddressFilterItem as sm, SelectCascaderFilterItem as lm, SelectFunctionFilterItem as im, SelectIndustryFilterItem as mm, SelectTableListFilterItem as fm, SuperSelectFilterItem as pm } from "./components/ReactFilter/fields/index.js";
143
+ import { PageShellProvider as dm, usePageShell as um, usePageShellLoading as xm } from "./components/Layout/PageShell/PageShellContext.js";
144
+ import { SelectCascader as Fm } from "@kne/super-select";
145
+ import { default as Cm } from "./components/ReactFilter/fields/SelectTreeFilterItem.js";
146
+ import { animateScrollFromTopToBottom as Im, animateScrollTo as Tm, getScrollBottom as gm } from "./components/AgentHub/Chat/utils/smoothScroll.js";
147
+ import { applyHiddenRows as Rm, mergeTablePrefs as Dm, normalizeHiddenRowKeys as Mm, parseTablePrefs as Lm, serializeTablePrefs as Em } from "./components/Table/tablePrefsUtils.js";
148
+ import { buildDepsKey as Om, normalizeDependsOn as _m, resolveFilterLabel as bm, resolveFilterVisible as ym, resolveHidden as vm } from "./components/Filter/types.js";
149
+ import { downloadFileItem as Bm, getFileDownloadAuthHeaders as Um, getFileDownloadUrl as km } from "./components/File/utils/download.js";
150
+ import { emptyTablePrefs as Hm } from "./components/Table/tablePrefsTypes.js";
151
+ import { extractCitations as Km, formatSessionTime as zm, getSessionDisplayName as Gm, isWelcomeOnlyMessages as Ym, parseSessionMessages as Wm, toDisplayMessages as Xm } from "./components/AgentHub/Chat/utils/sessionMessages.js";
152
+ import { default as Zm, multiSelectInterceptor as jm, singleSelectInterceptor as Jm } from "./components/ReactFilter/filterInterceptors.js";
153
+ import { formatLlmTextToHtml as $m, parseLlmText as ef } from "./components/LlmFormattedText/parseLlmText.js";
154
+ import { getFileExtension as rf, getFileIcon as of, getFileTypeName as af, normalizeExtension as sf, normalizeFileDisplayItem as lf, parseFileNameFromUrl as mf } from "./components/File/fileDisplay.js";
155
+ import { hasCitationMarkers as pf, normalizeAssistantMarkdown as nf, normalizeDisplayText as df, parseAssistantContent as uf } from "./components/AgentHub/Chat/utils/messageContent.js";
156
+ import { hasPermission as cf } from "./components/Auth/hasPermission.js";
157
+ import { sanitizeMermaidChart as Sf, stripProseFromMermaid as Cf } from "./components/AgentHub/Chat/utils/sanitizeMermaidChart.js";
158
+ import { useAutoScrollToBottom as If } from "./components/AgentHub/Chat/hooks/useAutoScrollToBottom.js";
159
+ import { useChat as gf } from "./components/AgentHub/Chat/hooks/useChat.js";
160
+ import { useChatSessions as Rf } from "./components/AgentHub/Chat/hooks/useChatSessions.js";
161
+ import { useCitationPanel as Mf } from "./components/AgentHub/Chat/hooks/useCitationPanel.js";
162
+ import { useKBDocuments as Ef } from "./components/AgentHub/KnowledgeBase/hooks/useKBDocuments.js";
163
+ import { useKnowledgeBase as Of } from "./components/AgentHub/KnowledgeBase/hooks/useKnowledgeBase.js";
164
+ import { useMarsunAuth as bf, useMarsunCore as yf, useMarsunFetch as vf } from "./provider/context.js";
165
+ import { useContext as Bf } from "./components/ReactFilter/context.js";
166
+ import { useSSECompletion as kf } from "./components/AgentHub/Chat/hooks/useSSECompletion.js";
167
+ import { useTypewriter as Hf } from "./components/AgentHub/Chat/hooks/useTypewriter.js";
168
168
  export {
169
169
  Sr as AdvancedFilter,
170
170
  Pr as AgentAppShell,
@@ -232,14 +232,14 @@ export {
232
232
  xo as Empty,
233
233
  ft as Eye,
234
234
  pt as EyeOff,
235
- Ci as FILTER_CLASS,
235
+ Pi as FILTER_CLASS,
236
236
  ql as FLEX_SPACER_COL_KEY,
237
237
  Fo as FetchSelect,
238
238
  Co as FetchTreeSelect,
239
239
  nt as File,
240
240
  dt as FileArchive,
241
241
  ut as FileImage,
242
- Ii as FileItemView,
242
+ Ti as FileItemView,
243
243
  Io as FileLink,
244
244
  go as FilePreview,
245
245
  Ro as FilePreviewLink,
@@ -258,7 +258,7 @@ export {
258
258
  Xo as FilterOuter,
259
259
  Zo as FilterPanel,
260
260
  Jo as FilterPopover,
261
- gi as FilterProvider,
261
+ hi as FilterProvider,
262
262
  $o as FilterSelect,
263
263
  ta as FilterTreeSelect,
264
264
  oa as FilterTrigger,
@@ -273,7 +273,7 @@ export {
273
273
  oi as FormModal,
274
274
  ai as FormSteps,
275
275
  si as FormStepsModal,
276
- Ei as GroupList,
276
+ Ai as GroupList,
277
277
  It as Hash,
278
278
  Tt as House,
279
279
  gt as ICON_NAMES,
@@ -297,8 +297,8 @@ export {
297
297
  Ot as Loader2,
298
298
  _t as Lock,
299
299
  bt as LogOut,
300
- Ji as MODAL_SIZE_BODY_HEIGHT,
301
- Qi as MODAL_SIZE_WIDTH,
300
+ Qi as MODAL_SIZE_BODY_HEIGHT,
301
+ $i as MODAL_SIZE_WIDTH,
302
302
  Ta as ManageActionButtons,
303
303
  ha as MarsunCoreProvider,
304
304
  yt as Maximize2,
@@ -312,14 +312,14 @@ export {
312
312
  ya as Modal,
313
313
  wa as ModulePageShell,
314
314
  fi as MultiField,
315
- rm as NumberRangeFilterItem,
315
+ om as NumberRangeFilterItem,
316
316
  Ua as OrgTree,
317
317
  n as PALETTE,
318
318
  Ll as PARSE_STATUS_CONFIG,
319
319
  Y as PERMISSIONS_STORAGE_KEY,
320
320
  W as PERMISSION_DEFINITIONS_KEY,
321
321
  Na as PageHeaderLayout,
322
- nm as PageShellProvider,
322
+ dm as PageShellProvider,
323
323
  Va as PageSpin,
324
324
  Ut as PanelLeftClose,
325
325
  kt as PanelLeftOpen,
@@ -335,15 +335,15 @@ export {
335
335
  Kt as Presentation,
336
336
  as as ProtectedRoute,
337
337
  y as REDIRECT_URL_PARAM,
338
- Ai as RULES,
338
+ Oi as RULES,
339
339
  pi as RadioGroup,
340
340
  ls as ReactDatePickerFilterItem,
341
341
  ms as ReactDateRangePickerFilterItem,
342
342
  ps as ReactFilterItem,
343
343
  ds as ReactFilterProvider,
344
344
  xs as ReactFilterSearchInput,
345
- Oi as ReactForm,
346
- om as ReactInputFilterItem,
345
+ _i as ReactForm,
346
+ am as ReactInputFilterItem,
347
347
  zt as RefreshCw,
348
348
  Fs as ReportArchiveModal,
349
349
  Cs as ReportExportLayout,
@@ -356,13 +356,13 @@ export {
356
356
  Gt as RotateCw,
357
357
  Os as SEMANTIC_COLORS,
358
358
  di as Select,
359
- am as SelectAddressFilterItem,
360
- cm as SelectCascader,
361
- sm as SelectCascaderFilterItem,
362
- lm as SelectFunctionFilterItem,
363
- im as SelectIndustryFilterItem,
364
- mm as SelectTableListFilterItem,
365
- Sm as SelectTreeFilterItem,
359
+ sm as SelectAddressFilterItem,
360
+ Fm as SelectCascader,
361
+ lm as SelectCascaderFilterItem,
362
+ im as SelectFunctionFilterItem,
363
+ mm as SelectIndustryFilterItem,
364
+ fm as SelectTableListFilterItem,
365
+ Cm as SelectTreeFilterItem,
366
366
  _s as SemanticTag,
367
367
  Yt as Send,
368
368
  ys as SessionActionButtons,
@@ -381,7 +381,7 @@ export {
381
381
  Xs as StepForm,
382
382
  Zs as StepModal,
383
383
  ui as SubmitButton,
384
- fm as SuperSelectFilterItem,
384
+ pm as SuperSelectFilterItem,
385
385
  xi as Switch,
386
386
  Js as Table,
387
387
  ci as TableList,
@@ -392,6 +392,7 @@ export {
392
392
  $t as ThumbsUp,
393
393
  ol as TooltipInfo,
394
394
  er as Trash2,
395
+ Si as TreeSelect,
395
396
  tr as Trophy,
396
397
  sl as TypeDateRangePickerField,
397
398
  il as TypeDateRangePickerFilterItem,
@@ -405,17 +406,17 @@ export {
405
406
  ir as Users,
406
407
  nl as VirtualScrollbar,
407
408
  mr as X,
408
- Pm as animateScrollFromTopToBottom,
409
- Im as animateScrollTo,
409
+ Im as animateScrollFromTopToBottom,
410
+ Tm as animateScrollTo,
410
411
  Zl as applyColumnConfig,
411
412
  s as applyCssTokenOverrides,
412
- hm as applyHiddenRows,
413
+ Rm as applyHiddenRows,
413
414
  l as applyThemeToCssVariables,
414
415
  v as buildAbsoluteLocationRedirectUrl,
415
416
  oe as buildDepartmentPathMapFromFlat,
416
417
  ae as buildDepartmentPathMapFromTree,
417
418
  se as buildDepartmentPathMaps,
418
- Am as buildDepsKey,
419
+ Om as buildDepsKey,
419
420
  le as buildLeafDepartmentPathMap,
420
421
  w as buildLocationRedirectUrl,
421
422
  B as buildLoginPath,
@@ -425,9 +426,9 @@ export {
425
426
  V as clearLastActivity,
426
427
  ne as collectDepartmentIds,
427
428
  jl as columnsToConfig,
428
- _i as compileErrMsg,
429
- bi as computedFieldValueFromFormData,
430
- yi as computedFormDataFormState,
429
+ bi as compileErrMsg,
430
+ yi as computedFieldValueFromFormData,
431
+ vi as computedFormDataFormState,
431
432
  ja as computedIsPass,
432
433
  bl as countUniqueCitedSources,
433
434
  ul as createFilterValueMapper,
@@ -435,146 +436,146 @@ export {
435
436
  te as createMarsunRequest,
436
437
  De as createPersonSelectFilter,
437
438
  yl as detectCitationIdBase,
438
- wm as downloadFileItem,
439
+ Bm as downloadFileItem,
439
440
  Te as employeeIdFormatRule,
440
- Nm as emptyTablePrefs,
441
+ Hm as emptyTablePrefs,
441
442
  vl as extractCitationIdsFromContent,
442
443
  wl as extractCitationTitle,
443
- Vm as extractCitations,
444
+ Km as extractCitations,
444
445
  de as extractDepartmentSubtree,
445
446
  u as fetchWithTimeout,
446
- vi as filterEmpty,
447
- qm as filterInterceptors,
447
+ wi as filterEmpty,
448
+ Zm as filterInterceptors,
448
449
  ue as findDepartmentRootId,
449
- wi as findField,
450
+ Bi as findField,
450
451
  xe as flattenDepartments,
451
- Bi as formUtils,
452
+ Ui as formUtils,
452
453
  Bl as formatCitationDocBasename,
453
454
  Ul as formatCitationMeta,
454
455
  kl as formatCitationPositions,
455
456
  T as formatDateTimeDisplay,
456
457
  P as formatFileSize,
457
- Qm as formatLlmTextToHtml,
458
+ $m as formatLlmTextToHtml,
458
459
  Me as formatPersonValueLabel,
459
460
  A as formatPickerValue,
460
- Km as formatSessionTime,
461
+ zm as formatSessionTime,
461
462
  i as generateTheme,
462
463
  ie as getDepartmentPath,
463
- Bm as getFileDownloadAuthHeaders,
464
- Um as getFileDownloadUrl,
465
- tf as getFileExtension,
466
- rf as getFileIcon,
467
- of as getFileTypeName,
464
+ Um as getFileDownloadAuthHeaders,
465
+ km as getFileDownloadUrl,
466
+ rf as getFileExtension,
467
+ of as getFileIcon,
468
+ af as getFileTypeName,
468
469
  cl as getFilterValue,
469
470
  K as getLastActivityTime,
470
471
  ce as getNormalUserAccessibleDepartmentIds,
471
472
  Fe as getNormalUserDepartmentTree,
472
- Tm as getScrollBottom,
473
- zm as getSessionDisplayName,
473
+ gm as getScrollBottom,
474
+ Gm as getSessionDisplayName,
474
475
  q as getStoredPermissionMap,
475
476
  Z as getStoredUserPermissions,
476
- ff as hasCitationMarkers,
477
- xf as hasPermission,
477
+ pf as hasCitationMarkers,
478
+ cf as hasPermission,
478
479
  Jl as hideColumnAtPath,
479
480
  Nl as injectCitationMarkdownLinks,
480
- Ui as interceptors,
481
+ ki as interceptors,
481
482
  Se as intersectDepartmentIds,
482
- ki as isEmpty,
483
+ Ni as isEmpty,
483
484
  Ql as isInternalColumnKey,
484
- Ni as isNotEmpty,
485
+ Hi as isNotEmpty,
485
486
  ge as isValidEmployeeIdFormat,
486
487
  O as isValidPickerValue,
487
- Gm as isWelcomeOnlyMessages,
488
+ Ym as isWelcomeOnlyMessages,
488
489
  j as loadPermissionDefinitions,
489
490
  J as loadUserRolePermissions,
490
- Hi as matchFields,
491
+ Vi as matchFields,
491
492
  Le as matchPersonOptionSearch,
492
493
  me as mergeDepartmentPathMaps,
493
- Rm as mergeTablePrefs,
494
- Zm as multiSelectInterceptor,
495
- pf as normalizeAssistantMarkdown,
494
+ Dm as mergeTablePrefs,
495
+ jm as multiSelectInterceptor,
496
+ nf as normalizeAssistantMarkdown,
496
497
  Hl as normalizeCitation,
497
- Om as normalizeDependsOn,
498
- nf as normalizeDisplayText,
499
- af as normalizeExtension,
500
- sf as normalizeFileDisplayItem,
501
- Dm as normalizeHiddenRowKeys,
498
+ _m as normalizeDependsOn,
499
+ df as normalizeDisplayText,
500
+ sf as normalizeExtension,
501
+ lf as normalizeFileDisplayItem,
502
+ Mm as normalizeHiddenRowKeys,
502
503
  Ee as normalizePersonDtos,
503
504
  Ae as normalizeRawPersonList,
504
- df as parseAssistantContent,
505
+ uf as parseAssistantContent,
505
506
  Vl as parseCitationLinkHref,
506
- lf as parseFileNameFromUrl,
507
- $m as parseLlmText,
507
+ mf as parseFileNameFromUrl,
508
+ ef as parseLlmText,
508
509
  _ as parsePickerValue,
509
- Ym as parseSessionMessages,
510
- Mm as parseTablePrefs,
510
+ Wm as parseSessionMessages,
511
+ Lm as parseTablePrefs,
511
512
  Sl as pickSelectValues,
512
513
  Kl as prepareCitationContent,
513
- Vi as preset,
514
+ Ki as preset,
514
515
  r as reactFilterFields,
515
516
  U as readRedirectUrlFromSearch,
516
517
  g as recentDayRange,
517
518
  h as recentDayRangeStrings,
518
519
  R as recentYearRange,
519
520
  zl as resolveCitationTitle,
520
- _m as resolveFilterLabel,
521
- bm as resolveFilterVisible,
522
- ym as resolveHidden,
521
+ bm as resolveFilterLabel,
522
+ ym as resolveFilterVisible,
523
+ vm as resolveHidden,
523
524
  F as resolveMaybeFn,
524
- $i as resolveModalSizeAnchor,
525
- em as resolveModalWidth,
525
+ em as resolveModalSizeAnchor,
526
+ tm as resolveModalWidth,
526
527
  Oe as resolvePersonDepartmentName,
527
528
  k as resolveRedirectUrl,
528
529
  _e as resolveSelectPersonOption,
529
530
  S as resolveVisible,
530
531
  Gl as sanitizeCitationHtml,
531
- Ff as sanitizeMermaidChart,
532
+ Sf as sanitizeMermaidChart,
532
533
  Q as savePermissionDefinitions,
533
534
  $ as saveUserRolePermissions,
534
- Lm as serializeTablePrefs,
535
- jm as singleSelectInterceptor,
536
- Ki as stateToError,
537
- zi as stateToIsPass,
535
+ Em as serializeTablePrefs,
536
+ Jm as singleSelectInterceptor,
537
+ zi as stateToError,
538
+ Gi as stateToIsPass,
538
539
  Yl as stripCitationFrontmatter,
539
- Sf as stripProseFromMermaid,
540
+ Cf as stripProseFromMermaid,
540
541
  D as toApiStartEnd,
541
542
  M as toDateRange,
542
543
  L as toDateTimeRange,
543
544
  fe as toDepartmentPathMaps,
544
- Wm as toDisplayMessages,
545
+ Xm as toDisplayMessages,
545
546
  be as toPersonOptions,
546
547
  ye as toPersonSelectOptions,
547
548
  ve as toReviewerPersonOptions,
548
549
  z as touchLastActivity,
549
550
  yo as treeToCascaderOptions,
550
- Pf as useAutoScrollToBottom,
551
- Tf as useChat,
552
- hf as useChatSessions,
553
- Df as useCitationPanel,
551
+ If as useAutoScrollToBottom,
552
+ gf as useChat,
553
+ Rf as useChatSessions,
554
+ Mf as useCitationPanel,
554
555
  x as useFetchData,
555
- Gi as useField,
556
- hi as useFilterDeps,
557
- Ri as useFilterFieldBridge,
558
- Di as useFilterRegister,
559
- Mi as useFilterState,
560
- Yi as useFormApi,
561
- Wi as useFormContext,
562
- Xi as useGroup,
563
- Lf as useKBDocuments,
564
- Af as useKnowledgeBase,
565
- _f as useMarsunAuth,
566
- bf as useMarsunCore,
567
- yf as useMarsunFetch,
568
- dm as usePageShell,
569
- um as usePageShellLoading,
556
+ Yi as useField,
557
+ Ri as useFilterDeps,
558
+ Di as useFilterFieldBridge,
559
+ Mi as useFilterRegister,
560
+ Li as useFilterState,
561
+ Wi as useFormApi,
562
+ Xi as useFormContext,
563
+ qi as useGroup,
564
+ Ef as useKBDocuments,
565
+ Of as useKnowledgeBase,
566
+ bf as useMarsunAuth,
567
+ yf as useMarsunCore,
568
+ vf as useMarsunFetch,
569
+ um as usePageShell,
570
+ xm as usePageShellLoading,
570
571
  Ja as usePermissions,
571
572
  Qa as usePermissionsPass,
572
- wf as useReactFilter,
573
- qi as useReset,
574
- Uf as useSSECompletion,
573
+ Bf as useReactFilter,
574
+ Zi as useReset,
575
+ kf as useSSECompletion,
575
576
  Pl as useSearchParamsValue,
576
- Zi as useSubmit,
577
- Nf as useTypewriter,
577
+ ji as useSubmit,
578
+ Hf as useTypewriter,
578
579
  Tl as withFieldItem,
579
580
  hl as withFilterValue
580
581
  };