canyonapp 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{PlusOutlined-BKBEnSjP.js → PlusOutlined-sY_ekDgf.js} +2 -2
- package/dist/assets/{PlusOutlined-BKBEnSjP.js.map → PlusOutlined-sY_ekDgf.js.map} +1 -1
- package/dist/assets/{Primary-kRxOAMo2.js → Primary-BQrD5zmy.js} +2 -2
- package/dist/assets/{Primary-kRxOAMo2.js.map → Primary-BQrD5zmy.js.map} +1 -1
- package/dist/assets/{SearchOutlined-Gotzyolm.js → SearchOutlined-BbFgLxbH.js} +2 -2
- package/dist/assets/{SearchOutlined-Gotzyolm.js.map → SearchOutlined-BbFgLxbH.js.map} +1 -1
- package/dist/assets/{_cr_-bWnXW3i3.js → _cr_-C-b_iODB.js} +2 -2
- package/dist/assets/{_cr_-bWnXW3i3.js.map → _cr_-C-b_iODB.js.map} +1 -1
- package/dist/assets/{_repo_-wV83V_Ao.js → _repo_-67VixA7I.js} +3 -3
- package/dist/assets/{_repo_-wV83V_Ao.js.map → _repo_-67VixA7I.js.map} +1 -1
- package/dist/assets/{avatar-U3eONG6p.js → avatar-mH_YkdK6.js} +2 -2
- package/dist/assets/{avatar-U3eONG6p.js.map → avatar-mH_YkdK6.js.map} +1 -1
- package/dist/assets/{card-Dlwgxpi6.js → card-Bjmmjg43.js} +2 -2
- package/dist/assets/{card-Dlwgxpi6.js.map → card-Bjmmjg43.js.map} +1 -1
- package/dist/assets/{commits-BduDqkt0.js → commits-DYkmJ-uz.js} +2 -2
- package/dist/assets/{commits-BduDqkt0.js.map → commits-DYkmJ-uz.js.map} +1 -1
- package/dist/assets/{compare-Cw69owfd.js → compare-DoPa_nKN.js} +2 -2
- package/dist/assets/{compare-Cw69owfd.js.map → compare-DoPa_nKN.js.map} +1 -1
- package/dist/assets/{cssMode-pdWk0ODS.js → cssMode-CdL5sipT.js} +2 -2
- package/dist/assets/{cssMode-pdWk0ODS.js.map → cssMode-CdL5sipT.js.map} +1 -1
- package/dist/assets/{database-Do-CAKK7.js → database-DMgJWEa5.js} +2 -2
- package/dist/assets/{database-Do-CAKK7.js.map → database-DMgJWEa5.js.map} +1 -1
- package/dist/assets/{dropdown-BZRTBpNN.js → dropdown-CRMju3hp.js} +2 -2
- package/dist/assets/{dropdown-BZRTBpNN.js.map → dropdown-CRMju3hp.js.map} +1 -1
- package/dist/assets/{form-DIHIzAn0.js → form-agjas9M8.js} +2 -2
- package/dist/assets/{form-DIHIzAn0.js.map → form-agjas9M8.js.map} +1 -1
- package/dist/assets/{htmlMode-BJkP6ANp.js → htmlMode-DL-08zYm.js} +2 -2
- package/dist/assets/{htmlMode-BJkP6ANp.js.map → htmlMode-DL-08zYm.js.map} +1 -1
- package/dist/assets/{index-CmpgusTt.js → index-Buo2eS-Q.js} +6 -6
- package/dist/assets/{index-CmpgusTt.js.map → index-Buo2eS-Q.js.map} +1 -1
- package/dist/assets/{infra-q74EDR4f.js → infra-BiHKZ7O6.js} +2 -2
- package/dist/assets/{infra-q74EDR4f.js.map → infra-BiHKZ7O6.js.map} +1 -1
- package/dist/assets/{jsonMode-YEDssj9h.js → jsonMode-BgUWdwoZ.js} +2 -2
- package/dist/assets/{jsonMode-YEDssj9h.js.map → jsonMode-BgUWdwoZ.js.map} +1 -1
- package/dist/assets/{login--q88da0J.js → login-BIxW6k10.js} +2 -2
- package/dist/assets/{login--q88da0J.js.map → login-BIxW6k10.js.map} +1 -1
- package/dist/assets/{login-D0kwNFIZ.js → login-CeBa1WeH.js} +1 -1
- package/dist/assets/{new-DLzTRflL.js → new-urCghqqi.js} +2 -2
- package/dist/assets/{new-DLzTRflL.js.map → new-urCghqqi.js.map} +1 -1
- package/dist/assets/{popconfirm-hdbKlzM8.js → popconfirm-XB7pULHq.js} +2 -2
- package/dist/assets/{popconfirm-hdbKlzM8.js.map → popconfirm-XB7pULHq.js.map} +1 -1
- package/dist/assets/{projects-BQQMe3Sa.js → projects-DpKv9IY6.js} +2 -2
- package/dist/assets/{projects-BQQMe3Sa.js.map → projects-DpKv9IY6.js.map} +1 -1
- package/dist/assets/{request-DBcySI71.js → request-OsR-2ZDW.js} +2 -2
- package/dist/assets/{request-DBcySI71.js.map → request-OsR-2ZDW.js.map} +1 -1
- package/dist/assets/{settings-FOAFhNrB.js → settings-CTtlAnDi.js} +2 -2
- package/dist/assets/{settings-FOAFhNrB.js.map → settings-CTtlAnDi.js.map} +1 -1
- package/dist/assets/{settings-DRwbAfEP.js → settings-dgWrzHRY.js} +2 -2
- package/dist/assets/{settings-DRwbAfEP.js.map → settings-dgWrzHRY.js.map} +1 -1
- package/dist/assets/{skeleton-C7XdtHwK.js → skeleton-Cxf0Yj2M.js} +2 -2
- package/dist/assets/{skeleton-C7XdtHwK.js.map → skeleton-Cxf0Yj2M.js.map} +1 -1
- package/dist/assets/{tabs-QwRshmnh.js → tabs-DfQHMKH8.js} +2 -2
- package/dist/assets/{tabs-QwRshmnh.js.map → tabs-DfQHMKH8.js.map} +1 -1
- package/dist/assets/{tsMode-B8Haz2NH.js → tsMode-B2vhKML7.js} +2 -2
- package/dist/assets/{tsMode-B8Haz2NH.js.map → tsMode-B2vhKML7.js.map} +1 -1
- package/dist/index.html +6 -6
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commits-BduDqkt0.js","names":["BranchesOutlined","_extends","AntdIcon","BranchesOutlinedSvg","RefIcon","CameraOutlined","_extends","AntdIcon","CameraOutlinedSvg","RefIcon","DownloadOutlined","_extends","AntdIcon","DownloadOutlinedSvg","RefIcon","UserOutlined","_extends","AntdIcon","UserOutlinedSvg","_extends","DrawerPanel","CSSMotion","DrawerPanel","Drawer","Portal","DrawerPopup","Drawer","Skeleton","mergeToken","useId","useStyle","RcDrawer"],"sources":["../../node_modules/.pnpm/@ant-design+icons-svg@4.4.2/node_modules/@ant-design/icons-svg/es/asn/BranchesOutlined.js","../../node_modules/.pnpm/@ant-design+icons@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@ant-design/icons/es/icons/BranchesOutlined.js","../../node_modules/.pnpm/@ant-design+icons-svg@4.4.2/node_modules/@ant-design/icons-svg/es/asn/CameraOutlined.js","../../node_modules/.pnpm/@ant-design+icons@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@ant-design/icons/es/icons/CameraOutlined.js","../../node_modules/.pnpm/@ant-design+icons-svg@4.4.2/node_modules/@ant-design/icons-svg/es/asn/DownloadOutlined.js","../../node_modules/.pnpm/@ant-design+icons@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@ant-design/icons/es/icons/DownloadOutlined.js","../../node_modules/.pnpm/@ant-design+icons-svg@4.4.2/node_modules/@ant-design/icons-svg/es/asn/UserOutlined.js","../../node_modules/.pnpm/@ant-design+icons@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@ant-design/icons/es/icons/UserOutlined.js","../../node_modules/.pnpm/@rc-component+drawer@1.3.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/drawer/es/context.js","../../node_modules/.pnpm/@rc-component+drawer@1.3.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/drawer/es/DrawerPanel.js","../../node_modules/.pnpm/@rc-component+drawer@1.3.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/drawer/es/hooks/useDrag.js","../../node_modules/.pnpm/@rc-component+drawer@1.3.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/drawer/es/util.js","../../node_modules/.pnpm/@rc-component+drawer@1.3.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/drawer/es/DrawerPopup.js","../../node_modules/.pnpm/@rc-component+drawer@1.3.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/drawer/es/Drawer.js","../../node_modules/.pnpm/@rc-component+drawer@1.3.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/drawer/es/index.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/drawer/DrawerPanel.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/drawer/style/motion.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/drawer/style/index.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/drawer/index.js","../../src/services/snapshot.ts","../../src/components/snapshot/SnapshotDrawer.tsx","../../src/services/coverage.ts","../../src/pages/[provider]/[org]/[repo]/index/commits/index.tsx"],"sourcesContent":["// This icon file is generated automatically.\nvar BranchesOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M740 161c-61.8 0-112 50.2-112 112 0 50.1 33.1 92.6 78.5 106.9v95.9L320 602.4V318.1c44.2-15 76-56.9 76-106.1 0-61.8-50.2-112-112-112s-112 50.2-112 112c0 49.2 31.8 91 76 106.1V706c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1v-27.8l423.5-138.7a50.52 50.52 0 0034.9-48.2V378.2c42.9-15.8 73.6-57 73.6-105.2 0-61.8-50.2-112-112-112zm-504 51a48.01 48.01 0 0196 0 48.01 48.01 0 01-96 0zm96 600a48.01 48.01 0 01-96 0 48.01 48.01 0 0196 0zm408-491a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\" } }] }, \"name\": \"branches\", \"theme\": \"outlined\" };\nexport default BranchesOutlined;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport BranchesOutlinedSvg from \"@ant-design/icons-svg/es/asn/BranchesOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nconst BranchesOutlined = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: BranchesOutlinedSvg\n}));\n\n/** */\nconst RefIcon = /*#__PURE__*/React.forwardRef(BranchesOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'BranchesOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar CameraOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M864 248H728l-32.4-90.8a32.07 32.07 0 00-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 248H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V328c0-44.2-35.8-80-80-80zm8 536c0 4.4-3.6 8-8 8H160c-4.4 0-8-3.6-8-8V328c0-4.4 3.6-8 8-8h186.7l17.1-47.8 22.9-64.2h250.5l22.9 64.2 17.1 47.8H864c4.4 0 8 3.6 8 8v456zM512 384c-88.4 0-160 71.6-160 160s71.6 160 160 160 160-71.6 160-160-71.6-160-160-160zm0 256c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z\" } }] }, \"name\": \"camera\", \"theme\": \"outlined\" };\nexport default CameraOutlined;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CameraOutlinedSvg from \"@ant-design/icons-svg/es/asn/CameraOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nconst CameraOutlined = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CameraOutlinedSvg\n}));\n\n/** */\nconst RefIcon = /*#__PURE__*/React.forwardRef(CameraOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'CameraOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar DownloadOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\" } }] }, \"name\": \"download\", \"theme\": \"outlined\" };\nexport default DownloadOutlined;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DownloadOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownloadOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nconst DownloadOutlined = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DownloadOutlinedSvg\n}));\n\n/** */\nconst RefIcon = /*#__PURE__*/React.forwardRef(DownloadOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'DownloadOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar UserOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\" } }] }, \"name\": \"user\", \"theme\": \"outlined\" };\nexport default UserOutlined;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport UserOutlinedSvg from \"@ant-design/icons-svg/es/asn/UserOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nconst UserOutlined = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: UserOutlinedSvg\n}));\n\n/** */\nconst RefIcon = /*#__PURE__*/React.forwardRef(UserOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'UserOutlined';\n}\nexport default RefIcon;","import * as React from 'react';\nconst DrawerContext = /*#__PURE__*/React.createContext(null);\nexport const RefContext = /*#__PURE__*/React.createContext({});\nexport default DrawerContext;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport { clsx } from 'clsx';\nimport * as React from 'react';\nimport { RefContext } from \"./context\";\nimport pickAttrs from \"@rc-component/util/es/pickAttrs\";\nimport { useComposeRef } from \"@rc-component/util/es/ref\";\nconst DrawerPanel = props => {\n const {\n prefixCls,\n className,\n containerRef,\n ...restProps\n } = props;\n const {\n panel: panelRef\n } = React.useContext(RefContext);\n const mergedRef = useComposeRef(panelRef, containerRef);\n\n // =============================== Render ===============================\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(`${prefixCls}-section`, className),\n role: \"dialog\",\n ref: mergedRef\n }, pickAttrs(props, {\n aria: true\n }), {\n \"aria-modal\": \"true\"\n }, restProps));\n};\nif (process.env.NODE_ENV !== 'production') {\n DrawerPanel.displayName = 'DrawerPanel';\n}\nexport default DrawerPanel;","import * as React from 'react';\nimport { clsx } from 'clsx';\nimport { useEvent } from '@rc-component/util';\nexport default function useDrag(options) {\n const {\n prefixCls,\n direction,\n className,\n style,\n maxSize,\n containerRef,\n currentSize,\n onResize,\n onResizeEnd,\n onResizeStart\n } = options;\n const [isDragging, setIsDragging] = React.useState(false);\n const [startPos, setStartPos] = React.useState(0);\n const [startSize, setStartSize] = React.useState(0);\n const isHorizontal = direction === 'left' || direction === 'right';\n const handleMouseDown = useEvent(e => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(true);\n if (isHorizontal) {\n setStartPos(e.clientX);\n } else {\n setStartPos(e.clientY);\n }\n\n // Use provided currentSize, or fallback to container size\n let startSize;\n if (typeof currentSize === 'number') {\n startSize = currentSize;\n } else if (containerRef?.current) {\n const rect = containerRef.current.getBoundingClientRect();\n startSize = isHorizontal ? rect.width : rect.height;\n }\n setStartSize(startSize);\n onResizeStart?.(startSize);\n });\n const handleMouseMove = useEvent(e => {\n if (!isDragging) return;\n const currentPos = isHorizontal ? e.clientX : e.clientY;\n let delta = currentPos - startPos;\n\n // Adjust delta direction based on placement\n if (direction === 'right' || direction === 'bottom') {\n delta = -delta;\n }\n let newSize = startSize + delta;\n\n // Apply min/max size limits\n if (newSize < 0) {\n newSize = 0;\n }\n // Only apply maxSize if it's a valid positive number\n if (maxSize && newSize > maxSize) {\n newSize = maxSize;\n }\n onResize?.(newSize);\n });\n const handleMouseUp = React.useCallback(() => {\n if (isDragging) {\n setIsDragging(false);\n\n // Get the final size after resize\n if (containerRef?.current) {\n const rect = containerRef.current.getBoundingClientRect();\n const finalSize = isHorizontal ? rect.width : rect.height;\n onResizeEnd?.(finalSize);\n }\n }\n }, [isDragging, containerRef, onResizeEnd, isHorizontal]);\n React.useEffect(() => {\n if (isDragging) {\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }\n }, [isDragging, handleMouseMove, handleMouseUp]);\n const dragElementClassName = clsx(`${prefixCls}-dragger`, `${prefixCls}-dragger-${direction}`, {\n [`${prefixCls}-dragger-dragging`]: isDragging,\n [`${prefixCls}-dragger-horizontal`]: isHorizontal,\n [`${prefixCls}-dragger-vertical`]: !isHorizontal\n }, className);\n return {\n dragElementProps: {\n className: dragElementClassName,\n style,\n onMouseDown: handleMouseDown\n },\n isDragging\n };\n}","import warning from \"@rc-component/util/es/warning\";\nimport canUseDom from \"@rc-component/util/es/Dom/canUseDom\";\nexport function parseWidthHeight(value) {\n if (typeof value === 'string') {\n const num = Number(value.replace(/px$/i, ''));\n const floatNum = parseFloat(value);\n if (floatNum === num) {\n warning(false, 'Invalid value type of `width` or `height` which should be number type instead.');\n }\n if (!Number.isNaN(num)) {\n return num;\n }\n }\n return value;\n}\nexport function warnCheck(props) {\n warning(!('wrapperClassName' in props), `'wrapperClassName' is removed. Please use 'rootClassName' instead.`);\n warning(canUseDom() || !props.open, `Drawer with 'open' in SSR is not work since no place to createPortal. Please move to 'useEffect' instead.`);\n}","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport { clsx } from 'clsx';\nimport CSSMotion from '@rc-component/motion';\nimport KeyCode from \"@rc-component/util/es/KeyCode\";\nimport pickAttrs from \"@rc-component/util/es/pickAttrs\";\nimport * as React from 'react';\nimport DrawerContext from \"./context\";\nimport DrawerPanel from \"./DrawerPanel\";\nimport useDrag from \"./hooks/useDrag\";\nimport { parseWidthHeight } from \"./util\";\nimport { useEvent } from '@rc-component/util';\nconst sentinelStyle = {\n width: 0,\n height: 0,\n overflow: 'hidden',\n outline: 'none',\n position: 'absolute'\n};\nconst DrawerPopup = (props, ref) => {\n const {\n prefixCls,\n open,\n placement,\n inline,\n push,\n forceRender,\n autoFocus,\n keyboard,\n // classNames\n classNames: drawerClassNames,\n // Root\n rootClassName,\n rootStyle,\n zIndex,\n // Drawer\n className,\n id,\n style,\n motion,\n width,\n height,\n size,\n maxSize,\n children,\n // Mask\n mask,\n maskClosable,\n maskMotion,\n maskClassName,\n maskStyle,\n // Events\n afterOpenChange,\n onClose,\n onMouseEnter,\n onMouseOver,\n onMouseLeave,\n onClick,\n onKeyDown,\n onKeyUp,\n styles,\n drawerRender,\n resizable,\n defaultSize\n } = props;\n\n // ================================ Refs ================================\n const panelRef = React.useRef(null);\n const sentinelStartRef = React.useRef(null);\n const sentinelEndRef = React.useRef(null);\n React.useImperativeHandle(ref, () => panelRef.current);\n const onPanelKeyDown = event => {\n const {\n keyCode,\n shiftKey\n } = event;\n switch (keyCode) {\n // Tab active\n case KeyCode.TAB:\n {\n if (keyCode === KeyCode.TAB) {\n if (!shiftKey && document.activeElement === sentinelEndRef.current) {\n sentinelStartRef.current?.focus({\n preventScroll: true\n });\n } else if (shiftKey && document.activeElement === sentinelStartRef.current) {\n sentinelEndRef.current?.focus({\n preventScroll: true\n });\n }\n }\n break;\n }\n\n // Close\n case KeyCode.ESC:\n {\n if (onClose && keyboard) {\n event.stopPropagation();\n onClose(event);\n }\n break;\n }\n }\n };\n\n // ========================== Control ===========================\n // Auto Focus\n React.useEffect(() => {\n if (open && autoFocus) {\n panelRef.current?.focus({\n preventScroll: true\n });\n }\n }, [open]);\n\n // ============================ Push ============================\n const [pushed, setPushed] = React.useState(false);\n const parentContext = React.useContext(DrawerContext);\n\n // Merge push distance\n let pushConfig;\n if (typeof push === 'boolean') {\n pushConfig = push ? {} : {\n distance: 0\n };\n } else {\n pushConfig = push || {};\n }\n const pushDistance = pushConfig?.distance ?? parentContext?.pushDistance ?? 180;\n const mergedContext = React.useMemo(() => ({\n pushDistance,\n push: () => {\n setPushed(true);\n },\n pull: () => {\n setPushed(false);\n }\n }), [pushDistance]);\n\n // ========================= ScrollLock =========================\n // Tell parent to push\n React.useEffect(() => {\n if (open) {\n parentContext?.push?.();\n } else {\n parentContext?.pull?.();\n }\n }, [open]);\n\n // Clean up\n React.useEffect(() => () => {\n parentContext?.pull?.();\n }, []);\n\n // ============================ Mask ============================\n const maskNode = /*#__PURE__*/React.createElement(CSSMotion, _extends({\n key: \"mask\"\n }, maskMotion, {\n visible: mask && open\n }), ({\n className: motionMaskClassName,\n style: motionMaskStyle\n }, maskRef) => /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${prefixCls}-mask`, motionMaskClassName, drawerClassNames?.mask, maskClassName),\n style: {\n ...motionMaskStyle,\n ...maskStyle,\n ...styles?.mask\n },\n onClick: maskClosable && open ? onClose : undefined,\n ref: maskRef\n }));\n\n // =========================== Panel ============================\n const motionProps = typeof motion === 'function' ? motion(placement) : motion;\n\n // ============================ Size ============================\n const [currentSize, setCurrentSize] = React.useState();\n const isHorizontal = placement === 'left' || placement === 'right';\n\n // Aggregate size logic with backward compatibility using useMemo\n const mergedSize = React.useMemo(() => {\n const legacySize = isHorizontal ? width : height;\n const nextMergedSize = size ?? legacySize ?? currentSize ?? defaultSize ?? (isHorizontal ? 378 : undefined);\n return parseWidthHeight(nextMergedSize);\n }, [size, width, height, defaultSize, isHorizontal, currentSize]);\n\n // >>> Style\n const wrapperStyle = React.useMemo(() => {\n const nextWrapperStyle = {};\n if (pushed && pushDistance) {\n switch (placement) {\n case 'top':\n nextWrapperStyle.transform = `translateY(${pushDistance}px)`;\n break;\n case 'bottom':\n nextWrapperStyle.transform = `translateY(${-pushDistance}px)`;\n break;\n case 'left':\n nextWrapperStyle.transform = `translateX(${pushDistance}px)`;\n break;\n default:\n nextWrapperStyle.transform = `translateX(${-pushDistance}px)`;\n break;\n }\n }\n if (isHorizontal) {\n nextWrapperStyle.width = parseWidthHeight(mergedSize);\n } else {\n nextWrapperStyle.height = parseWidthHeight(mergedSize);\n }\n return nextWrapperStyle;\n }, [pushed, pushDistance, placement, isHorizontal, mergedSize]);\n\n // =========================== Resize ===========================\n const wrapperRef = React.useRef(null);\n const isResizable = !!resizable;\n const resizeConfig = typeof resizable === 'object' && resizable || {};\n const onInternalResize = useEvent(size => {\n setCurrentSize(size);\n resizeConfig.onResize?.(size);\n });\n const {\n dragElementProps,\n isDragging\n } = useDrag({\n prefixCls: `${prefixCls}-resizable`,\n direction: placement,\n className: drawerClassNames?.dragger,\n style: styles?.dragger,\n maxSize,\n containerRef: wrapperRef,\n currentSize: mergedSize,\n onResize: onInternalResize,\n onResizeStart: resizeConfig.onResizeStart,\n onResizeEnd: resizeConfig.onResizeEnd\n });\n\n // =========================== Events ===========================\n const eventHandlers = {\n onMouseEnter,\n onMouseOver,\n onMouseLeave,\n onClick,\n onKeyDown,\n onKeyUp\n };\n\n // =========================== Render ==========================\n // >>>>> Panel\n const panelNode = /*#__PURE__*/React.createElement(CSSMotion, _extends({\n key: \"panel\"\n }, motionProps, {\n visible: open,\n forceRender: forceRender,\n onVisibleChanged: nextVisible => {\n afterOpenChange?.(nextVisible);\n },\n removeOnLeave: false,\n leavedClassName: `${prefixCls}-content-wrapper-hidden`\n }), ({\n className: motionClassName,\n style: motionStyle\n }, motionRef) => {\n const content = /*#__PURE__*/React.createElement(DrawerPanel, _extends({\n id: id,\n containerRef: motionRef,\n prefixCls: prefixCls,\n className: clsx(className, drawerClassNames?.section),\n style: {\n ...style,\n ...styles?.section\n }\n }, pickAttrs(props, {\n aria: true\n }), eventHandlers), children);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: wrapperRef,\n className: clsx(`${prefixCls}-content-wrapper`, isDragging && `${prefixCls}-content-wrapper-dragging`, drawerClassNames?.wrapper, !isDragging && motionClassName),\n style: {\n ...motionStyle,\n ...wrapperStyle,\n ...styles?.wrapper\n }\n }, pickAttrs(props, {\n data: true\n })), isResizable && /*#__PURE__*/React.createElement(\"div\", dragElementProps), drawerRender ? drawerRender(content) : content);\n });\n\n // >>>>> Container\n const containerStyle = {\n ...rootStyle\n };\n if (zIndex) {\n containerStyle.zIndex = zIndex;\n }\n return /*#__PURE__*/React.createElement(DrawerContext.Provider, {\n value: mergedContext\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(prefixCls, `${prefixCls}-${placement}`, rootClassName, {\n [`${prefixCls}-open`]: open,\n [`${prefixCls}-inline`]: inline\n }),\n style: containerStyle,\n tabIndex: -1,\n ref: panelRef,\n onKeyDown: onPanelKeyDown\n }, maskNode, /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelStartRef,\n style: sentinelStyle,\n \"aria-hidden\": \"true\",\n \"data-sentinel\": \"start\"\n }), panelNode, /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelEndRef,\n style: sentinelStyle,\n \"aria-hidden\": \"true\",\n \"data-sentinel\": \"end\"\n })));\n};\nconst RefDrawerPopup = /*#__PURE__*/React.forwardRef(DrawerPopup);\nif (process.env.NODE_ENV !== 'production') {\n RefDrawerPopup.displayName = 'DrawerPopup';\n}\nexport default RefDrawerPopup;","import Portal from '@rc-component/portal';\nimport useLayoutEffect from \"@rc-component/util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\nimport { RefContext } from \"./context\";\nimport DrawerPopup from \"./DrawerPopup\";\nimport { warnCheck } from \"./util\";\nconst Drawer = props => {\n const {\n open = false,\n prefixCls = 'rc-drawer',\n placement = 'right',\n autoFocus = true,\n keyboard = true,\n width,\n height,\n size,\n maxSize,\n mask = true,\n maskClosable = true,\n getContainer,\n forceRender,\n afterOpenChange,\n destroyOnHidden,\n onMouseEnter,\n onMouseOver,\n onMouseLeave,\n onClick,\n onKeyDown,\n onKeyUp,\n resizable,\n defaultSize,\n // Refs\n panelRef\n } = props;\n const [animatedVisible, setAnimatedVisible] = React.useState(false);\n\n // ============================= Warn =============================\n if (process.env.NODE_ENV !== 'production') {\n warnCheck(props);\n }\n\n // ============================= Open =============================\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => {\n setMounted(true);\n }, []);\n const mergedOpen = mounted ? open : false;\n\n // ============================ Focus =============================\n const popupRef = React.useRef(null);\n const lastActiveRef = React.useRef(null);\n useLayoutEffect(() => {\n if (mergedOpen) {\n lastActiveRef.current = document.activeElement;\n }\n }, [mergedOpen]);\n\n // ============================= Open =============================\n const internalAfterOpenChange = nextVisible => {\n setAnimatedVisible(nextVisible);\n afterOpenChange?.(nextVisible);\n if (!nextVisible && lastActiveRef.current && !popupRef.current?.contains(lastActiveRef.current)) {\n lastActiveRef.current?.focus({\n preventScroll: true\n });\n }\n };\n\n // =========================== Context ============================\n const refContext = React.useMemo(() => ({\n panel: panelRef\n }), [panelRef]);\n\n // ============================ Render ============================\n if (!forceRender && !animatedVisible && !mergedOpen && destroyOnHidden) {\n return null;\n }\n const eventHandlers = {\n onMouseEnter,\n onMouseOver,\n onMouseLeave,\n onClick,\n onKeyDown,\n onKeyUp\n };\n const drawerPopupProps = {\n ...props,\n open: mergedOpen,\n prefixCls,\n placement,\n autoFocus,\n keyboard,\n width,\n height,\n size,\n maxSize,\n defaultSize,\n mask,\n maskClosable,\n inline: getContainer === false,\n afterOpenChange: internalAfterOpenChange,\n ref: popupRef,\n resizable,\n ...eventHandlers\n };\n return /*#__PURE__*/React.createElement(RefContext.Provider, {\n value: refContext\n }, /*#__PURE__*/React.createElement(Portal, {\n open: mergedOpen || forceRender || animatedVisible,\n autoDestroy: false,\n getContainer: getContainer,\n autoLock: mask && (mergedOpen || animatedVisible)\n }, /*#__PURE__*/React.createElement(DrawerPopup, drawerPopupProps)));\n};\nif (process.env.NODE_ENV !== 'production') {\n Drawer.displayName = 'Drawer';\n}\nexport default Drawer;","// export this package's api\nimport Drawer from \"./Drawer\";\nexport default Drawer;","\"use client\";\n\nimport * as React from 'react';\nimport { clsx } from 'clsx';\nimport { pickClosable, useClosable, useMergeSemantic } from '../_util/hooks';\nimport { useComponentConfig } from '../config-provider/context';\nimport Skeleton from '../skeleton';\nconst DrawerPanel = props => {\n const {\n prefixCls,\n ariaId,\n title,\n footer,\n extra,\n closable,\n loading,\n onClose,\n headerStyle,\n bodyStyle,\n footerStyle,\n children,\n classNames: drawerClassNames,\n styles: drawerStyles\n } = props;\n const drawerContext = useComponentConfig('drawer');\n const {\n classNames: contextClassNames,\n styles: contextStyles\n } = drawerContext;\n const [mergedClassNames, mergedStyles] = useMergeSemantic([contextClassNames, drawerClassNames], [contextStyles, drawerStyles], {\n props\n });\n let closablePlacement;\n if (closable === false) {\n closablePlacement = undefined;\n } else if (closable === undefined || closable === true) {\n closablePlacement = 'start';\n } else {\n closablePlacement = closable?.placement === 'end' ? 'end' : 'start';\n }\n const customCloseIconRender = React.useCallback(icon => (/*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: onClose,\n className: clsx(`${prefixCls}-close`, {\n [`${prefixCls}-close-${closablePlacement}`]: closablePlacement === 'end'\n }, mergedClassNames.close),\n style: mergedStyles.close\n }, icon)), [onClose, prefixCls, closablePlacement, mergedClassNames.close, mergedStyles.close]);\n const [mergedClosable, mergedCloseIcon] = useClosable(pickClosable(props), pickClosable(drawerContext), {\n closable: true,\n closeIconRender: customCloseIconRender\n });\n const renderHeader = () => {\n if (!title && !mergedClosable) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n ...mergedStyles.header,\n ...headerStyle\n },\n className: clsx(`${prefixCls}-header`, mergedClassNames.header, {\n [`${prefixCls}-header-close-only`]: mergedClosable && !title && !extra\n })\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-header-title`\n }, closablePlacement === 'start' && mergedCloseIcon, title && (/*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${prefixCls}-title`, mergedClassNames.title),\n style: mergedStyles.title,\n id: ariaId\n }, title))), extra && (/*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${prefixCls}-extra`, mergedClassNames.extra),\n style: mergedStyles.extra\n }, extra)), closablePlacement === 'end' && mergedCloseIcon);\n };\n const renderFooter = () => {\n if (!footer) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${prefixCls}-footer`, mergedClassNames.footer),\n style: {\n ...mergedStyles.footer,\n ...footerStyle\n }\n }, footer);\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, renderHeader(), /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${prefixCls}-body`, mergedClassNames.body),\n style: {\n ...mergedStyles.body,\n ...bodyStyle\n }\n }, loading ? (/*#__PURE__*/React.createElement(Skeleton, {\n active: true,\n title: false,\n paragraph: {\n rows: 5\n },\n className: `${prefixCls}-body-skeleton`\n })) : children), renderFooter());\n};\nexport default DrawerPanel;","const getMoveTranslate = direction => {\n const value = '100%';\n return {\n left: `translateX(-${value})`,\n right: `translateX(${value})`,\n top: `translateY(-${value})`,\n bottom: `translateY(${value})`\n }[direction];\n};\nconst getEnterLeaveStyle = (startStyle, endStyle) => ({\n '&-enter, &-appear': {\n ...startStyle,\n '&-active': endStyle\n },\n '&-leave': {\n ...endStyle,\n '&-active': startStyle\n }\n});\nconst getFadeStyle = (from, duration) => ({\n '&-enter, &-appear, &-leave': {\n '&-start': {\n transition: 'none'\n },\n '&-active': {\n transition: `all ${duration}`\n }\n },\n ...getEnterLeaveStyle({\n opacity: from\n }, {\n opacity: 1\n })\n});\nconst getPanelMotionStyles = (direction, duration) => [getFadeStyle(0.7, duration), getEnterLeaveStyle({\n transform: getMoveTranslate(direction)\n}, {\n transform: 'none'\n})];\nconst genMotionStyle = token => {\n const {\n componentCls,\n motionDurationSlow\n } = token;\n return {\n [componentCls]: {\n // ======================== Mask ========================\n [`${componentCls}-mask-motion`]: getFadeStyle(0, motionDurationSlow),\n // ======================= Panel ========================\n [`${componentCls}-panel-motion`]: ['left', 'right', 'top', 'bottom'].reduce((obj, direction) => ({\n ...obj,\n [`&-${direction}`]: getPanelMotionStyles(direction, motionDurationSlow)\n }), {})\n }\n };\n};\nexport default genMotionStyle;","import { unit } from '@ant-design/cssinjs';\nimport { genFocusStyle } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport genMotionStyle from './motion';\n// =============================== Base ===============================\nconst genDrawerStyle = token => {\n const {\n borderRadiusSM,\n componentCls,\n zIndexPopup,\n colorBgMask,\n colorBgElevated,\n motionDurationSlow,\n motionDurationMid,\n paddingXS,\n padding,\n paddingLG,\n fontSizeLG,\n lineHeightLG,\n lineWidth,\n lineType,\n colorSplit,\n marginXS,\n colorIcon,\n colorIconHover,\n colorBgTextHover,\n colorBgTextActive,\n colorText,\n fontWeightStrong,\n footerPaddingBlock,\n footerPaddingInline,\n draggerSize,\n calc\n } = token;\n const wrapperCls = `${componentCls}-content-wrapper`;\n const draggerCls = `${componentCls}-resizable-dragger`;\n return {\n [componentCls]: {\n position: 'fixed',\n inset: 0,\n zIndex: zIndexPopup,\n pointerEvents: 'none',\n color: colorText,\n '&-pure': {\n position: 'relative',\n background: colorBgElevated,\n display: 'flex',\n flexDirection: 'column',\n [`&${componentCls}-left`]: {\n boxShadow: token.boxShadowDrawerLeft\n },\n [`&${componentCls}-right`]: {\n boxShadow: token.boxShadowDrawerRight\n },\n [`&${componentCls}-top`]: {\n boxShadow: token.boxShadowDrawerUp\n },\n [`&${componentCls}-bottom`]: {\n boxShadow: token.boxShadowDrawerDown\n }\n },\n '&-inline': {\n position: 'absolute'\n },\n // ====================== Mask ======================\n [`${componentCls}-mask`]: {\n position: 'absolute',\n inset: 0,\n zIndex: zIndexPopup,\n background: colorBgMask,\n pointerEvents: 'auto',\n [`&${componentCls}-mask-blur`]: {\n backdropFilter: 'blur(4px)'\n }\n },\n // ==================== Content =====================\n [wrapperCls]: {\n position: 'absolute',\n zIndex: zIndexPopup,\n maxWidth: '100vw',\n transition: `all ${motionDurationSlow}`,\n '&-hidden': {\n display: 'none'\n }\n },\n // Placement\n [`&-left > ${wrapperCls}`]: {\n top: 0,\n bottom: 0,\n left: {\n _skip_check_: true,\n value: 0\n },\n boxShadow: token.boxShadowDrawerLeft\n },\n [`&-right > ${wrapperCls}`]: {\n top: 0,\n right: {\n _skip_check_: true,\n value: 0\n },\n bottom: 0,\n boxShadow: token.boxShadowDrawerRight\n },\n [`&-top > ${wrapperCls}`]: {\n top: 0,\n insetInline: 0,\n boxShadow: token.boxShadowDrawerUp\n },\n [`&-bottom > ${wrapperCls}`]: {\n bottom: 0,\n insetInline: 0,\n boxShadow: token.boxShadowDrawerDown\n },\n [`${componentCls}-section`]: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n height: '100%',\n overflow: 'auto',\n background: colorBgElevated,\n pointerEvents: 'auto'\n },\n // Header\n [`${componentCls}-header`]: {\n display: 'flex',\n flex: 0,\n alignItems: 'center',\n padding: `${unit(padding)} ${unit(paddingLG)}`,\n fontSize: fontSizeLG,\n lineHeight: lineHeightLG,\n borderBottom: `${unit(lineWidth)} ${lineType} ${colorSplit}`,\n '&-title': {\n display: 'flex',\n flex: 1,\n alignItems: 'center',\n minWidth: 0,\n minHeight: 0\n }\n },\n [`${componentCls}-extra`]: {\n flex: 'none'\n },\n [`${componentCls}-close`]: {\n display: 'inline-flex',\n width: calc(fontSizeLG).add(paddingXS).equal(),\n height: calc(fontSizeLG).add(paddingXS).equal(),\n borderRadius: borderRadiusSM,\n justifyContent: 'center',\n alignItems: 'center',\n color: colorIcon,\n fontWeight: fontWeightStrong,\n fontSize: fontSizeLG,\n fontStyle: 'normal',\n lineHeight: 1,\n textAlign: 'center',\n textTransform: 'none',\n textDecoration: 'none',\n background: 'transparent',\n border: 0,\n cursor: 'pointer',\n transition: `all ${motionDurationMid}`,\n textRendering: 'auto',\n [`&${componentCls}-close-end`]: {\n marginInlineStart: marginXS\n },\n [`&:not(${componentCls}-close-end)`]: {\n marginInlineEnd: marginXS\n },\n '&:hover': {\n color: colorIconHover,\n backgroundColor: colorBgTextHover,\n textDecoration: 'none'\n },\n '&:active': {\n backgroundColor: colorBgTextActive\n },\n ...genFocusStyle(token)\n },\n [`${componentCls}-title`]: {\n flex: 1,\n margin: 0,\n fontWeight: token.fontWeightStrong,\n fontSize: fontSizeLG,\n lineHeight: lineHeightLG\n },\n // Body\n [`${componentCls}-body`]: {\n flex: 1,\n minWidth: 0,\n minHeight: 0,\n padding: paddingLG,\n overflow: 'auto',\n [`${componentCls}-body-skeleton`]: {\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center'\n }\n },\n // Footer\n [`${componentCls}-footer`]: {\n flexShrink: 0,\n padding: `${unit(footerPaddingBlock)} ${unit(footerPaddingInline)}`,\n borderTop: `${unit(lineWidth)} ${lineType} ${colorSplit}`\n },\n // ==================== Resizable ===================\n [draggerCls]: {\n position: 'absolute',\n zIndex: 1,\n backgroundColor: 'transparent',\n userSelect: 'none',\n pointerEvents: 'auto',\n '&:hover': {\n backgroundColor: token.colorPrimary,\n opacity: 0.2\n },\n '&-dragging': {\n backgroundColor: token.colorPrimary,\n opacity: 0.3\n }\n },\n [`${draggerCls}-left`]: {\n top: 0,\n bottom: 0,\n insetInlineEnd: 0,\n width: draggerSize,\n cursor: 'col-resize'\n },\n [`${draggerCls}-right`]: {\n top: 0,\n bottom: 0,\n insetInlineStart: 0,\n width: draggerSize,\n cursor: 'col-resize'\n },\n [`${draggerCls}-top`]: {\n insetInline: 0,\n bottom: 0,\n height: draggerSize,\n cursor: 'row-resize'\n },\n [`${draggerCls}-bottom`]: {\n insetInline: 0,\n top: 0,\n height: draggerSize,\n cursor: 'row-resize'\n },\n // Wrapper dragging state - disable transitions for smooth dragging\n [`${wrapperCls}-dragging`]: {\n userSelect: 'none',\n transition: 'none',\n willChange: 'width, height',\n [`${componentCls}-content`]: {\n pointerEvents: 'none'\n },\n [`${componentCls}-section`]: {\n pointerEvents: 'none'\n }\n },\n // ====================== RTL =======================\n '&-rtl': {\n direction: 'rtl'\n }\n }\n };\n};\nexport const prepareComponentToken = token => ({\n zIndexPopup: token.zIndexPopupBase,\n footerPaddingBlock: token.paddingXS,\n footerPaddingInline: token.padding,\n draggerSize: 4\n});\n// ============================== Export ==============================\nexport default genStyleHooks('Drawer', token => {\n const drawerToken = mergeToken(token, {});\n return [genDrawerStyle(drawerToken), genMotionStyle(drawerToken)];\n}, prepareComponentToken);","\"use client\";\n\nimport * as React from 'react';\nimport RcDrawer from '@rc-component/drawer';\nimport { composeRef } from \"@rc-component/util/es/ref\";\nimport useId from \"@rc-component/util/es/hooks/useId\";\nimport { clsx } from 'clsx';\nimport ContextIsolator from '../_util/ContextIsolator';\nimport { useMergedMask, useMergeSemantic, useZIndex } from '../_util/hooks';\nimport { getTransitionName } from '../_util/motion';\nimport { devUseWarning } from '../_util/warning';\nimport zIndexContext from '../_util/zindexContext';\nimport { ConfigContext } from '../config-provider';\nimport { useComponentConfig } from '../config-provider/context';\nimport { usePanelRef } from '../watermark/context';\nimport DrawerPanel from './DrawerPanel';\nimport useStyle from './style';\nconst _SizeTypes = ['default', 'large'];\nconst defaultPushState = {\n distance: 180\n};\nconst DEFAULT_SIZE = 378;\nconst Drawer = props => {\n const {\n rootClassName,\n size,\n defaultSize = DEFAULT_SIZE,\n height,\n width,\n mask: drawerMask,\n push = defaultPushState,\n open,\n afterOpenChange,\n onClose,\n prefixCls: customizePrefixCls,\n getContainer: customizeGetContainer,\n panelRef = null,\n style,\n className,\n resizable,\n 'aria-labelledby': ariaLabelledby,\n // Deprecated\n maskStyle,\n drawerStyle,\n contentWrapperStyle,\n destroyOnClose,\n destroyOnHidden,\n ...rest\n } = props;\n const {\n placement\n } = rest;\n const id = useId();\n const ariaId = rest.title ? id : undefined;\n const {\n getPopupContainer,\n getPrefixCls,\n direction,\n className: contextClassName,\n style: contextStyle,\n classNames: contextClassNames,\n styles: contextStyles,\n mask: contextMask\n } = useComponentConfig('drawer');\n const prefixCls = getPrefixCls('drawer', customizePrefixCls);\n const [hashId, cssVarCls] = useStyle(prefixCls);\n const getContainer =\n // 有可能为 false,所以不能直接判断\n customizeGetContainer === undefined && getPopupContainer ? () => getPopupContainer(document.body) : customizeGetContainer;\n // ========================== Warning ===========================\n if (process.env.NODE_ENV !== 'production') {\n const warning = devUseWarning('Drawer');\n [['headerStyle', 'styles.header'], ['bodyStyle', 'styles.body'], ['footerStyle', 'styles.footer'], ['contentWrapperStyle', 'styles.wrapper'], ['maskStyle', 'styles.mask'], ['drawerStyle', 'styles.section'], ['destroyInactivePanel', 'destroyOnHidden'], ['width', 'size'], ['height', 'size']].forEach(([deprecatedName, newName]) => {\n warning.deprecated(!(deprecatedName in props), deprecatedName, newName);\n });\n if (getContainer !== undefined && props.style?.position === 'absolute') {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'breaking', '`style` is replaced by `rootStyle` in v5. Please check that `position: absolute` is necessary.') : void 0;\n }\n }\n // ============================ Size ============================\n const drawerSize = React.useMemo(() => {\n if (typeof size === 'number') {\n return size;\n }\n if (size === 'large') {\n return 736;\n }\n if (size === 'default') {\n return DEFAULT_SIZE;\n }\n if (!placement || placement === 'left' || placement === 'right') {\n return width;\n }\n return height;\n }, [size, placement, width, height]);\n // =========================== Motion ===========================\n const maskMotion = {\n motionName: getTransitionName(prefixCls, 'mask-motion'),\n motionAppear: true,\n motionEnter: true,\n motionLeave: true,\n motionDeadline: 500\n };\n const panelMotion = motionPlacement => ({\n motionName: getTransitionName(prefixCls, `panel-motion-${motionPlacement}`),\n motionAppear: true,\n motionEnter: true,\n motionLeave: true,\n motionDeadline: 500\n });\n // ============================ Refs ============================\n // Select `ant-drawer-content` by `panelRef`\n const innerPanelRef = usePanelRef();\n const mergedPanelRef = composeRef(panelRef, innerPanelRef);\n // ============================ zIndex ============================\n const [zIndex, contextZIndex] = useZIndex('Drawer', rest.zIndex);\n // =========================== Render ===========================\n const {\n classNames,\n styles,\n rootStyle\n } = rest;\n const [mergedMask, maskBlurClassName] = useMergedMask(drawerMask, contextMask, prefixCls);\n const mergedProps = {\n ...props,\n zIndex,\n panelRef,\n mask: mergedMask,\n defaultSize,\n push\n };\n const [mergedClassNames, mergedStyles] = useMergeSemantic([contextClassNames, classNames], [contextStyles, styles], {\n props: mergedProps\n });\n const drawerClassName = clsx({\n 'no-mask': !mergedMask,\n [`${prefixCls}-rtl`]: direction === 'rtl'\n }, rootClassName, hashId, cssVarCls, mergedClassNames.root);\n return /*#__PURE__*/React.createElement(ContextIsolator, {\n form: true,\n space: true\n }, /*#__PURE__*/React.createElement(zIndexContext.Provider, {\n value: contextZIndex\n }, /*#__PURE__*/React.createElement(RcDrawer, {\n prefixCls: prefixCls,\n onClose: onClose,\n maskMotion: maskMotion,\n motion: panelMotion,\n ...rest,\n classNames: {\n mask: clsx(mergedClassNames.mask, maskBlurClassName.mask),\n section: mergedClassNames.section,\n wrapper: mergedClassNames.wrapper,\n dragger: mergedClassNames.dragger\n },\n styles: {\n mask: {\n ...mergedStyles.mask,\n ...maskStyle\n },\n section: {\n ...mergedStyles.section,\n ...drawerStyle\n },\n wrapper: {\n ...mergedStyles.wrapper,\n ...contentWrapperStyle\n },\n dragger: mergedStyles.dragger\n },\n open: open,\n mask: mergedMask,\n push: push,\n size: drawerSize,\n defaultSize: defaultSize,\n style: {\n ...contextStyle,\n ...style\n },\n rootStyle: {\n ...rootStyle,\n ...mergedStyles.root\n },\n className: clsx(contextClassName, className),\n rootClassName: drawerClassName,\n getContainer: getContainer,\n afterOpenChange: afterOpenChange,\n panelRef: mergedPanelRef,\n zIndex: zIndex,\n ...(resizable ? {\n resizable\n } : {}),\n \"aria-labelledby\": ariaLabelledby ?? ariaId,\n destroyOnHidden: destroyOnHidden ?? destroyOnClose\n }, /*#__PURE__*/React.createElement(DrawerPanel, {\n prefixCls: prefixCls,\n size: size,\n ...rest,\n ariaId: ariaId,\n onClose: onClose\n }))));\n};\n/** @private Internal Component. Do not use in your production. */\nconst PurePanel = props => {\n const {\n prefixCls: customizePrefixCls,\n style,\n className,\n placement = 'right',\n ...restProps\n } = props;\n const {\n getPrefixCls\n } = React.useContext(ConfigContext);\n const prefixCls = getPrefixCls('drawer', customizePrefixCls);\n const [hashId, cssVarCls] = useStyle(prefixCls);\n const cls = clsx(prefixCls, `${prefixCls}-pure`, `${prefixCls}-${placement}`, hashId, cssVarCls, className);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: cls,\n style: style\n }, /*#__PURE__*/React.createElement(DrawerPanel, {\n prefixCls: prefixCls,\n ...restProps\n }));\n};\nDrawer._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nif (process.env.NODE_ENV !== 'production') {\n Drawer.displayName = 'Drawer';\n}\nexport default Drawer;","import { request } from \"./request\";\n\nexport type SnapshotFormValues = {\n repoID: string;\n provider: string;\n sha: string;\n title?: string;\n description?: string;\n};\n\nexport type SnapshotRecord = {\n id: string;\n repoID: string;\n provider: string;\n sha: string;\n title?: string;\n description?: string;\n status?: string;\n createdAt?: string;\n};\n\n/**\n * 快照记录列表\n */\nexport function getSnapshotRecords(repoID: string, provider: string) {\n return request\n .get<{ data: SnapshotRecord[] }>(\"/api/snapshot/records\", {\n params: { repoID, provider },\n })\n .then((res) => res.data.data ?? []);\n}\n\n/**\n * 创建快照\n */\nexport function createSnapshot(data: SnapshotFormValues) {\n return request.post(\"/api/snapshot/create\", data);\n}\n\n/**\n * 获取单条快照(不含产物)\n */\nexport function getSnapshot(id: string) {\n return request.get(`/api/snapshot/${id}`).then((res) => res.data);\n}\n\n/**\n * 更新快照\n */\nexport function updateSnapshot(\n id: string,\n data: { title?: string; description?: string; status?: string },\n) {\n return request.patch(`/api/snapshot/${id}`, data);\n}\n\n/**\n * 删除快照\n */\nexport function deleteSnapshot(id: string) {\n return request.delete(`/api/snapshot/${id}`);\n}\n\n/**\n * 下载快照产物,返回 Blob\n */\nexport function downloadSnapshot(id: string): Promise<Blob> {\n return request\n .get(`/api/snapshot/${id}/download`, { responseType: \"blob\" })\n .then((res) => res.data as Blob);\n}\n","import { CameraOutlined, DeleteOutlined, DownloadOutlined, EditOutlined } from \"@ant-design/icons\";\nimport {\n Button,\n Drawer,\n Form,\n Input,\n message,\n Modal,\n Popconfirm,\n Space,\n Table,\n Typography,\n} from \"antd\";\nimport type { ColumnsType } from \"antd/es/table\";\nimport type { FC } from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport dayjs from \"dayjs\";\nimport * as snapshotService from \"@/services/snapshot\";\n\nexport type SnapshotFormValues = {\n repoID: string;\n provider: string;\n sha: string;\n title: string;\n description: string;\n};\n\nexport type SnapshotRecord = {\n id: string;\n repoID: string;\n provider: string;\n sha: string;\n title?: string;\n description?: string;\n status?: string;\n createdAt?: string;\n};\n\nexport type SnapshotDrawerProps = {\n open: boolean;\n onClose: () => void;\n mode: \"create\" | \"records\";\n initialValues?: Partial<SnapshotFormValues>;\n /** 创建成功后调用,不关闭抽屉并切换到快照记录视图;不传则保持原逻辑(关闭抽屉) */\n onCreateSuccess?: () => void;\n /** 在快照记录视图点击「生成快照」时调用,切换到创建表单 */\n onSwitchToCreate?: () => void;\n /** 标题上下文:org/repo,用于在标题上区分是哪个仓库 */\n titleContext?: { org: string; repo: string };\n};\n\nconst SnapshotDrawer: FC<SnapshotDrawerProps> = ({\n open,\n onClose,\n mode,\n initialValues,\n onCreateSuccess,\n onSwitchToCreate,\n titleContext,\n}) => {\n const { t } = useTranslation();\n const [form] = Form.useForm<SnapshotFormValues>();\n const [submitLoading, setSubmitLoading] = useState(false);\n const [recordsLoading, setRecordsLoading] = useState(false);\n const [records, setRecords] = useState<SnapshotRecord[]>([]);\n const [editModalOpen, setEditModalOpen] = useState(false);\n const [editingRecord, setEditingRecord] = useState<SnapshotRecord | null>(null);\n const [editForm] = Form.useForm<{ title: string; description: string }>();\n const [editSaving, setEditSaving] = useState(false);\n\n useEffect(() => {\n if (open && mode === \"create\" && initialValues) {\n form.setFieldsValue({\n repoID: initialValues.repoID ?? \"\",\n provider: initialValues.provider ?? \"\",\n sha: initialValues.sha ?? \"\",\n title: initialValues.title ?? \"\",\n description: initialValues.description ?? \"\",\n });\n }\n }, [open, mode, initialValues, form]);\n\n useEffect(() => {\n if (open && mode === \"records\" && initialValues?.repoID && initialValues?.provider) {\n fetchRecords();\n }\n }, [open, mode, initialValues?.repoID, initialValues?.provider]);\n\n const fetchRecords = async () => {\n if (!initialValues?.repoID || !initialValues?.provider) return;\n setRecordsLoading(true);\n try {\n const data = await snapshotService.getSnapshotRecords(\n initialValues.repoID,\n initialValues.provider,\n );\n setRecords(data ?? []);\n } catch {\n setRecords([]);\n } finally {\n setRecordsLoading(false);\n }\n };\n\n const handleDownload = async (id: string) => {\n try {\n const blob = await snapshotService.downloadSnapshot(id);\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `snapshot-${id}.zip`;\n a.click();\n URL.revokeObjectURL(url);\n message.success(t(\"projects.snapshot.download.success\"));\n } catch {\n message.error(t(\"projects.snapshot.download.failed\"));\n }\n };\n\n const handleDelete = async (id: string) => {\n try {\n await snapshotService.deleteSnapshot(id);\n message.success(t(\"projects.snapshot.delete.success\"));\n fetchRecords();\n } catch {\n message.error(t(\"projects.snapshot.delete.failed\"));\n }\n };\n\n const openEdit = (record: SnapshotRecord) => {\n setEditingRecord(record);\n editForm.setFieldsValue({\n title: record.title ?? \"\",\n description: record.description ?? \"\",\n });\n setEditModalOpen(true);\n };\n\n const handleEditOk = async () => {\n if (!editingRecord) return;\n const values = await editForm.validateFields().catch(() => null);\n if (values == null) return;\n setEditSaving(true);\n try {\n await snapshotService.updateSnapshot(editingRecord.id, {\n title: values.title,\n description: values.description,\n });\n message.success(t(\"projects.snapshot.update.success\"));\n setEditModalOpen(false);\n setEditingRecord(null);\n fetchRecords();\n } catch {\n message.error(t(\"projects.snapshot.update.failed\"));\n } finally {\n setEditSaving(false);\n }\n };\n\n const onFinish = async (values: SnapshotFormValues) => {\n setSubmitLoading(true);\n try {\n await snapshotService.createSnapshot({\n repoID: values.repoID,\n provider: values.provider,\n sha: values.sha,\n title: values.title,\n description: values.description,\n });\n message.success(t(\"projects.snapshot.create.success\"));\n form.resetFields();\n if (onCreateSuccess) {\n onCreateSuccess();\n } else {\n onClose();\n }\n } catch (err: unknown) {\n const msg =\n err && typeof err === \"object\" && \"response\" in err\n ? (err as { response?: { data?: { message?: string } } }).response?.data?.message\n : null;\n message.error(msg || t(\"projects.snapshot.create.failed\"));\n } finally {\n setSubmitLoading(false);\n }\n };\n\n const recordsColumns: ColumnsType<SnapshotRecord> = [\n {\n title: t(\"projects.snapshot.columns.id\"),\n dataIndex: \"id\",\n key: \"id\",\n width: 72,\n ellipsis: true,\n },\n {\n title: t(\"projects.snapshot.columns.sha\"),\n dataIndex: \"sha\",\n key: \"sha\",\n width: 120,\n ellipsis: true,\n render: (sha: string) =>\n sha ? (\n <Typography.Text copyable={{ text: sha }} title={sha}>\n {sha.length > 12 ? `${sha.substring(0, 7)}…${sha.slice(-4)}` : sha}\n </Typography.Text>\n ) : (\n \"-\"\n ),\n },\n {\n title: t(\"projects.snapshot.columns.title\"),\n dataIndex: \"title\",\n key: \"title\",\n ellipsis: true,\n },\n {\n title: t(\"projects.snapshot.columns.description\"),\n dataIndex: \"description\",\n key: \"description\",\n ellipsis: true,\n },\n {\n title: t(\"projects.snapshot.columns.status\"),\n dataIndex: \"status\",\n key: \"status\",\n width: 90,\n },\n {\n title: t(\"common.created_at\"),\n dataIndex: \"createdAt\",\n key: \"createdAt\",\n width: 160,\n render: (text: string) => (text ? dayjs(text).format(\"YYYY-MM-DD HH:mm\") : \"-\"),\n },\n {\n title: t(\"common.option\"),\n key: \"action\",\n render: (_: unknown, record: SnapshotRecord) => (\n <Space size=\"small\">\n <Button\n type=\"link\"\n size=\"small\"\n icon={<DownloadOutlined />}\n onClick={() => handleDownload(record.id)}\n >\n {t(\"projects.snapshot.download.button\")}\n </Button>\n <Button type=\"link\" size=\"small\" icon={<EditOutlined />} onClick={() => openEdit(record)}>\n {t(\"common.edit\")}\n </Button>\n <Popconfirm\n title={t(\"projects.snapshot.delete.confirm\")}\n onConfirm={() => handleDelete(record.id)}\n >\n <Button type=\"link\" size=\"small\" danger icon={<DeleteOutlined />}>\n {t(\"common.delete\")}\n </Button>\n </Popconfirm>\n </Space>\n ),\n },\n ];\n\n const baseTitle =\n mode === \"create\"\n ? t(\"projects.snapshot.drawer.create\")\n : t(\"projects.snapshot.drawer.records\");\n const contextStr = titleContext ? ` — ${titleContext.org}/${titleContext.repo}` : \"\";\n const commitStr =\n mode === \"create\" && initialValues?.sha\n ? ` · ${String(initialValues.sha).substring(0, 7)}`\n : \"\";\n const title = `${baseTitle}${contextStr}${commitStr}`;\n\n return (\n <Drawer\n title={title}\n placement=\"right\"\n width={\"65%\"}\n onClose={onClose}\n open={open}\n destroyOnClose\n >\n {mode === \"create\" ? (\n <Form form={form} layout=\"vertical\" onFinish={onFinish}>\n <Form.Item\n name=\"repoID\"\n label={t(\"projects.snapshot.form.repoID\")}\n rules={[{ required: true, message: t(\"projects.snapshot.form.repoID.required\") }]}\n >\n <Input placeholder={t(\"projects.snapshot.form.repoID.placeholder\")} />\n </Form.Item>\n <Form.Item\n name=\"provider\"\n label={t(\"projects.snapshot.form.provider\")}\n rules={[{ required: true, message: t(\"projects.snapshot.form.provider.required\") }]}\n >\n <Input placeholder={t(\"projects.snapshot.form.provider.placeholder\")} />\n </Form.Item>\n <Form.Item\n name=\"sha\"\n label={t(\"projects.snapshot.form.sha\")}\n rules={[{ required: true, message: t(\"projects.snapshot.form.sha.required\") }]}\n >\n <Input placeholder={t(\"projects.snapshot.form.sha.placeholder\")} />\n </Form.Item>\n <Form.Item name=\"title\" label={t(\"projects.snapshot.form.title\")}>\n <Input placeholder={t(\"projects.snapshot.form.title.placeholder\")} />\n </Form.Item>\n <Form.Item name=\"description\" label={t(\"projects.snapshot.form.description\")}>\n <Input.TextArea\n rows={3}\n placeholder={t(\"projects.snapshot.form.description.placeholder\")}\n />\n </Form.Item>\n <Form.Item>\n <Space>\n <Button\n type=\"primary\"\n htmlType=\"submit\"\n loading={submitLoading}\n icon={<CameraOutlined />}\n >\n {t(\"projects.snapshot.create.submit\")}\n </Button>\n <Button onClick={onClose}>{t(\"common.cancel\")}</Button>\n </Space>\n </Form.Item>\n </Form>\n ) : (\n <>\n {onSwitchToCreate && (\n <div className=\"mb-3\">\n <Button type=\"primary\" icon={<CameraOutlined />} onClick={onSwitchToCreate}>\n {t(\"projects.snapshot.button.create\")}\n </Button>\n </div>\n )}\n <Table<SnapshotRecord>\n size=\"small\"\n columns={recordsColumns}\n dataSource={records}\n rowKey=\"id\"\n loading={recordsLoading}\n scroll={{ x: 800 }}\n pagination={{\n pageSize: 10,\n showSizeChanger: false,\n showTotal: (total) => t(\"common.total_items\", { total }),\n }}\n />\n <Modal\n title={t(\"projects.snapshot.edit.title\")}\n open={editModalOpen}\n onOk={handleEditOk}\n onCancel={() => {\n setEditModalOpen(false);\n setEditingRecord(null);\n }}\n confirmLoading={editSaving}\n destroyOnClose\n >\n <Form form={editForm} layout=\"vertical\">\n <Form.Item name=\"title\" label={t(\"projects.snapshot.form.title\")}>\n <Input placeholder={t(\"projects.snapshot.form.title.placeholder\")} />\n </Form.Item>\n <Form.Item name=\"description\" label={t(\"projects.snapshot.form.description\")}>\n <Input.TextArea\n rows={3}\n placeholder={t(\"projects.snapshot.form.description.placeholder\")}\n />\n </Form.Item>\n </Form>\n </Modal>\n </>\n )}\n </Drawer>\n );\n};\n\nexport default SnapshotDrawer;\n","import { request } from \"./request\";\n\nexport type CommitsQuery = {\n repoID: string;\n pathWithNamespace?: string;\n provider?: string;\n page?: number;\n pageSize?: number;\n};\n\n/**\n * 获取提交列表(覆盖率 commits)\n */\nexport function getCommits(params: CommitsQuery) {\n return request\n .get<{ data: unknown[] }>(\"/api/coverage/commits\", { params })\n .then((res) => res.data?.data ?? []);\n}\n","import {\n BranchesOutlined,\n CopyOutlined,\n DownOutlined,\n SearchOutlined,\n UserOutlined,\n} from \"@ant-design/icons\";\nimport type { MenuProps } from \"antd\";\nimport { Avatar, Dropdown, Input, message, Space, Table, Tag, Tooltip, Typography } from \"antd\";\nimport type { ColumnsType } from \"antd/es/table\";\nimport dayjs from \"dayjs\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useOutletContext, useParams } from \"react-router-dom\";\nimport CardPrimary from \"@/components/card/Primary\";\nimport SnapshotDrawer from \"@/components/snapshot/SnapshotDrawer\";\nimport type { SnapshotFormValues } from \"@/services/snapshot\";\nimport { getCommits } from \"@/services/coverage\";\n\nconst { Text } = Typography;\n\ntype Repo = {\n id: string;\n pathWithNamespace: string;\n description: string;\n bu: string;\n tags: string;\n members: string;\n config: string;\n createdAt: string;\n updatedAt: string;\n};\n\ntype SceneInfo = {\n scene: Record<string, unknown>;\n sceneKey: string;\n};\n\ntype BuildTargetSceneInfo = {\n buildTarget: string;\n scenes: SceneInfo[];\n};\n\ntype CommitRecord = {\n sha: string;\n commitUrl?: string | null;\n branch: string;\n compareTarget: string;\n commitMessage: string;\n statements: number;\n newLines: number;\n times: number;\n latestReport: string;\n buildTarget: string;\n buildTargets: string[];\n buildTargetScenes?: BuildTargetSceneInfo[];\n versionID: string;\n coverageID: string;\n reportID: string;\n reportProvider: string;\n scenes?: SceneInfo[];\n authorName?: string | null;\n authorEmail?: string | null;\n createdAt?: string;\n avatar?: string | null;\n};\n\n// 展平后的行类型:每个 buildTarget 一行\ntype FlatCommitRow = CommitRecord & {\n currentBuildTarget: string;\n currentScenes: SceneInfo[]; // 该 buildTarget 的所有 scene\n rowKey: string; // 用于唯一标识每一行\n};\n\nconst CommitsPage = () => {\n const { t } = useTranslation();\n const { repo } = useOutletContext<{\n repo: Repo | null;\n }>();\n const params = useParams();\n const [loading, setLoading] = useState(false);\n const [commits, setCommits] = useState<CommitRecord[]>([]);\n const [page, setPage] = useState(1);\n const [pageSize, setPageSize] = useState(10);\n const [searchKeyword, setSearchKeyword] = useState(\"\");\n const [snapshotDrawerOpen, setSnapshotDrawerOpen] = useState(false);\n const [snapshotDrawerMode, setSnapshotDrawerMode] = useState<\"create\" | \"records\">(\"create\");\n const [snapshotInitialValues, setSnapshotInitialValues] = useState<Partial<SnapshotFormValues>>(\n {},\n );\n\n const fetchCommits = async () => {\n if (!repo?.id) {\n return;\n }\n\n setLoading(true);\n try {\n const data = await getCommits({\n repoID: repo.id,\n pathWithNamespace: repo.pathWithNamespace,\n provider: params.provider,\n page: 1,\n pageSize: 10000,\n });\n setCommits(Array.isArray(data) ? data : []);\n } catch (error) {\n message.error(t(\"projects.commits.fetch.failed\"));\n console.error(error);\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n fetchCommits();\n }, [repo?.id]);\n\n // 展平数据:每个 buildTarget 一行(按 sha + buildTarget 分组)\n const allFlatData = useMemo(() => {\n const result: FlatCommitRow[] = [];\n for (const commit of commits) {\n // 如果有 buildTargetScenes,使用它;否则回退到旧的逻辑\n if (commit.buildTargetScenes && commit.buildTargetScenes.length > 0) {\n for (const buildTargetScene of commit.buildTargetScenes) {\n const buildTarget = buildTargetScene.buildTarget || \"\";\n const scenes = buildTargetScene.scenes || [];\n\n // 每个 buildTarget 创建一行\n result.push({\n ...commit,\n currentBuildTarget: buildTarget,\n currentScenes: scenes,\n rowKey: `${commit.sha}_${buildTarget}`,\n });\n }\n } else {\n // 回退逻辑:如果没有 buildTargetScenes,使用 buildTargets 和 scenes\n const buildTargets = commit.buildTargets || [];\n const scenes = commit.scenes || [];\n\n if (buildTargets.length === 0) {\n // 如果没有 buildTargets,至少创建一行\n result.push({\n ...commit,\n currentBuildTarget: commit.buildTarget || \"\",\n currentScenes: scenes,\n rowKey: `${commit.sha}_empty`,\n });\n } else {\n // 为每个 buildTarget 创建一行,所有 scene 都关联到该 buildTarget\n for (const buildTarget of buildTargets) {\n result.push({\n ...commit,\n currentBuildTarget: buildTarget,\n currentScenes: scenes,\n rowKey: `${commit.sha}_${buildTarget}`,\n });\n }\n }\n }\n }\n return result;\n }, [commits]);\n\n // 前端搜索:按 commit SHA 过滤\n const flatData = useMemo(() => {\n const kw = searchKeyword.trim().toLowerCase();\n if (!kw) return allFlatData;\n return allFlatData.filter((row) => row.sha.toLowerCase().includes(kw));\n }, [allFlatData, searchKeyword]);\n\n // 前端分页\n const paginatedData = useMemo(() => {\n const start = (page - 1) * pageSize;\n return flatData.slice(start, start + pageSize);\n }, [flatData, page, pageSize]);\n\n const columns: ColumnsType<FlatCommitRow> = [\n {\n title: (\n <Space>\n <BranchesOutlined />\n {t(\"projects.commits.columns.sha\")}\n </Space>\n ),\n dataIndex: \"sha\",\n key: \"sha\",\n width: 120,\n render: (_: string, record: FlatCommitRow) => (\n <Space size={4}>\n {record.commitUrl ? (\n <a\n href={record.commitUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"font-mono tabular-nums\"\n style={{ width: \"7ch\", display: \"inline-block\", textAlign: \"right\" }}\n >\n {record.sha.substring(0, 7)}\n </a>\n ) : (\n <Link\n to={`/${params.provider}/${params.org}/${params.repo}/commit/${record.sha}`}\n className=\"font-mono tabular-nums\"\n style={{ width: \"7ch\", display: \"inline-block\", textAlign: \"right\" }}\n >\n {record.sha.substring(0, 7)}\n </Link>\n )}\n <Tooltip title={t(\"common.copy\")}>\n <CopyOutlined\n className=\"cursor-pointer text-gray-400 hover:text-gray-600\"\n onClick={async (e) => {\n e.preventDefault();\n e.stopPropagation();\n try {\n await navigator.clipboard.writeText(record.sha);\n message.success(t(\"common.copy_success\"));\n } catch {\n message.error(t(\"common.copy_failed\"));\n }\n }}\n />\n </Tooltip>\n </Space>\n ),\n },\n {\n title: t(\"projects.message\"),\n key: \"commitInfo\",\n ellipsis: true,\n render: (_: any, record: FlatCommitRow) => {\n const hasMessage = record.commitMessage;\n const hasAuthor = record.authorName || record.authorEmail;\n const hasTime = record.createdAt;\n\n if (!hasMessage && !hasAuthor && !hasTime) {\n return \"-\";\n }\n\n return (\n <Space direction=\"vertical\" size={2} style={{ width: \"100%\" }}>\n {hasMessage && (\n <Text ellipsis={{ tooltip: record.commitMessage }}>{record.commitMessage}</Text>\n )}\n {hasAuthor && (\n <Space size={4}>\n {record.avatar ? (\n <Avatar src={record.avatar} size={20} />\n ) : (\n <Avatar size={20} icon={<UserOutlined />} />\n )}\n <Text type=\"secondary\" style={{ fontSize: \"12px\" }}>\n {record.authorName || record.authorEmail || \"-\"}\n {record.authorEmail && record.authorName && <> ({record.authorEmail})</>}\n </Text>\n </Space>\n )}\n {hasTime && (\n <Text type=\"secondary\" style={{ fontSize: \"12px\" }}>\n {dayjs(record.createdAt).format(\"YYYY-MM-DD HH:mm:ss\")}\n </Text>\n )}\n </Space>\n );\n },\n },\n {\n title: t(\"projects.commits.columns.buildTarget\"),\n dataIndex: \"currentBuildTarget\",\n key: \"currentBuildTarget\",\n render: (text: string) => {\n return text ? <Tag>{text}</Tag> : \"-\";\n },\n },\n {\n title: t(\"projects.report_times\"),\n dataIndex: \"times\",\n key: \"times\",\n width: 80,\n align: \"right\",\n },\n {\n title: t(\"projects.latest_report_time\"),\n dataIndex: \"latestReport\",\n key: \"latestReport\",\n width: 120,\n render: (text: string) => (text ? dayjs(text).format(\"MM-DD HH:mm\") : \"-\"),\n },\n {\n title: t(\"common.option\"),\n key: \"option\",\n width: 280,\n render: (_: any, record: FlatCommitRow) => {\n const detailPath = `/report/-/${params.provider}/${params.org}/${params.repo}/commit/${record.sha}/-/?build_target=${record.currentBuildTarget}`;\n\n // 构建报告路径的辅助函数\n const buildReportPath = (scene: Record<string, unknown>) => {\n const searchParams = new URLSearchParams();\n if (record.currentBuildTarget) {\n searchParams.set(\"build_target\", record.currentBuildTarget);\n }\n if (record.reportID) {\n searchParams.set(\"report_id\", record.reportID);\n }\n if (record.reportProvider) {\n searchParams.set(\"report_provider\", record.reportProvider);\n }\n if (scene && Object.keys(scene).length > 0) {\n searchParams.set(\"scene\", JSON.stringify(scene));\n }\n const queryString = searchParams.toString();\n return `/report/-/${params.provider}/${params.org}/${params.repo}/commit/${record.sha}/-/${queryString ? `?${queryString}` : \"\"}`;\n };\n\n // 处理场景显示\n const scenes = record.currentScenes || [];\n let sceneDropdown = null;\n\n if (scenes.length > 0) {\n // 收集所有场景中的所有 key-value 对,去重\n const kvPairs = new Map<string, { key: string; value: unknown }>();\n scenes.forEach((sceneInfo) => {\n const scene = sceneInfo.scene || {};\n Object.entries(scene).forEach(([key, value]) => {\n const kvKey = `${key}=${value}`;\n if (!kvPairs.has(kvKey)) {\n kvPairs.set(kvKey, { key, value });\n }\n });\n });\n\n const kvPairsArray = Array.from(kvPairs.values());\n\n if (kvPairsArray.length > 0) {\n if (kvPairsArray.length === 1) {\n // 如果只有一个 key-value 对,直接显示链接\n const { key, value } = kvPairsArray[0];\n const sceneObj = { [key]: value };\n const reportPath = buildReportPath(sceneObj);\n sceneDropdown = (\n <a href={reportPath} target=\"_blank\" rel=\"noreferrer\">\n {key}={String(value)}\n </a>\n );\n } else {\n // 如果有多个 key-value 对,使用下拉菜单\n const menuItems: MenuProps[\"items\"] = kvPairsArray.map(({ key, value }, index) => {\n const sceneObj = { [key]: value };\n const reportPath = buildReportPath(sceneObj);\n\n return {\n key: index,\n label: (\n <a href={reportPath} target=\"_blank\" rel=\"noreferrer\">\n {key}={String(value)}\n </a>\n ),\n };\n });\n\n sceneDropdown = (\n <Dropdown menu={{ items: menuItems }} placement=\"bottomLeft\">\n <a onClick={(e) => e.preventDefault()}>\n {t(\"projects.commits.columns.scene\")} <DownOutlined />\n </a>\n </Dropdown>\n );\n }\n }\n }\n\n return (\n <Space wrap>\n <Link to={detailPath} target={\"_blank\"}>\n {t(\"projects.commits.columns.overall\")}\n </Link>\n {sceneDropdown}\n {/* <a onClick={() => openSnapshotCreate(record)}>{t(\"projects.snapshot.button.create\")}</a>\n <a onClick={openSnapshotRecords}>{t(\"projects.snapshot.button.records\")}</a> */}\n </Space>\n );\n },\n },\n ];\n\n const openSnapshotCreate = (record: FlatCommitRow) => {\n setSnapshotInitialValues({\n repoID: repo?.id ?? \"\",\n provider: params.provider ?? \"\",\n sha: record.sha ?? \"\",\n title: record.commitMessage ?? \"\",\n description: \"\",\n });\n setSnapshotDrawerMode(\"create\");\n setSnapshotDrawerOpen(true);\n };\n\n const openSnapshotRecords = () => {\n setSnapshotInitialValues({\n repoID: repo?.id ?? \"\",\n provider: params.provider ?? \"\",\n });\n setSnapshotDrawerMode(\"records\");\n setSnapshotDrawerOpen(true);\n };\n\n if (!repo) {\n return <div>{t(\"projects.commits.loading\")}</div>;\n }\n\n return (\n <div className={\"\"}>\n <div className={\"mb-4 flex items-center gap-3\"}>\n <Input\n style={{ width: \"400px\" }}\n placeholder={t(\"projects.commits.search.placeholder\")}\n prefix={<SearchOutlined />}\n value={searchKeyword}\n onChange={(e) => {\n setSearchKeyword(e.target.value);\n setPage(1);\n }}\n allowClear\n onClear={() => {\n setSearchKeyword(\"\");\n setPage(1);\n }}\n />\n </div>\n <SnapshotDrawer\n open={snapshotDrawerOpen}\n onClose={() => setSnapshotDrawerOpen(false)}\n mode={snapshotDrawerMode}\n initialValues={snapshotInitialValues}\n titleContext={\n params.org && params.repo ? { org: params.org, repo: params.repo } : undefined\n }\n onCreateSuccess={() => setSnapshotDrawerMode(\"records\")}\n onSwitchToCreate={() => {\n setSnapshotDrawerMode(\"create\");\n setSnapshotInitialValues({\n repoID: repo?.id ?? \"\",\n provider: params.provider ?? \"\",\n sha: \"\",\n title: \"\",\n description: \"\",\n });\n }}\n />\n <CardPrimary>\n <Table<FlatCommitRow>\n columns={columns}\n dataSource={paginatedData}\n loading={loading}\n rowKey=\"rowKey\"\n pagination={{\n current: page,\n pageSize: pageSize,\n total: flatData.length,\n showTotal: (total, range) =>\n `${range[0]}-${range[1]} / ${total} ${t(\"common.total_items\", { total })}`,\n onChange: (newPage, newPageSize) => {\n setPage(newPage);\n if (newPageSize !== pageSize) {\n setPageSize(newPageSize);\n }\n },\n }}\n />\n </CardPrimary>\n </div>\n );\n};\n\nexport default CommitsPage;\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"commits-DYkmJ-uz.js","names":["BranchesOutlined","_extends","AntdIcon","BranchesOutlinedSvg","RefIcon","CameraOutlined","_extends","AntdIcon","CameraOutlinedSvg","RefIcon","DownloadOutlined","_extends","AntdIcon","DownloadOutlinedSvg","RefIcon","UserOutlined","_extends","AntdIcon","UserOutlinedSvg","_extends","DrawerPanel","CSSMotion","DrawerPanel","Drawer","Portal","DrawerPopup","Drawer","Skeleton","mergeToken","useId","useStyle","RcDrawer"],"sources":["../../node_modules/.pnpm/@ant-design+icons-svg@4.4.2/node_modules/@ant-design/icons-svg/es/asn/BranchesOutlined.js","../../node_modules/.pnpm/@ant-design+icons@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@ant-design/icons/es/icons/BranchesOutlined.js","../../node_modules/.pnpm/@ant-design+icons-svg@4.4.2/node_modules/@ant-design/icons-svg/es/asn/CameraOutlined.js","../../node_modules/.pnpm/@ant-design+icons@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@ant-design/icons/es/icons/CameraOutlined.js","../../node_modules/.pnpm/@ant-design+icons-svg@4.4.2/node_modules/@ant-design/icons-svg/es/asn/DownloadOutlined.js","../../node_modules/.pnpm/@ant-design+icons@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@ant-design/icons/es/icons/DownloadOutlined.js","../../node_modules/.pnpm/@ant-design+icons-svg@4.4.2/node_modules/@ant-design/icons-svg/es/asn/UserOutlined.js","../../node_modules/.pnpm/@ant-design+icons@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@ant-design/icons/es/icons/UserOutlined.js","../../node_modules/.pnpm/@rc-component+drawer@1.3.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/drawer/es/context.js","../../node_modules/.pnpm/@rc-component+drawer@1.3.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/drawer/es/DrawerPanel.js","../../node_modules/.pnpm/@rc-component+drawer@1.3.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/drawer/es/hooks/useDrag.js","../../node_modules/.pnpm/@rc-component+drawer@1.3.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/drawer/es/util.js","../../node_modules/.pnpm/@rc-component+drawer@1.3.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/drawer/es/DrawerPopup.js","../../node_modules/.pnpm/@rc-component+drawer@1.3.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/drawer/es/Drawer.js","../../node_modules/.pnpm/@rc-component+drawer@1.3.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@rc-component/drawer/es/index.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/drawer/DrawerPanel.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/drawer/style/motion.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/drawer/style/index.js","../../node_modules/.pnpm/antd@6.1.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/antd/es/drawer/index.js","../../src/services/snapshot.ts","../../src/components/snapshot/SnapshotDrawer.tsx","../../src/services/coverage.ts","../../src/pages/[provider]/[org]/[repo]/index/commits/index.tsx"],"sourcesContent":["// This icon file is generated automatically.\nvar BranchesOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M740 161c-61.8 0-112 50.2-112 112 0 50.1 33.1 92.6 78.5 106.9v95.9L320 602.4V318.1c44.2-15 76-56.9 76-106.1 0-61.8-50.2-112-112-112s-112 50.2-112 112c0 49.2 31.8 91 76 106.1V706c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1v-27.8l423.5-138.7a50.52 50.52 0 0034.9-48.2V378.2c42.9-15.8 73.6-57 73.6-105.2 0-61.8-50.2-112-112-112zm-504 51a48.01 48.01 0 0196 0 48.01 48.01 0 01-96 0zm96 600a48.01 48.01 0 01-96 0 48.01 48.01 0 0196 0zm408-491a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\" } }] }, \"name\": \"branches\", \"theme\": \"outlined\" };\nexport default BranchesOutlined;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport BranchesOutlinedSvg from \"@ant-design/icons-svg/es/asn/BranchesOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nconst BranchesOutlined = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: BranchesOutlinedSvg\n}));\n\n/** */\nconst RefIcon = /*#__PURE__*/React.forwardRef(BranchesOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'BranchesOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar CameraOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M864 248H728l-32.4-90.8a32.07 32.07 0 00-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 248H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V328c0-44.2-35.8-80-80-80zm8 536c0 4.4-3.6 8-8 8H160c-4.4 0-8-3.6-8-8V328c0-4.4 3.6-8 8-8h186.7l17.1-47.8 22.9-64.2h250.5l22.9 64.2 17.1 47.8H864c4.4 0 8 3.6 8 8v456zM512 384c-88.4 0-160 71.6-160 160s71.6 160 160 160 160-71.6 160-160-71.6-160-160-160zm0 256c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z\" } }] }, \"name\": \"camera\", \"theme\": \"outlined\" };\nexport default CameraOutlined;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CameraOutlinedSvg from \"@ant-design/icons-svg/es/asn/CameraOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nconst CameraOutlined = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CameraOutlinedSvg\n}));\n\n/** */\nconst RefIcon = /*#__PURE__*/React.forwardRef(CameraOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'CameraOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar DownloadOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\" } }] }, \"name\": \"download\", \"theme\": \"outlined\" };\nexport default DownloadOutlined;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DownloadOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownloadOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nconst DownloadOutlined = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DownloadOutlinedSvg\n}));\n\n/** */\nconst RefIcon = /*#__PURE__*/React.forwardRef(DownloadOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'DownloadOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar UserOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M858.5 763.6a374 374 0 00-80.6-119.5 375.63 375.63 0 00-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 00-80.6 119.5A371.7 371.7 0 00136 901.8a8 8 0 008 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 008-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\" } }] }, \"name\": \"user\", \"theme\": \"outlined\" };\nexport default UserOutlined;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport UserOutlinedSvg from \"@ant-design/icons-svg/es/asn/UserOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nconst UserOutlined = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: UserOutlinedSvg\n}));\n\n/** */\nconst RefIcon = /*#__PURE__*/React.forwardRef(UserOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'UserOutlined';\n}\nexport default RefIcon;","import * as React from 'react';\nconst DrawerContext = /*#__PURE__*/React.createContext(null);\nexport const RefContext = /*#__PURE__*/React.createContext({});\nexport default DrawerContext;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport { clsx } from 'clsx';\nimport * as React from 'react';\nimport { RefContext } from \"./context\";\nimport pickAttrs from \"@rc-component/util/es/pickAttrs\";\nimport { useComposeRef } from \"@rc-component/util/es/ref\";\nconst DrawerPanel = props => {\n const {\n prefixCls,\n className,\n containerRef,\n ...restProps\n } = props;\n const {\n panel: panelRef\n } = React.useContext(RefContext);\n const mergedRef = useComposeRef(panelRef, containerRef);\n\n // =============================== Render ===============================\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(`${prefixCls}-section`, className),\n role: \"dialog\",\n ref: mergedRef\n }, pickAttrs(props, {\n aria: true\n }), {\n \"aria-modal\": \"true\"\n }, restProps));\n};\nif (process.env.NODE_ENV !== 'production') {\n DrawerPanel.displayName = 'DrawerPanel';\n}\nexport default DrawerPanel;","import * as React from 'react';\nimport { clsx } from 'clsx';\nimport { useEvent } from '@rc-component/util';\nexport default function useDrag(options) {\n const {\n prefixCls,\n direction,\n className,\n style,\n maxSize,\n containerRef,\n currentSize,\n onResize,\n onResizeEnd,\n onResizeStart\n } = options;\n const [isDragging, setIsDragging] = React.useState(false);\n const [startPos, setStartPos] = React.useState(0);\n const [startSize, setStartSize] = React.useState(0);\n const isHorizontal = direction === 'left' || direction === 'right';\n const handleMouseDown = useEvent(e => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(true);\n if (isHorizontal) {\n setStartPos(e.clientX);\n } else {\n setStartPos(e.clientY);\n }\n\n // Use provided currentSize, or fallback to container size\n let startSize;\n if (typeof currentSize === 'number') {\n startSize = currentSize;\n } else if (containerRef?.current) {\n const rect = containerRef.current.getBoundingClientRect();\n startSize = isHorizontal ? rect.width : rect.height;\n }\n setStartSize(startSize);\n onResizeStart?.(startSize);\n });\n const handleMouseMove = useEvent(e => {\n if (!isDragging) return;\n const currentPos = isHorizontal ? e.clientX : e.clientY;\n let delta = currentPos - startPos;\n\n // Adjust delta direction based on placement\n if (direction === 'right' || direction === 'bottom') {\n delta = -delta;\n }\n let newSize = startSize + delta;\n\n // Apply min/max size limits\n if (newSize < 0) {\n newSize = 0;\n }\n // Only apply maxSize if it's a valid positive number\n if (maxSize && newSize > maxSize) {\n newSize = maxSize;\n }\n onResize?.(newSize);\n });\n const handleMouseUp = React.useCallback(() => {\n if (isDragging) {\n setIsDragging(false);\n\n // Get the final size after resize\n if (containerRef?.current) {\n const rect = containerRef.current.getBoundingClientRect();\n const finalSize = isHorizontal ? rect.width : rect.height;\n onResizeEnd?.(finalSize);\n }\n }\n }, [isDragging, containerRef, onResizeEnd, isHorizontal]);\n React.useEffect(() => {\n if (isDragging) {\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }\n }, [isDragging, handleMouseMove, handleMouseUp]);\n const dragElementClassName = clsx(`${prefixCls}-dragger`, `${prefixCls}-dragger-${direction}`, {\n [`${prefixCls}-dragger-dragging`]: isDragging,\n [`${prefixCls}-dragger-horizontal`]: isHorizontal,\n [`${prefixCls}-dragger-vertical`]: !isHorizontal\n }, className);\n return {\n dragElementProps: {\n className: dragElementClassName,\n style,\n onMouseDown: handleMouseDown\n },\n isDragging\n };\n}","import warning from \"@rc-component/util/es/warning\";\nimport canUseDom from \"@rc-component/util/es/Dom/canUseDom\";\nexport function parseWidthHeight(value) {\n if (typeof value === 'string') {\n const num = Number(value.replace(/px$/i, ''));\n const floatNum = parseFloat(value);\n if (floatNum === num) {\n warning(false, 'Invalid value type of `width` or `height` which should be number type instead.');\n }\n if (!Number.isNaN(num)) {\n return num;\n }\n }\n return value;\n}\nexport function warnCheck(props) {\n warning(!('wrapperClassName' in props), `'wrapperClassName' is removed. Please use 'rootClassName' instead.`);\n warning(canUseDom() || !props.open, `Drawer with 'open' in SSR is not work since no place to createPortal. Please move to 'useEffect' instead.`);\n}","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport { clsx } from 'clsx';\nimport CSSMotion from '@rc-component/motion';\nimport KeyCode from \"@rc-component/util/es/KeyCode\";\nimport pickAttrs from \"@rc-component/util/es/pickAttrs\";\nimport * as React from 'react';\nimport DrawerContext from \"./context\";\nimport DrawerPanel from \"./DrawerPanel\";\nimport useDrag from \"./hooks/useDrag\";\nimport { parseWidthHeight } from \"./util\";\nimport { useEvent } from '@rc-component/util';\nconst sentinelStyle = {\n width: 0,\n height: 0,\n overflow: 'hidden',\n outline: 'none',\n position: 'absolute'\n};\nconst DrawerPopup = (props, ref) => {\n const {\n prefixCls,\n open,\n placement,\n inline,\n push,\n forceRender,\n autoFocus,\n keyboard,\n // classNames\n classNames: drawerClassNames,\n // Root\n rootClassName,\n rootStyle,\n zIndex,\n // Drawer\n className,\n id,\n style,\n motion,\n width,\n height,\n size,\n maxSize,\n children,\n // Mask\n mask,\n maskClosable,\n maskMotion,\n maskClassName,\n maskStyle,\n // Events\n afterOpenChange,\n onClose,\n onMouseEnter,\n onMouseOver,\n onMouseLeave,\n onClick,\n onKeyDown,\n onKeyUp,\n styles,\n drawerRender,\n resizable,\n defaultSize\n } = props;\n\n // ================================ Refs ================================\n const panelRef = React.useRef(null);\n const sentinelStartRef = React.useRef(null);\n const sentinelEndRef = React.useRef(null);\n React.useImperativeHandle(ref, () => panelRef.current);\n const onPanelKeyDown = event => {\n const {\n keyCode,\n shiftKey\n } = event;\n switch (keyCode) {\n // Tab active\n case KeyCode.TAB:\n {\n if (keyCode === KeyCode.TAB) {\n if (!shiftKey && document.activeElement === sentinelEndRef.current) {\n sentinelStartRef.current?.focus({\n preventScroll: true\n });\n } else if (shiftKey && document.activeElement === sentinelStartRef.current) {\n sentinelEndRef.current?.focus({\n preventScroll: true\n });\n }\n }\n break;\n }\n\n // Close\n case KeyCode.ESC:\n {\n if (onClose && keyboard) {\n event.stopPropagation();\n onClose(event);\n }\n break;\n }\n }\n };\n\n // ========================== Control ===========================\n // Auto Focus\n React.useEffect(() => {\n if (open && autoFocus) {\n panelRef.current?.focus({\n preventScroll: true\n });\n }\n }, [open]);\n\n // ============================ Push ============================\n const [pushed, setPushed] = React.useState(false);\n const parentContext = React.useContext(DrawerContext);\n\n // Merge push distance\n let pushConfig;\n if (typeof push === 'boolean') {\n pushConfig = push ? {} : {\n distance: 0\n };\n } else {\n pushConfig = push || {};\n }\n const pushDistance = pushConfig?.distance ?? parentContext?.pushDistance ?? 180;\n const mergedContext = React.useMemo(() => ({\n pushDistance,\n push: () => {\n setPushed(true);\n },\n pull: () => {\n setPushed(false);\n }\n }), [pushDistance]);\n\n // ========================= ScrollLock =========================\n // Tell parent to push\n React.useEffect(() => {\n if (open) {\n parentContext?.push?.();\n } else {\n parentContext?.pull?.();\n }\n }, [open]);\n\n // Clean up\n React.useEffect(() => () => {\n parentContext?.pull?.();\n }, []);\n\n // ============================ Mask ============================\n const maskNode = /*#__PURE__*/React.createElement(CSSMotion, _extends({\n key: \"mask\"\n }, maskMotion, {\n visible: mask && open\n }), ({\n className: motionMaskClassName,\n style: motionMaskStyle\n }, maskRef) => /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${prefixCls}-mask`, motionMaskClassName, drawerClassNames?.mask, maskClassName),\n style: {\n ...motionMaskStyle,\n ...maskStyle,\n ...styles?.mask\n },\n onClick: maskClosable && open ? onClose : undefined,\n ref: maskRef\n }));\n\n // =========================== Panel ============================\n const motionProps = typeof motion === 'function' ? motion(placement) : motion;\n\n // ============================ Size ============================\n const [currentSize, setCurrentSize] = React.useState();\n const isHorizontal = placement === 'left' || placement === 'right';\n\n // Aggregate size logic with backward compatibility using useMemo\n const mergedSize = React.useMemo(() => {\n const legacySize = isHorizontal ? width : height;\n const nextMergedSize = size ?? legacySize ?? currentSize ?? defaultSize ?? (isHorizontal ? 378 : undefined);\n return parseWidthHeight(nextMergedSize);\n }, [size, width, height, defaultSize, isHorizontal, currentSize]);\n\n // >>> Style\n const wrapperStyle = React.useMemo(() => {\n const nextWrapperStyle = {};\n if (pushed && pushDistance) {\n switch (placement) {\n case 'top':\n nextWrapperStyle.transform = `translateY(${pushDistance}px)`;\n break;\n case 'bottom':\n nextWrapperStyle.transform = `translateY(${-pushDistance}px)`;\n break;\n case 'left':\n nextWrapperStyle.transform = `translateX(${pushDistance}px)`;\n break;\n default:\n nextWrapperStyle.transform = `translateX(${-pushDistance}px)`;\n break;\n }\n }\n if (isHorizontal) {\n nextWrapperStyle.width = parseWidthHeight(mergedSize);\n } else {\n nextWrapperStyle.height = parseWidthHeight(mergedSize);\n }\n return nextWrapperStyle;\n }, [pushed, pushDistance, placement, isHorizontal, mergedSize]);\n\n // =========================== Resize ===========================\n const wrapperRef = React.useRef(null);\n const isResizable = !!resizable;\n const resizeConfig = typeof resizable === 'object' && resizable || {};\n const onInternalResize = useEvent(size => {\n setCurrentSize(size);\n resizeConfig.onResize?.(size);\n });\n const {\n dragElementProps,\n isDragging\n } = useDrag({\n prefixCls: `${prefixCls}-resizable`,\n direction: placement,\n className: drawerClassNames?.dragger,\n style: styles?.dragger,\n maxSize,\n containerRef: wrapperRef,\n currentSize: mergedSize,\n onResize: onInternalResize,\n onResizeStart: resizeConfig.onResizeStart,\n onResizeEnd: resizeConfig.onResizeEnd\n });\n\n // =========================== Events ===========================\n const eventHandlers = {\n onMouseEnter,\n onMouseOver,\n onMouseLeave,\n onClick,\n onKeyDown,\n onKeyUp\n };\n\n // =========================== Render ==========================\n // >>>>> Panel\n const panelNode = /*#__PURE__*/React.createElement(CSSMotion, _extends({\n key: \"panel\"\n }, motionProps, {\n visible: open,\n forceRender: forceRender,\n onVisibleChanged: nextVisible => {\n afterOpenChange?.(nextVisible);\n },\n removeOnLeave: false,\n leavedClassName: `${prefixCls}-content-wrapper-hidden`\n }), ({\n className: motionClassName,\n style: motionStyle\n }, motionRef) => {\n const content = /*#__PURE__*/React.createElement(DrawerPanel, _extends({\n id: id,\n containerRef: motionRef,\n prefixCls: prefixCls,\n className: clsx(className, drawerClassNames?.section),\n style: {\n ...style,\n ...styles?.section\n }\n }, pickAttrs(props, {\n aria: true\n }), eventHandlers), children);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: wrapperRef,\n className: clsx(`${prefixCls}-content-wrapper`, isDragging && `${prefixCls}-content-wrapper-dragging`, drawerClassNames?.wrapper, !isDragging && motionClassName),\n style: {\n ...motionStyle,\n ...wrapperStyle,\n ...styles?.wrapper\n }\n }, pickAttrs(props, {\n data: true\n })), isResizable && /*#__PURE__*/React.createElement(\"div\", dragElementProps), drawerRender ? drawerRender(content) : content);\n });\n\n // >>>>> Container\n const containerStyle = {\n ...rootStyle\n };\n if (zIndex) {\n containerStyle.zIndex = zIndex;\n }\n return /*#__PURE__*/React.createElement(DrawerContext.Provider, {\n value: mergedContext\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(prefixCls, `${prefixCls}-${placement}`, rootClassName, {\n [`${prefixCls}-open`]: open,\n [`${prefixCls}-inline`]: inline\n }),\n style: containerStyle,\n tabIndex: -1,\n ref: panelRef,\n onKeyDown: onPanelKeyDown\n }, maskNode, /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelStartRef,\n style: sentinelStyle,\n \"aria-hidden\": \"true\",\n \"data-sentinel\": \"start\"\n }), panelNode, /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelEndRef,\n style: sentinelStyle,\n \"aria-hidden\": \"true\",\n \"data-sentinel\": \"end\"\n })));\n};\nconst RefDrawerPopup = /*#__PURE__*/React.forwardRef(DrawerPopup);\nif (process.env.NODE_ENV !== 'production') {\n RefDrawerPopup.displayName = 'DrawerPopup';\n}\nexport default RefDrawerPopup;","import Portal from '@rc-component/portal';\nimport useLayoutEffect from \"@rc-component/util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\nimport { RefContext } from \"./context\";\nimport DrawerPopup from \"./DrawerPopup\";\nimport { warnCheck } from \"./util\";\nconst Drawer = props => {\n const {\n open = false,\n prefixCls = 'rc-drawer',\n placement = 'right',\n autoFocus = true,\n keyboard = true,\n width,\n height,\n size,\n maxSize,\n mask = true,\n maskClosable = true,\n getContainer,\n forceRender,\n afterOpenChange,\n destroyOnHidden,\n onMouseEnter,\n onMouseOver,\n onMouseLeave,\n onClick,\n onKeyDown,\n onKeyUp,\n resizable,\n defaultSize,\n // Refs\n panelRef\n } = props;\n const [animatedVisible, setAnimatedVisible] = React.useState(false);\n\n // ============================= Warn =============================\n if (process.env.NODE_ENV !== 'production') {\n warnCheck(props);\n }\n\n // ============================= Open =============================\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => {\n setMounted(true);\n }, []);\n const mergedOpen = mounted ? open : false;\n\n // ============================ Focus =============================\n const popupRef = React.useRef(null);\n const lastActiveRef = React.useRef(null);\n useLayoutEffect(() => {\n if (mergedOpen) {\n lastActiveRef.current = document.activeElement;\n }\n }, [mergedOpen]);\n\n // ============================= Open =============================\n const internalAfterOpenChange = nextVisible => {\n setAnimatedVisible(nextVisible);\n afterOpenChange?.(nextVisible);\n if (!nextVisible && lastActiveRef.current && !popupRef.current?.contains(lastActiveRef.current)) {\n lastActiveRef.current?.focus({\n preventScroll: true\n });\n }\n };\n\n // =========================== Context ============================\n const refContext = React.useMemo(() => ({\n panel: panelRef\n }), [panelRef]);\n\n // ============================ Render ============================\n if (!forceRender && !animatedVisible && !mergedOpen && destroyOnHidden) {\n return null;\n }\n const eventHandlers = {\n onMouseEnter,\n onMouseOver,\n onMouseLeave,\n onClick,\n onKeyDown,\n onKeyUp\n };\n const drawerPopupProps = {\n ...props,\n open: mergedOpen,\n prefixCls,\n placement,\n autoFocus,\n keyboard,\n width,\n height,\n size,\n maxSize,\n defaultSize,\n mask,\n maskClosable,\n inline: getContainer === false,\n afterOpenChange: internalAfterOpenChange,\n ref: popupRef,\n resizable,\n ...eventHandlers\n };\n return /*#__PURE__*/React.createElement(RefContext.Provider, {\n value: refContext\n }, /*#__PURE__*/React.createElement(Portal, {\n open: mergedOpen || forceRender || animatedVisible,\n autoDestroy: false,\n getContainer: getContainer,\n autoLock: mask && (mergedOpen || animatedVisible)\n }, /*#__PURE__*/React.createElement(DrawerPopup, drawerPopupProps)));\n};\nif (process.env.NODE_ENV !== 'production') {\n Drawer.displayName = 'Drawer';\n}\nexport default Drawer;","// export this package's api\nimport Drawer from \"./Drawer\";\nexport default Drawer;","\"use client\";\n\nimport * as React from 'react';\nimport { clsx } from 'clsx';\nimport { pickClosable, useClosable, useMergeSemantic } from '../_util/hooks';\nimport { useComponentConfig } from '../config-provider/context';\nimport Skeleton from '../skeleton';\nconst DrawerPanel = props => {\n const {\n prefixCls,\n ariaId,\n title,\n footer,\n extra,\n closable,\n loading,\n onClose,\n headerStyle,\n bodyStyle,\n footerStyle,\n children,\n classNames: drawerClassNames,\n styles: drawerStyles\n } = props;\n const drawerContext = useComponentConfig('drawer');\n const {\n classNames: contextClassNames,\n styles: contextStyles\n } = drawerContext;\n const [mergedClassNames, mergedStyles] = useMergeSemantic([contextClassNames, drawerClassNames], [contextStyles, drawerStyles], {\n props\n });\n let closablePlacement;\n if (closable === false) {\n closablePlacement = undefined;\n } else if (closable === undefined || closable === true) {\n closablePlacement = 'start';\n } else {\n closablePlacement = closable?.placement === 'end' ? 'end' : 'start';\n }\n const customCloseIconRender = React.useCallback(icon => (/*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: onClose,\n className: clsx(`${prefixCls}-close`, {\n [`${prefixCls}-close-${closablePlacement}`]: closablePlacement === 'end'\n }, mergedClassNames.close),\n style: mergedStyles.close\n }, icon)), [onClose, prefixCls, closablePlacement, mergedClassNames.close, mergedStyles.close]);\n const [mergedClosable, mergedCloseIcon] = useClosable(pickClosable(props), pickClosable(drawerContext), {\n closable: true,\n closeIconRender: customCloseIconRender\n });\n const renderHeader = () => {\n if (!title && !mergedClosable) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n ...mergedStyles.header,\n ...headerStyle\n },\n className: clsx(`${prefixCls}-header`, mergedClassNames.header, {\n [`${prefixCls}-header-close-only`]: mergedClosable && !title && !extra\n })\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-header-title`\n }, closablePlacement === 'start' && mergedCloseIcon, title && (/*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${prefixCls}-title`, mergedClassNames.title),\n style: mergedStyles.title,\n id: ariaId\n }, title))), extra && (/*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${prefixCls}-extra`, mergedClassNames.extra),\n style: mergedStyles.extra\n }, extra)), closablePlacement === 'end' && mergedCloseIcon);\n };\n const renderFooter = () => {\n if (!footer) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${prefixCls}-footer`, mergedClassNames.footer),\n style: {\n ...mergedStyles.footer,\n ...footerStyle\n }\n }, footer);\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, renderHeader(), /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(`${prefixCls}-body`, mergedClassNames.body),\n style: {\n ...mergedStyles.body,\n ...bodyStyle\n }\n }, loading ? (/*#__PURE__*/React.createElement(Skeleton, {\n active: true,\n title: false,\n paragraph: {\n rows: 5\n },\n className: `${prefixCls}-body-skeleton`\n })) : children), renderFooter());\n};\nexport default DrawerPanel;","const getMoveTranslate = direction => {\n const value = '100%';\n return {\n left: `translateX(-${value})`,\n right: `translateX(${value})`,\n top: `translateY(-${value})`,\n bottom: `translateY(${value})`\n }[direction];\n};\nconst getEnterLeaveStyle = (startStyle, endStyle) => ({\n '&-enter, &-appear': {\n ...startStyle,\n '&-active': endStyle\n },\n '&-leave': {\n ...endStyle,\n '&-active': startStyle\n }\n});\nconst getFadeStyle = (from, duration) => ({\n '&-enter, &-appear, &-leave': {\n '&-start': {\n transition: 'none'\n },\n '&-active': {\n transition: `all ${duration}`\n }\n },\n ...getEnterLeaveStyle({\n opacity: from\n }, {\n opacity: 1\n })\n});\nconst getPanelMotionStyles = (direction, duration) => [getFadeStyle(0.7, duration), getEnterLeaveStyle({\n transform: getMoveTranslate(direction)\n}, {\n transform: 'none'\n})];\nconst genMotionStyle = token => {\n const {\n componentCls,\n motionDurationSlow\n } = token;\n return {\n [componentCls]: {\n // ======================== Mask ========================\n [`${componentCls}-mask-motion`]: getFadeStyle(0, motionDurationSlow),\n // ======================= Panel ========================\n [`${componentCls}-panel-motion`]: ['left', 'right', 'top', 'bottom'].reduce((obj, direction) => ({\n ...obj,\n [`&-${direction}`]: getPanelMotionStyles(direction, motionDurationSlow)\n }), {})\n }\n };\n};\nexport default genMotionStyle;","import { unit } from '@ant-design/cssinjs';\nimport { genFocusStyle } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport genMotionStyle from './motion';\n// =============================== Base ===============================\nconst genDrawerStyle = token => {\n const {\n borderRadiusSM,\n componentCls,\n zIndexPopup,\n colorBgMask,\n colorBgElevated,\n motionDurationSlow,\n motionDurationMid,\n paddingXS,\n padding,\n paddingLG,\n fontSizeLG,\n lineHeightLG,\n lineWidth,\n lineType,\n colorSplit,\n marginXS,\n colorIcon,\n colorIconHover,\n colorBgTextHover,\n colorBgTextActive,\n colorText,\n fontWeightStrong,\n footerPaddingBlock,\n footerPaddingInline,\n draggerSize,\n calc\n } = token;\n const wrapperCls = `${componentCls}-content-wrapper`;\n const draggerCls = `${componentCls}-resizable-dragger`;\n return {\n [componentCls]: {\n position: 'fixed',\n inset: 0,\n zIndex: zIndexPopup,\n pointerEvents: 'none',\n color: colorText,\n '&-pure': {\n position: 'relative',\n background: colorBgElevated,\n display: 'flex',\n flexDirection: 'column',\n [`&${componentCls}-left`]: {\n boxShadow: token.boxShadowDrawerLeft\n },\n [`&${componentCls}-right`]: {\n boxShadow: token.boxShadowDrawerRight\n },\n [`&${componentCls}-top`]: {\n boxShadow: token.boxShadowDrawerUp\n },\n [`&${componentCls}-bottom`]: {\n boxShadow: token.boxShadowDrawerDown\n }\n },\n '&-inline': {\n position: 'absolute'\n },\n // ====================== Mask ======================\n [`${componentCls}-mask`]: {\n position: 'absolute',\n inset: 0,\n zIndex: zIndexPopup,\n background: colorBgMask,\n pointerEvents: 'auto',\n [`&${componentCls}-mask-blur`]: {\n backdropFilter: 'blur(4px)'\n }\n },\n // ==================== Content =====================\n [wrapperCls]: {\n position: 'absolute',\n zIndex: zIndexPopup,\n maxWidth: '100vw',\n transition: `all ${motionDurationSlow}`,\n '&-hidden': {\n display: 'none'\n }\n },\n // Placement\n [`&-left > ${wrapperCls}`]: {\n top: 0,\n bottom: 0,\n left: {\n _skip_check_: true,\n value: 0\n },\n boxShadow: token.boxShadowDrawerLeft\n },\n [`&-right > ${wrapperCls}`]: {\n top: 0,\n right: {\n _skip_check_: true,\n value: 0\n },\n bottom: 0,\n boxShadow: token.boxShadowDrawerRight\n },\n [`&-top > ${wrapperCls}`]: {\n top: 0,\n insetInline: 0,\n boxShadow: token.boxShadowDrawerUp\n },\n [`&-bottom > ${wrapperCls}`]: {\n bottom: 0,\n insetInline: 0,\n boxShadow: token.boxShadowDrawerDown\n },\n [`${componentCls}-section`]: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n height: '100%',\n overflow: 'auto',\n background: colorBgElevated,\n pointerEvents: 'auto'\n },\n // Header\n [`${componentCls}-header`]: {\n display: 'flex',\n flex: 0,\n alignItems: 'center',\n padding: `${unit(padding)} ${unit(paddingLG)}`,\n fontSize: fontSizeLG,\n lineHeight: lineHeightLG,\n borderBottom: `${unit(lineWidth)} ${lineType} ${colorSplit}`,\n '&-title': {\n display: 'flex',\n flex: 1,\n alignItems: 'center',\n minWidth: 0,\n minHeight: 0\n }\n },\n [`${componentCls}-extra`]: {\n flex: 'none'\n },\n [`${componentCls}-close`]: {\n display: 'inline-flex',\n width: calc(fontSizeLG).add(paddingXS).equal(),\n height: calc(fontSizeLG).add(paddingXS).equal(),\n borderRadius: borderRadiusSM,\n justifyContent: 'center',\n alignItems: 'center',\n color: colorIcon,\n fontWeight: fontWeightStrong,\n fontSize: fontSizeLG,\n fontStyle: 'normal',\n lineHeight: 1,\n textAlign: 'center',\n textTransform: 'none',\n textDecoration: 'none',\n background: 'transparent',\n border: 0,\n cursor: 'pointer',\n transition: `all ${motionDurationMid}`,\n textRendering: 'auto',\n [`&${componentCls}-close-end`]: {\n marginInlineStart: marginXS\n },\n [`&:not(${componentCls}-close-end)`]: {\n marginInlineEnd: marginXS\n },\n '&:hover': {\n color: colorIconHover,\n backgroundColor: colorBgTextHover,\n textDecoration: 'none'\n },\n '&:active': {\n backgroundColor: colorBgTextActive\n },\n ...genFocusStyle(token)\n },\n [`${componentCls}-title`]: {\n flex: 1,\n margin: 0,\n fontWeight: token.fontWeightStrong,\n fontSize: fontSizeLG,\n lineHeight: lineHeightLG\n },\n // Body\n [`${componentCls}-body`]: {\n flex: 1,\n minWidth: 0,\n minHeight: 0,\n padding: paddingLG,\n overflow: 'auto',\n [`${componentCls}-body-skeleton`]: {\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center'\n }\n },\n // Footer\n [`${componentCls}-footer`]: {\n flexShrink: 0,\n padding: `${unit(footerPaddingBlock)} ${unit(footerPaddingInline)}`,\n borderTop: `${unit(lineWidth)} ${lineType} ${colorSplit}`\n },\n // ==================== Resizable ===================\n [draggerCls]: {\n position: 'absolute',\n zIndex: 1,\n backgroundColor: 'transparent',\n userSelect: 'none',\n pointerEvents: 'auto',\n '&:hover': {\n backgroundColor: token.colorPrimary,\n opacity: 0.2\n },\n '&-dragging': {\n backgroundColor: token.colorPrimary,\n opacity: 0.3\n }\n },\n [`${draggerCls}-left`]: {\n top: 0,\n bottom: 0,\n insetInlineEnd: 0,\n width: draggerSize,\n cursor: 'col-resize'\n },\n [`${draggerCls}-right`]: {\n top: 0,\n bottom: 0,\n insetInlineStart: 0,\n width: draggerSize,\n cursor: 'col-resize'\n },\n [`${draggerCls}-top`]: {\n insetInline: 0,\n bottom: 0,\n height: draggerSize,\n cursor: 'row-resize'\n },\n [`${draggerCls}-bottom`]: {\n insetInline: 0,\n top: 0,\n height: draggerSize,\n cursor: 'row-resize'\n },\n // Wrapper dragging state - disable transitions for smooth dragging\n [`${wrapperCls}-dragging`]: {\n userSelect: 'none',\n transition: 'none',\n willChange: 'width, height',\n [`${componentCls}-content`]: {\n pointerEvents: 'none'\n },\n [`${componentCls}-section`]: {\n pointerEvents: 'none'\n }\n },\n // ====================== RTL =======================\n '&-rtl': {\n direction: 'rtl'\n }\n }\n };\n};\nexport const prepareComponentToken = token => ({\n zIndexPopup: token.zIndexPopupBase,\n footerPaddingBlock: token.paddingXS,\n footerPaddingInline: token.padding,\n draggerSize: 4\n});\n// ============================== Export ==============================\nexport default genStyleHooks('Drawer', token => {\n const drawerToken = mergeToken(token, {});\n return [genDrawerStyle(drawerToken), genMotionStyle(drawerToken)];\n}, prepareComponentToken);","\"use client\";\n\nimport * as React from 'react';\nimport RcDrawer from '@rc-component/drawer';\nimport { composeRef } from \"@rc-component/util/es/ref\";\nimport useId from \"@rc-component/util/es/hooks/useId\";\nimport { clsx } from 'clsx';\nimport ContextIsolator from '../_util/ContextIsolator';\nimport { useMergedMask, useMergeSemantic, useZIndex } from '../_util/hooks';\nimport { getTransitionName } from '../_util/motion';\nimport { devUseWarning } from '../_util/warning';\nimport zIndexContext from '../_util/zindexContext';\nimport { ConfigContext } from '../config-provider';\nimport { useComponentConfig } from '../config-provider/context';\nimport { usePanelRef } from '../watermark/context';\nimport DrawerPanel from './DrawerPanel';\nimport useStyle from './style';\nconst _SizeTypes = ['default', 'large'];\nconst defaultPushState = {\n distance: 180\n};\nconst DEFAULT_SIZE = 378;\nconst Drawer = props => {\n const {\n rootClassName,\n size,\n defaultSize = DEFAULT_SIZE,\n height,\n width,\n mask: drawerMask,\n push = defaultPushState,\n open,\n afterOpenChange,\n onClose,\n prefixCls: customizePrefixCls,\n getContainer: customizeGetContainer,\n panelRef = null,\n style,\n className,\n resizable,\n 'aria-labelledby': ariaLabelledby,\n // Deprecated\n maskStyle,\n drawerStyle,\n contentWrapperStyle,\n destroyOnClose,\n destroyOnHidden,\n ...rest\n } = props;\n const {\n placement\n } = rest;\n const id = useId();\n const ariaId = rest.title ? id : undefined;\n const {\n getPopupContainer,\n getPrefixCls,\n direction,\n className: contextClassName,\n style: contextStyle,\n classNames: contextClassNames,\n styles: contextStyles,\n mask: contextMask\n } = useComponentConfig('drawer');\n const prefixCls = getPrefixCls('drawer', customizePrefixCls);\n const [hashId, cssVarCls] = useStyle(prefixCls);\n const getContainer =\n // 有可能为 false,所以不能直接判断\n customizeGetContainer === undefined && getPopupContainer ? () => getPopupContainer(document.body) : customizeGetContainer;\n // ========================== Warning ===========================\n if (process.env.NODE_ENV !== 'production') {\n const warning = devUseWarning('Drawer');\n [['headerStyle', 'styles.header'], ['bodyStyle', 'styles.body'], ['footerStyle', 'styles.footer'], ['contentWrapperStyle', 'styles.wrapper'], ['maskStyle', 'styles.mask'], ['drawerStyle', 'styles.section'], ['destroyInactivePanel', 'destroyOnHidden'], ['width', 'size'], ['height', 'size']].forEach(([deprecatedName, newName]) => {\n warning.deprecated(!(deprecatedName in props), deprecatedName, newName);\n });\n if (getContainer !== undefined && props.style?.position === 'absolute') {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'breaking', '`style` is replaced by `rootStyle` in v5. Please check that `position: absolute` is necessary.') : void 0;\n }\n }\n // ============================ Size ============================\n const drawerSize = React.useMemo(() => {\n if (typeof size === 'number') {\n return size;\n }\n if (size === 'large') {\n return 736;\n }\n if (size === 'default') {\n return DEFAULT_SIZE;\n }\n if (!placement || placement === 'left' || placement === 'right') {\n return width;\n }\n return height;\n }, [size, placement, width, height]);\n // =========================== Motion ===========================\n const maskMotion = {\n motionName: getTransitionName(prefixCls, 'mask-motion'),\n motionAppear: true,\n motionEnter: true,\n motionLeave: true,\n motionDeadline: 500\n };\n const panelMotion = motionPlacement => ({\n motionName: getTransitionName(prefixCls, `panel-motion-${motionPlacement}`),\n motionAppear: true,\n motionEnter: true,\n motionLeave: true,\n motionDeadline: 500\n });\n // ============================ Refs ============================\n // Select `ant-drawer-content` by `panelRef`\n const innerPanelRef = usePanelRef();\n const mergedPanelRef = composeRef(panelRef, innerPanelRef);\n // ============================ zIndex ============================\n const [zIndex, contextZIndex] = useZIndex('Drawer', rest.zIndex);\n // =========================== Render ===========================\n const {\n classNames,\n styles,\n rootStyle\n } = rest;\n const [mergedMask, maskBlurClassName] = useMergedMask(drawerMask, contextMask, prefixCls);\n const mergedProps = {\n ...props,\n zIndex,\n panelRef,\n mask: mergedMask,\n defaultSize,\n push\n };\n const [mergedClassNames, mergedStyles] = useMergeSemantic([contextClassNames, classNames], [contextStyles, styles], {\n props: mergedProps\n });\n const drawerClassName = clsx({\n 'no-mask': !mergedMask,\n [`${prefixCls}-rtl`]: direction === 'rtl'\n }, rootClassName, hashId, cssVarCls, mergedClassNames.root);\n return /*#__PURE__*/React.createElement(ContextIsolator, {\n form: true,\n space: true\n }, /*#__PURE__*/React.createElement(zIndexContext.Provider, {\n value: contextZIndex\n }, /*#__PURE__*/React.createElement(RcDrawer, {\n prefixCls: prefixCls,\n onClose: onClose,\n maskMotion: maskMotion,\n motion: panelMotion,\n ...rest,\n classNames: {\n mask: clsx(mergedClassNames.mask, maskBlurClassName.mask),\n section: mergedClassNames.section,\n wrapper: mergedClassNames.wrapper,\n dragger: mergedClassNames.dragger\n },\n styles: {\n mask: {\n ...mergedStyles.mask,\n ...maskStyle\n },\n section: {\n ...mergedStyles.section,\n ...drawerStyle\n },\n wrapper: {\n ...mergedStyles.wrapper,\n ...contentWrapperStyle\n },\n dragger: mergedStyles.dragger\n },\n open: open,\n mask: mergedMask,\n push: push,\n size: drawerSize,\n defaultSize: defaultSize,\n style: {\n ...contextStyle,\n ...style\n },\n rootStyle: {\n ...rootStyle,\n ...mergedStyles.root\n },\n className: clsx(contextClassName, className),\n rootClassName: drawerClassName,\n getContainer: getContainer,\n afterOpenChange: afterOpenChange,\n panelRef: mergedPanelRef,\n zIndex: zIndex,\n ...(resizable ? {\n resizable\n } : {}),\n \"aria-labelledby\": ariaLabelledby ?? ariaId,\n destroyOnHidden: destroyOnHidden ?? destroyOnClose\n }, /*#__PURE__*/React.createElement(DrawerPanel, {\n prefixCls: prefixCls,\n size: size,\n ...rest,\n ariaId: ariaId,\n onClose: onClose\n }))));\n};\n/** @private Internal Component. Do not use in your production. */\nconst PurePanel = props => {\n const {\n prefixCls: customizePrefixCls,\n style,\n className,\n placement = 'right',\n ...restProps\n } = props;\n const {\n getPrefixCls\n } = React.useContext(ConfigContext);\n const prefixCls = getPrefixCls('drawer', customizePrefixCls);\n const [hashId, cssVarCls] = useStyle(prefixCls);\n const cls = clsx(prefixCls, `${prefixCls}-pure`, `${prefixCls}-${placement}`, hashId, cssVarCls, className);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: cls,\n style: style\n }, /*#__PURE__*/React.createElement(DrawerPanel, {\n prefixCls: prefixCls,\n ...restProps\n }));\n};\nDrawer._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nif (process.env.NODE_ENV !== 'production') {\n Drawer.displayName = 'Drawer';\n}\nexport default Drawer;","import { request } from \"./request\";\n\nexport type SnapshotFormValues = {\n repoID: string;\n provider: string;\n sha: string;\n title?: string;\n description?: string;\n};\n\nexport type SnapshotRecord = {\n id: string;\n repoID: string;\n provider: string;\n sha: string;\n title?: string;\n description?: string;\n status?: string;\n createdAt?: string;\n};\n\n/**\n * 快照记录列表\n */\nexport function getSnapshotRecords(repoID: string, provider: string) {\n return request\n .get<{ data: SnapshotRecord[] }>(\"/api/snapshot/records\", {\n params: { repoID, provider },\n })\n .then((res) => res.data.data ?? []);\n}\n\n/**\n * 创建快照\n */\nexport function createSnapshot(data: SnapshotFormValues) {\n return request.post(\"/api/snapshot/create\", data);\n}\n\n/**\n * 获取单条快照(不含产物)\n */\nexport function getSnapshot(id: string) {\n return request.get(`/api/snapshot/${id}`).then((res) => res.data);\n}\n\n/**\n * 更新快照\n */\nexport function updateSnapshot(\n id: string,\n data: { title?: string; description?: string; status?: string },\n) {\n return request.patch(`/api/snapshot/${id}`, data);\n}\n\n/**\n * 删除快照\n */\nexport function deleteSnapshot(id: string) {\n return request.delete(`/api/snapshot/${id}`);\n}\n\n/**\n * 下载快照产物,返回 Blob\n */\nexport function downloadSnapshot(id: string): Promise<Blob> {\n return request\n .get(`/api/snapshot/${id}/download`, { responseType: \"blob\" })\n .then((res) => res.data as Blob);\n}\n","import { CameraOutlined, DeleteOutlined, DownloadOutlined, EditOutlined } from \"@ant-design/icons\";\nimport {\n Button,\n Drawer,\n Form,\n Input,\n message,\n Modal,\n Popconfirm,\n Space,\n Table,\n Typography,\n} from \"antd\";\nimport type { ColumnsType } from \"antd/es/table\";\nimport type { FC } from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport dayjs from \"dayjs\";\nimport * as snapshotService from \"@/services/snapshot\";\n\nexport type SnapshotFormValues = {\n repoID: string;\n provider: string;\n sha: string;\n title: string;\n description: string;\n};\n\nexport type SnapshotRecord = {\n id: string;\n repoID: string;\n provider: string;\n sha: string;\n title?: string;\n description?: string;\n status?: string;\n createdAt?: string;\n};\n\nexport type SnapshotDrawerProps = {\n open: boolean;\n onClose: () => void;\n mode: \"create\" | \"records\";\n initialValues?: Partial<SnapshotFormValues>;\n /** 创建成功后调用,不关闭抽屉并切换到快照记录视图;不传则保持原逻辑(关闭抽屉) */\n onCreateSuccess?: () => void;\n /** 在快照记录视图点击「生成快照」时调用,切换到创建表单 */\n onSwitchToCreate?: () => void;\n /** 标题上下文:org/repo,用于在标题上区分是哪个仓库 */\n titleContext?: { org: string; repo: string };\n};\n\nconst SnapshotDrawer: FC<SnapshotDrawerProps> = ({\n open,\n onClose,\n mode,\n initialValues,\n onCreateSuccess,\n onSwitchToCreate,\n titleContext,\n}) => {\n const { t } = useTranslation();\n const [form] = Form.useForm<SnapshotFormValues>();\n const [submitLoading, setSubmitLoading] = useState(false);\n const [recordsLoading, setRecordsLoading] = useState(false);\n const [records, setRecords] = useState<SnapshotRecord[]>([]);\n const [editModalOpen, setEditModalOpen] = useState(false);\n const [editingRecord, setEditingRecord] = useState<SnapshotRecord | null>(null);\n const [editForm] = Form.useForm<{ title: string; description: string }>();\n const [editSaving, setEditSaving] = useState(false);\n\n useEffect(() => {\n if (open && mode === \"create\" && initialValues) {\n form.setFieldsValue({\n repoID: initialValues.repoID ?? \"\",\n provider: initialValues.provider ?? \"\",\n sha: initialValues.sha ?? \"\",\n title: initialValues.title ?? \"\",\n description: initialValues.description ?? \"\",\n });\n }\n }, [open, mode, initialValues, form]);\n\n useEffect(() => {\n if (open && mode === \"records\" && initialValues?.repoID && initialValues?.provider) {\n fetchRecords();\n }\n }, [open, mode, initialValues?.repoID, initialValues?.provider]);\n\n const fetchRecords = async () => {\n if (!initialValues?.repoID || !initialValues?.provider) return;\n setRecordsLoading(true);\n try {\n const data = await snapshotService.getSnapshotRecords(\n initialValues.repoID,\n initialValues.provider,\n );\n setRecords(data ?? []);\n } catch {\n setRecords([]);\n } finally {\n setRecordsLoading(false);\n }\n };\n\n const handleDownload = async (id: string) => {\n try {\n const blob = await snapshotService.downloadSnapshot(id);\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `snapshot-${id}.zip`;\n a.click();\n URL.revokeObjectURL(url);\n message.success(t(\"projects.snapshot.download.success\"));\n } catch {\n message.error(t(\"projects.snapshot.download.failed\"));\n }\n };\n\n const handleDelete = async (id: string) => {\n try {\n await snapshotService.deleteSnapshot(id);\n message.success(t(\"projects.snapshot.delete.success\"));\n fetchRecords();\n } catch {\n message.error(t(\"projects.snapshot.delete.failed\"));\n }\n };\n\n const openEdit = (record: SnapshotRecord) => {\n setEditingRecord(record);\n editForm.setFieldsValue({\n title: record.title ?? \"\",\n description: record.description ?? \"\",\n });\n setEditModalOpen(true);\n };\n\n const handleEditOk = async () => {\n if (!editingRecord) return;\n const values = await editForm.validateFields().catch(() => null);\n if (values == null) return;\n setEditSaving(true);\n try {\n await snapshotService.updateSnapshot(editingRecord.id, {\n title: values.title,\n description: values.description,\n });\n message.success(t(\"projects.snapshot.update.success\"));\n setEditModalOpen(false);\n setEditingRecord(null);\n fetchRecords();\n } catch {\n message.error(t(\"projects.snapshot.update.failed\"));\n } finally {\n setEditSaving(false);\n }\n };\n\n const onFinish = async (values: SnapshotFormValues) => {\n setSubmitLoading(true);\n try {\n await snapshotService.createSnapshot({\n repoID: values.repoID,\n provider: values.provider,\n sha: values.sha,\n title: values.title,\n description: values.description,\n });\n message.success(t(\"projects.snapshot.create.success\"));\n form.resetFields();\n if (onCreateSuccess) {\n onCreateSuccess();\n } else {\n onClose();\n }\n } catch (err: unknown) {\n const msg =\n err && typeof err === \"object\" && \"response\" in err\n ? (err as { response?: { data?: { message?: string } } }).response?.data?.message\n : null;\n message.error(msg || t(\"projects.snapshot.create.failed\"));\n } finally {\n setSubmitLoading(false);\n }\n };\n\n const recordsColumns: ColumnsType<SnapshotRecord> = [\n {\n title: t(\"projects.snapshot.columns.id\"),\n dataIndex: \"id\",\n key: \"id\",\n width: 72,\n ellipsis: true,\n },\n {\n title: t(\"projects.snapshot.columns.sha\"),\n dataIndex: \"sha\",\n key: \"sha\",\n width: 120,\n ellipsis: true,\n render: (sha: string) =>\n sha ? (\n <Typography.Text copyable={{ text: sha }} title={sha}>\n {sha.length > 12 ? `${sha.substring(0, 7)}…${sha.slice(-4)}` : sha}\n </Typography.Text>\n ) : (\n \"-\"\n ),\n },\n {\n title: t(\"projects.snapshot.columns.title\"),\n dataIndex: \"title\",\n key: \"title\",\n ellipsis: true,\n },\n {\n title: t(\"projects.snapshot.columns.description\"),\n dataIndex: \"description\",\n key: \"description\",\n ellipsis: true,\n },\n {\n title: t(\"projects.snapshot.columns.status\"),\n dataIndex: \"status\",\n key: \"status\",\n width: 90,\n },\n {\n title: t(\"common.created_at\"),\n dataIndex: \"createdAt\",\n key: \"createdAt\",\n width: 160,\n render: (text: string) => (text ? dayjs(text).format(\"YYYY-MM-DD HH:mm\") : \"-\"),\n },\n {\n title: t(\"common.option\"),\n key: \"action\",\n render: (_: unknown, record: SnapshotRecord) => (\n <Space size=\"small\">\n <Button\n type=\"link\"\n size=\"small\"\n icon={<DownloadOutlined />}\n onClick={() => handleDownload(record.id)}\n >\n {t(\"projects.snapshot.download.button\")}\n </Button>\n <Button type=\"link\" size=\"small\" icon={<EditOutlined />} onClick={() => openEdit(record)}>\n {t(\"common.edit\")}\n </Button>\n <Popconfirm\n title={t(\"projects.snapshot.delete.confirm\")}\n onConfirm={() => handleDelete(record.id)}\n >\n <Button type=\"link\" size=\"small\" danger icon={<DeleteOutlined />}>\n {t(\"common.delete\")}\n </Button>\n </Popconfirm>\n </Space>\n ),\n },\n ];\n\n const baseTitle =\n mode === \"create\"\n ? t(\"projects.snapshot.drawer.create\")\n : t(\"projects.snapshot.drawer.records\");\n const contextStr = titleContext ? ` — ${titleContext.org}/${titleContext.repo}` : \"\";\n const commitStr =\n mode === \"create\" && initialValues?.sha\n ? ` · ${String(initialValues.sha).substring(0, 7)}`\n : \"\";\n const title = `${baseTitle}${contextStr}${commitStr}`;\n\n return (\n <Drawer\n title={title}\n placement=\"right\"\n width={\"65%\"}\n onClose={onClose}\n open={open}\n destroyOnClose\n >\n {mode === \"create\" ? (\n <Form form={form} layout=\"vertical\" onFinish={onFinish}>\n <Form.Item\n name=\"repoID\"\n label={t(\"projects.snapshot.form.repoID\")}\n rules={[{ required: true, message: t(\"projects.snapshot.form.repoID.required\") }]}\n >\n <Input placeholder={t(\"projects.snapshot.form.repoID.placeholder\")} />\n </Form.Item>\n <Form.Item\n name=\"provider\"\n label={t(\"projects.snapshot.form.provider\")}\n rules={[{ required: true, message: t(\"projects.snapshot.form.provider.required\") }]}\n >\n <Input placeholder={t(\"projects.snapshot.form.provider.placeholder\")} />\n </Form.Item>\n <Form.Item\n name=\"sha\"\n label={t(\"projects.snapshot.form.sha\")}\n rules={[{ required: true, message: t(\"projects.snapshot.form.sha.required\") }]}\n >\n <Input placeholder={t(\"projects.snapshot.form.sha.placeholder\")} />\n </Form.Item>\n <Form.Item name=\"title\" label={t(\"projects.snapshot.form.title\")}>\n <Input placeholder={t(\"projects.snapshot.form.title.placeholder\")} />\n </Form.Item>\n <Form.Item name=\"description\" label={t(\"projects.snapshot.form.description\")}>\n <Input.TextArea\n rows={3}\n placeholder={t(\"projects.snapshot.form.description.placeholder\")}\n />\n </Form.Item>\n <Form.Item>\n <Space>\n <Button\n type=\"primary\"\n htmlType=\"submit\"\n loading={submitLoading}\n icon={<CameraOutlined />}\n >\n {t(\"projects.snapshot.create.submit\")}\n </Button>\n <Button onClick={onClose}>{t(\"common.cancel\")}</Button>\n </Space>\n </Form.Item>\n </Form>\n ) : (\n <>\n {onSwitchToCreate && (\n <div className=\"mb-3\">\n <Button type=\"primary\" icon={<CameraOutlined />} onClick={onSwitchToCreate}>\n {t(\"projects.snapshot.button.create\")}\n </Button>\n </div>\n )}\n <Table<SnapshotRecord>\n size=\"small\"\n columns={recordsColumns}\n dataSource={records}\n rowKey=\"id\"\n loading={recordsLoading}\n scroll={{ x: 800 }}\n pagination={{\n pageSize: 10,\n showSizeChanger: false,\n showTotal: (total) => t(\"common.total_items\", { total }),\n }}\n />\n <Modal\n title={t(\"projects.snapshot.edit.title\")}\n open={editModalOpen}\n onOk={handleEditOk}\n onCancel={() => {\n setEditModalOpen(false);\n setEditingRecord(null);\n }}\n confirmLoading={editSaving}\n destroyOnClose\n >\n <Form form={editForm} layout=\"vertical\">\n <Form.Item name=\"title\" label={t(\"projects.snapshot.form.title\")}>\n <Input placeholder={t(\"projects.snapshot.form.title.placeholder\")} />\n </Form.Item>\n <Form.Item name=\"description\" label={t(\"projects.snapshot.form.description\")}>\n <Input.TextArea\n rows={3}\n placeholder={t(\"projects.snapshot.form.description.placeholder\")}\n />\n </Form.Item>\n </Form>\n </Modal>\n </>\n )}\n </Drawer>\n );\n};\n\nexport default SnapshotDrawer;\n","import { request } from \"./request\";\n\nexport type CommitsQuery = {\n repoID: string;\n pathWithNamespace?: string;\n provider?: string;\n page?: number;\n pageSize?: number;\n};\n\n/**\n * 获取提交列表(覆盖率 commits)\n */\nexport function getCommits(params: CommitsQuery) {\n return request\n .get<{ data: unknown[] }>(\"/api/coverage/commits\", { params })\n .then((res) => res.data?.data ?? []);\n}\n","import {\n BranchesOutlined,\n CopyOutlined,\n DownOutlined,\n SearchOutlined,\n UserOutlined,\n} from \"@ant-design/icons\";\nimport type { MenuProps } from \"antd\";\nimport { Avatar, Dropdown, Input, message, Space, Table, Tag, Tooltip, Typography } from \"antd\";\nimport type { ColumnsType } from \"antd/es/table\";\nimport dayjs from \"dayjs\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useOutletContext, useParams } from \"react-router-dom\";\nimport CardPrimary from \"@/components/card/Primary\";\nimport SnapshotDrawer from \"@/components/snapshot/SnapshotDrawer\";\nimport type { SnapshotFormValues } from \"@/services/snapshot\";\nimport { getCommits } from \"@/services/coverage\";\n\nconst { Text } = Typography;\n\ntype Repo = {\n id: string;\n pathWithNamespace: string;\n description: string;\n bu: string;\n tags: string;\n members: string;\n config: string;\n createdAt: string;\n updatedAt: string;\n};\n\ntype SceneInfo = {\n scene: Record<string, unknown>;\n sceneKey: string;\n};\n\ntype BuildTargetSceneInfo = {\n buildTarget: string;\n scenes: SceneInfo[];\n};\n\ntype CommitRecord = {\n sha: string;\n commitUrl?: string | null;\n branch: string;\n compareTarget: string;\n commitMessage: string;\n statements: number;\n newLines: number;\n times: number;\n latestReport: string;\n buildTarget: string;\n buildTargets: string[];\n buildTargetScenes?: BuildTargetSceneInfo[];\n versionID: string;\n coverageID: string;\n reportID: string;\n reportProvider: string;\n scenes?: SceneInfo[];\n authorName?: string | null;\n authorEmail?: string | null;\n createdAt?: string;\n avatar?: string | null;\n};\n\n// 展平后的行类型:每个 buildTarget 一行\ntype FlatCommitRow = CommitRecord & {\n currentBuildTarget: string;\n currentScenes: SceneInfo[]; // 该 buildTarget 的所有 scene\n rowKey: string; // 用于唯一标识每一行\n};\n\nconst CommitsPage = () => {\n const { t } = useTranslation();\n const { repo } = useOutletContext<{\n repo: Repo | null;\n }>();\n const params = useParams();\n const [loading, setLoading] = useState(false);\n const [commits, setCommits] = useState<CommitRecord[]>([]);\n const [page, setPage] = useState(1);\n const [pageSize, setPageSize] = useState(10);\n const [searchKeyword, setSearchKeyword] = useState(\"\");\n const [snapshotDrawerOpen, setSnapshotDrawerOpen] = useState(false);\n const [snapshotDrawerMode, setSnapshotDrawerMode] = useState<\"create\" | \"records\">(\"create\");\n const [snapshotInitialValues, setSnapshotInitialValues] = useState<Partial<SnapshotFormValues>>(\n {},\n );\n\n const fetchCommits = async () => {\n if (!repo?.id) {\n return;\n }\n\n setLoading(true);\n try {\n const data = await getCommits({\n repoID: repo.id,\n pathWithNamespace: repo.pathWithNamespace,\n provider: params.provider,\n page: 1,\n pageSize: 10000,\n });\n setCommits(Array.isArray(data) ? data : []);\n } catch (error) {\n message.error(t(\"projects.commits.fetch.failed\"));\n console.error(error);\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n fetchCommits();\n }, [repo?.id]);\n\n // 展平数据:每个 buildTarget 一行(按 sha + buildTarget 分组)\n const allFlatData = useMemo(() => {\n const result: FlatCommitRow[] = [];\n for (const commit of commits) {\n // 如果有 buildTargetScenes,使用它;否则回退到旧的逻辑\n if (commit.buildTargetScenes && commit.buildTargetScenes.length > 0) {\n for (const buildTargetScene of commit.buildTargetScenes) {\n const buildTarget = buildTargetScene.buildTarget || \"\";\n const scenes = buildTargetScene.scenes || [];\n\n // 每个 buildTarget 创建一行\n result.push({\n ...commit,\n currentBuildTarget: buildTarget,\n currentScenes: scenes,\n rowKey: `${commit.sha}_${buildTarget}`,\n });\n }\n } else {\n // 回退逻辑:如果没有 buildTargetScenes,使用 buildTargets 和 scenes\n const buildTargets = commit.buildTargets || [];\n const scenes = commit.scenes || [];\n\n if (buildTargets.length === 0) {\n // 如果没有 buildTargets,至少创建一行\n result.push({\n ...commit,\n currentBuildTarget: commit.buildTarget || \"\",\n currentScenes: scenes,\n rowKey: `${commit.sha}_empty`,\n });\n } else {\n // 为每个 buildTarget 创建一行,所有 scene 都关联到该 buildTarget\n for (const buildTarget of buildTargets) {\n result.push({\n ...commit,\n currentBuildTarget: buildTarget,\n currentScenes: scenes,\n rowKey: `${commit.sha}_${buildTarget}`,\n });\n }\n }\n }\n }\n return result;\n }, [commits]);\n\n // 前端搜索:按 commit SHA 过滤\n const flatData = useMemo(() => {\n const kw = searchKeyword.trim().toLowerCase();\n if (!kw) return allFlatData;\n return allFlatData.filter((row) => row.sha.toLowerCase().includes(kw));\n }, [allFlatData, searchKeyword]);\n\n // 前端分页\n const paginatedData = useMemo(() => {\n const start = (page - 1) * pageSize;\n return flatData.slice(start, start + pageSize);\n }, [flatData, page, pageSize]);\n\n const columns: ColumnsType<FlatCommitRow> = [\n {\n title: (\n <Space>\n <BranchesOutlined />\n {t(\"projects.commits.columns.sha\")}\n </Space>\n ),\n dataIndex: \"sha\",\n key: \"sha\",\n width: 120,\n render: (_: string, record: FlatCommitRow) => (\n <Space size={4}>\n {record.commitUrl ? (\n <a\n href={record.commitUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"font-mono tabular-nums\"\n style={{ width: \"7ch\", display: \"inline-block\", textAlign: \"right\" }}\n >\n {record.sha.substring(0, 7)}\n </a>\n ) : (\n <Link\n to={`/${params.provider}/${params.org}/${params.repo}/commit/${record.sha}`}\n className=\"font-mono tabular-nums\"\n style={{ width: \"7ch\", display: \"inline-block\", textAlign: \"right\" }}\n >\n {record.sha.substring(0, 7)}\n </Link>\n )}\n <Tooltip title={t(\"common.copy\")}>\n <CopyOutlined\n className=\"cursor-pointer text-gray-400 hover:text-gray-600\"\n onClick={async (e) => {\n e.preventDefault();\n e.stopPropagation();\n try {\n await navigator.clipboard.writeText(record.sha);\n message.success(t(\"common.copy_success\"));\n } catch {\n message.error(t(\"common.copy_failed\"));\n }\n }}\n />\n </Tooltip>\n </Space>\n ),\n },\n {\n title: t(\"projects.message\"),\n key: \"commitInfo\",\n ellipsis: true,\n render: (_: any, record: FlatCommitRow) => {\n const hasMessage = record.commitMessage;\n const hasAuthor = record.authorName || record.authorEmail;\n const hasTime = record.createdAt;\n\n if (!hasMessage && !hasAuthor && !hasTime) {\n return \"-\";\n }\n\n return (\n <Space direction=\"vertical\" size={2} style={{ width: \"100%\" }}>\n {hasMessage && (\n <Text ellipsis={{ tooltip: record.commitMessage }}>{record.commitMessage}</Text>\n )}\n {hasAuthor && (\n <Space size={4}>\n {record.avatar ? (\n <Avatar src={record.avatar} size={20} />\n ) : (\n <Avatar size={20} icon={<UserOutlined />} />\n )}\n <Text type=\"secondary\" style={{ fontSize: \"12px\" }}>\n {record.authorName || record.authorEmail || \"-\"}\n {record.authorEmail && record.authorName && <> ({record.authorEmail})</>}\n </Text>\n </Space>\n )}\n {hasTime && (\n <Text type=\"secondary\" style={{ fontSize: \"12px\" }}>\n {dayjs(record.createdAt).format(\"YYYY-MM-DD HH:mm:ss\")}\n </Text>\n )}\n </Space>\n );\n },\n },\n {\n title: t(\"projects.commits.columns.buildTarget\"),\n dataIndex: \"currentBuildTarget\",\n key: \"currentBuildTarget\",\n render: (text: string) => {\n return text ? <Tag>{text}</Tag> : \"-\";\n },\n },\n {\n title: t(\"projects.report_times\"),\n dataIndex: \"times\",\n key: \"times\",\n width: 80,\n align: \"right\",\n },\n {\n title: t(\"projects.latest_report_time\"),\n dataIndex: \"latestReport\",\n key: \"latestReport\",\n width: 120,\n render: (text: string) => (text ? dayjs(text).format(\"MM-DD HH:mm\") : \"-\"),\n },\n {\n title: t(\"common.option\"),\n key: \"option\",\n width: 280,\n render: (_: any, record: FlatCommitRow) => {\n const detailPath = `/report/-/${params.provider}/${params.org}/${params.repo}/commit/${record.sha}/-/?build_target=${record.currentBuildTarget}`;\n\n // 构建报告路径的辅助函数\n const buildReportPath = (scene: Record<string, unknown>) => {\n const searchParams = new URLSearchParams();\n if (record.currentBuildTarget) {\n searchParams.set(\"build_target\", record.currentBuildTarget);\n }\n if (record.reportID) {\n searchParams.set(\"report_id\", record.reportID);\n }\n if (record.reportProvider) {\n searchParams.set(\"report_provider\", record.reportProvider);\n }\n if (scene && Object.keys(scene).length > 0) {\n searchParams.set(\"scene\", JSON.stringify(scene));\n }\n const queryString = searchParams.toString();\n return `/report/-/${params.provider}/${params.org}/${params.repo}/commit/${record.sha}/-/${queryString ? `?${queryString}` : \"\"}`;\n };\n\n // 处理场景显示\n const scenes = record.currentScenes || [];\n let sceneDropdown = null;\n\n if (scenes.length > 0) {\n // 收集所有场景中的所有 key-value 对,去重\n const kvPairs = new Map<string, { key: string; value: unknown }>();\n scenes.forEach((sceneInfo) => {\n const scene = sceneInfo.scene || {};\n Object.entries(scene).forEach(([key, value]) => {\n const kvKey = `${key}=${value}`;\n if (!kvPairs.has(kvKey)) {\n kvPairs.set(kvKey, { key, value });\n }\n });\n });\n\n const kvPairsArray = Array.from(kvPairs.values());\n\n if (kvPairsArray.length > 0) {\n if (kvPairsArray.length === 1) {\n // 如果只有一个 key-value 对,直接显示链接\n const { key, value } = kvPairsArray[0];\n const sceneObj = { [key]: value };\n const reportPath = buildReportPath(sceneObj);\n sceneDropdown = (\n <a href={reportPath} target=\"_blank\" rel=\"noreferrer\">\n {key}={String(value)}\n </a>\n );\n } else {\n // 如果有多个 key-value 对,使用下拉菜单\n const menuItems: MenuProps[\"items\"] = kvPairsArray.map(({ key, value }, index) => {\n const sceneObj = { [key]: value };\n const reportPath = buildReportPath(sceneObj);\n\n return {\n key: index,\n label: (\n <a href={reportPath} target=\"_blank\" rel=\"noreferrer\">\n {key}={String(value)}\n </a>\n ),\n };\n });\n\n sceneDropdown = (\n <Dropdown menu={{ items: menuItems }} placement=\"bottomLeft\">\n <a onClick={(e) => e.preventDefault()}>\n {t(\"projects.commits.columns.scene\")} <DownOutlined />\n </a>\n </Dropdown>\n );\n }\n }\n }\n\n return (\n <Space wrap>\n <Link to={detailPath} target={\"_blank\"}>\n {t(\"projects.commits.columns.overall\")}\n </Link>\n {sceneDropdown}\n {/* <a onClick={() => openSnapshotCreate(record)}>{t(\"projects.snapshot.button.create\")}</a>\n <a onClick={openSnapshotRecords}>{t(\"projects.snapshot.button.records\")}</a> */}\n </Space>\n );\n },\n },\n ];\n\n const openSnapshotCreate = (record: FlatCommitRow) => {\n setSnapshotInitialValues({\n repoID: repo?.id ?? \"\",\n provider: params.provider ?? \"\",\n sha: record.sha ?? \"\",\n title: record.commitMessage ?? \"\",\n description: \"\",\n });\n setSnapshotDrawerMode(\"create\");\n setSnapshotDrawerOpen(true);\n };\n\n const openSnapshotRecords = () => {\n setSnapshotInitialValues({\n repoID: repo?.id ?? \"\",\n provider: params.provider ?? \"\",\n });\n setSnapshotDrawerMode(\"records\");\n setSnapshotDrawerOpen(true);\n };\n\n if (!repo) {\n return <div>{t(\"projects.commits.loading\")}</div>;\n }\n\n return (\n <div className={\"\"}>\n <div className={\"mb-4 flex items-center gap-3\"}>\n <Input\n style={{ width: \"400px\" }}\n placeholder={t(\"projects.commits.search.placeholder\")}\n prefix={<SearchOutlined />}\n value={searchKeyword}\n onChange={(e) => {\n setSearchKeyword(e.target.value);\n setPage(1);\n }}\n allowClear\n onClear={() => {\n setSearchKeyword(\"\");\n setPage(1);\n }}\n />\n </div>\n <SnapshotDrawer\n open={snapshotDrawerOpen}\n onClose={() => setSnapshotDrawerOpen(false)}\n mode={snapshotDrawerMode}\n initialValues={snapshotInitialValues}\n titleContext={\n params.org && params.repo ? { org: params.org, repo: params.repo } : undefined\n }\n onCreateSuccess={() => setSnapshotDrawerMode(\"records\")}\n onSwitchToCreate={() => {\n setSnapshotDrawerMode(\"create\");\n setSnapshotInitialValues({\n repoID: repo?.id ?? \"\",\n provider: params.provider ?? \"\",\n sha: \"\",\n title: \"\",\n description: \"\",\n });\n }}\n />\n <CardPrimary>\n <Table<FlatCommitRow>\n columns={columns}\n dataSource={paginatedData}\n loading={loading}\n rowKey=\"rowKey\"\n pagination={{\n current: page,\n pageSize: pageSize,\n total: flatData.length,\n showTotal: (total, range) =>\n `${range[0]}-${range[1]} / ${total} ${t(\"common.total_items\", { total })}`,\n onChange: (newPage, newPageSize) => {\n setPage(newPage);\n if (newPageSize !== pageSize) {\n setPageSize(newPageSize);\n }\n },\n }}\n />\n </CardPrimary>\n </div>\n );\n};\n\nexport default CommitsPage;\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],"mappings":"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"}
|