From 8866db8058621453d3eb6e679a780eb94672e845 Mon Sep 17 00:00:00 2001 From: jiangzhixiong <710328466@qq.com> Date: Tue, 16 Apr 2024 17:37:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(meta,material):=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=89=A9=E6=96=99=E5=BA=93=E7=AE=97=E6=B3=95=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=AE=AD=E5=A4=B4=E9=80=89=E6=8B=A9,?= =?UTF-8?q?=E5=85=83=E7=BB=84=E4=BB=B6=E6=96=B0=E5=A2=9E=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E6=A0=87=E8=AE=B0=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/biz/CHANGELOG.md | 21 + .../biz/es/BigImageModal/BigImageModal.d.ts | 40 - .../components/CombineImage/index.d.ts | 11 - .../components/CombineImage/index.js | 58 - .../components/navigation/index.d.ts | 13 - .../components/navigation/index.js | 26 - .../components/navigation/index.less | 44 - packages/biz/es/BigImageModal/index.d.ts | 3 - packages/biz/es/BigImageModal/index.js | 2 - packages/biz/es/BigImageModal/index.less | 514 ----- packages/biz/es/BigImageModal/mock.d.ts | 245 --- packages/biz/es/BigImageModal/mock.js | 473 ----- .../util/bigImageModalAdapter.d.ts | 118 -- .../util/bigImageModalAdapter.js | 50 - packages/biz/es/Demo/index.d.ts | 3 - packages/biz/es/Demo/index.js | 14 - .../es/RealTimeMonitor/RealTimeMonitor.d.ts | 21 - .../biz/es/RealTimeMonitor/RealTimeMonitor.js | 35 - .../WarningRecordList/WarningRecordList.d.ts | 18 - .../WarningRecordList/WarningRecordList.js | 81 - .../components/WarningRecordList/index.d.ts | 2 - .../components/WarningRecordList/index.js | 2 - .../components/WarningRecordList/index.less | 20 - .../components/WindowToggle/WindowToggle.d.ts | 11 - .../components/WindowToggle/WindowToggle.js | 81 - .../components/WindowToggle/index.d.ts | 2 - .../components/WindowToggle/index.js | 2 - .../components/WindowToggle/index.less | 45 - packages/biz/es/RealTimeMonitor/index.d.ts | 2 - packages/biz/es/RealTimeMonitor/index.js | 2 - .../es/VideoPlayerCard/VideoPlayerCard.d.ts | 19 - .../biz/es/VideoPlayerCard/VideoPlayerCard.js | 140 -- packages/biz/es/VideoPlayerCard/index.d.ts | 3 - packages/biz/es/VideoPlayerCard/index.js | 2 - packages/biz/es/VideoPlayerCard/index.less | 30 - .../ViewLargerImageModal.d.ts | 25 - .../ViewLargerImageModal.js | 106 -- .../biz/es/ViewLargerImageModal/index.d.ts | 4 - packages/biz/es/ViewLargerImageModal/index.js | 3 - .../biz/es/ViewLargerImageModal/index.less | 62 - .../WarningRecordCard/WarningRecordCard.d.ts | 30 - .../es/WarningRecordCard/WarningRecordCard.js | 89 - packages/biz/es/WarningRecordCard/index.d.ts | 3 - packages/biz/es/WarningRecordCard/index.js | 2 - packages/biz/es/WarningRecordCard/index.less | 27 - .../biz/es/boxSelectTree/boxSelectTree.d.ts | 9 - .../biz/es/boxSelectTree/boxSelectTree.js | 92 - .../components/boxPanel/index.js | 290 --- packages/biz/es/boxSelectTree/index.d.ts | 3 - packages/biz/es/boxSelectTree/index.js | 2 - packages/biz/es/boxSelectTree/mock.d.ts | 2 - packages/biz/es/boxSelectTree/mock.js | 22 - .../hooks/useIntelligentTracking/index.d.ts | 45 - .../es/hooks/useIntelligentTracking/index.js | 618 ------ packages/biz/es/index.d.ts | 17 - packages/biz/es/index.js | 9 - packages/biz/es/tree/boxTree.d.ts | 17 - packages/biz/es/tree/boxTree.js | 134 -- packages/biz/es/tree/index.d.ts | 13 - packages/biz/es/tree/index.js | 2 - packages/biz/es/tree/index.less | 9 - .../biz/es/treeTransfer/TreeTransfer.d.ts | 22 - packages/biz/es/treeTransfer/TreeTransfer.js | 143 -- packages/biz/es/treeTransfer/index.d.ts | 4 - packages/biz/es/treeTransfer/index.js | 3 - packages/biz/es/treeTransfer/index.less | 43 - .../es/treeTransfer/treeTransferHelper.d.ts | 12 - .../biz/es/treeTransfer/treeTransferHelper.js | 57 - .../treeTransferModal/TreeTransferModal.d.ts | 26 - .../es/treeTransferModal/TreeTransferModal.js | 80 - packages/biz/es/treeTransferModal/index.d.ts | 3 - packages/biz/es/treeTransferModal/index.js | 2 - packages/biz/es/utils/constants.js | 43 - packages/biz/es/utils/index.d.ts | 0 packages/biz/es/utils/index.js | 0 .../biz/lib/BigImageModal/BigImageModal.d.ts | 40 - .../biz/lib/BigImageModal/BigImageModal.js | 250 --- .../components/CombineImage/index.d.ts | 11 - .../components/CombineImage/index.js | 71 - .../components/navigation/index.d.ts | 13 - .../components/navigation/index.js | 57 - .../components/navigation/index.less | 44 - .../lib/BigImageModal/images/emptyImage.png | Bin 5786 -> 0 bytes .../images/percent_background.png | Bin 514 -> 0 bytes packages/biz/lib/BigImageModal/index.d.ts | 3 - packages/biz/lib/BigImageModal/index.js | 36 - packages/biz/lib/BigImageModal/index.less | 514 ----- packages/biz/lib/BigImageModal/mock.d.ts | 245 --- packages/biz/lib/BigImageModal/mock.js | 567 ------ .../util/bigImageModalAdapter.d.ts | 118 -- .../util/bigImageModalAdapter.js | 57 - packages/biz/lib/Demo/index.d.ts | 3 - packages/biz/lib/Demo/index.js | 41 - .../lib/RealTimeMonitor/RealTimeMonitor.d.ts | 21 - .../lib/RealTimeMonitor/RealTimeMonitor.js | 77 - .../WarningRecordList/WarningRecordList.d.ts | 18 - .../WarningRecordList/WarningRecordList.js | 74 - .../components/WarningRecordList/index.d.ts | 2 - .../components/WarningRecordList/index.js | 36 - .../components/WarningRecordList/index.less | 20 - .../components/WindowToggle/WindowToggle.d.ts | 11 - .../components/WindowToggle/WindowToggle.js | 88 - .../components/WindowToggle/index.d.ts | 2 - .../components/WindowToggle/index.js | 36 - .../components/WindowToggle/index.less | 45 - packages/biz/lib/RealTimeMonitor/index.d.ts | 2 - packages/biz/lib/RealTimeMonitor/index.js | 36 - .../lib/VideoPlayerCard/VideoPlayerCard.d.ts | 19 - .../lib/VideoPlayerCard/VideoPlayerCard.js | 99 - packages/biz/lib/VideoPlayerCard/index.d.ts | 3 - packages/biz/lib/VideoPlayerCard/index.js | 36 - packages/biz/lib/VideoPlayerCard/index.less | 30 - .../ViewLargerImageModal.d.ts | 25 - .../ViewLargerImageModal.js | 87 - .../biz/lib/ViewLargerImageModal/index.d.ts | 4 - .../biz/lib/ViewLargerImageModal/index.js | 41 - .../biz/lib/ViewLargerImageModal/index.less | 62 - .../WarningRecordCard/WarningRecordCard.d.ts | 30 - .../WarningRecordCard/WarningRecordCard.js | 74 - packages/biz/lib/WarningRecordCard/index.d.ts | 3 - packages/biz/lib/WarningRecordCard/index.js | 36 - packages/biz/lib/WarningRecordCard/index.less | 27 - .../biz/lib/boxSelectTree/boxSelectTree.d.ts | 9 - .../biz/lib/boxSelectTree/boxSelectTree.js | 124 -- .../components/boxPanel/index.js | 179 -- packages/biz/lib/boxSelectTree/index.d.ts | 3 - packages/biz/lib/boxSelectTree/index.js | 36 - packages/biz/lib/boxSelectTree/mock.d.ts | 2 - packages/biz/lib/boxSelectTree/mock.js | 60 - .../hooks/useIntelligentTracking/index.d.ts | 45 - .../lib/hooks/useIntelligentTracking/index.js | 371 ---- packages/biz/lib/index.d.ts | 17 - packages/biz/lib/index.js | 65 - packages/biz/lib/tree/boxTree.d.ts | 17 - packages/biz/lib/tree/boxTree.js | 134 -- packages/biz/lib/tree/index.d.ts | 13 - packages/biz/lib/tree/index.js | 36 - packages/biz/lib/tree/index.less | 9 - .../biz/lib/treeTransfer/TreeTransfer.d.ts | 22 - packages/biz/lib/treeTransfer/TreeTransfer.js | 137 -- packages/biz/lib/treeTransfer/index.d.ts | 4 - packages/biz/lib/treeTransfer/index.js | 42 - packages/biz/lib/treeTransfer/index.less | 43 - .../lib/treeTransfer/treeTransferHelper.d.ts | 12 - .../lib/treeTransfer/treeTransferHelper.js | 77 - .../treeTransferModal/TreeTransferModal.d.ts | 26 - .../treeTransferModal/TreeTransferModal.js | 114 -- packages/biz/lib/treeTransferModal/index.d.ts | 3 - packages/biz/lib/treeTransferModal/index.js | 36 - packages/biz/lib/utils/constants.js | 91 - packages/biz/lib/utils/index.d.ts | 0 packages/biz/lib/utils/index.js | 0 packages/biz/package.json | 7 +- .../components/navigation/index.tsx | 5 +- packages/func/CHANGELOG.md | 7 + packages/func/package.json | 2 +- packages/hooks/CHANGELOG.md | 6 + packages/hooks/package.json | 2 +- packages/material/CHANGELOG.md | 22 + .../es/algorithmConfig/algorithmConfig.d.ts | 53 - .../es/algorithmConfig/algorithmConfig.js | 54 +- packages/material/es/index.d.ts | 7 - .../lib/algorithmConfig/algorithmConfig.d.ts | 53 - .../lib/algorithmConfig/algorithmConfig.js | 34 +- packages/material/lib/index.d.ts | 7 - packages/material/package.json | 2 +- .../src/algorithmConfig/algorithmConfig.tsx | 55 +- .../src/algorithmConfig/demo/basic.tsx | 31 +- .../material/src/algorithmConfig/index.md | 6 + packages/meta/CHANGELOG.md | 24 + .../es/BigImagePreview/BigImagePreview.js | 6 +- .../components/BtnGroup/index.js | 2 +- packages/meta/es/CompareImage/CompareImage.js | 2 +- packages/meta/es/ImageEditor/cropper/event.js | 2 +- .../es/ImageEditor/cropper/viewerBridge.js | 11 +- packages/meta/es/ImageEditor/viewer/event.js | 2 +- packages/meta/es/ImageEditor/viewer/helper.js | 73 +- packages/meta/es/VideoPlayer/VideoPlayer.js | 6 +- .../VideoPlayer/components/Loading/index.js | 2 +- packages/meta/es/iconfont/iconfont.css | 1679 ----------------- packages/meta/es/iconfont/iconfont.js | 43 - packages/meta/es/iconfont/iconfont.ttf | Bin 105116 -> 0 bytes packages/meta/es/iconfont/iconfont.woff | Bin 58376 -> 0 bytes packages/meta/es/iconfont/iconfont.woff2 | Bin 48900 -> 0 bytes packages/meta/es/iconfont/index.js | 42 - packages/meta/es/index.js | 2 +- packages/meta/package.json | 4 +- .../src/BigImagePreview/BigImagePreview.tsx | 7 +- .../components/BtnGroup/index.tsx | 2 +- .../meta/src/CompareImage/CompareImage.tsx | 5 +- packages/meta/src/CompareImage/demo/basic.tsx | 2 +- .../meta/src/ImageEditor/cropper/event.ts | 2 +- .../src/ImageEditor/cropper/viewerBridge.ts | 7 +- packages/meta/src/ImageEditor/viewer/event.ts | 2 +- .../meta/src/ImageEditor/viewer/helper.ts | 19 +- packages/meta/src/ImageEditor/viewer/index.ts | 2 +- packages/meta/src/ImageEditor/viewer/shape.ts | 6 +- packages/meta/src/VideoPlayer/VideoPlayer.tsx | 6 +- .../VideoPlayer/components/Loading/index.tsx | 2 +- packages/meta/src/VideoPlayer/demo/basic.tsx | 2 +- .../meta/src/cropperImage/CropperImage.tsx | 335 ++++ .../src/cropperImage/cropperImagehelper.ts | 101 + packages/meta/src/cropperImage/demo/basic.tsx | 61 + .../meta/src/cropperImage/demo/withOD.tsx | 38 + .../src/cropperImage}/images/emptyImage.png | Bin .../images/percent_background.png | Bin packages/meta/src/cropperImage/index.less | 34 + packages/meta/src/cropperImage/index.md | 51 + packages/meta/src/cropperImage/index.tsx | 5 + packages/meta/src/iconfont/iconfont.css | 1679 ----------------- packages/meta/src/iconfont/iconfont.js | 1 - packages/meta/src/iconfont/iconfont.ttf | Bin 105116 -> 0 bytes packages/meta/src/iconfont/iconfont.woff | Bin 58376 -> 0 bytes packages/meta/src/iconfont/iconfont.woff2 | Bin 48900 -> 0 bytes packages/meta/src/iconfont/index.tsx | 49 - packages/meta/src/index.tsx | 3 +- packages/meta/src/utils/constants.ts | 2 - packages/request/CHANGELOG.md | 7 + packages/request/package.json | 2 +- packages/slave/CHANGELOG.md | 6 + packages/slave/package.json | 2 +- 221 files changed, 907 insertions(+), 12853 deletions(-) delete mode 100644 packages/biz/es/BigImageModal/BigImageModal.d.ts delete mode 100644 packages/biz/es/BigImageModal/components/CombineImage/index.d.ts delete mode 100644 packages/biz/es/BigImageModal/components/CombineImage/index.js delete mode 100644 packages/biz/es/BigImageModal/components/navigation/index.d.ts delete mode 100644 packages/biz/es/BigImageModal/components/navigation/index.js delete mode 100644 packages/biz/es/BigImageModal/components/navigation/index.less delete mode 100644 packages/biz/es/BigImageModal/index.d.ts delete mode 100644 packages/biz/es/BigImageModal/index.js delete mode 100644 packages/biz/es/BigImageModal/index.less delete mode 100644 packages/biz/es/BigImageModal/mock.d.ts delete mode 100644 packages/biz/es/BigImageModal/mock.js delete mode 100644 packages/biz/es/BigImageModal/util/bigImageModalAdapter.d.ts delete mode 100644 packages/biz/es/BigImageModal/util/bigImageModalAdapter.js delete mode 100644 packages/biz/es/Demo/index.d.ts delete mode 100644 packages/biz/es/Demo/index.js delete mode 100644 packages/biz/es/RealTimeMonitor/RealTimeMonitor.d.ts delete mode 100644 packages/biz/es/RealTimeMonitor/RealTimeMonitor.js delete mode 100644 packages/biz/es/RealTimeMonitor/components/WarningRecordList/WarningRecordList.d.ts delete mode 100644 packages/biz/es/RealTimeMonitor/components/WarningRecordList/WarningRecordList.js delete mode 100644 packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.d.ts delete mode 100644 packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.js delete mode 100644 packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.less delete mode 100644 packages/biz/es/RealTimeMonitor/components/WindowToggle/WindowToggle.d.ts delete mode 100644 packages/biz/es/RealTimeMonitor/components/WindowToggle/WindowToggle.js delete mode 100644 packages/biz/es/RealTimeMonitor/components/WindowToggle/index.d.ts delete mode 100644 packages/biz/es/RealTimeMonitor/components/WindowToggle/index.js delete mode 100644 packages/biz/es/RealTimeMonitor/components/WindowToggle/index.less delete mode 100644 packages/biz/es/RealTimeMonitor/index.d.ts delete mode 100644 packages/biz/es/RealTimeMonitor/index.js delete mode 100644 packages/biz/es/VideoPlayerCard/VideoPlayerCard.d.ts delete mode 100644 packages/biz/es/VideoPlayerCard/VideoPlayerCard.js delete mode 100644 packages/biz/es/VideoPlayerCard/index.d.ts delete mode 100644 packages/biz/es/VideoPlayerCard/index.js delete mode 100644 packages/biz/es/VideoPlayerCard/index.less delete mode 100644 packages/biz/es/ViewLargerImageModal/ViewLargerImageModal.d.ts delete mode 100644 packages/biz/es/ViewLargerImageModal/ViewLargerImageModal.js delete mode 100644 packages/biz/es/ViewLargerImageModal/index.d.ts delete mode 100644 packages/biz/es/ViewLargerImageModal/index.js delete mode 100644 packages/biz/es/ViewLargerImageModal/index.less delete mode 100644 packages/biz/es/WarningRecordCard/WarningRecordCard.d.ts delete mode 100644 packages/biz/es/WarningRecordCard/WarningRecordCard.js delete mode 100644 packages/biz/es/WarningRecordCard/index.d.ts delete mode 100644 packages/biz/es/WarningRecordCard/index.js delete mode 100644 packages/biz/es/WarningRecordCard/index.less delete mode 100644 packages/biz/es/boxSelectTree/boxSelectTree.d.ts delete mode 100644 packages/biz/es/boxSelectTree/boxSelectTree.js delete mode 100644 packages/biz/es/boxSelectTree/components/boxPanel/index.js delete mode 100644 packages/biz/es/boxSelectTree/index.d.ts delete mode 100644 packages/biz/es/boxSelectTree/index.js delete mode 100644 packages/biz/es/boxSelectTree/mock.d.ts delete mode 100644 packages/biz/es/boxSelectTree/mock.js delete mode 100644 packages/biz/es/hooks/useIntelligentTracking/index.d.ts delete mode 100644 packages/biz/es/hooks/useIntelligentTracking/index.js delete mode 100644 packages/biz/es/index.d.ts delete mode 100644 packages/biz/es/index.js delete mode 100644 packages/biz/es/tree/boxTree.d.ts delete mode 100644 packages/biz/es/tree/boxTree.js delete mode 100644 packages/biz/es/tree/index.d.ts delete mode 100644 packages/biz/es/tree/index.js delete mode 100644 packages/biz/es/tree/index.less delete mode 100644 packages/biz/es/treeTransfer/TreeTransfer.d.ts delete mode 100644 packages/biz/es/treeTransfer/TreeTransfer.js delete mode 100644 packages/biz/es/treeTransfer/index.d.ts delete mode 100644 packages/biz/es/treeTransfer/index.js delete mode 100644 packages/biz/es/treeTransfer/index.less delete mode 100644 packages/biz/es/treeTransfer/treeTransferHelper.d.ts delete mode 100644 packages/biz/es/treeTransfer/treeTransferHelper.js delete mode 100644 packages/biz/es/treeTransferModal/TreeTransferModal.d.ts delete mode 100644 packages/biz/es/treeTransferModal/TreeTransferModal.js delete mode 100644 packages/biz/es/treeTransferModal/index.d.ts delete mode 100644 packages/biz/es/treeTransferModal/index.js delete mode 100644 packages/biz/es/utils/constants.js delete mode 100644 packages/biz/es/utils/index.d.ts delete mode 100644 packages/biz/es/utils/index.js delete mode 100644 packages/biz/lib/BigImageModal/BigImageModal.d.ts delete mode 100644 packages/biz/lib/BigImageModal/BigImageModal.js delete mode 100644 packages/biz/lib/BigImageModal/components/CombineImage/index.d.ts delete mode 100644 packages/biz/lib/BigImageModal/components/CombineImage/index.js delete mode 100644 packages/biz/lib/BigImageModal/components/navigation/index.d.ts delete mode 100644 packages/biz/lib/BigImageModal/components/navigation/index.js delete mode 100644 packages/biz/lib/BigImageModal/components/navigation/index.less delete mode 100644 packages/biz/lib/BigImageModal/images/emptyImage.png delete mode 100644 packages/biz/lib/BigImageModal/images/percent_background.png delete mode 100644 packages/biz/lib/BigImageModal/index.d.ts delete mode 100644 packages/biz/lib/BigImageModal/index.js delete mode 100644 packages/biz/lib/BigImageModal/index.less delete mode 100644 packages/biz/lib/BigImageModal/mock.d.ts delete mode 100644 packages/biz/lib/BigImageModal/mock.js delete mode 100644 packages/biz/lib/BigImageModal/util/bigImageModalAdapter.d.ts delete mode 100644 packages/biz/lib/BigImageModal/util/bigImageModalAdapter.js delete mode 100644 packages/biz/lib/Demo/index.d.ts delete mode 100644 packages/biz/lib/Demo/index.js delete mode 100644 packages/biz/lib/RealTimeMonitor/RealTimeMonitor.d.ts delete mode 100644 packages/biz/lib/RealTimeMonitor/RealTimeMonitor.js delete mode 100644 packages/biz/lib/RealTimeMonitor/components/WarningRecordList/WarningRecordList.d.ts delete mode 100644 packages/biz/lib/RealTimeMonitor/components/WarningRecordList/WarningRecordList.js delete mode 100644 packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.d.ts delete mode 100644 packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.js delete mode 100644 packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.less delete mode 100644 packages/biz/lib/RealTimeMonitor/components/WindowToggle/WindowToggle.d.ts delete mode 100644 packages/biz/lib/RealTimeMonitor/components/WindowToggle/WindowToggle.js delete mode 100644 packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.d.ts delete mode 100644 packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.js delete mode 100644 packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.less delete mode 100644 packages/biz/lib/RealTimeMonitor/index.d.ts delete mode 100644 packages/biz/lib/RealTimeMonitor/index.js delete mode 100644 packages/biz/lib/VideoPlayerCard/VideoPlayerCard.d.ts delete mode 100644 packages/biz/lib/VideoPlayerCard/VideoPlayerCard.js delete mode 100644 packages/biz/lib/VideoPlayerCard/index.d.ts delete mode 100644 packages/biz/lib/VideoPlayerCard/index.js delete mode 100644 packages/biz/lib/VideoPlayerCard/index.less delete mode 100644 packages/biz/lib/ViewLargerImageModal/ViewLargerImageModal.d.ts delete mode 100644 packages/biz/lib/ViewLargerImageModal/ViewLargerImageModal.js delete mode 100644 packages/biz/lib/ViewLargerImageModal/index.d.ts delete mode 100644 packages/biz/lib/ViewLargerImageModal/index.js delete mode 100644 packages/biz/lib/ViewLargerImageModal/index.less delete mode 100644 packages/biz/lib/WarningRecordCard/WarningRecordCard.d.ts delete mode 100644 packages/biz/lib/WarningRecordCard/WarningRecordCard.js delete mode 100644 packages/biz/lib/WarningRecordCard/index.d.ts delete mode 100644 packages/biz/lib/WarningRecordCard/index.js delete mode 100644 packages/biz/lib/WarningRecordCard/index.less delete mode 100644 packages/biz/lib/boxSelectTree/boxSelectTree.d.ts delete mode 100644 packages/biz/lib/boxSelectTree/boxSelectTree.js delete mode 100644 packages/biz/lib/boxSelectTree/components/boxPanel/index.js delete mode 100644 packages/biz/lib/boxSelectTree/index.d.ts delete mode 100644 packages/biz/lib/boxSelectTree/index.js delete mode 100644 packages/biz/lib/boxSelectTree/mock.d.ts delete mode 100644 packages/biz/lib/boxSelectTree/mock.js delete mode 100644 packages/biz/lib/hooks/useIntelligentTracking/index.d.ts delete mode 100644 packages/biz/lib/hooks/useIntelligentTracking/index.js delete mode 100644 packages/biz/lib/index.d.ts delete mode 100644 packages/biz/lib/index.js delete mode 100644 packages/biz/lib/tree/boxTree.d.ts delete mode 100644 packages/biz/lib/tree/boxTree.js delete mode 100644 packages/biz/lib/tree/index.d.ts delete mode 100644 packages/biz/lib/tree/index.js delete mode 100644 packages/biz/lib/tree/index.less delete mode 100644 packages/biz/lib/treeTransfer/TreeTransfer.d.ts delete mode 100644 packages/biz/lib/treeTransfer/TreeTransfer.js delete mode 100644 packages/biz/lib/treeTransfer/index.d.ts delete mode 100644 packages/biz/lib/treeTransfer/index.js delete mode 100644 packages/biz/lib/treeTransfer/index.less delete mode 100644 packages/biz/lib/treeTransfer/treeTransferHelper.d.ts delete mode 100644 packages/biz/lib/treeTransfer/treeTransferHelper.js delete mode 100644 packages/biz/lib/treeTransferModal/TreeTransferModal.d.ts delete mode 100644 packages/biz/lib/treeTransferModal/TreeTransferModal.js delete mode 100644 packages/biz/lib/treeTransferModal/index.d.ts delete mode 100644 packages/biz/lib/treeTransferModal/index.js delete mode 100644 packages/biz/lib/utils/constants.js delete mode 100644 packages/biz/lib/utils/index.d.ts delete mode 100644 packages/biz/lib/utils/index.js delete mode 100644 packages/material/es/algorithmConfig/algorithmConfig.d.ts delete mode 100644 packages/material/es/index.d.ts delete mode 100644 packages/material/lib/algorithmConfig/algorithmConfig.d.ts delete mode 100644 packages/material/lib/index.d.ts delete mode 100644 packages/meta/es/iconfont/iconfont.css delete mode 100644 packages/meta/es/iconfont/iconfont.js delete mode 100644 packages/meta/es/iconfont/iconfont.ttf delete mode 100644 packages/meta/es/iconfont/iconfont.woff delete mode 100644 packages/meta/es/iconfont/iconfont.woff2 delete mode 100644 packages/meta/es/iconfont/index.js create mode 100644 packages/meta/src/cropperImage/CropperImage.tsx create mode 100644 packages/meta/src/cropperImage/cropperImagehelper.ts create mode 100644 packages/meta/src/cropperImage/demo/basic.tsx create mode 100644 packages/meta/src/cropperImage/demo/withOD.tsx rename packages/{biz/es/BigImageModal => meta/src/cropperImage}/images/emptyImage.png (100%) rename packages/{biz/es/BigImageModal => meta/src/cropperImage}/images/percent_background.png (100%) create mode 100644 packages/meta/src/cropperImage/index.less create mode 100644 packages/meta/src/cropperImage/index.md create mode 100644 packages/meta/src/cropperImage/index.tsx delete mode 100644 packages/meta/src/iconfont/iconfont.css delete mode 100644 packages/meta/src/iconfont/iconfont.js delete mode 100644 packages/meta/src/iconfont/iconfont.ttf delete mode 100644 packages/meta/src/iconfont/iconfont.woff delete mode 100644 packages/meta/src/iconfont/iconfont.woff2 delete mode 100644 packages/meta/src/iconfont/index.tsx diff --git a/packages/biz/CHANGELOG.md b/packages/biz/CHANGELOG.md index 61b9f99..b7767d3 100644 --- a/packages/biz/CHANGELOG.md +++ b/packages/biz/CHANGELOG.md @@ -1,5 +1,26 @@ # @zhst/biz +## 0.12.1 + +### Patch Changes + +- 修改物料库算法编辑新增箭头选择,元组件新增图片标记组件 +- Updated dependencies + - @zhst/meta@0.11.0 + - @zhst/func@0.9.2 + - @zhst/hooks@0.8.11 + +## 0.12.0 + +### Minor Changes + +- 优化 meta 预览图组件 + +### Patch Changes + +- Updated dependencies + - @zhst/meta@0.10.0 + ## 0.11.3 ### Patch Changes diff --git a/packages/biz/es/BigImageModal/BigImageModal.d.ts b/packages/biz/es/BigImageModal/BigImageModal.d.ts deleted file mode 100644 index ae5e46d..0000000 --- a/packages/biz/es/BigImageModal/BigImageModal.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react'; -import type { ModalProps, DescriptionsProps, TabsProps, VideoViewRef, ImgViewRef } from '@zhst/meta'; -import './index.less'; -export declare const componentPrefix = "zhst-image"; -export type TAB_TYPE = 'COMPATER' | 'NORMAL' | 'VIDEO'; -export type MODEL_TYPE = 'VIDEO' | 'IMAGE'; -export interface BigImageModalProps extends ModalProps { - visible: boolean; - activeTab?: TAB_TYPE; - attributeList: { - title: string; - children: Pick; - }; - tabs: { - data: Pick & { - key: TAB_TYPE; - }; - }; - dataSource: any; - imageData: any; - relatedData: any; - isRelated?: boolean; - footer?: React.ReactNode; - showCarousel?: boolean; - onTabChange?: (newVal?: TAB_TYPE, oldVal?: TAB_TYPE) => void; - onIndexChange?: (newVal?: number, oldVal?: number) => void; - transformPropFunc: (data: any) => void; -} -interface BigModalRef { - tab: TAB_TYPE; - setTab: (tab: TAB_TYPE) => void; - modalRef: ModalProps; - activeKey: string; - setActiveKey: (val: string) => void; - videoPlayerRef: VideoViewRef; - combineImageRef: any; - bigImagePreviewRef: ImgViewRef; -} -declare const BigImageModal: React.FC; -export default BigImageModal; diff --git a/packages/biz/es/BigImageModal/components/CombineImage/index.d.ts b/packages/biz/es/BigImageModal/components/CombineImage/index.d.ts deleted file mode 100644 index 19dbaa2..0000000 --- a/packages/biz/es/BigImageModal/components/CombineImage/index.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { FC } from 'react'; -interface ComBineImageProps { - data: { - imgSummary: string; - compaterImages: string[]; - imageKey: string; - score: number; - }; -} -declare const ComBineImage: FC; -export default ComBineImage; diff --git a/packages/biz/es/BigImageModal/components/CombineImage/index.js b/packages/biz/es/BigImageModal/components/CombineImage/index.js deleted file mode 100644 index abe895d..0000000 --- a/packages/biz/es/BigImageModal/components/CombineImage/index.js +++ /dev/null @@ -1,58 +0,0 @@ -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } -function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } -import React, { useRef, forwardRef, useImperativeHandle, useState } from 'react'; -import { CompareImage, Flex, Score } from '@zhst/meta'; -var ComBineImage = /*#__PURE__*/forwardRef(function (props, ref) { - var data = props.data; - var imgSummary = data.imgSummary, - _data$compaterImages = data.compaterImages, - compaterImages = _data$compaterImages === void 0 ? [] : _data$compaterImages; - var targetImageRef = useRef(null); - var compareImageRef = useRef(null); - var _useState = useState(compaterImages.findIndex(function (_url) { - return imgSummary === _url; - }) || 0), - _useState2 = _slicedToArray(_useState, 2), - targetIndex = _useState2[0], - setTargetIndex = _useState2[1]; - useImperativeHandle(ref, function () { - return { - compareImageRef: compareImageRef, - targetImageRef: targetImageRef - }; - }); - return /*#__PURE__*/React.createElement(Flex, { - justify: "space-evenly", - align: "center", - style: { - padding: '0 32px' - } - }, /*#__PURE__*/React.createElement(CompareImage, { - ref: targetImageRef, - preDisable: targetIndex === 0, - nextDisable: targetIndex >= compaterImages.length - 1, - onNext: function onNext() { - return setTargetIndex(targetIndex + 1); - }, - onPre: function onPre() { - return setTargetIndex(targetIndex - 1); - }, - showScore: false, - openRoll: !!compaterImages.length, - url: compaterImages[targetIndex] || imgSummary, - label: "\u76EE\u6807\u56FE" - }), /*#__PURE__*/React.createElement(Score, { - score: data.score - }), /*#__PURE__*/React.createElement(CompareImage, { - ref: compareImageRef, - url: data.imageKey, - openRoll: false, - score: data.score, - label: "\u5BF9\u6BD4\u56FE" - })); -}); -export default ComBineImage; \ No newline at end of file diff --git a/packages/biz/es/BigImageModal/components/navigation/index.d.ts b/packages/biz/es/BigImageModal/components/navigation/index.d.ts deleted file mode 100644 index 78b1ca8..0000000 --- a/packages/biz/es/BigImageModal/components/navigation/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import * as React from 'react'; -import './index.less'; -declare const Navigation: React.FC<{ - show?: boolean; - onClick?: React.MouseEventHandler; - prev?: boolean; - next?: boolean; - disabled?: boolean; - className?: string; - color?: string; - hoverColor?: string; -}>; -export default Navigation; diff --git a/packages/biz/es/BigImageModal/components/navigation/index.js b/packages/biz/es/BigImageModal/components/navigation/index.js deleted file mode 100644 index 19dae1e..0000000 --- a/packages/biz/es/BigImageModal/components/navigation/index.js +++ /dev/null @@ -1,26 +0,0 @@ -import * as React from 'react'; -import classnames from 'classnames'; -import { Icon, Button } from '@zhst/meta'; -import "./index.less"; -var componentName = "zhst-image__nav"; -var Navigation = function Navigation(props) { - var show = props.show, - prev = props.prev, - next = props.next, - disabled = props.disabled, - onClick = props.onClick, - className = props.className, - color = props.color; - return /*#__PURE__*/React.createElement("div", { - className: classnames("".concat(componentName), prev && "".concat(componentName, "-prev"), next && "".concat(componentName, "-next"), disabled && "".concat(componentName, "--disable"), !show && "".concat(componentName, "--hide"), className) - }, /*#__PURE__*/React.createElement(Button, { - type: "text", - disabled: disabled, - onClick: onClick - }, /*#__PURE__*/React.createElement(Icon, { - size: 28, - color: color, - icon: prev ? 'icon-qiehuanzuo' : 'icon-qiehuanyou' - }))); -}; -export default Navigation; \ No newline at end of file diff --git a/packages/biz/es/BigImageModal/components/navigation/index.less b/packages/biz/es/BigImageModal/components/navigation/index.less deleted file mode 100644 index 0a834f9..0000000 --- a/packages/biz/es/BigImageModal/components/navigation/index.less +++ /dev/null @@ -1,44 +0,0 @@ -.zhst-image__nav { - position: absolute; - display: flex; - width: 48px; - height: 100%; - flex-shrink: 0; - align-items: center; - justify-content: center; - cursor: pointer; - font-size: 0; - - &>button { - & span { - display: flex; - } - } - - :global { - i:hover { - color: #f0f0f0 !important; - } - } - - &--disable { - :global { - i { - color: #f0f0f0; - cursor: not-allowed !important; - } - } - } - - &--hide { - display: none; - } - - &-prev { - left: 20px; - } - - &-next { - right: 20px; - } -} diff --git a/packages/biz/es/BigImageModal/index.d.ts b/packages/biz/es/BigImageModal/index.d.ts deleted file mode 100644 index bb07714..0000000 --- a/packages/biz/es/BigImageModal/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import BigImageModal from "./BigImageModal"; -export type { BigImageModalProps } from './BigImageModal'; -export default BigImageModal; diff --git a/packages/biz/es/BigImageModal/index.js b/packages/biz/es/BigImageModal/index.js deleted file mode 100644 index 417a89d..0000000 --- a/packages/biz/es/BigImageModal/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import BigImageModal from "./BigImageModal"; -export default BigImageModal; \ No newline at end of file diff --git a/packages/biz/es/BigImageModal/index.less b/packages/biz/es/BigImageModal/index.less deleted file mode 100644 index 8e98e2e..0000000 --- a/packages/biz/es/BigImageModal/index.less +++ /dev/null @@ -1,514 +0,0 @@ -.zhst-image { - .zhst-dialog-content { - box-shadow: 0 4px 12px rgb(0 0 0 / 20%); - } - - .zhst-tabs .zhst-tabs-nav-wrap { - background-color: #f6f6f6; - } - - - &-view-container { - position: relative; - width: 100%; - margin-bottom: 16px; - - &__nav { - position: absolute; - z-index: 99; - top: 50%; - width: 40px !important; - height: 40px !important; - background: #d9d9d9; - border-radius: 100%; - cursor: pointer; - transform: translateY(-50%); - - &>button { - display: flex; - align-items: center; - color: #fff !important; - } - - &--disabled { - opacity: 0.3; - - &>button { - color: #fff !important; - } - } - } - - &__nav:hover { - background: #09f; - color: #fff !important; - } - } - - &-tool-container { - width: 100%; - height: 40px; - margin-bottom: 16px; - } - - &__face-score { - position: absolute; - right: 90px; - bottom: 80px; - color: red; - font-family: 'Microsoft YaHei'; - font-size: 19px; - font-weight: bold; - } - - &-carousel-container { - position: relative; - width: 100%; - height: 100px; - margin-top: 16px; - margin-bottom: 24px; - } -} - - -.zhst-image__tool { - display: flex; - width: 100%; - align-items: center; - font-size: 14px; - - &-split { - width: 0; - height: 14px; - - &::before { - display: block; - height: 100%; - border-left: 1px solid #e6e7eb; - content: ''; - } - } - - &-zoom { - display: inline-flex; - align-items: center; - - &> :not(:last-child) { - margin-right: 14px; - } - - &__scale { - display: inline-block; - width: 38px; - height: 14px; - - // margin-left: 15px; - box-sizing: content-box; - border: 1px solid rgb(77 77 77 / 100%); - margin-top: 2px; //对齐 - background: rgb(255 255 255 / 100%); - border-radius: 2px; - color: #4d4d4d; - cursor: default; - font-size: 12px; - line-height: 14px; - text-align: center; - } - } - - &-switch { - display: flex; - width: 30px; - flex-shrink: 0; - align-items: center; - justify-content: center; - margin: 0 26px; - } - - &-left { - display: flex; - flex: 1; - align-items: center; - justify-content: flex-end; - - &> :not(:last-child) { - margin-right: 14px; - } - } - - &-right { - display: flex; - flex: 1; - align-items: center; - justify-content: flex-start; - - &> :not(:first-child) { - margin-left: 20px; - } - } - - &-icon-container { - font-size: 14px; - - &--active { - color: #5584ff !important; - } - - &> :first-child { - margin-right: 2px; - } - } -} - -.zhst-image__carousel { - position: relative; - display: flex; - width: 742px; - height: 100px; - align-items: center; - justify-content: center; - border: 1px solid #f0f0f0; - margin: 0 auto; - background: #fafafa; - border-radius: 2px; - user-select: none; - - &-container { - width: (58px + 8px) * 10; - } - - &-item { - display: flex; - width: 58px + 8px; - align-items: center; - justify-content: center; - } - - &-item-img { - /* 尝试消除transform 副作用 */ - position: relative; - z-index: 99; - - // width: 58px; - // height: 76px; - display: flex; - width: 66px; - height: 84px; - box-sizing: border-box; - align-items: center; - justify-content: center; - background: #fafafa; - cursor: pointer; - - /* 尝试消除transform 副作用 end */ - &--active { - border: 2px solid #09f; - border-radius: 1px; - } - - &>div { - /* 尝试消除transform 副作用 */ - position: relative; - z-index: 99; - overflow: hidden; - width: 58px; - height: 76px; - - /* 尝试消除transform 副作用 end */ - &>img { - width: 58px; - height: 76px; - object-fit: contain; - transition: all 0.2s; - - &:hover { - transform: scale(1.5); - } - } - } - } -} - -.zhst-image__trackmodel { - &__panel { - position: relative; - z-index: 99; - top: 0; - right: 0; - width: 320px; - height: 100%; - background-color: #fff; - - &--head { - width: 100%; - height: 40px; - padding: 0 16px; - border-bottom: 1px solid #f0f0f0; - color: #333; - font-size: 14px; - font-weight: bold; - line-height: 40px; - text-align: left; - } - - &--track { - height: calc(100% - 40px); - } - - &-date { - padding: 10px 6px; - - // position: absolute; - } - } - - &--bigImage { - position: absolute; - z-index: 100; - top: 0; - left: 0; - display: flex; - width: 100%; - height: 100%; - justify-content: center; - padding-top: 59px; - background: rgb(0 0 0 / 40%); - - &--image { - width: 946px; - height: 532px; - - &>img { - width: 946px; - height: 532px; - object-fit: contain; - } - } - - &--close { - margin-left: 16px; - color: #fff; - } - } - - &__flooter { - position: absolute; - z-index: 999; - bottom: -124px; - left: 0; - width: calc(100% - 320px - 10px); - height: 144px; - background: #fff; - box-shadow: 0 0 8px 0 rgb(172 172 172 / 50%); - - &--head { - display: flex; - height: 20px; - align-items: center; - justify-content: center; - background: #f6f6f6; - color: #999; - line-height: 16px; - } - - &--body { - display: flex; - height: calc(100% - 20px); - padding-left: 50px; - - &__title { - color: #333; - font-size: 12px; - font-weight: bold; - line-height: 16px; - } - - &__text { - overflow: hidden; - color: #333; - font-size: 12px; - line-height: 16px; - text-overflow: ellipsis; - white-space: nowrap; - } - - &--left { - display: flex; - width: 75px; - height: 100; - align-items: center; - - &>img { - width: 75px; - height: 100px; - object-fit: contain; - } - } - - &--middle { - display: grid; - width: 331px; - justify-content: flex-start; - padding: 8px 20px; - border-right: 1px solid #f0f0f0; - - &>div { - display: flex; - } - } - - &--right { - display: grid; - width: calc(100% - 331px - 75px); - padding: 8px 20px; - - &>div { - display: flex; - } - - &__button-list { - display: flex; - align-items: center; - - &>button { - margin-right: 20px; - - &>span { - color: #09f !important; - } - - &:hover { - &>span { - color: #247fdb !important; - } - } - } - } - } - } - - @keyframes close { - from { - bottom: 0; - } - - to { - bottom: -124px; - } - } - - @keyframes open { - from { - bottom: -124px; - } - - to { - bottom: 0; - } - } - - &--close { - bottom: -124px; - animation-duration: 1s; - animation-name: close; - } - - &--open { - bottom: 0; - animation-duration: 1s; - animation-name: open; - } - } -} - -.zhst-image__attributePanel { - margin: 0 66px; - background: #f6f6f6; - margin-top: 20px; - padding-top: 16px; - display: flex; - justify-content: center; - - &>div:first-child { - width: fit-content; - display: flex; - flex-direction: column; - } - - &-title { - color: rgb(0 0 0 / 88%); - font-weight: bold; - padding-bottom: 12px; - } - - &-item { - display: flex; - } - - &-label { - color: rgb(0 0 0 / 45%); - } - - &-value { - color: rgb(0 0 0 / 88%); - } -} - -.relatedWrapper { - width: 100%; - height: 100px; - padding: 0 30px; - margin-bottom: 30px; - box-sizing: border-box; - - .relatedTabs { - width: 100%; - height: 100px; - } - - .relatedContent { - width: 100%; - height: 100px; - display: flex; - - .relatedPics { - width: 742px; - height: 100px; - } - - .disabled { - color: rgba(0, 0, 0, 25%); - } - - .relatedBtn { - flex: 1; - font-size: 14px; - color: #333; - display: flex; - align-items: flex-end; - cursor: pointer; - - &:hover { - color: #09f; - } - } - } - - :global { - .ant-tabs-left>.ant-tabs-content-holder>.ant-tabs-content>.ant-tabs-tabpane { - padding-left: 16px; - } - - .ant-tabs-tab { - padding: 8px 12px !important; - text-align: right !important; - } - - .ant-tabs .ant-tabs-tab { - font-size: 14px; - font-weight: bold; - text-align: right; - justify-content: flex-end; - } - } -} diff --git a/packages/biz/es/BigImageModal/mock.d.ts b/packages/biz/es/BigImageModal/mock.d.ts deleted file mode 100644 index 68ff4e3..0000000 --- a/packages/biz/es/BigImageModal/mock.d.ts +++ /dev/null @@ -1,245 +0,0 @@ -export declare const IMAGE_DATA: { - enAbleDeleteFeature: boolean; - tabsFilter: string[]; - selectIndex: number; - disableBtn: number[]; - dataSource: { - objectId: string; - condition: { - featureInfo: null; - featureData: string; - imageData: string; - alg: string; - rect: { - x: number; - y: number; - w: number; - h: number; - }; - objectImageUrl: string; - srcImageUrl: string; - }; - score: number; - timestamp: number; - deviceId: string; - id: string; - name: string; - dirid: string; - status: string; - longitude: number; - latitude: number; - caseId: string; - caseGroup: string; - isDeleted: string; - objectIndex: { - objectId: string; - solutionId: string; - deviceId: string; - fragmentId: string; - }; - objectType: string; - isObjectTrack: boolean; - pathId: string; - frameInfo: { - frameId: string; - frameTimestamp: string; - width: number; - height: number; - originWidth: number; - originHeight: number; - offsetTime: string; - skipNumber: string; - }; - level: number; - bboxInFrame: { - x: number; - y: number; - w: number; - h: number; - }; - bboxExtInFrame: { - x: number; - y: number; - w: number; - h: number; - }; - objectImageKey: string; - objectExtImageKey: string; - frameImageKey: string; - confidence: number; - sourceObjectId: string; - storeTimestamp: string; - gbNumber: string; - qualityScore: number; - subObjectCount: number; - subObjectType: string[]; - subObjectIds: string[]; - solutionId: string; - fragmentId: string; - contrastKey: string; - compaterImages: string[]; - imgSummary: string; - imageKey: string; - srcImageUrl: string; - algorithmVersion: string; - cameraId: string; - cameraName: string; - }[]; - isArchiveDetail: boolean; - ToolProps: { - renderVideoBtn: boolean; - disableVideo: boolean; - }; - specialTitle: string; -}; -export declare const BIG_IMAGE_DATA: ({ - imageKey: string; - imgSummary: string; - flvUrl: string; - compaterImages: string[]; - odRect: { - x: number; - y: number; - w: number; - h: number; - }; - attachImg: { - url: string; - label: string; - }[]; - score: string; - showScore: boolean; - cameraPosition: string; - time: string; - objects: { - objectIndex: { - objectId: string; - solutionId: string; - deviceId: string; - fragmentId: string; - }; - objectType: string; - sourceObjectId: string; - level: number; - confidence: number; - frameInfo: { - frameId: string; - frameTimestamp: string; - width: number; - height: number; - originWidth: number; - originHeight: number; - offsetTime: string; - skipNumber: string; - }; - infoOnSource: { - bboxInFrame: { - bboxRatio: { - x: number; - y: number; - w: number; - h: number; - }; - }; - countInSource: number; - indexInSource: number; - }; - qualityScore: number; - }[]; -} | { - imageKey: string; - imgSummary: string; - odRect: { - x: number; - y: number; - w: number; - h: number; - }; - attachImg: { - url: string; - label: string; - }[]; - flvUrl: string; - score: number; - showScore: boolean; - cameraPosition: string; - time: string; - objects: ({ - objectIndex: { - objectId: string; - solutionId: string; - deviceId: string; - fragmentId: string; - }; - objectType: string; - sourceObjectId: string; - frameInfo: { - frameId: string; - frameTimestamp: string; - width: number; - height: number; - originWidth: number; - originHeight: number; - offsetTime: string; - skipNumber: string; - }; - infoOnSource: { - bboxInFrame: { - bboxRatio: { - x: number; - y: number; - w: number; - h: number; - }; - }; - countInSource: number; - indexInSource: number; - }; - qualityScore: number; - level?: undefined; - confidence?: undefined; - } | { - objectIndex: { - objectId: string; - solutionId: string; - deviceId: string; - fragmentId: string; - }; - objectType: string; - sourceObjectId: string; - level: number; - confidence: number; - frameInfo: { - frameId: string; - frameTimestamp: string; - width: number; - height: number; - originWidth: number; - originHeight: number; - offsetTime: string; - skipNumber: string; - }; - infoOnSource: { - bboxInFrame: { - bboxRatio: { - x: number; - y: number; - w: number; - h: number; - }; - }; - countInSource: number; - indexInSource: number; - }; - qualityScore: number; - })[]; - compaterImages?: undefined; -})[]; -export declare const attributeList: { - title: string; - children: { - key: string; - label: string; - children: string; - }[]; -}[]; diff --git a/packages/biz/es/BigImageModal/mock.js b/packages/biz/es/BigImageModal/mock.js deleted file mode 100644 index 760a766..0000000 --- a/packages/biz/es/BigImageModal/mock.js +++ /dev/null @@ -1,473 +0,0 @@ -export var IMAGE_DATA = { - "enAbleDeleteFeature": true, - "tabsFilter": ["COMPATER", "NORMAL"], - "selectIndex": 4, - "disableBtn": [0, 1, 4, 20], - "dataSource": [{ - "objectId": "1742110565582518272", - "condition": { - "featureInfo": null, - "featureData": "AAAAAAAAAAAAAAAAAAAAAAA==", - "imageData": "", - "alg": "VERSION_REID_HEAD_ATTR", - "rect": { - "x": 0.271875, - "y": 0.32222223, - "w": 0.2859375, - "h": 0.67777777 - }, - "objectImageUrl": "singer-20240102/1/129529/1742047651878156288.jpg", - "srcImageUrl": "singer-20240102/1/129529/1742047652511496192.jpg" - }, - "score": 0.7163062, - "timestamp": 1704186491979, - "deviceId": "129533", - "id": "129533", - "name": "4楼门口过道人脸", - "dirid": "0", - "status": "1", - "longitude": 120.125, - "latitude": 30.280500411987305, - "caseId": "0", - "caseGroup": "", - "isDeleted": "DEVICEMANAGER_BOOL_DEFAULT", - "objectIndex": { - "objectId": "1742110565582518272", - "solutionId": "1", - "deviceId": "129533", - "fragmentId": "0" - }, - "objectType": "OBJECT_TYPE_PEDESTRAIN", - "isObjectTrack": true, - "pathId": "1742110532019697664", - "frameInfo": { - "frameId": "0", - "frameTimestamp": "1704186491979", - "width": 0, - "height": 0, - "originWidth": 1920, - "originHeight": 1080, - "offsetTime": "24714687", - "skipNumber": "0" - }, - "level": 1, - "bboxInFrame": { - "x": 0.603125, - "y": 0.3314815, - "w": 0.0578125, - "h": 0.2712963 - }, - "bboxExtInFrame": { - "x": 0.546875, - "y": 0.2638889, - "w": 0.17135416, - "h": 0.40648147 - }, - "objectImageKey": "", - "objectExtImageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129533/1742110565582518272.jpg", - "frameImageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129533/1742110565603489792.jpg", - "confidence": 0.817271, - "sourceObjectId": "1742110565603489792", - "storeTimestamp": "0", - "gbNumber": "", - "qualityScore": 0, - "subObjectCount": 1, - "subObjectType": ["OBJECT_TYPE_FACE"], - "subObjectIds": ["1742110532015503360"], - "solutionId": "1", - "fragmentId": "0", - "contrastKey": "singer-20240102/1/129533/1742110565582518272.jpg", - "compaterImages": ["http://10.0.0.7:30003/file/singer-20240102/1/129529/1742047651878156288.jpg"], - "imgSummary": "singer-20240102/1/129533/1742110565582518272.jpg", - "imageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129533/1742110565582518272.jpg", - "srcImageUrl": "http://10.0.0.7:30003/file/singer-20240102/1/129533/1742110565603489792.jpg", - "algorithmVersion": "VERSION_REID_HEAD_ATTR", - "cameraId": "129533", - "cameraName": "4楼门口过道人脸" - }, { - "objectId": "1742092680994764802", - "condition": { - "featureInfo": null, - "featureData": "AAAAAAAAAAAAAAAAAAAAAAAAA==", - "imageData": "", - "alg": "VERSION_REID_HEAD_ATTR", - "rect": { - "x": 0.271875, - "y": 0.32222223, - "w": 0.2859375, - "h": 0.67777777 - }, - "objectImageUrl": "singer-20240102/1/129529/1742047651878156288.jpg", - "srcImageUrl": "singer-20240102/1/129529/1742047652511496192.jpg" - }, - "score": 0.7007122, - "timestamp": 1704182225679, - "deviceId": "129533", - "id": "129533", - "name": "4楼门口过道人脸", - "dirid": "0", - "status": "1", - "longitude": 120.125, - "latitude": 30.280500411987305, - "caseId": "0", - "caseGroup": "", - "isDeleted": "DEVICEMANAGER_BOOL_DEFAULT", - "objectIndex": { - "objectId": "1742092680994764802", - "solutionId": "1", - "deviceId": "129533", - "fragmentId": "0" - }, - "objectType": "OBJECT_TYPE_PEDESTRAIN", - "isObjectTrack": true, - "pathId": "1742092646219790337", - "frameInfo": { - "frameId": "0", - "frameTimestamp": "1704182225679", - "width": 0, - "height": 0, - "originWidth": 1920, - "originHeight": 1080, - "offsetTime": "20448387", - "skipNumber": "0" - }, - "level": 1, - "bboxInFrame": { - "x": 0.5265625, - "y": 0.49537036, - "w": 0.104166664, - "h": 0.35833332 - }, - "bboxExtInFrame": { - "x": 0.465625, - "y": 0.40648147, - "w": 0.22708334, - "h": 0.537963 - }, - "objectImageKey": "", - "objectExtImageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129533/1742092680994764802.jpg", - "frameImageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129533/1742092681720379392.jpg", - "confidence": 0.769764, - "sourceObjectId": "1742092681720379392", - "storeTimestamp": "0", - "gbNumber": "", - "qualityScore": 0, - "subObjectCount": 0, - "subObjectType": [], - "subObjectIds": [], - "solutionId": "1", - "fragmentId": "0", - "contrastKey": "singer-20240102/1/129533/1742092680994764802.jpg", - "compaterImages": ["http://10.0.0.7:30003/file/singer-20240102/1/129529/1742047651878156288.jpg"], - "imgSummary": "singer-20240102/1/129533/1742092680994764802.jpg", - "imageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129533/1742092680994764802.jpg", - "srcImageUrl": "http://10.0.0.7:30003/file/singer-20240102/1/129533/1742092681720379392.jpg", - "algorithmVersion": "VERSION_REID_HEAD_ATTR", - "cameraId": "129533", - "cameraName": "4楼门口过道人脸" - }, { - "objectId": "1742092514409592832", - "condition": { - "featureInfo": null, - "featureData": "AAAAAAAAAAAAAAAAAAAAAAAA==", - "imageData": "", - "alg": "VERSION_REID_HEAD_ATTR", - "rect": { - "x": 0.271875, - "y": 0.32222223, - "w": 0.2859375, - "h": 0.67777777 - }, - "objectImageUrl": "singer-20240102/1/129529/1742047651878156288.jpg", - "srcImageUrl": "singer-20240102/1/129529/1742047652511496192.jpg" - }, - "score": 0.703765, - "timestamp": 1704182186451, - "deviceId": "129529", - "id": "129529", - "name": "4入口人脸", - "dirid": "0", - "status": "1", - "longitude": 120.12100219726562, - "latitude": 30.280099868774414, - "caseId": "0", - "caseGroup": "", - "isDeleted": "DEVICEMANAGER_BOOL_DEFAULT", - "objectIndex": { - "objectId": "1742092514409592832", - "solutionId": "1", - "deviceId": "129529", - "fragmentId": "0" - }, - "objectType": "OBJECT_TYPE_PEDESTRAIN", - "isObjectTrack": true, - "pathId": "1742092482440607744", - "frameInfo": { - "frameId": "0", - "frameTimestamp": "1704182186451", - "width": 0, - "height": 0, - "originWidth": 2560, - "originHeight": 1440, - "offsetTime": "20409182", - "skipNumber": "0" - }, - "level": 1, - "bboxInFrame": { - "x": 0.6195313, - "y": 0.24583334, - "w": 0.09804688, - "h": 0.41944444 - }, - "bboxExtInFrame": { - "x": 0.53515625, - "y": 0.14027777, - "w": 0.26640624, - "h": 0.63125 - }, - "objectImageKey": "", - "objectExtImageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129529/1742092514409592832.jpg", - "frameImageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129529/1742092515508500480.jpg", - "confidence": 0.92494, - "sourceObjectId": "1742092515508500480", - "storeTimestamp": "0", - "gbNumber": "", - "qualityScore": 0, - "subObjectCount": 1, - "subObjectType": ["OBJECT_TYPE_FACE"], - "subObjectIds": ["1742092482432219136"], - "solutionId": "1", - "fragmentId": "0", - "contrastKey": "singer-20240102/1/129529/1742092514409592832.jpg", - "compaterImages": ["http://10.0.0.7:30003/file/singer-20240102/1/129529/1742047651878156288.jpg"], - "imgSummary": "singer-20240102/1/129529/1742092514409592832.jpg", - "imageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129529/1742092514409592832.jpg", - "srcImageUrl": "http://10.0.0.7:30003/file/singer-20240102/1/129529/1742092515508500480.jpg", - "algorithmVersion": "VERSION_REID_HEAD_ATTR", - "cameraId": "129529", - "cameraName": "4入口人脸" - }], - "isArchiveDetail": false, - "ToolProps": { - "renderVideoBtn": true, - "disableVideo": false - }, - "specialTitle": "" -}; -export var BIG_IMAGE_DATA = [{ - imageKey: 'http://10.0.0.120:30003/file/singer-20240110/1/5/1744894622934503424.jpg', - imgSummary: "http://10.0.0.120:30003/file/singer-20240117/1/5/1747536346412488704.jpg", - flvUrl: 'ws://10.0.0.120:9033/flv/Sip/34020000001310000301.flv?ip=10.0.0.120&stime=1704815972&etime=1704815992', - compaterImages: ['http://10.0.0.120:30003/file/singer-20240117/1/5/1747536346412488704.jpg', "http://10.0.0.120:30003/file/public/public_20240117/file/dfdd3340-53c8-4dc4-9921-f13230aa0355.jpg"], - odRect: { - "x": 0.5445312, - "y": 0.19166666, - "w": 0.08671875, - "h": 0.40138888 - }, - attachImg: [{ - "url": "http://10.0.0.120:30003/file/singer-20240110/1/5/1744894622695428096.jpg", - "label": "形体" - }, { - "url": "http://10.0.0.120:30003/file/singer-20240110/1/5/1744894588427964418.jpg", - "label": "人脸" - }], - score: '0.6', - // 人脸质量分 - showScore: true, - // 人脸质量分 - cameraPosition: 'string', - // 摄像头位置 - time: '2022-01-01', - // 摄像头拍摄时间 - objects: [{ - "objectIndex": { - "objectId": "1746832189053474816", - "solutionId": "0", - "deviceId": "0", - "fragmentId": "0" - }, - "objectType": "OBJECT_TYPE_PEDESTRAIN", - "sourceObjectId": "0", - "level": 0, - "confidence": 0.881164, - "frameInfo": { - "frameId": "0", - "frameTimestamp": "1705312223057", - "width": 0, - "height": 0, - "originWidth": 0, - "originHeight": 0, - "offsetTime": "0", - "skipNumber": "0" - }, - "infoOnSource": { - "bboxInFrame": { - "bboxRatio": { - "x": 0.61418945, - "y": 0.34309354, - "w": 0.067661405, - "h": 0.34659258 - } - }, - "countInSource": 0, - "indexInSource": 0 - }, - "qualityScore": 0 - }] -}, { - imageKey: 'http://10.0.0.120:30003/file/singer-20240115/1/9/1746795581994436608.jpg', - imgSummary: "http://10.0.0.120:30003/file/singer-20240117/1/5/1747536346412488704.jpg", - odRect: { - "x": 0.553125, - "y": 0.29722223, - "w": 0.048958335, - "h": 0.2462963 - }, - attachImg: [{ - "url": "http://10.0.0.120:30003/file/singer-20240115/1/9/1746795581163964416.jpg", - "label": "形体" - }, { - "url": "http://10.0.0.120:30003/file/singer-20240115/1/9/1746795546867140608.jpg", - "label": "人脸" - }], - flvUrl: 'ws://10.0.0.120:9033/flv/HaikangNvr/34.flv?ip=10.0.2.103&stime=1705302394&etime=1705302414', - score: 0.815207, - // 人脸质量分 - showScore: true, - // 人脸质量分 - cameraPosition: 'string', - // 摄像头位置 - time: '2022-01-01', - // 摄像头拍摄时间 - objects: [{ - "objectIndex": { - "objectId": "1746816737430472704", - "solutionId": "0", - "deviceId": "0", - "fragmentId": "0" - }, - "objectType": "OBJECT_TYPE_PEDESTRAIN", - "sourceObjectId": "0", - "frameInfo": { - "frameId": "0", - "frameTimestamp": "1705308539109", - "width": 0, - "height": 0, - "originWidth": 0, - "originHeight": 0, - "offsetTime": "0", - "skipNumber": "0" - }, - "infoOnSource": { - "bboxInFrame": { - "bboxRatio": { - "x": 0.5519352, - "y": 0.2965385, - "w": 0.05185461, - "h": 0.24698898 - } - }, - "countInSource": 0, - "indexInSource": 0 - }, - "qualityScore": 0 - }, { - "objectIndex": { - "objectId": "1746816737430472705", - "solutionId": "0", - "deviceId": "0", - "fragmentId": "0" - }, - "objectType": "OBJECT_TYPE_PEDESTRAIN", - "sourceObjectId": "0", - "level": 0, - "confidence": 0.9310699, - "frameInfo": { - "frameId": "0", - "frameTimestamp": "1705308539109", - "width": 0, - "height": 0, - "originWidth": 0, - "originHeight": 0, - "offsetTime": "0", - "skipNumber": "0" - }, - "infoOnSource": { - "bboxInFrame": { - "bboxRatio": { - "x": 0.58543766, - "y": 0.3203356, - "w": 0.052037954, - "h": 0.2664015 - } - }, - "countInSource": 0, - "indexInSource": 0 - }, - "qualityScore": 0 - }] -}]; -export var attributeList = [{ - title: '人员属性', - children: [{ - key: '1', - label: '性别', - children: '男' - }, { - key: '2', - label: '年龄', - children: '成年' - }, { - key: '3', - label: '帽子', - children: '无' - }, { - key: '4', - label: '上身颜色', - children: '灰' - }, { - key: '5', - label: '下身颜色', - children: '蓝色' - }, { - key: '6', - label: '附着物', - children: '无' - }, { - key: '7', - label: '骑行', - children: '否' - }] -}, { - title: '社区规范', - children: [{ - key: '1', - label: '性别', - children: '男' - }, { - key: '2', - label: '年龄', - children: '成年' - }, { - key: '3', - label: '帽子', - children: '无' - }, { - key: '4', - label: '上身颜色', - children: '灰' - }, { - key: '5', - label: '下身颜色', - children: '蓝色' - }, { - key: '6', - label: '附着物', - children: '无' - }, { - key: '7', - label: '骑行', - children: '否' - }] -}]; \ No newline at end of file diff --git a/packages/biz/es/BigImageModal/util/bigImageModalAdapter.d.ts b/packages/biz/es/BigImageModal/util/bigImageModalAdapter.d.ts deleted file mode 100644 index 185982d..0000000 --- a/packages/biz/es/BigImageModal/util/bigImageModalAdapter.d.ts +++ /dev/null @@ -1,118 +0,0 @@ -/** - * 适配老的大屏组件数据格式传入 - */ -import React from 'react'; -import { AlgorithmVersionStr, HumanProperty, ObjectType, Rect } from '@zhst/types'; -import { VideoViewProps, ImgViewProps, VideoViewRef, ImgViewRef } from '@zhst/meta'; -export type TAB_TYPE = 'COMPATER' | 'NORMAL' | 'TRACK'; -export type MODEL_TYPE = 'VIDEO' | 'IMAGE'; -export interface CarouselProps { - hasPre?: boolean; - hasNext?: boolean; - selectIndex: number; - setSelectIndex: React.Dispatch>; - dataSource: Array<{ - key: string; - url: string; - }>; -} -export type ISelectItem = Partial> & Partial>; -/** - * 描述列表 description - */ -export interface HeaderProps { - value: TAB_TYPE; - onChange: (type: TAB_TYPE) => void; - tabsFilter: TAB_TYPE[]; -} -export interface ParamProps { - tab: string; - selectItem: ISelectItem; - imgViewRef: React.MutableRefObject; - VideoViewRef: React.MutableRefObject; - model: MODEL_TYPE; - setModel: React.Dispatch>; - scale$: number; - showCrop$: boolean; -} -/** - * 工具栏 - */ -export interface ToolProps { - renderRight?: (props: ParamProps) => React.ReactNode; - renderLeft?: (props: ParamProps) => React.ReactNode; - renderVideoBtn?: boolean; - param: ParamProps; - disableVideo: boolean; -} -export interface BigImageData { - extendRectList: (Rect & { - algorithmVersion: AlgorithmVersionStr; - imageKey: string; - })[]; - rectList: (Rect & { - algorithmVersion: AlgorithmVersionStr; - imageKey: string; - })[]; - attachImg: { - url: string; - label: '形体' | '人脸'; - }[]; - odRect: Rect; - compaterImages: string[]; - constractKey: string; - frameImageKey: string; - imageKey?: string; - imgSummary: string; - objectExtImageKey: string; - attributeList: { - label: string; - list: any[]; - }[]; - archiveImages?: any; - spaceName: string; - objectIndex?: { - deviceId: string; - fragmentId: string; - objectId: string; - solutionId: string; - }; - objectType: ObjectType; - objectId: string; - bodyObjectId?: string; - faceObjectId?: string; - sourceObjectId?: string; - cameraId: string; - cameraName: string; - selectIndex: number; - humanProperty: HumanProperty; - qualityScore?: number; - score: number; - timestamp: string; - bodyImageUrl: string; - faceImageUrl: string; - algorithmVersion: AlgorithmVersionStr; - bodySpaceName: string; - faceSpaceName: string; - position: { - lat: number; - lng: number; - }; - solutionId?: string; - [index: string]: any; -} -export interface ImageModalDataProps { - targetData: BigImageData[]; - compactData: BigImageData[]; -} -export interface ModalAdapterConfigProps { - oldMode?: boolean; -} -/** - * 大图组件适配器,兼容老接口 - * @param Cmp 大图组件 - * @param config 额外配置 - * @returns 大图组件 - */ -declare const adapter: (Cmp: any, config: ModalAdapterConfigProps) => any; -export default adapter; diff --git a/packages/biz/es/BigImageModal/util/bigImageModalAdapter.js b/packages/biz/es/BigImageModal/util/bigImageModalAdapter.js deleted file mode 100644 index bad3d69..0000000 --- a/packages/biz/es/BigImageModal/util/bigImageModalAdapter.js +++ /dev/null @@ -1,50 +0,0 @@ -function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } -function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } -function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -/** - * 适配老的大屏组件数据格式传入 - */ -import React from 'react'; - -/** - * 描述列表 description - */ - -/** - * 工具栏 - */ - -/** - * 兼容老数据格式 - * @param _data 老数据格式 - * @returns newData - */ -var translateOldImageData = function translateOldImageData(_data) { - return _objectSpread(_objectSpread({}, _data), {}, { - open: _data.visible, - onCancel: _data.onClose - }); -}; - -/** - * 大图组件适配器,兼容老接口 - * @param Cmp 大图组件 - * @param config 额外配置 - * @returns 大图组件 - */ -var adapter = function adapter(Cmp, config) { - var _config$oldMode = config.oldMode, - oldMode = _config$oldMode === void 0 ? false : _config$oldMode; - return function (props) { - var newProps = oldMode ? translateOldImageData(props) : props; - console.log('adapter----适配数据', props, newProps); - - // 该属性已经废弃 - delete newProps.visible; - return /*#__PURE__*/React.createElement(Cmp, newProps); - }; -}; -export default adapter; \ No newline at end of file diff --git a/packages/biz/es/Demo/index.d.ts b/packages/biz/es/Demo/index.d.ts deleted file mode 100644 index bcc157c..0000000 --- a/packages/biz/es/Demo/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import React from 'react'; -declare const _default: () => React.JSX.Element; -export default _default; diff --git a/packages/biz/es/Demo/index.js b/packages/biz/es/Demo/index.js deleted file mode 100644 index b877d8a..0000000 --- a/packages/biz/es/Demo/index.js +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; -import { Button } from '@zhst/meta'; -import { useThrottleFn } from '@zhst/hooks'; -export default (function () { - var _useThrottleFn = useThrottleFn(function () { - return console.log('123'); - }), - run = _useThrottleFn.run; - return /*#__PURE__*/React.createElement(Button, { - onClick: function onClick() { - return run(); - } - }, "\u6D4B\u8BD5"); -}); \ No newline at end of file diff --git a/packages/biz/es/RealTimeMonitor/RealTimeMonitor.d.ts b/packages/biz/es/RealTimeMonitor/RealTimeMonitor.d.ts deleted file mode 100644 index a3f147f..0000000 --- a/packages/biz/es/RealTimeMonitor/RealTimeMonitor.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; -import { IRecord, VideoPlayerCardProps, ViewLargerImageModalRef } from '@zhst/biz'; -interface RealTimeMonitorProps { - videoDataSource?: VideoPlayerCardProps[]; - handleWindowClick?: (key?: string) => void; - handleCloseButtonClick?: (key?: string) => void; - selectedWindowKey?: string; - warningDataSource?: IRecord[]; - viewLargerImageModalRef?: React.RefObject; - handleDownloadImg?: (imgSrc?: string) => void; - onRecordClick?: (record?: IRecord) => void; - selectedRecordId?: string; - isRecordListLoading?: boolean; - recordListTitle?: string; - style?: React.CSSProperties; - cardStyle?: React.CSSProperties; - imgStyle?: React.CSSProperties; - largeImageTitle?: string; -} -export declare const RealTimeMonitor: React.FC; -export default RealTimeMonitor; diff --git a/packages/biz/es/RealTimeMonitor/RealTimeMonitor.js b/packages/biz/es/RealTimeMonitor/RealTimeMonitor.js deleted file mode 100644 index b11561c..0000000 --- a/packages/biz/es/RealTimeMonitor/RealTimeMonitor.js +++ /dev/null @@ -1,35 +0,0 @@ -import React from 'react'; -import WindowToggle from "./components/WindowToggle"; -import WarningRecordList from "./components/WarningRecordList"; -export var RealTimeMonitor = function RealTimeMonitor(props) { - var videoDataSource = props.videoDataSource, - handleWindowClick = props.handleWindowClick, - handleCloseButtonClick = props.handleCloseButtonClick, - selectedWindowKey = props.selectedWindowKey, - warningDataSource = props.warningDataSource, - viewLargerImageModalRef = props.viewLargerImageModalRef, - handleDownloadImg = props.handleDownloadImg, - onRecordClick = props.onRecordClick, - selectedRecordId = props.selectedRecordId, - isRecordListLoading = props.isRecordListLoading; - return /*#__PURE__*/React.createElement("div", { - className: "zhst-biz-real-time-monitor", - style: { - display: 'flex' - } - }, /*#__PURE__*/React.createElement(WindowToggle, { - selectedWindowKey: selectedWindowKey, - dataSource: videoDataSource, - handleWindowClick: handleWindowClick, - handleCloseButtonClick: handleCloseButtonClick - }), /*#__PURE__*/React.createElement(WarningRecordList, { - dataSource: warningDataSource, - handleDownloadImg: handleDownloadImg, - onRecordClick: onRecordClick, - selectedRecordId: selectedRecordId, - viewLargerImageModalRef: viewLargerImageModalRef, - isRecordListLoading: isRecordListLoading, - recordListTitle: "\u76D1\u63A7\u9884\u8B66\u8BB0\u5F55" - })); -}; -export default RealTimeMonitor; \ No newline at end of file diff --git a/packages/biz/es/RealTimeMonitor/components/WarningRecordList/WarningRecordList.d.ts b/packages/biz/es/RealTimeMonitor/components/WarningRecordList/WarningRecordList.d.ts deleted file mode 100644 index 6489299..0000000 --- a/packages/biz/es/RealTimeMonitor/components/WarningRecordList/WarningRecordList.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; -import { IRecord, ViewLargerImageModalRef } from '@zhst/biz'; -import "./index.less"; -interface WarningRecordListProps { - dataSource?: IRecord[]; - viewLargerImageModalRef?: React.RefObject; - handleDownloadImg?: (imgSrc?: string) => void; - onRecordClick?: (record?: IRecord) => void; - selectedRecordId?: string; - isRecordListLoading?: boolean; - recordListTitle?: string; - style?: React.CSSProperties; - cardStyle?: React.CSSProperties; - imgStyle?: React.CSSProperties; - largeImageTitle?: string; -} -declare const WarningRecordList: React.FC; -export default WarningRecordList; diff --git a/packages/biz/es/RealTimeMonitor/components/WarningRecordList/WarningRecordList.js b/packages/biz/es/RealTimeMonitor/components/WarningRecordList/WarningRecordList.js deleted file mode 100644 index 5715506..0000000 --- a/packages/biz/es/RealTimeMonitor/components/WarningRecordList/WarningRecordList.js +++ /dev/null @@ -1,81 +0,0 @@ -function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } -function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } -function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -import React from 'react'; -import { ViewLargerImageModal, WarningRecordCard } from '@zhst/biz'; -import { Empty, Space, Spin } from 'antd'; -import "./index.less"; -import { LoadingOutlined } from '@ant-design/icons'; -var WarningRecordList = function WarningRecordList(props) { - var _props$dataSource = props.dataSource, - dataSource = _props$dataSource === void 0 ? [] : _props$dataSource, - viewLargerImageModalRef = props.viewLargerImageModalRef, - selectedRecordId = props.selectedRecordId, - handleDownloadImg = props.handleDownloadImg, - _onRecordClick = props.onRecordClick, - isRecordListLoading = props.isRecordListLoading, - recordListTitle = props.recordListTitle, - style = props.style, - cardStyle = props.cardStyle, - imgStyle = props.imgStyle, - largeImageTitle = props.largeImageTitle; - return /*#__PURE__*/React.createElement("div", { - className: "zhst-biz-warning-record-list", - style: style - }, /*#__PURE__*/React.createElement("div", { - className: "header" - }, recordListTitle), /*#__PURE__*/React.createElement("div", { - className: "body" - }, isRecordListLoading ? /*#__PURE__*/React.createElement("div", { - style: { - height: '100%', - display: 'flex', - justifyContent: 'center', - alignItems: 'center' - } - }, /*#__PURE__*/React.createElement(Spin, { - indicator: /*#__PURE__*/React.createElement(LoadingOutlined, { - style: { - fontSize: 24 - } - }) - })) : (dataSource === null || dataSource === void 0 ? void 0 : dataSource.length) > 0 ? /*#__PURE__*/React.createElement(Space, { - direction: "vertical", - size: 10 - }, dataSource === null || dataSource === void 0 ? void 0 : dataSource.map(function (record, index) { - if (index > 2) return; - return /*#__PURE__*/React.createElement(WarningRecordCard, { - key: record === null || record === void 0 ? void 0 : record.id, - record: record, - onRecordClick: function onRecordClick(record) { - _onRecordClick === null || _onRecordClick === void 0 || _onRecordClick(record); - }, - selectedRecordId: selectedRecordId, - cardStyle: _objectSpread({ - width: 300, - height: 264 - }, cardStyle), - imgStyle: _objectSpread({ - width: 280, - height: 169 - }, imgStyle) - }); - })) : /*#__PURE__*/React.createElement("div", { - style: { - height: '100%', - display: 'flex', - justifyContent: 'center', - alignItems: 'center' - } - }, /*#__PURE__*/React.createElement(Empty, { - description: "\u6682\u65E0\u6570\u636E" - }))), /*#__PURE__*/React.createElement(ViewLargerImageModal, { - ref: viewLargerImageModalRef, - downloadImg: handleDownloadImg, - title: largeImageTitle - })); -}; -export default WarningRecordList; \ No newline at end of file diff --git a/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.d.ts b/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.d.ts deleted file mode 100644 index b50da75..0000000 --- a/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import WarningRecordList from './WarningRecordList'; -export default WarningRecordList; diff --git a/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.js b/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.js deleted file mode 100644 index 6e69d61..0000000 --- a/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import WarningRecordList from "./WarningRecordList"; -export default WarningRecordList; \ No newline at end of file diff --git a/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.less b/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.less deleted file mode 100644 index e348f82..0000000 --- a/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.less +++ /dev/null @@ -1,20 +0,0 @@ -.zhst-biz-warning-record-list { - display: flex; - flex-direction: column; - border-left: solid 1px #00000026; - width: 320px; - - .header { - width: 100%; - height: 48px; - background-color: #EFF2F4; - padding: 10px 20px; - box-sizing: border-box; - } - - .body { - padding: 10px; - overflow: hidden; - flex: 1; - } -} \ No newline at end of file diff --git a/packages/biz/es/RealTimeMonitor/components/WindowToggle/WindowToggle.d.ts b/packages/biz/es/RealTimeMonitor/components/WindowToggle/WindowToggle.d.ts deleted file mode 100644 index c67b407..0000000 --- a/packages/biz/es/RealTimeMonitor/components/WindowToggle/WindowToggle.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react'; -import { VideoPlayerCardProps } from '@zhst/biz'; -import './index.less'; -interface WindowToggleProps { - dataSource?: VideoPlayerCardProps[]; - handleWindowClick?: (key?: string) => void; - handleCloseButtonClick?: (key?: string) => void; - selectedWindowKey?: string; -} -export declare const WindowToggle: React.FC; -export default WindowToggle; diff --git a/packages/biz/es/RealTimeMonitor/components/WindowToggle/WindowToggle.js b/packages/biz/es/RealTimeMonitor/components/WindowToggle/WindowToggle.js deleted file mode 100644 index d9efe21..0000000 --- a/packages/biz/es/RealTimeMonitor/components/WindowToggle/WindowToggle.js +++ /dev/null @@ -1,81 +0,0 @@ -function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } -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); } -function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } -function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } -function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } -import React, { useState } from 'react'; -import { Segmented } from 'antd'; -import { AppstoreOutlined, BarsOutlined } from '@ant-design/icons'; -import { VideoPlayerCard } from '@zhst/biz'; -import "./index.less"; -import { theme } from 'antd/lib'; -export var WindowToggle = function WindowToggle(props) { - var _props$dataSource = props.dataSource, - dataSource = _props$dataSource === void 0 ? [] : _props$dataSource, - handleWindowClick = props.handleWindowClick, - handleCloseButtonClick = props.handleCloseButtonClick, - selectedWindowKey = props.selectedWindowKey; - var _useState = useState("large"), - _useState2 = _slicedToArray(_useState, 2), - size = _useState2[0], - setSize = _useState2[1]; - var useToken = theme.useToken; - var _useToken = useToken(), - token = _useToken.token; - var getLabelStyle = function getLabelStyle(isSelected) { - return _objectSpread({ - padding: "0 11px", - background: "#fff" - }, isSelected ? { - background: token.colorPrimary, - color: '#fff' - } : {}); - }; - return /*#__PURE__*/React.createElement("div", { - className: "zhst-biz-window-toggle" - }, /*#__PURE__*/React.createElement("div", { - className: "header" - }, /*#__PURE__*/React.createElement(Segmented, { - defaultValue: "large", - options: [{ - value: 'large', - label: /*#__PURE__*/React.createElement("div", { - style: getLabelStyle(size === 'large') - }, /*#__PURE__*/React.createElement(BarsOutlined, null)) - }, { - value: 'small', - label: /*#__PURE__*/React.createElement("div", { - style: getLabelStyle(size === 'small') - }, /*#__PURE__*/React.createElement(AppstoreOutlined, null)) - }], - onChange: function onChange(value) { - // 当一个窗口时 默认 selectedkey 第一条数据的 windowkey - if (value === 'large' && dataSource.length > 0) { - var windowKey = dataSource[0].windowKey; - handleWindowClick === null || handleWindowClick === void 0 || handleWindowClick(windowKey); - } - setSize(value); - } - })), /*#__PURE__*/React.createElement("div", { - className: "body" - }, dataSource === null || dataSource === void 0 ? void 0 : dataSource.map(function (item, index) { - if (size === "large" && index > 0) return; - return /*#__PURE__*/React.createElement(VideoPlayerCard, _extends({ - key: item.windowKey, - selectedWindowKey: selectedWindowKey, - size: size - }, item, { - handleWindowClick: handleWindowClick, - handleCloseButtonClick: handleCloseButtonClick - })); - }))); -}; -export default WindowToggle; \ No newline at end of file diff --git a/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.d.ts b/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.d.ts deleted file mode 100644 index 3b57a45..0000000 --- a/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import WindowToggle from './WindowToggle'; -export default WindowToggle; diff --git a/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.js b/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.js deleted file mode 100644 index 2f4ac13..0000000 --- a/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import WindowToggle from "./WindowToggle"; -export default WindowToggle; \ No newline at end of file diff --git a/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.less b/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.less deleted file mode 100644 index 61c77bd..0000000 --- a/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.less +++ /dev/null @@ -1,45 +0,0 @@ -.zhst-biz-window-toggle { - display: flex; - flex-direction: column; - flex: 1; - - .header { - width: 100%; - height: 48px; - background-color: #EFF2F4; - padding: 10px 20px; - box-sizing: border-box; - - .ant-segmented { - padding: 0; - - .ant-segmented-group { - border-radius: 4px; - overflow: hidden; - - .ant-segmented-item { - border-radius: 0; - - .ant-segmented-item-label { - padding: 0; - } - } - } - } - } - - .body { - flex: 1; - width: 100%; - background-color: #E5EAEC; - padding: 10px; - box-sizing: border-box; - display: flex; - flex-wrap: wrap; - justify-content: space-between; - - >div { - margin: 10px; - } - } -} \ No newline at end of file diff --git a/packages/biz/es/RealTimeMonitor/index.d.ts b/packages/biz/es/RealTimeMonitor/index.d.ts deleted file mode 100644 index 9013d29..0000000 --- a/packages/biz/es/RealTimeMonitor/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import RealTimeMonitor from './RealTimeMonitor'; -export default RealTimeMonitor; diff --git a/packages/biz/es/RealTimeMonitor/index.js b/packages/biz/es/RealTimeMonitor/index.js deleted file mode 100644 index 80b2a3c..0000000 --- a/packages/biz/es/RealTimeMonitor/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import RealTimeMonitor from "./RealTimeMonitor"; -export default RealTimeMonitor; \ No newline at end of file diff --git a/packages/biz/es/VideoPlayerCard/VideoPlayerCard.d.ts b/packages/biz/es/VideoPlayerCard/VideoPlayerCard.d.ts deleted file mode 100644 index cd1775e..0000000 --- a/packages/biz/es/VideoPlayerCard/VideoPlayerCard.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { CardProps } from 'antd'; -import React, { ReactNode } from 'react'; -import './index.less'; -export interface VideoPlayerCardProps { - windowKey?: string; - selectedWindowKey?: string; - showType?: 'video' | "image"; - imgSrc?: string; - videoSrc?: string; - cardProps?: CardProps; - errorReasonText?: string; - isWindowLoading?: boolean; - size?: 'large' | 'small'; - title?: string | ReactNode; - handleCloseButtonClick?: (key?: string) => void; - handleWindowClick?: (key?: string) => void; -} -export declare const VideoPlayerCard: React.FC; -export default VideoPlayerCard; diff --git a/packages/biz/es/VideoPlayerCard/VideoPlayerCard.js b/packages/biz/es/VideoPlayerCard/VideoPlayerCard.js deleted file mode 100644 index e4daf93..0000000 --- a/packages/biz/es/VideoPlayerCard/VideoPlayerCard.js +++ /dev/null @@ -1,140 +0,0 @@ -function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } -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); } -function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } -function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } -function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } -import { Card, Space, Spin, Button } from 'antd'; -import { theme } from 'antd/lib'; -import { VideoPlayer } from '@zhst/meta'; -import React, { useState, useEffect, useRef } from 'react'; -import { CloseOutlined, LoadingOutlined } from '@ant-design/icons'; -import "./index.less"; -export var VideoPlayerCard = function VideoPlayerCard(props) { - var componentName = "zhst-biz-video-player-card"; - var showType = props.showType, - imgSrc = props.imgSrc, - videoSrc = props.videoSrc, - cardProps = props.cardProps, - isWindowLoading = props.isWindowLoading, - errorReasonText = props.errorReasonText, - size = props.size, - title = props.title, - handleCloseButtonClick = props.handleCloseButtonClick, - handleWindowClick = props.handleWindowClick, - windowKey = props.windowKey, - _props$selectedWindow = props.selectedWindowKey, - selectedWindowKey = _props$selectedWindow === void 0 ? '' : _props$selectedWindow; - var _useState = useState(null), - _useState2 = _slicedToArray(_useState, 2), - cardContent = _useState2[0], - setCardContent = _useState2[1]; - var useToken = theme.useToken; - var _useToken = useToken(), - token = _useToken.token; - var videoRef = useRef(null); - var selectedBorderStyle = { - border: "2px solid ".concat(token.colorPrimary), - boxShadow: " 0px 2px 9px 0px rgba(0,0,0,0.16)" - }; - var cardStyle = _objectSpread(_objectSpread({}, size === 'large' ? { - height: 931 - } : { - height: 456, - cursor: 'pointer' - }), size === 'small' && selectedWindowKey === windowKey ? selectedBorderStyle : {}); - var videoPlayerCardStyle = size === 'small' ? { - width: "calc(50% - 20px)" - } : { - flex: 1 - }; - useEffect(function () { - if (!isWindowLoading && (videoSrc || imgSrc)) { - var contentElement = null; - if (videoSrc) { - var _videoRef$current; - contentElement = /*#__PURE__*/React.createElement(VideoPlayer, { - ref: videoRef, - url: videoSrc - }); - (_videoRef$current = videoRef.current) === null || _videoRef$current === void 0 || _videoRef$current.setShowCrop(true); - } else if (imgSrc) { - contentElement = /*#__PURE__*/React.createElement("img", { - alt: "\u9996\u5E27\u56FE", - src: imgSrc, - style: { - width: "100%", - height: "100%", - display: 'block' - } - }); - } - setCardContent(contentElement); - } else { - setCardContent(null); - } - }, [showType, imgSrc, videoSrc, isWindowLoading]); - return /*#__PURE__*/React.createElement("div", { - className: componentName, - onClick: function onClick() { - handleWindowClick === null || handleWindowClick === void 0 || handleWindowClick(windowKey); - }, - style: videoPlayerCardStyle - }, /*#__PURE__*/React.createElement(Card, _extends({ - title: /*#__PURE__*/React.createElement(Space, { - style: { - width: "100%", - justifyContent: "space-between" - } - }, /*#__PURE__*/React.createElement("div", null, title), /*#__PURE__*/React.createElement("div", { - className: "card-close-button" - }, /*#__PURE__*/React.createElement(Button, { - type: "text", - onClick: function onClick() { - handleCloseButtonClick === null || handleCloseButtonClick === void 0 || handleCloseButtonClick(windowKey); - } - }, /*#__PURE__*/React.createElement(CloseOutlined, null)))), - style: _objectSpread({ - display: "flex", - flexDirection: "column", - borderRadius: 4, - overflow: "hidden" - }, cardStyle), - bodyStyle: { - flex: 1 - } - }, cardProps), cardContent ? /*#__PURE__*/React.createElement(React.Fragment, null, cardContent) : /*#__PURE__*/React.createElement("div", { - style: { - backgroundColor: '#000', - height: '100%', - display: 'flex', - padding: '20px', - boxSizing: 'border-box' - } - }, isWindowLoading ? /*#__PURE__*/React.createElement("div", { - style: { - flex: 1, - display: 'flex', - justifyContent: 'center', - alignItems: 'center' - } - }, /*#__PURE__*/React.createElement(Spin, { - indicator: /*#__PURE__*/React.createElement(LoadingOutlined, { - style: { - fontSize: 24 - } - }) - })) : !!errorReasonText && /*#__PURE__*/React.createElement("span", { - style: { - color: token.colorError - } - }, errorReasonText)))); -}; -export default VideoPlayerCard; \ No newline at end of file diff --git a/packages/biz/es/VideoPlayerCard/index.d.ts b/packages/biz/es/VideoPlayerCard/index.d.ts deleted file mode 100644 index 41afa58..0000000 --- a/packages/biz/es/VideoPlayerCard/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import VideoPlayerCard from './VideoPlayerCard'; -export type { VideoPlayerCardProps } from './VideoPlayerCard'; -export default VideoPlayerCard; diff --git a/packages/biz/es/VideoPlayerCard/index.js b/packages/biz/es/VideoPlayerCard/index.js deleted file mode 100644 index 4cb8f05..0000000 --- a/packages/biz/es/VideoPlayerCard/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import VideoPlayerCard from "./VideoPlayerCard"; -export default VideoPlayerCard; \ No newline at end of file diff --git a/packages/biz/es/VideoPlayerCard/index.less b/packages/biz/es/VideoPlayerCard/index.less deleted file mode 100644 index 0f87e3e..0000000 --- a/packages/biz/es/VideoPlayerCard/index.less +++ /dev/null @@ -1,30 +0,0 @@ -.zhst-biz-video-player-card { - .ant-card-head { - padding: 0 20px; - } - - .ant-card-body { - padding: 0; - overflow: hidden; - border-radius: 0; - - .zhst-image__video-view { - height: 100%; - } - } - - .card-close-button { - .ant-btn { - padding: 0 3px; - height: 22px; - color: #00000073; - } - - .ant-btn:hover { - padding: 0 3px; - height: 22px; - color: #000000e0; - } - } - -} \ No newline at end of file diff --git a/packages/biz/es/ViewLargerImageModal/ViewLargerImageModal.d.ts b/packages/biz/es/ViewLargerImageModal/ViewLargerImageModal.d.ts deleted file mode 100644 index d82a52e..0000000 --- a/packages/biz/es/ViewLargerImageModal/ViewLargerImageModal.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react'; -import { ModalProps, SpaceProps } from 'antd'; -import './index.less'; -type ViewLargerImageModalParams = { - imgSrc?: string; - warningData?: { - label?: string; - value?: string; - }[]; -}; -export interface ViewLargerImageModalRef { - show: (params?: ViewLargerImageModalParams) => void; - handleCancel: () => void; -} -export interface ViewLargerImageModalProps { - imgStyle?: React.CSSProperties; - downloadImg?: (imgSrc?: string) => void; - title?: string; - downloadText?: string; - modalProps?: ModalProps; - spaceProps?: SpaceProps; -} -export declare const ViewLargerImageModal: React.ForwardRefExoticComponent>; -export default ViewLargerImageModal; -export declare const useViewLargerImageModal: () => React.RefObject; diff --git a/packages/biz/es/ViewLargerImageModal/ViewLargerImageModal.js b/packages/biz/es/ViewLargerImageModal/ViewLargerImageModal.js deleted file mode 100644 index 07638be..0000000 --- a/packages/biz/es/ViewLargerImageModal/ViewLargerImageModal.js +++ /dev/null @@ -1,106 +0,0 @@ -function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } -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); } -function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } -function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } -function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } -import React, { useImperativeHandle, useRef, useState, forwardRef } from 'react'; -import { Modal, Space } from 'antd'; -import theme from 'antd/lib/theme'; -import { DownloadOutlined } from '@ant-design/icons'; -import "./index.less"; -export var ViewLargerImageModal = /*#__PURE__*/forwardRef(function (props, ref) { - var modalProps = props.modalProps, - downloadImg = props.downloadImg, - imgStyle = props.imgStyle, - _props$title = props.title, - title = _props$title === void 0 ? '预警大图' : _props$title, - _props$downloadText = props.downloadText, - downloadText = _props$downloadText === void 0 ? '下载大图' : _props$downloadText, - spaceProps = props.spaceProps; - var useToken = theme.useToken; - var _useToken = useToken(), - token = _useToken.token; - var _useState = useState(false), - _useState2 = _slicedToArray(_useState, 2), - open = _useState2[0], - setOpen = _useState2[1]; - var _useState3 = useState(), - _useState4 = _slicedToArray(_useState3, 2), - imgSrc = _useState4[0], - setImgSrc = _useState4[1]; - var _useState5 = useState(), - _useState6 = _slicedToArray(_useState5, 2), - warningData = _useState6[0], - setWarningData = _useState6[1]; - var handleCancel = function handleCancel() { - setOpen(false); - }; - useImperativeHandle(ref, function () { - return { - show: function show(_params) { - setOpen(true); - setImgSrc(_params === null || _params === void 0 ? void 0 : _params.imgSrc); - setWarningData(_params === null || _params === void 0 ? void 0 : _params.warningData); - }, - handleCancel: handleCancel - }; - }); - return /*#__PURE__*/React.createElement(Modal, _extends({ - className: "zhst-biz-view-warning-larger-image-modal", - open: open, - destroyOnClose: true, - title: title, - width: "1029px", - footer: null, - onCancel: handleCancel - }, modalProps), /*#__PURE__*/React.createElement(Space, _extends({ - size: 0, - styles: { - item: { - backgroundColor: '#F6F9FAFF' - } - } - }, spaceProps), /*#__PURE__*/React.createElement("img", { - alt: title, - src: imgSrc, - style: _objectSpread({ - width: 789, - height: 444, - display: 'block' - }, imgStyle) - }), /*#__PURE__*/React.createElement("div", { - className: "right-context" - }, warningData === null || warningData === void 0 ? void 0 : warningData.map(function (_ref) { - var label = _ref.label, - value = _ref.value; - return /*#__PURE__*/React.createElement("div", { - key: label - }, /*#__PURE__*/React.createElement("span", { - className: "context-key" - }, "".concat(label, ": ")), value); - }), imgSrc && downloadImg && /*#__PURE__*/React.createElement("div", { - className: "img-download", - style: { - color: token.colorPrimary - }, - onClick: function onClick() { - return downloadImg === null || downloadImg === void 0 ? void 0 : downloadImg(imgSrc); - } - }, /*#__PURE__*/React.createElement(DownloadOutlined, null), /*#__PURE__*/React.createElement("span", { - style: { - paddingLeft: 3 - } - }, downloadText))))); -}); -export default ViewLargerImageModal; -export var useViewLargerImageModal = function useViewLargerImageModal() { - return useRef(null); -}; \ No newline at end of file diff --git a/packages/biz/es/ViewLargerImageModal/index.d.ts b/packages/biz/es/ViewLargerImageModal/index.d.ts deleted file mode 100644 index 417e8be..0000000 --- a/packages/biz/es/ViewLargerImageModal/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import ViewLargerImageModal, { useViewLargerImageModal } from './ViewLargerImageModal'; -export type { ViewLargerImageModalRef, ViewLargerImageModalProps } from './ViewLargerImageModal'; -export default ViewLargerImageModal; -export { useViewLargerImageModal }; diff --git a/packages/biz/es/ViewLargerImageModal/index.js b/packages/biz/es/ViewLargerImageModal/index.js deleted file mode 100644 index baa9ea1..0000000 --- a/packages/biz/es/ViewLargerImageModal/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import ViewLargerImageModal, { useViewLargerImageModal } from "./ViewLargerImageModal"; -export default ViewLargerImageModal; -export { useViewLargerImageModal }; \ No newline at end of file diff --git a/packages/biz/es/ViewLargerImageModal/index.less b/packages/biz/es/ViewLargerImageModal/index.less deleted file mode 100644 index 32363d0..0000000 --- a/packages/biz/es/ViewLargerImageModal/index.less +++ /dev/null @@ -1,62 +0,0 @@ -.zhst-biz-view-warning-larger-image-modal { - font-family: MicrosoftYaHei; - - .ant-modal-content { - padding: 0; - height: 492px; - border-radius: 6px; - overflow: hidden; - - .ant-modal-close { - top: 14px; - right: 16px; - } - - .ant-modal-header { - height: 48px; - line-height: 48px; - margin-bottom: 0; - - .ant-modal-title { - height: 100%; - line-height: 48px; - font-weight: bold; - padding-left: 20px; - } - } - - .ant-modal-body { - height: 444px; - - >div { - width: 100%; - height: 100%; - align-items: flex-start; - - >div:nth-child(2) { - position: relative; - flex: 1; - box-sizing: border-box; - height: 100%; - padding: 30px 16px; - - .right-context>div { - margin-bottom: 20px; - } - - .right-context .context-key { - font-weight: bold; - } - - .img-download { - position: absolute; - bottom: 0; - cursor: pointer; - } - - } - - } - } - } -} \ No newline at end of file diff --git a/packages/biz/es/WarningRecordCard/WarningRecordCard.d.ts b/packages/biz/es/WarningRecordCard/WarningRecordCard.d.ts deleted file mode 100644 index 966998b..0000000 --- a/packages/biz/es/WarningRecordCard/WarningRecordCard.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { CardProps } from 'antd'; -import React from 'react'; -import './index.less'; -export interface IRecord { - imgSrc?: string; - id?: string; - /** - * 预警类型 - */ - warningType?: string; - warningInfo?: string[]; - boxId: string; - position: string; - cabietId?: string; - cabietText?: string; - warningTime?: string; - warningTimestamp?: string | number; - warningTimeFormat?: string; -} -export interface WarningRecordCardProps { - record?: IRecord; - onRecordClick?: (record?: IRecord) => void; - style?: React.CSSProperties; - cardProps?: CardProps; - selectedRecordId?: string; - cardStyle?: React.CSSProperties; - imgStyle?: React.CSSProperties; -} -export declare const WarningRecordCard: React.FC; -export default WarningRecordCard; diff --git a/packages/biz/es/WarningRecordCard/WarningRecordCard.js b/packages/biz/es/WarningRecordCard/WarningRecordCard.js deleted file mode 100644 index 20a6f82..0000000 --- a/packages/biz/es/WarningRecordCard/WarningRecordCard.js +++ /dev/null @@ -1,89 +0,0 @@ -function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } -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); } -function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } -function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -import { Card, Space, Divider } from 'antd'; -import { theme } from 'antd/lib'; -import React from 'react'; -import dayjs from 'dayjs'; -import "./index.less"; -; -; -export var WarningRecordCard = function WarningRecordCard(props) { - var componentName = "zhst-biz-warning-record-card"; - var record = props.record, - onRecordClick = props.onRecordClick, - style = props.style, - cardProps = props.cardProps, - selectedRecordId = props.selectedRecordId, - cardStyle = props.cardStyle, - imgStyle = props.imgStyle; - var _ref = record || {}, - imgSrc = _ref.imgSrc, - id = _ref.id, - warningType = _ref.warningType, - _ref$warningInfo = _ref.warningInfo, - warningInfo = _ref$warningInfo === void 0 ? [] : _ref$warningInfo, - cabietText = _ref.cabietText, - warningTime = _ref.warningTime, - warningTimestamp = _ref.warningTimestamp, - _ref$warningTimeForma = _ref.warningTimeFormat, - warningTimeFormat = _ref$warningTimeForma === void 0 ? 'YYYY-MM-DD HH:mm:ss' : _ref$warningTimeForma; - var formattedDate = warningTimestamp ? dayjs(warningTimestamp).format(warningTimeFormat) : ''; - var warningTimeShow = warningTime ? warningTime : formattedDate; - var useToken = theme.useToken; - var _useToken = useToken(), - token = _useToken.token; - var selectedBorderStyle = { - border: "2px solid ".concat(token.colorPrimary), - boxShadow: " 0px 2px 9px 0px rgba(0,0,0,0.16)" - }; - var selectedCardStyle = _objectSpread({}, selectedRecordId === (record === null || record === void 0 ? void 0 : record.id) ? selectedBorderStyle : {}); - var handleClick = function handleClick() { - onRecordClick === null || onRecordClick === void 0 || onRecordClick(record); - }; - return /*#__PURE__*/React.createElement("div", { - className: componentName, - key: id, - onClick: handleClick, - style: style - }, /*#__PURE__*/React.createElement(Card, _extends({ - cover: /*#__PURE__*/React.createElement("img", { - alt: "\u9884\u8B66\u56FE", - src: imgSrc, - style: _objectSpread({ - width: 336, - height: 203, - borderRadius: 0 - }, imgStyle) - }), - style: _objectSpread(_objectSpread({ - width: 356, - height: 302, - padding: 10, - borderRadius: 4 - }, selectedCardStyle), cardStyle) - }, cardProps), /*#__PURE__*/React.createElement("div", { - className: "left-context" - }, /*#__PURE__*/React.createElement("div", { - className: "warning-type" - }, warningType), /*#__PURE__*/React.createElement(Space, { - size: 0, - split: /*#__PURE__*/React.createElement(Divider, { - type: "vertical" - }) - }, warningInfo === null || warningInfo === void 0 ? void 0 : warningInfo.map(function (item, index) { - return /*#__PURE__*/React.createElement("div", { - key: index, - className: "info-item" - }, item); - })), /*#__PURE__*/React.createElement("div", { - className: "warning-time" - }, warningTimeShow)), /*#__PURE__*/React.createElement("div", { - className: "cabietInfo" - }, cabietText))); -}; -export default WarningRecordCard; \ No newline at end of file diff --git a/packages/biz/es/WarningRecordCard/index.d.ts b/packages/biz/es/WarningRecordCard/index.d.ts deleted file mode 100644 index 8b82d36..0000000 --- a/packages/biz/es/WarningRecordCard/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import WarningRecordCard from './WarningRecordCard'; -export type { IRecord, WarningRecordCardProps } from './WarningRecordCard'; -export default WarningRecordCard; diff --git a/packages/biz/es/WarningRecordCard/index.js b/packages/biz/es/WarningRecordCard/index.js deleted file mode 100644 index 36c3c58..0000000 --- a/packages/biz/es/WarningRecordCard/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import WarningRecordCard from "./WarningRecordCard"; -export default WarningRecordCard; \ No newline at end of file diff --git a/packages/biz/es/WarningRecordCard/index.less b/packages/biz/es/WarningRecordCard/index.less deleted file mode 100644 index 7cfba38..0000000 --- a/packages/biz/es/WarningRecordCard/index.less +++ /dev/null @@ -1,27 +0,0 @@ -.zhst-biz-warning-record-card { - cursor: pointer; - - .ant-card-body { - padding: 0; - font-family: MicrosoftYaHei; - line-height: 19px; - display: flex; - margin-top: 10px; - - .left-context { - flex: 1; - - >div { - margin-top: 6px; - } - - >div:nth-child(1) { - margin-top: 0; - } - } - - .warning-type { - font-weight: bold; - } - } -} \ No newline at end of file diff --git a/packages/biz/es/boxSelectTree/boxSelectTree.d.ts b/packages/biz/es/boxSelectTree/boxSelectTree.d.ts deleted file mode 100644 index 0690e8f..0000000 --- a/packages/biz/es/boxSelectTree/boxSelectTree.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { FC } from 'react'; -import { TabsProps } from 'antd'; -import type { BoxPanelProps } from './components/boxPanel'; -export interface BoxSelectTreeProps extends BoxPanelProps { - onTabChange?: (e: any) => void; - tabsProps?: TabsProps; -} -declare const BoxSelectTree: FC; -export default BoxSelectTree; diff --git a/packages/biz/es/boxSelectTree/boxSelectTree.js b/packages/biz/es/boxSelectTree/boxSelectTree.js deleted file mode 100644 index a08972a..0000000 --- a/packages/biz/es/boxSelectTree/boxSelectTree.js +++ /dev/null @@ -1,92 +0,0 @@ -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); } -import React from 'react'; -import { Tabs } from 'antd'; -import BoxPanel from "./components/boxPanel"; -var BoxSelectTree = function BoxSelectTree(props) { - var data = props.data, - _props$boxDataSource = props.boxDataSource, - boxDataSource = _props$boxDataSource === void 0 ? [] : _props$boxDataSource, - onTabChange = props.onTabChange, - onSearch = props.onSearch, - onItemCheck = props.onItemCheck, - onItemSelect = props.onItemSelect, - onBoxBatchDelete = props.onBoxBatchDelete, - onBoxDelete = props.onBoxDelete, - onCreateSubmit = props.onCreateSubmit, - onClockClick = props.onClockClick, - onImport = props.onImport, - onCreate = props.onCreate, - tabsProps = props.tabsProps, - searchInputProps = props.searchInputProps, - treeProps = props.treeProps, - customImport = props.customImport, - showOptions = props.showOptions, - extraBtns = props.extraBtns; - var items = [{ - key: '1', - label: /*#__PURE__*/React.createElement("div", { - style: { - textAlign: 'center', - width: '160px' - } - }, "\u76D2\u5B50\u7EC4"), - children: /*#__PURE__*/React.createElement(BoxPanel, { - searchInputProps: searchInputProps, - boxDataSource: boxDataSource, - treeProps: treeProps, - data: data, - onCreate: onCreate, - onCreateSubmit: onCreateSubmit, - onBoxBatchDelete: onBoxBatchDelete, - onBoxDelete: onBoxDelete, - onSearch: onSearch, - onItemCheck: onItemCheck, - onItemSelect: onItemSelect, - showOptions: showOptions, - customImport: customImport, - extraBtns: extraBtns, - onClockClick: onClockClick, - onImport: onImport - }) - }, { - key: '2', - label: /*#__PURE__*/React.createElement("div", { - style: { - textAlign: 'center', - width: '160px' - } - }, "\u76D2\u5B50"), - children: /*#__PURE__*/React.createElement(BoxPanel, { - boxDataSource: boxDataSource, - searchInputProps: searchInputProps, - treeProps: treeProps, - data: data, - onCreate: onCreate, - onBoxBatchDelete: onBoxBatchDelete, - onCreateSubmit: onCreateSubmit, - onBoxDelete: onBoxDelete, - onSearch: onSearch, - onItemCheck: onItemCheck, - onItemSelect: onItemSelect, - showOptions: showOptions, - customImport: customImport, - extraBtns: extraBtns, - onClockClick: onClockClick, - onImport: onImport - }) - }]; - return /*#__PURE__*/React.createElement(Tabs, _extends({ - defaultActiveKey: "1", - centered: true, - items: items, - onChange: onTabChange, - tabBarGutter: 0, - indicator: { - size: function size(origin) { - return origin; - }, - align: 'center' - } - }, tabsProps)); -}; -export default BoxSelectTree; \ No newline at end of file diff --git a/packages/biz/es/boxSelectTree/components/boxPanel/index.js b/packages/biz/es/boxSelectTree/components/boxPanel/index.js deleted file mode 100644 index fa2318c..0000000 --- a/packages/biz/es/boxSelectTree/components/boxPanel/index.js +++ /dev/null @@ -1,290 +0,0 @@ -function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } -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); } -function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } -function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } -import React, { useState, useRef } from 'react'; -import { Button, Divider, Input, Space } from 'antd'; -import { ModalForm, ProFormText } from '@ant-design/pro-components'; -import { ClockCircleOutlined, CloseCircleOutlined, DiffOutlined, FolderAddOutlined, ImportOutlined, SwitcherOutlined } from '@ant-design/icons'; -import TreeTransferModal from "../../../treeTransferModal"; -import BoxTree from "../../../tree"; -var BoxPanel = function BoxPanel(props) { - var _createFormRef$curren4, _treeProps$checkedKey; - var searchInputProps = props.searchInputProps, - _props$showOptions = props.showOptions, - showOptions = _props$showOptions === void 0 ? true : _props$showOptions, - extraBtns = props.extraBtns, - _props$data = props.data, - data = _props$data === void 0 ? [] : _props$data, - onSearch = props.onSearch, - treeProps = props.treeProps, - onItemCheck = props.onItemCheck, - onItemSelect = props.onItemSelect, - onCreateSubmit = props.onCreateSubmit, - onBoxBatchDelete = props.onBoxBatchDelete, - onBoxDelete = props.onBoxDelete, - onClockClick = props.onClockClick, - onImport = props.onImport, - onBatch = props.onBatch, - onCreate = props.onCreate, - boxDataSource = props.boxDataSource, - customImport = props.customImport; - var _useState = useState(false), - _useState2 = _slicedToArray(_useState, 2), - isTreeCheckable = _useState2[0], - setIsTreeCheckable = _useState2[1]; - var _useState3 = useState([]), - _useState4 = _slicedToArray(_useState3, 2), - targetItems = _useState4[0], - setTargetItems = _useState4[1]; - var _useState5 = useState(false), - _useState6 = _slicedToArray(_useState5, 2), - boxChoiceOpen = _useState6[0], - setBoxChoiceOpen = _useState6[1]; - var _useState7 = useState([]), - _useState8 = _slicedToArray(_useState7, 2), - checkedKeys = _useState8[0], - setCheckedKeys = _useState8[1]; - var createFormRef = useRef(); - - /** - * 修改选择状态 - * @param _data - */ - var handleCheckable = function handleCheckable() { - setIsTreeCheckable(function (pre) { - return !pre; - }); - }; - var onTreeCheck = function onTreeCheck(keys, info) { - var _targetItems = []; - setCheckedKeys(keys); - info.checkedNodes.forEach(function (o) { - o.isLeaf && _targetItems.push(o); - }); - setTargetItems(_targetItems); - }; - - /** - * 删除 - * @param key - * @param param1 - */ - var onItemDelete = function onItemDelete(key, _ref) { - var keys = _ref.keys; - setCheckedKeys(function (pre) { - var newKeys = pre.filter(function (_key) { - return !keys.includes(_key); - }); - return newKeys; - }); - setTargetItems(function (pre) { - return pre.filter(function (o) { - return o.key !== key; - }); - }); - }; - - // 盒子点击确定 - var onBoxChoiceOk = /*#__PURE__*/function () { - var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(data) { - var _createFormRef$curren, _createFormRef$curren2, _createFormRef$curren3; - return _regeneratorRuntime().wrap(function _callee$(_context) { - while (1) switch (_context.prev = _context.next) { - case 0: - (_createFormRef$curren = createFormRef.current) === null || _createFormRef$curren === void 0 || _createFormRef$curren.setFieldValue('boxList', data); - (_createFormRef$curren2 = createFormRef.current) === null || _createFormRef$curren2 === void 0 || _createFormRef$curren2.setFieldValue('boxName', 123); - console.log((_createFormRef$curren3 = createFormRef.current) === null || _createFormRef$curren3 === void 0 ? void 0 : _createFormRef$curren3.getFieldValue('boxList')); - setBoxChoiceOpen(false); - case 4: - case "end": - return _context.stop(); - } - }, _callee); - })); - return function onBoxChoiceOk(_x) { - return _ref2.apply(this, arguments); - }; - }(); - - // 盒子选择重置 - var onBoxChoiceReset = function onBoxChoiceReset() { - setCheckedKeys([]); - setTargetItems([]); - }; - return /*#__PURE__*/React.createElement("div", { - style: { - padding: '0 16px' - } - }, /*#__PURE__*/React.createElement(TreeTransferModal, { - open: boxChoiceOpen, - onCancel: function onCancel() { - return setBoxChoiceOpen(false); - }, - onRadioChange: function onRadioChange(e) { - return console.log('radio', e.target.value); - } // 顶部 radio 事件 - , - dataSource: boxDataSource // 数据源 - , - targetItems: targetItems // 右侧选中项 - , - checkedKeys: checkedKeys // 左侧选中 - , - onReset: onBoxChoiceReset // 重置按钮事件 - , - onOk: onBoxChoiceOk // 确定按钮事件 - , - onTreeCheck: onTreeCheck // 树check选中事件 - , - onItemDelete: onItemDelete // 右侧点击删除事件 - }), /*#__PURE__*/React.createElement(Space, { - size: 12, - direction: "vertical", - style: { - width: '100%' - } - }, /*#__PURE__*/React.createElement(Space, { - size: 4, - style: { - width: '100%', - justifyContent: 'space-between' - } - }, /*#__PURE__*/React.createElement(Input, _extends({ - size: "middle", - onChange: function onChange(e) { - return onSearch === null || onSearch === void 0 ? void 0 : onSearch(e); - }, - placeholder: "\u8BF7\u8F93\u5165\u76D2\u5B50\u540D\u79F0" - }, searchInputProps)), customImport || /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, { - type: "text", - onClick: function onClick() { - return (onBatch === null || onBatch === void 0 ? void 0 : onBatch()) || handleCheckable(); - }, - icon: isTreeCheckable ? /*#__PURE__*/React.createElement(SwitcherOutlined, null) : /*#__PURE__*/React.createElement(DiffOutlined, null) - }), /*#__PURE__*/React.createElement(Button, { - type: "text", - onClick: function onClick() { - return onClockClick === null || onClockClick === void 0 ? void 0 : onClockClick(); - }, - icon: /*#__PURE__*/React.createElement(ClockCircleOutlined, null) - }))), showOptions && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Space, { - align: "center" - }, /*#__PURE__*/React.createElement(Button, { - type: "text", - style: { - padding: '4px 8px' - }, - onClick: function onClick() { - return onImport === null || onImport === void 0 ? void 0 : onImport(); - }, - icon: /*#__PURE__*/React.createElement(ImportOutlined, null) - }, "\u5BFC\u5165\u76D2\u5B50"), /*#__PURE__*/React.createElement(Divider, { - type: "vertical", - style: { - margin: '8px 0' - } - }), onCreate ? /*#__PURE__*/React.createElement(Button, { - onClick: onCreate, - type: "text", - style: { - padding: '4px 8px' - }, - icon: /*#__PURE__*/React.createElement(FolderAddOutlined, null) - }, "\u65B0\u5EFA\u7EC4") : /*#__PURE__*/React.createElement(ModalForm, { - width: '600px', - open: onCreate ? false : undefined, - formRef: createFormRef, - title: "\u65B0\u5EFA\u7EC4", - modalProps: { - destroyOnClose: true - }, - layout: "horizontal", - labelCol: { - span: 6 - }, - wrapperCol: { - span: 18 - }, - trigger: /*#__PURE__*/React.createElement(Button, { - type: "text", - style: { - padding: '4px 8px' - }, - icon: /*#__PURE__*/React.createElement(FolderAddOutlined, null) - }, "\u65B0\u5EFA\u7EC4"), - submitter: { - searchConfig: { - submitText: '确定', - resetText: '取消' - } - }, - onFinish: onCreateSubmit - }, /*#__PURE__*/React.createElement(ProFormText, { - rules: [{ - required: true, - max: 20 - }, { - pattern: /^[^\s]*$/g, - message: '禁止输入空格' - }], - fieldProps: { - showCount: true - }, - width: "md", - name: "name", - label: "\u76D2\u5B50\u7EC4\u540D\u79F0", - placeholder: "\u8BF7\u8F93\u5165\u76D2\u5B50\u540D\u79F0" - }), /*#__PURE__*/React.createElement(ProFormText, { - width: "md", - name: "boxList", - label: "\u76D2\u5B50\u9009\u62E9", - fieldProps: { - readOnly: true, - value: "\u5DF2\u9009\u62E9".concat(((_createFormRef$curren4 = createFormRef.current) === null || _createFormRef$curren4 === void 0 || (_createFormRef$curren4 = _createFormRef$curren4.getFieldValue('boxList')) === null || _createFormRef$curren4 === void 0 ? void 0 : _createFormRef$curren4.length) || 0, "\u4E2A\u76D2\u5B50"), - suffix: /*#__PURE__*/React.createElement(Space, null, /*#__PURE__*/React.createElement("a", { - onClick: function onClick() { - var _createFormRef$curren5; - (_createFormRef$curren5 = createFormRef.current) === null || _createFormRef$curren5 === void 0 || _createFormRef$curren5.setFieldValue('boxList', null); - onBoxChoiceReset(); - } - }, "\u6062\u590D\u9ED8\u8BA4"), /*#__PURE__*/React.createElement("a", { - onClick: function onClick() { - return setBoxChoiceOpen(true); - } - }, "\u8303\u56F4\u9009\u62E9")) - } - })), /*#__PURE__*/React.createElement(Divider, { - type: "vertical", - style: { - margin: '8px 0' - } - }), /*#__PURE__*/React.createElement(Button, { - danger: true, - type: "text", - style: { - padding: '4px 8px' - }, - icon: /*#__PURE__*/React.createElement(CloseCircleOutlined, null), - disabled: (treeProps === null || treeProps === void 0 || (_treeProps$checkedKey = treeProps.checkedKeys) === null || _treeProps$checkedKey === void 0 ? void 0 : _treeProps$checkedKey.length) <= 0, - onClick: onBoxBatchDelete - }, "\u5220\u9664")), /*#__PURE__*/React.createElement(Divider, { - style: { - margin: 0 - } - })), extraBtns, /*#__PURE__*/React.createElement(BoxTree, _extends({ - treeCheckable: isTreeCheckable, - data: data, - onItemSelect: onItemSelect, - onItemCheck: onItemCheck, - onItemDelete: onBoxDelete - }, treeProps)))); -}; -export default BoxPanel; \ No newline at end of file diff --git a/packages/biz/es/boxSelectTree/index.d.ts b/packages/biz/es/boxSelectTree/index.d.ts deleted file mode 100644 index 2ff0f1e..0000000 --- a/packages/biz/es/boxSelectTree/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import BoxSelectTree from './boxSelectTree'; -export type { BoxSelectTreeProps } from './boxSelectTree'; -export default BoxSelectTree; diff --git a/packages/biz/es/boxSelectTree/index.js b/packages/biz/es/boxSelectTree/index.js deleted file mode 100644 index c537873..0000000 --- a/packages/biz/es/boxSelectTree/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import BoxSelectTree from "./boxSelectTree"; -export default BoxSelectTree; \ No newline at end of file diff --git a/packages/biz/es/boxSelectTree/mock.d.ts b/packages/biz/es/boxSelectTree/mock.d.ts deleted file mode 100644 index 84026eb..0000000 --- a/packages/biz/es/boxSelectTree/mock.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { TreeDataNode } from "antd"; -export declare const treeData: TreeDataNode[]; diff --git a/packages/biz/es/boxSelectTree/mock.js b/packages/biz/es/boxSelectTree/mock.js deleted file mode 100644 index f05520b..0000000 --- a/packages/biz/es/boxSelectTree/mock.js +++ /dev/null @@ -1,22 +0,0 @@ -export var treeData = [{ - title: '全部盒子', - key: '0-0', - children: [{ - title: '盒子组1', - key: '0-0-0', - children: [{ - title: '摄像头1', - key: '0-0-0-0' - }, { - title: '摄像头2', - key: '0-0-0-1' - }] - }, { - title: '盒子组2', - key: '0-0-1', - children: [{ - title: '摄像头4', - key: '0-0-1-0' - }] - }] -}]; \ No newline at end of file diff --git a/packages/biz/es/hooks/useIntelligentTracking/index.d.ts b/packages/biz/es/hooks/useIntelligentTracking/index.d.ts deleted file mode 100644 index c1e54ef..0000000 --- a/packages/biz/es/hooks/useIntelligentTracking/index.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { Dayjs as Moment } from 'dayjs'; -export declare const getDefaultRadius: () => number; -export declare const setDefaultRadius: (radius: number) => void; -export declare const setSearchIntervalDuration: (duration: number) => void; -export declare const getSearchIntervalDuration: (time: number) => number; -export declare const operateTrackById: (smartTrackId: number, operationType: OperationType) => Promise; -export declare const deleteTrackById: (smartTrackId: number) => Promise; -export declare const modifyTrackImgs: (smartTrackId: number, images: Array) => Promise; -export declare const modifyTrackConf: (conf: any, smartTrackId: number) => Promise; -export declare const getTrackTaskById: (smartTrackId?: number) => Promise; -export declare const getTackDetailInfo: (smartTrackId?: number) => Promise; -export declare const getTaskCameraByCenterAndPower: (value: { - taskPower: { - facePower: number; - bodyPower: number; - }; - cameraInfos: Array; - center: [number, number]; -}) => Promise; -/**创建追踪任务 */ -export declare const createIntelligentTrack: (value: { - images: Array; - deviceIds: Array; - circleCenter: [number, number]; - model: number; - circleRadius: number; - facePower?: number; - bodyPower?: number; - historyTime?: [Moment, Moment]; - topping?: boolean; -}) => Promise; -export declare const emitHeartbeat: (smartTrackId: number) => Promise; -export declare const ModifyTrackCameras: (value: { - smartTrackId: number; - deviceIds: Array; - centerPoint: [number, number]; -}) => Promise; -export declare const setIntelligentTrackCircleInfo: (smartTrackId: number, circleCenter: [number, number]) => Promise; -export declare const getTackCameraInfo: (value: { - circleCenter: [Moment, Moment]; - radius: number; - zoom: number; -}) => Promise; -export declare const getCameraInfoByCircle: (circleCenter: any, radius: any, zoom?: number) => Promise; -export declare const taskInfoToSearchItem: (taskInfo: any) => any[]; diff --git a/packages/biz/es/hooks/useIntelligentTracking/index.js b/packages/biz/es/hooks/useIntelligentTracking/index.js deleted file mode 100644 index 5a3264e..0000000 --- a/packages/biz/es/hooks/useIntelligentTracking/index.js +++ /dev/null @@ -1,618 +0,0 @@ -function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } -function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } -function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } -function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } -function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } -//@ts-nocheck -import * as turf from '@turf/turf'; -import { getListTaskStatus, getCameraStatusFunc } from "../useTaskState"; -import Tree from '@common/components/CameraTree/Tree'; -import doRequest from "../../utils/request"; -import { message } from '@zhst/meta'; -import { SearchCamera } from '@common/components/CameraTree/utils'; -import { get, isEmpty } from '@zhst/func'; -//默认取值 -var defaultFaceThreshold = 0.68; -var defaultBodyThreshold = 0.7; -//下边栏人脸数量,默认为5 -var defaultFaceResultNum = 5; -//追踪圈半径长度(m),默认为150 -var defaultRadius = 0.15; -//查询周期(s)默认是10,,只负责保存做展示用 -var defaultQueryCycle = 10; - -//获取默认半径 -export var getDefaultRadius = function getDefaultRadius() { - return defaultRadius; -}; -//设置默认半径 -export var setDefaultRadius = function setDefaultRadius(radius) { - defaultRadius = radius; -}; -//检索间隔时长 -var searchIntervalDuration = 10; -//设置检索时长 -export var setSearchIntervalDuration = function setSearchIntervalDuration(duration) { - searchIntervalDuration = duration; -}; -//获取检索时长 -export var getSearchIntervalDuration = function getSearchIntervalDuration(time) { - return time; -}; - -//通过id停止或启动任务 -export var operateTrackById = /*#__PURE__*/function () { - var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(smartTrackId, operationType) { - var data; - return _regeneratorRuntime().wrap(function _callee$(_context) { - while (1) switch (_context.prev = _context.next) { - case 0: - _context.prev = 0; - data = { - operationType: operationType, - smartTrackId: smartTrackId - }; - _context.next = 4; - return doRequest({ - method: 'PUT', - url: '/singer.SmartTrackService/OperationSmartTrack', - data: data - }); - case 4: - message.success('操作成功'); - _context.next = 11; - break; - case 7: - _context.prev = 7; - _context.t0 = _context["catch"](0); - console.error(_context.t0); - message.success('操作失败'); - case 11: - case "end": - return _context.stop(); - } - }, _callee, null, [[0, 7]]); - })); - return function operateTrackById(_x, _x2) { - return _ref.apply(this, arguments); - }; -}(); -//通过id删除追踪任务 -export var deleteTrackById = /*#__PURE__*/function () { - var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(smartTrackId) { - return _regeneratorRuntime().wrap(function _callee2$(_context2) { - while (1) switch (_context2.prev = _context2.next) { - case 0: - _context2.prev = 0; - _context2.next = 3; - return doRequest({ - method: 'DELETE', - url: '/singer.SmartTrackService/DeleteSmartTrack', - data: { - smartTrackId: smartTrackId - } - }); - case 3: - _context2.next = 8; - break; - case 5: - _context2.prev = 5; - _context2.t0 = _context2["catch"](0); - console.error(_context2.t0); - case 8: - case "end": - return _context2.stop(); - } - }, _callee2, null, [[0, 5]]); - })); - return function deleteTrackById(_x3) { - return _ref2.apply(this, arguments); - }; -}(); - -//编辑追踪任务图片 -export var modifyTrackImgs = /*#__PURE__*/function () { - var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(smartTrackId, images) { - return _regeneratorRuntime().wrap(function _callee3$(_context3) { - while (1) switch (_context3.prev = _context3.next) { - case 0: - _context3.prev = 0; - _context3.next = 3; - return doRequest({ - method: 'PUT', - url: '/singer.SmartTrackService/ModifyTrackImg', - data: { - images: images, - smartTrackId: smartTrackId - } - }); - case 3: - _context3.next = 8; - break; - case 5: - _context3.prev = 5; - _context3.t0 = _context3["catch"](0); - console.log('err', _context3.t0); - case 8: - case "end": - return _context3.stop(); - } - }, _callee3, null, [[0, 5]]); - })); - return function modifyTrackImgs(_x4, _x5) { - return _ref3.apply(this, arguments); - }; -}(); -//编辑高级设置 -export var modifyTrackConf = /*#__PURE__*/function () { - var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(conf, smartTrackId) { - return _regeneratorRuntime().wrap(function _callee4$(_context4) { - while (1) switch (_context4.prev = _context4.next) { - case 0: - _context4.prev = 0; - _context4.next = 3; - return doRequest({ - method: 'PUT', - url: '/singer.SmartTrackService/ModifyTrackConf', - data: { - conf: conf, - smartTrackId: smartTrackId - } - }); - case 3: - _context4.next = 8; - break; - case 5: - _context4.prev = 5; - _context4.t0 = _context4["catch"](0); - console.log('err', _context4.t0); - case 8: - case "end": - return _context4.stop(); - } - }, _callee4, null, [[0, 5]]); - })); - return function modifyTrackConf(_x6, _x7) { - return _ref4.apply(this, arguments); - }; -}(); -//通过id获取追踪任务 -export var getTrackTaskById = /*#__PURE__*/function () { - var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() { - var smartTrackId, - data, - req, - _args5 = arguments; - return _regeneratorRuntime().wrap(function _callee5$(_context5) { - while (1) switch (_context5.prev = _context5.next) { - case 0: - smartTrackId = _args5.length > 0 && _args5[0] !== undefined ? _args5[0] : 0; - _context5.prev = 1; - data = smartTrackId ? { - smartTrackId: smartTrackId - } : {}; - _context5.next = 5; - return doRequest({ - method: 'POST', - url: '/singer.SmartTrackService/GetSmartTrack', - data: data - }); - case 5: - req = _context5.sent; - return _context5.abrupt("return", req); - case 9: - _context5.prev = 9; - _context5.t0 = _context5["catch"](1); - console.error(_context5.t0); - case 12: - case "end": - return _context5.stop(); - } - }, _callee5, null, [[1, 9]]); - })); - return function getTrackTaskById() { - return _ref5.apply(this, arguments); - }; -}(); - -//获取追踪实况 -export var getTackDetailInfo = /*#__PURE__*/function () { - var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() { - var smartTrackId, - data, - req, - _args6 = arguments; - return _regeneratorRuntime().wrap(function _callee6$(_context6) { - while (1) switch (_context6.prev = _context6.next) { - case 0: - smartTrackId = _args6.length > 0 && _args6[0] !== undefined ? _args6[0] : 0; - data = smartTrackId ? { - smartTrackId: smartTrackId - } : {}; - _context6.next = 4; - return doRequest({ - method: 'POST', - url: '/singer.SmartTrackService/GetTrackOverView', - data: data - }); - case 4: - req = _context6.sent; - return _context6.abrupt("return", req); - case 6: - case "end": - return _context6.stop(); - } - }, _callee6); - })); - return function getTackDetailInfo() { - return _ref6.apply(this, arguments); - }; -}(); - -//根据传入的算力,圆心,摄像头信息计算出最后需要的摄像头信息 -export var getTaskCameraByCenterAndPower = /*#__PURE__*/function () { - var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(value) { - var realCameraInfos, realPreprocessInfos, _yield$getListTaskSta, taskStatus, runRealCameraInfos, from; - return _regeneratorRuntime().wrap(function _callee7$(_context7) { - while (1) switch (_context7.prev = _context7.next) { - case 0: - realCameraInfos = value['cameraInfos']; //先通过摄像头id拿预处理信息 - realPreprocessInfos = []; - if (isEmpty(realCameraInfos)) { - _context7.next = 8; - break; - } - _context7.next = 5; - return getListTaskStatus(); - case 5: - _yield$getListTaskSta = _context7.sent; - taskStatus = _yield$getListTaskSta.taskStatus; - realPreprocessInfos = getCameraStatusFunc(taskStatus); - case 8: - //去除由实时开启的摄像头 - //缓存下已经开启的 - runRealCameraInfos = []; - realCameraInfos = realCameraInfos.filter(function (v) { - if (Tree.judgeOccupyPowerById(v['id'], realPreprocessInfos)) { - runRealCameraInfos.push(v); - } - return !Tree.judgeOccupyPowerById(v['id'], realPreprocessInfos); - }); - //算力不够时选择离中心点最近的 - from = turf.point(value['center']); - if (realCameraInfos.length > value['taskPower']['bodyPower']) { - realCameraInfos.map(function (v) { - var dis = turf.distance(from, turf.point([v['longitude'], v['latitude']])); - return _objectSpread(_objectSpread({}, v), {}, { - dis: dis - }); - }).sort(function (a, b) { - return a - b; - }); - realCameraInfos = realCameraInfos.slice(0, value['taskPower']['bodyPower']); - } - return _context7.abrupt("return", [].concat(runRealCameraInfos, _toConsumableArray(realCameraInfos))); - case 13: - case "end": - return _context7.stop(); - } - }, _callee7); - })); - return function getTaskCameraByCenterAndPower(_x8) { - return _ref7.apply(this, arguments); - }; -}(); - -/**创建追踪任务 */ -export var createIntelligentTrack = /*#__PURE__*/function () { - var _ref8 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(value) { - var data, res; - return _regeneratorRuntime().wrap(function _callee8$(_context8) { - while (1) switch (_context8.prev = _context8.next) { - case 0: - data = { - images: value['images'], - type: value['model'], - normalComputerPower: value['bodyPower'] || 0, - faceComputerPower: value['facePower'] || 0, - // deviceIds: ['129537'], - deviceIds: value['deviceIds'], - conf: { - faceThreshold: defaultFaceThreshold, - bodyThreshold: defaultBodyThreshold, - faceResultNum: defaultFaceResultNum, - radius: value['circleRadius'] * 1000, - queryCycle: defaultQueryCycle - }, - centerConf: { - centerX: value['circleCenter'][0], - centerY: value['circleCenter'][1] - } - }; - _context8.next = 3; - return doRequest({ - method: 'PUT', - url: '/singer.SmartTrackService/CreateSmartTrack', - data: data - }); - case 3: - res = _context8.sent; - return _context8.abrupt("return", res); - case 5: - case "end": - return _context8.stop(); - } - }, _callee8); - })); - return function createIntelligentTrack(_x9) { - return _ref8.apply(this, arguments); - }; -}(); - -//发送心跳包 -export var emitHeartbeat = /*#__PURE__*/function () { - var _ref9 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(smartTrackId) { - return _regeneratorRuntime().wrap(function _callee9$(_context9) { - while (1) switch (_context9.prev = _context9.next) { - case 0: - _context9.prev = 0; - _context9.next = 3; - return doRequest({ - method: 'POST', - url: '/singer.SmartTrackService/SmartTrackHeartBeat', - data: { - smartTrackId: smartTrackId - } - }); - case 3: - _context9.next = 8; - break; - case 5: - _context9.prev = 5; - _context9.t0 = _context9["catch"](0); - console.error(_context9.t0); - case 8: - case "end": - return _context9.stop(); - } - }, _callee9, null, [[0, 5]]); - })); - return function emitHeartbeat(_x10) { - return _ref9.apply(this, arguments); - }; -}(); - -//更改任务摄像头信息 -export var ModifyTrackCameras = /*#__PURE__*/function () { - var _ref10 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(value) { - return _regeneratorRuntime().wrap(function _callee10$(_context10) { - while (1) switch (_context10.prev = _context10.next) { - case 0: - _context10.prev = 0; - _context10.next = 3; - return setIntelligentTrackCircleInfo(value['smartTrackId'], value['centerPoint']); - case 3: - _context10.next = 5; - return doRequest({ - url: '/singer.SmartTrackService/ModifyTrackCameras', - method: 'PUT', - data: { - smartTrackId: value['smartTrackId'], - deviceIds: value['deviceIds'] - } - }); - case 5: - _context10.next = 10; - break; - case 7: - _context10.prev = 7; - _context10.t0 = _context10["catch"](0); - message.error(_context10.t0); - case 10: - case "end": - return _context10.stop(); - } - }, _callee10, null, [[0, 7]]); - })); - return function ModifyTrackCameras(_x11) { - return _ref10.apply(this, arguments); - }; -}(); - -//保存智能追踪圆的信息 -export var setIntelligentTrackCircleInfo = /*#__PURE__*/function () { - var _ref11 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(smartTrackId, circleCenter) { - return _regeneratorRuntime().wrap(function _callee11$(_context11) { - while (1) switch (_context11.prev = _context11.next) { - case 0: - _context11.prev = 0; - _context11.next = 3; - return doRequest({ - url: '/singer.SmartTrackService/ModifyTrackScopeConf', - method: 'PUT', - data: { - smartTrackId: smartTrackId, - centerConf: { - centerX: get(circleCenter, '0'), - centerY: get(circleCenter, '1') - } - } - }); - case 3: - _context11.next = 8; - break; - case 5: - _context11.prev = 5; - _context11.t0 = _context11["catch"](0); - message.error(_context11.t0); - case 8: - case "end": - return _context11.stop(); - } - }, _callee11, null, [[0, 5]]); - })); - return function setIntelligentTrackCircleInfo(_x12, _x13) { - return _ref11.apply(this, arguments); - }; -}(); - -//智能追踪的获取摄像头 -export var getTackCameraInfo = /*#__PURE__*/function () { - var _ref12 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12(value) { - var circleCameraInfos; - return _regeneratorRuntime().wrap(function _callee12$(_context12) { - while (1) switch (_context12.prev = _context12.next) { - case 0: - _context12.next = 2; - return getCameraInfoByCircle(value['circleCenter'], value['radius'], value['zoom']); - case 2: - circleCameraInfos = _context12.sent; - return _context12.abrupt("return", circleCameraInfos); - case 4: - case "end": - return _context12.stop(); - } - }, _callee12); - })); - return function getTackCameraInfo(_x14) { - return _ref12.apply(this, arguments); - }; -}(); - -//通过圆心和半径获取摄像头 -export var getCameraInfoByCircle = /*#__PURE__*/function () { - var _ref13 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee13(circleCenter, radius) { - var zoom, - centerFeature, - minx, - maxx, - miny, - maxy, - i, - point, - _yield$doRequest, - clusterPoint, - cameraIds, - _yield$SearchCamera, - cameras, - cameraInfos, - _args13 = arguments; - return _regeneratorRuntime().wrap(function _callee13$(_context13) { - while (1) switch (_context13.prev = _context13.next) { - case 0: - zoom = _args13.length > 2 && _args13[2] !== undefined ? _args13[2] : 16; - _context13.prev = 1; - centerFeature = turf.circle(turf.point(circleCenter), radius, { - units: 'kilometers', - steps: 64 - }); - minx = 0; - maxx = 0; - miny = 0; - maxy = 0; - for (i = 0; i < 4; i++) { - point = turf.destination(turf.point(circleCenter), radius, 90 * i, { - units: 'kilometers' - }).geometry.coordinates; - if (point[0] < minx || minx === 0) { - minx = point[0]; - } - if (point[0] > maxx || maxx === 0) { - maxx = point[0]; - } - if (point[1] < miny || miny === 0) { - miny = point[1]; - } - if (point[1] > maxy || maxy === 0) { - maxy = point[1]; - } - } - _context13.next = 10; - return doRequest({ - url: '/singer.DeviceService/GetClusters', - method: 'POST', - data: { - northEast: { - X: maxx, - Y: maxy - }, - southWest: { - X: minx, - Y: miny - }, - zoom: zoom - } - }); - case 10: - _yield$doRequest = _context13.sent; - clusterPoint = _yield$doRequest.clusterPoint; - cameraIds = []; - clusterPoint.forEach(function (v) { - cameraIds.push.apply(cameraIds, _toConsumableArray(v['cameraIDs'])); - }); - _context13.next = 16; - return SearchCamera({ - cameraId: cameraIds, - maxResults: cameraIds.length - }); - case 16: - _yield$SearchCamera = _context13.sent; - cameras = _yield$SearchCamera.cameras; - cameraInfos = cameras.filter(function (v) { - var cameraPoint = turf.point([get(v, 'longitude'), get(v, 'latitude')]); - return turf.booleanPointInPolygon(cameraPoint, centerFeature); - }); - return _context13.abrupt("return", cameraInfos); - case 22: - _context13.prev = 22; - _context13.t0 = _context13["catch"](1); - console.error(_context13.t0); - return _context13.abrupt("return", []); - case 26: - case "end": - return _context13.stop(); - } - }, _callee13, null, [[1, 22]]); - })); - return function getCameraInfoByCircle(_x15, _x16) { - return _ref13.apply(this, arguments); - }; -}(); - -//追踪任务转化为检索的格式 -export var taskInfoToSearchItem = function taskInfoToSearchItem(taskInfo) { - var imageList = []; - get(taskInfo, 'images', []).forEach(function (v) { - var url = get(v, 'conds.0.srcImageUrl'); - var objectId = get(v, 'conds.0.featureInfo.objectId'); - var imageItem = { - index: 0, - url: url, - objectId: objectId, - odRects: get(v, 'conds').map(function (item) { - return { - fileKey: get(item, 'objectImageUrl'), - extendRect: _objectSpread({ - algorithmVersion: get(item, 'alg', '') - }, get(item, 'rect', {})), - rect: { - algorithmVersion: get(item, 'alg', ''), - rect: get(item, 'rect', {}) - } - }; - }) - }; - imageList.push(imageItem); - }); - return imageList; -}; \ No newline at end of file diff --git a/packages/biz/es/index.d.ts b/packages/biz/es/index.d.ts deleted file mode 100644 index 743bed4..0000000 --- a/packages/biz/es/index.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -export { default as BigImageModal } from './BigImageModal'; -export type { BigImageModalProps } from './BigImageModal'; -export { default as BoxSelectTree } from './boxSelectTree'; -export type { BoxSelectTreeProps } from './boxSelectTree'; -export { default as Tree } from './tree'; -export type { BoxTreeProps, TreeData } from './tree'; -export { default as TreeTransfer } from './treeTransfer'; -export type { TreeTransferProps } from './treeTransfer'; -export { default as TreeTransferModal } from './treeTransferModal'; -export type { TreeTransferModalProps } from './treeTransferModal'; -export { default as WarningRecordCard } from './WarningRecordCard'; -export type { IRecord, WarningRecordCardProps } from './WarningRecordCard'; -export type { ViewLargerImageModalRef, ViewLargerImageModalProps } from './ViewLargerImageModal'; -export { default as ViewLargerImageModal, useViewLargerImageModal } from './ViewLargerImageModal'; -export type { VideoPlayerCardProps } from './VideoPlayerCard'; -export { default as VideoPlayerCard } from './VideoPlayerCard'; -export { default as RealTimeMonitor } from './RealTimeMonitor'; diff --git a/packages/biz/es/index.js b/packages/biz/es/index.js deleted file mode 100644 index d340720..0000000 --- a/packages/biz/es/index.js +++ /dev/null @@ -1,9 +0,0 @@ -export { default as BigImageModal } from "./BigImageModal"; -export { default as BoxSelectTree } from "./boxSelectTree"; -export { default as Tree } from "./tree"; -export { default as TreeTransfer } from "./treeTransfer"; -export { default as TreeTransferModal } from "./treeTransferModal"; -export { default as WarningRecordCard } from "./WarningRecordCard"; -export { default as ViewLargerImageModal, useViewLargerImageModal } from "./ViewLargerImageModal"; -export { default as VideoPlayerCard } from "./VideoPlayerCard"; -export { default as RealTimeMonitor } from "./RealTimeMonitor"; \ No newline at end of file diff --git a/packages/biz/es/tree/boxTree.d.ts b/packages/biz/es/tree/boxTree.d.ts deleted file mode 100644 index 5e34aef..0000000 --- a/packages/biz/es/tree/boxTree.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { FC } from 'react'; -import { TreeDataNode, TreeProps } from 'antd'; -import './index.less'; -export interface BoxTreeProps extends TreeProps { - data: TreeDataNode[]; - treeCheckable?: boolean; - showItemOption?: boolean; - customOptions?: any; - onItemCheck?: TreeProps['onCheck']; - onItemSelect?: TreeProps['onSelect']; - onItemSetting?: (_data: any) => void; - onItemDelete?: (_data: any) => void; - onItemRename?: (_nodeData: any) => void; - onItemRenameFinish?: (_data: any, _nodeData: any) => Promise; -} -declare const boxTree: FC; -export default boxTree; diff --git a/packages/biz/es/tree/boxTree.js b/packages/biz/es/tree/boxTree.js deleted file mode 100644 index e9e44cb..0000000 --- a/packages/biz/es/tree/boxTree.js +++ /dev/null @@ -1,134 +0,0 @@ -function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } -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); } -function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } -function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } -import React, { useState } from 'react'; -import { Tree, Badge, Space } from 'antd'; -import theme from 'antd/es/theme'; -import { CloseOutlined, EditOutlined, SettingOutlined } from '@ant-design/icons'; -import { ModalForm, ProFormText } from '@ant-design/pro-components'; -import "./index.less"; -var componentName = 'zhst-biz-tree'; -var useToken = theme.useToken; -var boxTree = function boxTree(props) { - var onItemSelect = props.onItemSelect, - onItemCheck = props.onItemCheck, - onItemSetting = props.onItemSetting, - onItemDelete = props.onItemDelete, - _props$data = props.data, - data = _props$data === void 0 ? [] : _props$data, - _props$showItemOption = props.showItemOption, - showItemOption = _props$showItemOption === void 0 ? true : _props$showItemOption, - _props$treeCheckable = props.treeCheckable, - treeCheckable = _props$treeCheckable === void 0 ? false : _props$treeCheckable, - onItemRename = props.onItemRename, - onItemRenameFinish = props.onItemRenameFinish, - customOptions = props.customOptions; - var _useToken = useToken(), - token = _useToken.token; - var _useState = useState(''), - _useState2 = _slicedToArray(_useState, 2), - checkedItem = _useState2[0], - setCheckedItem = _useState2[1]; - var cameraStatus = new Map([['0', 'error'], ['1', 'success'], ['3', 'processing'], ['4', 'default']]); - return /*#__PURE__*/React.createElement(Tree, _extends({ - checkable: treeCheckable, - blockNode: true, - onSelect: function onSelect(selectedKeys, info) { - setCheckedItem(selectedKeys[0]); - onItemSelect === null || onItemSelect === void 0 || onItemSelect(selectedKeys, info); - }, - onCheck: onItemCheck, - treeData: data, - titleRender: function titleRender(_nodeData) { - return /*#__PURE__*/React.createElement("div", { - className: "".concat(componentName, "-item-render") - }, !_nodeData.children && _nodeData.isCamera && /*#__PURE__*/React.createElement(Badge, { - style: { - marginRight: '6px' - }, - status: cameraStatus.get(_nodeData.status || '4') - }), /*#__PURE__*/React.createElement("span", { - // @ts-ignore - style: checkedItem === _nodeData.key && _nodeData.isCamera ? { - color: token.colorPrimary - } : {} - }, _nodeData.title), showItemOption && /*#__PURE__*/React.createElement(Space, { - className: "".concat(componentName, "-item-render_right"), - style: { - float: 'right' - } - }, customOptions || /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ModalForm, { - title: "\u91CD\u547D\u540D", - width: 600, - modalProps: { - destroyOnClose: true - }, - layout: "horizontal", - labelCol: { - span: 6 - }, - wrapperCol: { - span: 18 - }, - trigger: /*#__PURE__*/React.createElement(EditOutlined, { - onClick: function onClick(e) { - e.preventDefault(); - e.stopPropagation(); - onItemRename === null || onItemRename === void 0 || onItemRename(_nodeData); - } - }), - submitter: { - searchConfig: { - submitText: '确定', - resetText: '取消' - } - }, - onFinish: ( /*#__PURE__*/function () { - var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(value) { - return _regeneratorRuntime().wrap(function _callee$(_context) { - while (1) switch (_context.prev = _context.next) { - case 0: - return _context.abrupt("return", onItemRenameFinish === null || onItemRenameFinish === void 0 ? void 0 : onItemRenameFinish(value, _nodeData)); - case 1: - case "end": - return _context.stop(); - } - }, _callee); - })); - return function (_x) { - return _ref.apply(this, arguments); - }; - }()) - }, /*#__PURE__*/React.createElement(ProFormText, { - rules: [{ - required: true - }], - width: "md", - name: "name", - label: "\u76D2\u5B50\u540D\u79F0", - placeholder: "\u8BF7\u8F93\u5165\u76D2\u5B50\u540D\u79F0" - })), /*#__PURE__*/React.createElement(SettingOutlined, { - onClick: function onClick(e) { - e.preventDefault(); - e.stopPropagation(); - onItemSetting === null || onItemSetting === void 0 || onItemSetting(_nodeData); - } - }), /*#__PURE__*/React.createElement(CloseOutlined, { - onClick: function onClick(e) { - e.preventDefault(); - e.stopPropagation(); - onItemDelete === null || onItemDelete === void 0 || onItemDelete(_nodeData); - } - })))); - } - }, props)); -}; -export default boxTree; \ No newline at end of file diff --git a/packages/biz/es/tree/index.d.ts b/packages/biz/es/tree/index.d.ts deleted file mode 100644 index 4082eb0..0000000 --- a/packages/biz/es/tree/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { TreeDataNode } from 'antd'; -import BoxTree from './boxTree'; -export interface TreeData extends TreeDataNode { - children?: TreeDataNode['children'] & { - isCamera?: boolean; - /** - * 0-失败 1-成功 2-进行中 3-未知 - */ - status?: '0' | '1' | '2' | '3'; - }[]; -} -export type { BoxTreeProps } from './boxTree'; -export default BoxTree; diff --git a/packages/biz/es/tree/index.js b/packages/biz/es/tree/index.js deleted file mode 100644 index 23238e5..0000000 --- a/packages/biz/es/tree/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import BoxTree from "./boxTree"; -export default BoxTree; \ No newline at end of file diff --git a/packages/biz/es/tree/index.less b/packages/biz/es/tree/index.less deleted file mode 100644 index 9da4e2d..0000000 --- a/packages/biz/es/tree/index.less +++ /dev/null @@ -1,9 +0,0 @@ -.zhst-biz-tree-item-render { - &_right { - display: none; - } - - &:hover &_right { - display: inline-flex; - } -} diff --git a/packages/biz/es/treeTransfer/TreeTransfer.d.ts b/packages/biz/es/treeTransfer/TreeTransfer.d.ts deleted file mode 100644 index b74b4f3..0000000 --- a/packages/biz/es/treeTransfer/TreeTransfer.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react'; -import { InputProps } from 'antd'; -import { TransferProps, TreeDataNode, TreeProps } from 'antd'; -import './index.less'; -export interface TreeTransferProps { - dataSource: TreeDataNode[]; - treeProps?: TreeProps; - searchInputProps?: InputProps; - targetItems: TreeDataNode[]; - checkedKeys: string[]; - onTreeSelect?: TreeProps['onSelect']; - onTreeCheck?: TreeProps['onCheck']; - onItemDelete?: (key: string, info?: { - root: TreeDataNode[]; - keys: string[]; - }) => void; - onChange?: TransferProps['onChange']; - onOk?: (data: any) => void; - onReset?: () => void; -} -declare const TreeTransfer: React.FC; -export default TreeTransfer; diff --git a/packages/biz/es/treeTransfer/TreeTransfer.js b/packages/biz/es/treeTransfer/TreeTransfer.js deleted file mode 100644 index dc3e135..0000000 --- a/packages/biz/es/treeTransfer/TreeTransfer.js +++ /dev/null @@ -1,143 +0,0 @@ -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); } -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } -function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } -import React, { useState } from 'react'; -import { Button, Card, Flex, Input, Tree } from 'antd'; -import theme from 'antd/es/theme'; -import "./index.less"; -import { DeleteOutlined, DoubleRightOutlined, SearchOutlined } from '@ant-design/icons'; -import { getAllRootKeyById } from "./treeTransferHelper"; -var componentName = 'zhst-biz-treeTransfer'; -var useToken = theme.useToken; -var TreeTransfer = function TreeTransfer(_ref) { - var dataSource = _ref.dataSource, - treeProps = _ref.treeProps, - searchInputProps = _ref.searchInputProps, - _ref$targetItems = _ref.targetItems, - targetItems = _ref$targetItems === void 0 ? [] : _ref$targetItems, - _ref$checkedKeys = _ref.checkedKeys, - checkedKeys = _ref$checkedKeys === void 0 ? [] : _ref$checkedKeys, - onTreeCheck = _ref.onTreeCheck, - onTreeSelect = _ref.onTreeSelect, - onItemDelete = _ref.onItemDelete, - onOk = _ref.onOk, - onReset = _ref.onReset; - var _useToken = useToken(), - token = _useToken.token; - var _useState = useState(''), - _useState2 = _slicedToArray(_useState, 2), - keyWords = _useState2[0], - setKeyWords = _useState2[1]; - function findNodesWithKeyword(_keyWords, _treeData) { - // @ts-ignore - function dfs(node) { - return node.filter(function (item) { - return item.title.includes(_keyWords); - }); - } - var data = dfs(_treeData); - return data || []; - } - return /*#__PURE__*/React.createElement(Flex, { - gap: 20, - className: componentName, - align: "center", - justify: "center" - }, /*#__PURE__*/React.createElement("div", { - className: "".concat(componentName, "-left") - }, /*#__PURE__*/React.createElement(Card, { - className: "".concat(componentName, "-left_card"), - title: /*#__PURE__*/React.createElement("div", { - style: { - textAlign: 'center' - } - }, "\u53EF\u9009\u62E9\u7684\u8303\u56F4"), - bodyStyle: { - padding: 12 - } - }, /*#__PURE__*/React.createElement(Input, _extends({ - prefix: /*#__PURE__*/React.createElement(SearchOutlined, null), - onChange: function onChange(e) { - return setKeyWords(e.target.value); - }, - placeholder: "\u8BF7\u8F93\u5165\u8BBE\u5907\u540D\u79F0" - }, searchInputProps)), /*#__PURE__*/React.createElement(Tree, _extends({ - style: { - marginTop: '6px' - }, - height: 420, - blockNode: true, - checkable: true, - checkedKeys: checkedKeys, - treeData: findNodesWithKeyword(keyWords, dataSource), - onCheck: function onCheck(keys, info) { - return onTreeCheck === null || onTreeCheck === void 0 ? void 0 : onTreeCheck(keys, info); - }, - onSelect: function onSelect(keys, info) { - return onTreeSelect === null || onTreeSelect === void 0 ? void 0 : onTreeSelect(keys, info); - } - }, treeProps)))), /*#__PURE__*/React.createElement(DoubleRightOutlined, null), /*#__PURE__*/React.createElement("div", { - className: "".concat(componentName, "-right") - }, /*#__PURE__*/React.createElement(Card, { - className: "".concat(componentName, "-right_card"), - title: /*#__PURE__*/React.createElement("div", { - style: { - textAlign: 'center' - } - }, "\u5DF2\u9009\u62E9\u7684\u8303\u56F4"), - bodyStyle: { - padding: 0 - } - }, /*#__PURE__*/React.createElement("div", { - className: "".concat(componentName, "-right_card__items") - }, targetItems.map(function (item) { - return /*#__PURE__*/React.createElement("div", { - className: "".concat(componentName, "-right_card__items___item"), - key: item.key, - onMouseEnter: function onMouseEnter(e) { - e.target.style.backgroundColor = token.colorPrimaryBg; - e.target.style.color = token.colorPrimary; - }, - onMouseLeave: function onMouseLeave(e) { - e.target.style.color = token.colorText; - e.target.style.backgroundColor = null; - } - }, item.title, /*#__PURE__*/React.createElement("div", { - style: { - float: 'right' - } - }, /*#__PURE__*/React.createElement(DeleteOutlined, { - onClick: function onClick() { - var _getAllRootKeyById = getAllRootKeyById(item.key, dataSource), - root = _getAllRootKeyById.root, - keys = _getAllRootKeyById.keys; - onItemDelete === null || onItemDelete === void 0 || onItemDelete(item.key, { - root: root, - keys: keys - }); - } - }))); - })), /*#__PURE__*/React.createElement(Flex, { - className: "".concat(componentName, "-right_card__btns") - }, /*#__PURE__*/React.createElement(Button, { - style: { - marginRight: 8, - width: '50%' - }, - disabled: targetItems.length <= 0, - onClick: onReset - }, "\u91CD\u7F6E"), /*#__PURE__*/React.createElement(Button, { - style: { - width: '50%' - }, - type: "primary", - onClick: function onClick() { - return onOk === null || onOk === void 0 ? void 0 : onOk(targetItems); - } - }, "\u786E\u5B9A"))))); -}; -export default TreeTransfer; \ No newline at end of file diff --git a/packages/biz/es/treeTransfer/index.d.ts b/packages/biz/es/treeTransfer/index.d.ts deleted file mode 100644 index 7ea5c47..0000000 --- a/packages/biz/es/treeTransfer/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import TreeTransfer from "./TreeTransfer"; -export type { TreeTransferProps } from './TreeTransfer'; -export * from './treeTransferHelper'; -export default TreeTransfer; diff --git a/packages/biz/es/treeTransfer/index.js b/packages/biz/es/treeTransfer/index.js deleted file mode 100644 index 153880e..0000000 --- a/packages/biz/es/treeTransfer/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import TreeTransfer from "./TreeTransfer"; -export * from "./treeTransferHelper"; -export default TreeTransfer; \ No newline at end of file diff --git a/packages/biz/es/treeTransfer/index.less b/packages/biz/es/treeTransfer/index.less deleted file mode 100644 index 9ffe8cd..0000000 --- a/packages/biz/es/treeTransfer/index.less +++ /dev/null @@ -1,43 +0,0 @@ -.zhst-biz-treeTransfer { - &-left { - &_card { - width: 500px; - height: 522px; - background-color: #FCFCFC; - } - } - - &-right { - &_card { - width: 300px; - height: 522px; - background-color: #FCFCFC; - - &__items { - padding: 8px 4px; - overflow: scroll; - - &::-webkit-scrollbar { - display: none; - } - - &___item { - margin: 0; - padding: 4px 12px; - cursor: pointer; - } - } - - &__btns { - width: 100%; - padding: 8px; - position: absolute; - bottom: 0; - left: 50%; - transform: translateX(-50%); - box-sizing: border-box; - border-top: 1px solid #f0f0f0; - } - } - } -} diff --git a/packages/biz/es/treeTransfer/treeTransferHelper.d.ts b/packages/biz/es/treeTransfer/treeTransferHelper.d.ts deleted file mode 100644 index 705684c..0000000 --- a/packages/biz/es/treeTransfer/treeTransferHelper.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export declare const isChecked: (selectedKeys: React.Key[], eventKey: React.Key) => boolean; -/** - * 通过子元素找到父级节点 - * @param objects - * @param element - * @returns - */ -export declare const findParentByChild: (objects: any[], propertyValue: string | number, propertyKey?: string) => any; -export declare const getAllRootKeyById: (val: string | number, list: any[], key?: string) => { - root: any; - keys: any[]; -}; diff --git a/packages/biz/es/treeTransfer/treeTransferHelper.js b/packages/biz/es/treeTransfer/treeTransferHelper.js deleted file mode 100644 index efaf6d8..0000000 --- a/packages/biz/es/treeTransfer/treeTransferHelper.js +++ /dev/null @@ -1,57 +0,0 @@ -function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } -export var isChecked = function isChecked(selectedKeys, eventKey) { - return selectedKeys.includes(eventKey); -}; -function isObject(value) { - return value !== null && _typeof(value) === 'object' && !Array.isArray(value); -} - -/** - * 通过子元素找到父级节点 - * @param objects - * @param element - * @returns - */ -export var findParentByChild = function findParentByChild(objects, propertyValue) { - var propertyKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'key'; - for (var i = 0; i < objects.length; i++) { - var obj = objects[i]; - if (obj[propertyKey] === propertyValue) { - return obj; - } else if (_typeof(obj) === 'object') { - var found = findParentByChild(Object.values(obj), propertyValue); - if (found) { - return obj; - } - } - } - return null; // 如果找不到包含具有指定属性的子对象的父对象,返回 null -}; -export var getAllRootKeyById = function getAllRootKeyById(val, list) { - var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'key'; - var keys = []; - var findParentByChild = function findParentByChild(propertyValue, objects, propertyKey) { - for (var i = 0; i < objects.length; i++) { - var obj = objects[i]; - if (obj[propertyKey] === propertyValue) { - console.log('obj', obj); - return obj; - } else if (_typeof(obj) === 'object') { - var found = findParentByChild(propertyValue, Object.values(obj), propertyKey); - if (found) { - if (isObject(found)) { - keys.push(found.key); - } - return obj; - } - } - } - return null; // 如果找不到包含具有指定属性的子对象的父对象,返回 null - }; - var data = findParentByChild(val, list, key); - data.key && keys.push(data.key); - return { - root: data, - keys: keys - }; -}; \ No newline at end of file diff --git a/packages/biz/es/treeTransferModal/TreeTransferModal.d.ts b/packages/biz/es/treeTransferModal/TreeTransferModal.d.ts deleted file mode 100644 index e0a0d0e..0000000 --- a/packages/biz/es/treeTransferModal/TreeTransferModal.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { FC } from 'react'; -import { ModalProps, RadioGroupProps, SelectProps, TransferProps, TreeDataNode, TreeProps } from 'antd'; -export interface TreeTransferModalProps { - dataSource: TreeDataNode[]; - treeProps?: TreeProps; - targetItems: TreeDataNode[]; - checkedKeys: string[]; - onTreeSelect?: TreeProps['onSelect']; - onTreeCheck?: TreeProps['onCheck']; - onItemDelete?: (key: string, info?: { - root: TreeDataNode[]; - keys: string[]; - }) => void; - onChange?: TransferProps['onChange']; - onOk?: (data: any) => void; - onReset?: () => void; - open?: boolean; - onCancel?: ModalProps['onCancel']; - onRadioChange?: RadioGroupProps['onChange']; - onSelect?: SelectProps['onSelect']; - modalProps?: ModalProps; - radioProps?: RadioGroupProps; - selectProps?: SelectProps; -} -declare const TreeTransferModal: FC; -export default TreeTransferModal; diff --git a/packages/biz/es/treeTransferModal/TreeTransferModal.js b/packages/biz/es/treeTransferModal/TreeTransferModal.js deleted file mode 100644 index 5580038..0000000 --- a/packages/biz/es/treeTransferModal/TreeTransferModal.js +++ /dev/null @@ -1,80 +0,0 @@ -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); } -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } -function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } -import React, { useState } from 'react'; -import { Modal, Radio, Select } from 'antd'; -import TreeTransfer from "../treeTransfer"; -import { ALL_LIST, BOX_TYPE_LIST } from "../utils/constants"; -var TreeTransferModal = function TreeTransferModal(props) { - var open = props.open, - _props$dataSource = props.dataSource, - dataSource = _props$dataSource === void 0 ? [] : _props$dataSource, - checkedKeys = props.checkedKeys, - onItemDelete = props.onItemDelete, - onOk = props.onOk, - onCancel = props.onCancel, - onReset = props.onReset, - onRadioChange = props.onRadioChange, - onTreeCheck = props.onTreeCheck, - onSelect = props.onSelect, - targetItems = props.targetItems, - modalProps = props.modalProps, - radioProps = props.radioProps, - selectProps = props.selectProps; - var _useState = useState('1'), - _useState2 = _slicedToArray(_useState, 2), - type = _useState2[0], - setType = _useState2[1]; - return /*#__PURE__*/React.createElement(Modal, _extends({ - open: open, - destroyOnClose: true, - title: "\u7EDF\u8BA1\u70B9\u4F4D", - width: "948px", - footer: null, - onCancel: onCancel - }, modalProps), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Radio.Group, _extends({ - onChange: function onChange(e) { - setType(e.target.value); - onRadioChange === null || onRadioChange === void 0 || onRadioChange(e); - }, - style: { - marginLeft: '24px', - padding: '20px 0' - }, - value: type, - options: BOX_TYPE_LIST - }, radioProps)), /*#__PURE__*/React.createElement(Select, _extends({ - defaultValue: '', - style: { - marginLeft: 200, - width: 150 - }, - options: ALL_LIST, - onSelect: onSelect - }, selectProps))), type === 'box' ? /*#__PURE__*/React.createElement(TreeTransfer, { - dataSource: dataSource, - targetItems: targetItems, - checkedKeys: checkedKeys, - onTreeCheck: onTreeCheck, - onItemDelete: onItemDelete, - onOk: onOk, - onReset: onReset - }) : /*#__PURE__*/React.createElement(TreeTransfer, { - dataSource: dataSource, - targetItems: targetItems, - checkedKeys: checkedKeys, - onTreeCheck: onTreeCheck, - onItemDelete: onItemDelete, - onOk: onOk, - onReset: onReset - }), /*#__PURE__*/React.createElement("p", { - style: { - textAlign: 'right' - } - }, "\u5DF2\u9009\u4E2D", targetItems.length, "\u4E2A\u70B9\u4F4D"))); -}; -export default TreeTransferModal; \ No newline at end of file diff --git a/packages/biz/es/treeTransferModal/index.d.ts b/packages/biz/es/treeTransferModal/index.d.ts deleted file mode 100644 index 8e5245a..0000000 --- a/packages/biz/es/treeTransferModal/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import TreeTransferModal from './TreeTransferModal'; -export type { TreeTransferModalProps } from './TreeTransferModal'; -export default TreeTransferModal; diff --git a/packages/biz/es/treeTransferModal/index.js b/packages/biz/es/treeTransferModal/index.js deleted file mode 100644 index 3c464e7..0000000 --- a/packages/biz/es/treeTransferModal/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import TreeTransferModal from "./TreeTransferModal"; -export default TreeTransferModal; \ No newline at end of file diff --git a/packages/biz/es/utils/constants.js b/packages/biz/es/utils/constants.js deleted file mode 100644 index 925bab4..0000000 --- a/packages/biz/es/utils/constants.js +++ /dev/null @@ -1,43 +0,0 @@ -export var OBJECT_GRNER_THRESHOLD = 0.8; //目标图判断性别阈值 -export var OBJECT_AGE_TYPE_THRESHOLD = 0.5; //目标图判断年龄段阈值 -export var MODE_KEY = 'test_mode'; -//业务约定 -export var SEARCH_IMG_COUNT = 10; //检索图片的最大个数 -export var GLOBAL_IS_ITEM_NUMBER_SHOW = false; //是否展示索引 -export var publicPath = 'hummingbird'; -export var ENTER_CIRCLE = 'MONITORTYPE_ENTER_CIRCLE'; -export var OUT_CIRCLE = 'MONITORTYPE_OUT_CIRCLE'; -export var TEMP = 'MONITORTYPE_TEMP'; -export var GLOBAL_IS_BOX_VMS_SHOW = true; //是否展示盒子vms - -export var BODY_SEARCH_THRESHOID = 0.45; //形体检索阈值 -export var RECORD_VERSION = '3.0.0'; //保存记录的版本号 - -export var DeviceTab = { - EMPTY: 0, - REAL_CAMERA: 1, - PREPROCESS_CAMERA: 2, - //摄像头列表 - TAG_CAMERA: 3, - //预案列表 - HISTORY_VIDEO_GROUP: 4, - //录像回放 - VIRTUAL_CAMERA: 5, - //离线视频 - REAL_CAMERA_NOFACE: 6, - REAL_CAMERA_ONLYFACE: 7, - REAL_CAMERA_NOFACE_NOBOX_NODIRECONNECT: 8 // 只有普通摄像头,没有人脸、没有盒子、直连 -}; - -// 盒子 Tab 切换 -export var BOX_TYPE_LIST = [{ - value: '1', - label: '盒子' -}, { - value: '2', - label: '盒子组' -}]; -export var ALL_LIST = [{ - value: '', - label: '全部' -}]; \ No newline at end of file diff --git a/packages/biz/es/utils/index.d.ts b/packages/biz/es/utils/index.d.ts deleted file mode 100644 index e69de29..0000000 diff --git a/packages/biz/es/utils/index.js b/packages/biz/es/utils/index.js deleted file mode 100644 index e69de29..0000000 diff --git a/packages/biz/lib/BigImageModal/BigImageModal.d.ts b/packages/biz/lib/BigImageModal/BigImageModal.d.ts deleted file mode 100644 index ae5e46d..0000000 --- a/packages/biz/lib/BigImageModal/BigImageModal.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react'; -import type { ModalProps, DescriptionsProps, TabsProps, VideoViewRef, ImgViewRef } from '@zhst/meta'; -import './index.less'; -export declare const componentPrefix = "zhst-image"; -export type TAB_TYPE = 'COMPATER' | 'NORMAL' | 'VIDEO'; -export type MODEL_TYPE = 'VIDEO' | 'IMAGE'; -export interface BigImageModalProps extends ModalProps { - visible: boolean; - activeTab?: TAB_TYPE; - attributeList: { - title: string; - children: Pick; - }; - tabs: { - data: Pick & { - key: TAB_TYPE; - }; - }; - dataSource: any; - imageData: any; - relatedData: any; - isRelated?: boolean; - footer?: React.ReactNode; - showCarousel?: boolean; - onTabChange?: (newVal?: TAB_TYPE, oldVal?: TAB_TYPE) => void; - onIndexChange?: (newVal?: number, oldVal?: number) => void; - transformPropFunc: (data: any) => void; -} -interface BigModalRef { - tab: TAB_TYPE; - setTab: (tab: TAB_TYPE) => void; - modalRef: ModalProps; - activeKey: string; - setActiveKey: (val: string) => void; - videoPlayerRef: VideoViewRef; - combineImageRef: any; - bigImagePreviewRef: ImgViewRef; -} -declare const BigImageModal: React.FC; -export default BigImageModal; diff --git a/packages/biz/lib/BigImageModal/BigImageModal.js b/packages/biz/lib/BigImageModal/BigImageModal.js deleted file mode 100644 index ff12576..0000000 --- a/packages/biz/lib/BigImageModal/BigImageModal.js +++ /dev/null @@ -1,250 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/BigImageModal/BigImageModal.tsx -var BigImageModal_exports = {}; -__export(BigImageModal_exports, { - componentPrefix: () => componentPrefix, - default: () => BigImageModal_default -}); -module.exports = __toCommonJS(BigImageModal_exports); -var import_react = __toESM(require("react")); -var import_meta = require("@zhst/meta"); -var import_classnames = __toESM(require("classnames")); -var import_func = require("@zhst/func"); -var import_index = require("./index.less"); -var import_navigation = __toESM(require("./components/navigation")); -var import_CombineImage = __toESM(require("./components/CombineImage")); -var DescriptionsItem = import_meta.Descriptions.Item; -var componentPrefix = "zhst-image"; -var initialStyle = { - fontSize: "12px" -}; -var BigImageModal = (0, import_react.forwardRef)((props, ref) => { - var _a; - const { - // 配置 - title = "-", - open, - children, - activeTab, - attributeList = [], - isRelated = false, - tabs = {}, - footer = null, - showCarousel = true, - // 数据 - dataSource = [], - // 总数据源,只允许有一份 - imageData = [], - relatedData = [], - // 事件 - onIndexChange, - onTabChange, - transformPropFunc - } = props; - const combineImageRef = (0, import_react.useRef)(null); - const bigImagePreviewRef = (0, import_react.useRef)(null); - const videoPlayerRef = (0, import_react.useRef)(null); - const modalRef = (0, import_react.useRef)(null); - const [tab, setTab] = (0, import_react.useState)(activeTab || (0, import_func.get)(tabsConfig, "data[0].key")); - const [activeKey, setActiveKey] = (0, import_react.useState)("related"); - const [currentIndex, setCurrentIndex] = (0, import_react.useState)(0); - const tabsConfig = !(0, import_func.isEmpty)(tabs) ? tabs : { - data: [ - { - label: "对比图模式", - key: "COMPATER", - children: /* @__PURE__ */ import_react.default.createElement( - import_CombineImage.default, - { - ref: combineImageRef, - data: dataSource[currentIndex] || {} - } - ) - }, - { - label: "场景图模式", - key: "NORMAL", - children: /* @__PURE__ */ import_react.default.createElement( - import_meta.BigImagePreview, - { - ref: bigImagePreviewRef, - height: "500px", - data: dataSource[currentIndex] - } - ) - } - ] - }; - (0, import_react.useEffect)(() => { - (async () => { - let data = {}; - })(); - }, [currentIndex, dataSource, imageData, isRelated]); - (0, import_react.useImperativeHandle)(ref, () => ({ - ref, - tab, - setTab, - modalRef, - activeKey, - setActiveKey, - videoPlayerRef, - combineImageRef, - bigImagePreviewRef - })); - return /* @__PURE__ */ import_react.default.createElement( - import_meta.Modal, - { - destroyOnClose: true, - open, - ref: modalRef, - footer, - className: componentPrefix, - title, - ...props - }, - /* @__PURE__ */ import_react.default.createElement( - "div", - { - style: { - marginTop: "16px" - } - }, - /* @__PURE__ */ import_react.default.createElement( - import_meta.ConfigProvider, - { - theme: { - token: { - colorTextSecondary: "rgba(0,0,0,0.45)" - }, - components: { - Descriptions: { - titleMarginBottom: "20px", - viewBg: "#f6f6f6", - titleColor: "rgba(0,0,0,0.45)", - colorTextLabel: "rgba(0,0,0,0.45)", - contentColor: "rgba(0,0,0,0.88)" - } - } - } - }, - attributeList.map((descriptions) => { - var _a2; - return /* @__PURE__ */ import_react.default.createElement( - import_meta.Descriptions, - { - key: descriptions.title, - title: /* @__PURE__ */ import_react.default.createElement("p", { style: { margin: "12px 0 0", fontSize: initialStyle.fontSize } }, descriptions.title), - column: 8, - style: { padding: "0 64px" } - }, - (_a2 = descriptions == null ? void 0 : descriptions.children) == null ? void 0 : _a2.map((item) => /* @__PURE__ */ import_react.default.createElement( - DescriptionsItem, - { - key: item.key, - label: item.label, - span: 1, - contentStyle: { fontSize: initialStyle.fontSize }, - labelStyle: { fontSize: initialStyle.fontSize } - }, - item.children - )) - ); - }) - ), - /* @__PURE__ */ import_react.default.createElement( - "div", - { - className: (0, import_classnames.default)(`${componentPrefix}-view-container`) - }, - /* @__PURE__ */ import_react.default.createElement( - import_meta.Tabs, - { - activeKey: tab, - centered: true, - destroyInactiveTabPane: true, - onChange: (v) => { - setTab((pre) => { - onTabChange == null ? void 0 : onTabChange(v, pre); - return v; - }); - }, - tabBarStyle: { fontSize: "18px", fontWeight: "bold" }, - items: tabsConfig.data, - ...tabsConfig - } - ), - tab === "VIDEO" && /* @__PURE__ */ import_react.default.createElement(import_meta.VideoPlayer, { ref: videoPlayerRef, url: (_a = dataSource[currentIndex]) == null ? void 0 : _a.flvUrl }), - /* @__PURE__ */ import_react.default.createElement( - import_navigation.default, - { - className: (0, import_classnames.default)( - `${componentPrefix}-view-container__nav`, - currentIndex <= 0 && `${componentPrefix}-view-container__nav--disabled`, - `${componentPrefix}-view-container__nav--left` - ), - show: isRelated ? imageData.length > 1 : dataSource.length > 1, - disabled: currentIndex <= 0, - prev: true, - onClick: () => { - setCurrentIndex((pre) => { - onIndexChange == null ? void 0 : onIndexChange(pre - 1, pre); - return pre - 1; - }); - } - } - ), - /* @__PURE__ */ import_react.default.createElement( - import_navigation.default, - { - className: (0, import_classnames.default)( - `${componentPrefix}-view-container__nav`, - (currentIndex >= imageData.length - 1 || currentIndex >= dataSource.length - 1) && `${componentPrefix}-view-container__nav--disabled`, - `${componentPrefix}-view-container__nav--right` - ), - show: isRelated ? imageData.length > 1 : dataSource.length > 1, - disabled: currentIndex >= imageData.length - 1 || currentIndex >= dataSource.length - 1, - next: true, - onClick: async (e) => { - setCurrentIndex((pre) => { - onIndexChange == null ? void 0 : onIndexChange(pre + 1, pre); - return pre + 1; - }); - } - } - ) - ) - ) - ); -}); -var BigImageModal_default = BigImageModal; -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - componentPrefix -}); diff --git a/packages/biz/lib/BigImageModal/components/CombineImage/index.d.ts b/packages/biz/lib/BigImageModal/components/CombineImage/index.d.ts deleted file mode 100644 index 19dbaa2..0000000 --- a/packages/biz/lib/BigImageModal/components/CombineImage/index.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { FC } from 'react'; -interface ComBineImageProps { - data: { - imgSummary: string; - compaterImages: string[]; - imageKey: string; - score: number; - }; -} -declare const ComBineImage: FC; -export default ComBineImage; diff --git a/packages/biz/lib/BigImageModal/components/CombineImage/index.js b/packages/biz/lib/BigImageModal/components/CombineImage/index.js deleted file mode 100644 index aa5aca2..0000000 --- a/packages/biz/lib/BigImageModal/components/CombineImage/index.js +++ /dev/null @@ -1,71 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/BigImageModal/components/CombineImage/index.tsx -var CombineImage_exports = {}; -__export(CombineImage_exports, { - default: () => CombineImage_default -}); -module.exports = __toCommonJS(CombineImage_exports); -var import_react = __toESM(require("react")); -var import_meta = require("@zhst/meta"); -var ComBineImage = (0, import_react.forwardRef)((props, ref) => { - const { data } = props; - const { imgSummary, compaterImages = [] } = data; - const targetImageRef = (0, import_react.useRef)(null); - const compareImageRef = (0, import_react.useRef)(null); - const [targetIndex, setTargetIndex] = (0, import_react.useState)(compaterImages.findIndex((_url) => imgSummary === _url) || 0); - (0, import_react.useImperativeHandle)(ref, () => ({ - compareImageRef, - targetImageRef - })); - return /* @__PURE__ */ import_react.default.createElement(import_meta.Flex, { justify: "space-evenly", align: "center", style: { padding: "0 32px" } }, /* @__PURE__ */ import_react.default.createElement( - import_meta.CompareImage, - { - ref: targetImageRef, - preDisable: targetIndex === 0, - nextDisable: targetIndex >= compaterImages.length - 1, - onNext: () => setTargetIndex(targetIndex + 1), - onPre: () => setTargetIndex(targetIndex - 1), - showScore: false, - openRoll: !!compaterImages.length, - url: compaterImages[targetIndex] || imgSummary, - label: "目标图" - } - ), /* @__PURE__ */ import_react.default.createElement(import_meta.Score, { score: data.score }), /* @__PURE__ */ import_react.default.createElement( - import_meta.CompareImage, - { - ref: compareImageRef, - url: data.imageKey, - openRoll: false, - score: data.score, - label: "对比图" - } - )); -}); -var CombineImage_default = ComBineImage; diff --git a/packages/biz/lib/BigImageModal/components/navigation/index.d.ts b/packages/biz/lib/BigImageModal/components/navigation/index.d.ts deleted file mode 100644 index 78b1ca8..0000000 --- a/packages/biz/lib/BigImageModal/components/navigation/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import * as React from 'react'; -import './index.less'; -declare const Navigation: React.FC<{ - show?: boolean; - onClick?: React.MouseEventHandler; - prev?: boolean; - next?: boolean; - disabled?: boolean; - className?: string; - color?: string; - hoverColor?: string; -}>; -export default Navigation; diff --git a/packages/biz/lib/BigImageModal/components/navigation/index.js b/packages/biz/lib/BigImageModal/components/navigation/index.js deleted file mode 100644 index 53219e6..0000000 --- a/packages/biz/lib/BigImageModal/components/navigation/index.js +++ /dev/null @@ -1,57 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/BigImageModal/components/navigation/index.tsx -var navigation_exports = {}; -__export(navigation_exports, { - default: () => navigation_default -}); -module.exports = __toCommonJS(navigation_exports); -var React = __toESM(require("react")); -var import_classnames = __toESM(require("classnames")); -var import_meta = require("@zhst/meta"); -var import_index = require("./index.less"); -var componentName = `zhst-image__nav`; -var Navigation = (props) => { - const { show, prev, next, disabled, onClick, className, color } = props; - return /* @__PURE__ */ React.createElement( - "div", - { - className: (0, import_classnames.default)( - `${componentName}`, - prev && `${componentName}-prev`, - next && `${componentName}-next`, - disabled && `${componentName}--disable`, - !show && `${componentName}--hide`, - className - ) - }, - /* @__PURE__ */ React.createElement(import_meta.Button, { type: "text", disabled, onClick }, /* @__PURE__ */ React.createElement(import_meta.Icon, { size: 28, color, icon: prev ? "icon-qiehuanzuo" : "icon-qiehuanyou" })) - ); -}; -var navigation_default = Navigation; diff --git a/packages/biz/lib/BigImageModal/components/navigation/index.less b/packages/biz/lib/BigImageModal/components/navigation/index.less deleted file mode 100644 index 0a834f9..0000000 --- a/packages/biz/lib/BigImageModal/components/navigation/index.less +++ /dev/null @@ -1,44 +0,0 @@ -.zhst-image__nav { - position: absolute; - display: flex; - width: 48px; - height: 100%; - flex-shrink: 0; - align-items: center; - justify-content: center; - cursor: pointer; - font-size: 0; - - &>button { - & span { - display: flex; - } - } - - :global { - i:hover { - color: #f0f0f0 !important; - } - } - - &--disable { - :global { - i { - color: #f0f0f0; - cursor: not-allowed !important; - } - } - } - - &--hide { - display: none; - } - - &-prev { - left: 20px; - } - - &-next { - right: 20px; - } -} diff --git a/packages/biz/lib/BigImageModal/images/emptyImage.png b/packages/biz/lib/BigImageModal/images/emptyImage.png deleted file mode 100644 index 97629573a5196529f63a8365baeeadab76209c1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5786 zcmV;L7G>#)P)Py0R7pfZRCodHooj4d$92bd`4%Zsq^uWZNtSHcN#rDoE!&A)M@k*V&ZCVHJ64LM ziBR`TjRFM<^g~g!sQWO`4@rs?MUf(n<6153SbhYF65Dke*sdEluLF4^-N4mbU^nvH#h&drKRON3l=PRCs*JK48*U%Hs_iQKw2+cxUe07d=Y;e zpjbg>lQEDV8y_FHXbheVkumt*21GyT?(Y6BX{T}wS3uy30t^7?I)DEBSLoy~G{xha znp;|y(8on>-~-0Tg8+oT0C;{0eX6IY=TYdW&v!Y+iyG^4Xe1rp#|ZK@I`JMlbtAry zc7<+pDZuzPqMi(+&oK0L=;K{oT~836^7-a+JhbuVLL)~q6!{tr{}UFd>oG`kJ&aJS&UymI*GT{ZJj2cL_>X#edmr%g zYZb36V1|Z*sRSWhDW279DYasjCqI%(CSSq`i#ir8$ZMWDDxFSiXEg?(9L-~>QKVjg$$=!3X<=&aL=V58 zF0jV=U}tCNks6sIS50mkJeN{~0AN`USf0laiwadIpa3K{+OVdHO-@Y2CMPFj3SX{{ zHmBKrJ`Y$%X?q;Hh{b-fZGs-`@kjw6MQ)y&1LoAJQ~iMD-)QXeu&u*z4m^}`z+rRF zjX+_`H!7b%f<9hCsN?=n7ioRx&YkNU9~*m_j{lHV zr1gqFC0Sl6Dgeo26t;b`rU0CDxaxD^;-@qg4z{9$SHP0zJ=6qNg)#MXM@aGssbR2@&rny=m z$x{>C-ogIWALb=S7^!4945bzgiXS_6Y$tQaR|*xVWJ)R|&rbtDQ~0+?ABA3z@Ar9% z#nHX2DM=tfmTrOD0Z62eErL4JrUd>bZngg>m>xwqa=@_H@-4vf2gQ_+8Zdsn7n1!%hablGVdxLi>3KWN#Q+0;lCl@^I=;2FdJH^xtMXZHbiTLqAY1W8cuY4l|442ZOLk}hg=S1TF*I}+ zBg@V(V3|=+9W&9rlSdOD<^0Vm76-kkGFQMNt8HXM@6V$$UsVBf{P^*Y@}%q;l&$Hx zm8gs(xl`=z%t80ZoC3Ht3cafa7^a~O=~U_`T%BD}C|WO>dI*|qz|Fv!>_H!B@&3=y zs*j9SIY)42XlP9$oqho&7thd;N#@lftZm+bXOJ!0LDAN>wzbfQ@D1y<5va8m(^JFh z=qm`EM?8|DqzsQ#=H1;@Ph~*1RR6$mX>$8vlv{mWXUmj z^deZEW0&%N8uw&gVuM5&U5>EmT`hG0wmWLkAgYB@1AFV?=2rG+UJX?s1QVA{252NL4)zGwJz*IwtxgsN(OuDIQE{rnhsF&xy$tK>jgmuibDsCPyWtve( zC^&;$W~th+0}MS!dK&*tHt&8BMXmFIDbuQ)7L27?%jgtf1Gx);<)1j``**w$HyEW} z^MIL!bv4S&_LSf(s++0EAVB#RcR~8>h)(fE?&bkA3lnQIPY2R@)-;RKl@|dV|HWcf z)6O%5BR$UGYda4Z-y$L7dXr&6XJ<(6>ac0iolYkAEL*W+b9E$^FJ&Gu<=f1a&~3Kc zo8i5wD4pujy2*h>?`p+jbvbfsZJY;;Sz;DcYZ;C{M6#J@fD}*^ZWK4GhmSNM&MPCI zWJ73Kqco&mdZ9jtYNF-vsj^hrqR|_mWS6Y1L%$d)fJ$rU-CHl?^FjV{(H0(L9 zuvckNV{S@RVwEz=>i7fC(#j}Nm{rpb-@b_@_y}XQ-|!Sjc!2sgef2E;_BQdYg|#T1 zS~g&)R7V$okBX^Wv+PAL&nNBxrK*^AX5#pdiQ=Mb^=w*J<1(6>+B;@GucQ%Vim6A_Ppuq% zb01#kdvhZSaaI3C{C_A=jw^eFp|abkK%p8@ z)%t{y#H~*Rl!(?RGuemr<@@QMYc(Te`^M9DAvhNUdPXe6N`p>)bVED|~3c#^a2&Doy%7~gLZ*w^n&+|rZ zfjiY#cw4`SPV>wf;tM@Hgubn20k=^VW}B%BG&x&E3UAEjO(PdCUR=RY-QU;O*YIDu z4l2)x8v23?maBJIcRyUfH!*r>bSdR}8I5j$X@4n3<%c#13fu@_Z2jU;OPZUKlnzp_ z-?L{=!AH03VtyCi7uhW84x?0~@StdMqS8xSyHK@Dy{^9CcKh9{vR?pb@E3dqg*uH(c zdl-d1&obiM^1+r427Z4zp)Zo24BLRvfB_S30hJZ(07BTUVFVV10fG?S#;DRoSReiC zLh;W-^#-1b>Wc^~0855+ZEWcesjMN&pLZcFfbBZuv0vXM)5l_4wrq)Ur#g}aDdNxm*#^@Zyr!r#N&XjHPf$3+zKwmX*>@U3CA+75RPIu95f>8Y)ymBMeW=f1iu^3G9B<7e}9Hn$kby zo?fwH#i*Ze@o6KBz;N{F(Z%?y077dPwGMeyv2<-JNw)j35 zsk_s}PHwaiRfEaTtymRzhRdcE%2%2>c(rz!pii}?arXD+QExZ)?`G5)=O1xTU3Jw} z(_W6t0}R{$3*US1J>A7z8Y0lilvTx4q(8YF!oN&M>M!;7GpxO39WEXt6M&5fbM7dW<{x8sleU|`e7Oex`)T++(8XE4NC@&Hk?RTF z%L4FmZ23Ix)LJFCh=tF!UsPq#r;y$3j#Vrc&hZ;4xEKYLN&Y(_#p|@TbjahUZ&Zh- zvUd1a@$H{6Mw{cvNJzMx36671wiJPjrIadBriDcvGwBM0#H9e{t2FX;u6(UsidvS6 zZ$|E?D5}-_9uWK-bVm8b@}+}0>TUr%+u+qd+iyk%C)4t)L6LcE^y0G z|0}lHZ}ubZ>?(@vl5-~#+17u)ed@`L=re3l}|*R5N3PHAq0 z;Z|7BdbCcNanWM}X@~f9H6&3a4G0`y07qP5Q3+QV_Xd1pq^(2Q9}C4OpzLYRM+ z?n?AK3}*GLhDRHkT^Rnwj2icHHSYzvdn}&{upV4mj|PGHUFh>rcMxN6}RQak$ zGJ^F5_4WBBpHU~pTIXjJ{~1^JGCFZPK>scB)<|YG9AF$_*nJvhk0}HCZ^&Cd8qRXzy6@kCf{gKH=2Yyj6Wzt;b0xsZll(2qo$Wp z<1=b}jGmKkzWL^`z#{P2+C*VpA#v`vJ2->eiBaO+-Q6+ft(d5sg+=B3e3uyb@%aN; zE?91PpTCrRzrL_>&K~!&-q9V_U85r-$#`?~BiQCe{v{-1I!Kmn2OXd6eG(!6UWtvx?6YJNn*T(F$ zwM{`Fn2j~!3=9mkg0@x~GwpWN2Z)s`MoSscFUPzY1GF(wISY%1apl(M%k<0p`Ik%k zIo_b#?*vqq_RH2BrA=+#yjg1#{n6>P(Zsip z;-LW(ESv>T6QfTv!+JC4X58X=`SRsDR~i$Qql4lYIU}k#Bb5${>+G*nt`xtO6;*lP zm6C6DiK?tG&oA%G_v3zfYpbYSsrJ;n{q$9eX)v{K-@cR`828&)Dn4zRDOEuESu|=t z-|guOK)ZJBYGU`diQ&yr@o9}fnxl&IEF#8{Kt~lisiDbEv7Ftj?bNNv#_WN`TEte{Q~FOwQKdr$GrB;3SM}*28IaCYJ>?P z*WGc!7k}xcmzr2eX~Rqp+9Injj82y;58DCSjLdA>v`OF)D5?UELiVa@2WF=->7jb9 zZlkd`-gqNUqcfs~l(jrj<(J|wB%_?PQuUR}_v?aRI>$t_PVG=zL$!x;0)(977p=yq z;Uvz*9|0=h*-Xut*Q+e@iW_Zu^2sM%STq>+%2^rXan#BLsmht0VAyz6cQ)VYW8pIL z^W+Egv~~t*&K7gAFB?i{4DF05r4%;hEL<$#_>30dH@T9T3x}0wa%Z5XtCK$iU&Cho YKZ_v3%v7MbF#rGn07*qoM6N<$g4h-+kpKVy diff --git a/packages/biz/lib/BigImageModal/images/percent_background.png b/packages/biz/lib/BigImageModal/images/percent_background.png deleted file mode 100644 index ebde317c473fda46d686dce6ffba98db676f331e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 514 zcmeAS@N?(olHy`uVBq!ia0vp^1wgFB!3HGvuCY1Jz`%IY)5S5QBJS-RYky`#ffjXL z-6Hmn8Q4;CoAn~}k_ zgW(?Yj*eGfxmGY134fY$J=J!{$wg8RvLC#BaB-8+1Kx)0+#eg)F`bBcXZz`uXaHkP zhUL6}d}8k$87D|j?{9sbwY!$pLG5MvHtUET%B%<68GLRT^KfY}?0dT9sDodH(C3%j z_VYxH4H$aQhcZYV4co!x(7MWPHe-fJ^g}HM(N$8pYzqQ&T30iKtjO9T+2FQObRAQ` z!c`a3uqzH@PT6XzebLB=D}*_v_|#_2Z#x91h;EwFq$(<@#=0t9p?l^fp|mD<^QjEM zXHrQ%!{C#rY{sXUB^51Ds zIdG$NO36ay9Xn^w*y730@V1)ce=Kw5p+k}7MiGCy`Jd}IFq;2R{v>>$L0aa{GSdmO yCvV { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/BigImageModal/index.tsx -var BigImageModal_exports = {}; -__export(BigImageModal_exports, { - default: () => BigImageModal_default -}); -module.exports = __toCommonJS(BigImageModal_exports); -var import_BigImageModal = __toESM(require("./BigImageModal")); -var BigImageModal_default = import_BigImageModal.default; diff --git a/packages/biz/lib/BigImageModal/index.less b/packages/biz/lib/BigImageModal/index.less deleted file mode 100644 index 8e98e2e..0000000 --- a/packages/biz/lib/BigImageModal/index.less +++ /dev/null @@ -1,514 +0,0 @@ -.zhst-image { - .zhst-dialog-content { - box-shadow: 0 4px 12px rgb(0 0 0 / 20%); - } - - .zhst-tabs .zhst-tabs-nav-wrap { - background-color: #f6f6f6; - } - - - &-view-container { - position: relative; - width: 100%; - margin-bottom: 16px; - - &__nav { - position: absolute; - z-index: 99; - top: 50%; - width: 40px !important; - height: 40px !important; - background: #d9d9d9; - border-radius: 100%; - cursor: pointer; - transform: translateY(-50%); - - &>button { - display: flex; - align-items: center; - color: #fff !important; - } - - &--disabled { - opacity: 0.3; - - &>button { - color: #fff !important; - } - } - } - - &__nav:hover { - background: #09f; - color: #fff !important; - } - } - - &-tool-container { - width: 100%; - height: 40px; - margin-bottom: 16px; - } - - &__face-score { - position: absolute; - right: 90px; - bottom: 80px; - color: red; - font-family: 'Microsoft YaHei'; - font-size: 19px; - font-weight: bold; - } - - &-carousel-container { - position: relative; - width: 100%; - height: 100px; - margin-top: 16px; - margin-bottom: 24px; - } -} - - -.zhst-image__tool { - display: flex; - width: 100%; - align-items: center; - font-size: 14px; - - &-split { - width: 0; - height: 14px; - - &::before { - display: block; - height: 100%; - border-left: 1px solid #e6e7eb; - content: ''; - } - } - - &-zoom { - display: inline-flex; - align-items: center; - - &> :not(:last-child) { - margin-right: 14px; - } - - &__scale { - display: inline-block; - width: 38px; - height: 14px; - - // margin-left: 15px; - box-sizing: content-box; - border: 1px solid rgb(77 77 77 / 100%); - margin-top: 2px; //对齐 - background: rgb(255 255 255 / 100%); - border-radius: 2px; - color: #4d4d4d; - cursor: default; - font-size: 12px; - line-height: 14px; - text-align: center; - } - } - - &-switch { - display: flex; - width: 30px; - flex-shrink: 0; - align-items: center; - justify-content: center; - margin: 0 26px; - } - - &-left { - display: flex; - flex: 1; - align-items: center; - justify-content: flex-end; - - &> :not(:last-child) { - margin-right: 14px; - } - } - - &-right { - display: flex; - flex: 1; - align-items: center; - justify-content: flex-start; - - &> :not(:first-child) { - margin-left: 20px; - } - } - - &-icon-container { - font-size: 14px; - - &--active { - color: #5584ff !important; - } - - &> :first-child { - margin-right: 2px; - } - } -} - -.zhst-image__carousel { - position: relative; - display: flex; - width: 742px; - height: 100px; - align-items: center; - justify-content: center; - border: 1px solid #f0f0f0; - margin: 0 auto; - background: #fafafa; - border-radius: 2px; - user-select: none; - - &-container { - width: (58px + 8px) * 10; - } - - &-item { - display: flex; - width: 58px + 8px; - align-items: center; - justify-content: center; - } - - &-item-img { - /* 尝试消除transform 副作用 */ - position: relative; - z-index: 99; - - // width: 58px; - // height: 76px; - display: flex; - width: 66px; - height: 84px; - box-sizing: border-box; - align-items: center; - justify-content: center; - background: #fafafa; - cursor: pointer; - - /* 尝试消除transform 副作用 end */ - &--active { - border: 2px solid #09f; - border-radius: 1px; - } - - &>div { - /* 尝试消除transform 副作用 */ - position: relative; - z-index: 99; - overflow: hidden; - width: 58px; - height: 76px; - - /* 尝试消除transform 副作用 end */ - &>img { - width: 58px; - height: 76px; - object-fit: contain; - transition: all 0.2s; - - &:hover { - transform: scale(1.5); - } - } - } - } -} - -.zhst-image__trackmodel { - &__panel { - position: relative; - z-index: 99; - top: 0; - right: 0; - width: 320px; - height: 100%; - background-color: #fff; - - &--head { - width: 100%; - height: 40px; - padding: 0 16px; - border-bottom: 1px solid #f0f0f0; - color: #333; - font-size: 14px; - font-weight: bold; - line-height: 40px; - text-align: left; - } - - &--track { - height: calc(100% - 40px); - } - - &-date { - padding: 10px 6px; - - // position: absolute; - } - } - - &--bigImage { - position: absolute; - z-index: 100; - top: 0; - left: 0; - display: flex; - width: 100%; - height: 100%; - justify-content: center; - padding-top: 59px; - background: rgb(0 0 0 / 40%); - - &--image { - width: 946px; - height: 532px; - - &>img { - width: 946px; - height: 532px; - object-fit: contain; - } - } - - &--close { - margin-left: 16px; - color: #fff; - } - } - - &__flooter { - position: absolute; - z-index: 999; - bottom: -124px; - left: 0; - width: calc(100% - 320px - 10px); - height: 144px; - background: #fff; - box-shadow: 0 0 8px 0 rgb(172 172 172 / 50%); - - &--head { - display: flex; - height: 20px; - align-items: center; - justify-content: center; - background: #f6f6f6; - color: #999; - line-height: 16px; - } - - &--body { - display: flex; - height: calc(100% - 20px); - padding-left: 50px; - - &__title { - color: #333; - font-size: 12px; - font-weight: bold; - line-height: 16px; - } - - &__text { - overflow: hidden; - color: #333; - font-size: 12px; - line-height: 16px; - text-overflow: ellipsis; - white-space: nowrap; - } - - &--left { - display: flex; - width: 75px; - height: 100; - align-items: center; - - &>img { - width: 75px; - height: 100px; - object-fit: contain; - } - } - - &--middle { - display: grid; - width: 331px; - justify-content: flex-start; - padding: 8px 20px; - border-right: 1px solid #f0f0f0; - - &>div { - display: flex; - } - } - - &--right { - display: grid; - width: calc(100% - 331px - 75px); - padding: 8px 20px; - - &>div { - display: flex; - } - - &__button-list { - display: flex; - align-items: center; - - &>button { - margin-right: 20px; - - &>span { - color: #09f !important; - } - - &:hover { - &>span { - color: #247fdb !important; - } - } - } - } - } - } - - @keyframes close { - from { - bottom: 0; - } - - to { - bottom: -124px; - } - } - - @keyframes open { - from { - bottom: -124px; - } - - to { - bottom: 0; - } - } - - &--close { - bottom: -124px; - animation-duration: 1s; - animation-name: close; - } - - &--open { - bottom: 0; - animation-duration: 1s; - animation-name: open; - } - } -} - -.zhst-image__attributePanel { - margin: 0 66px; - background: #f6f6f6; - margin-top: 20px; - padding-top: 16px; - display: flex; - justify-content: center; - - &>div:first-child { - width: fit-content; - display: flex; - flex-direction: column; - } - - &-title { - color: rgb(0 0 0 / 88%); - font-weight: bold; - padding-bottom: 12px; - } - - &-item { - display: flex; - } - - &-label { - color: rgb(0 0 0 / 45%); - } - - &-value { - color: rgb(0 0 0 / 88%); - } -} - -.relatedWrapper { - width: 100%; - height: 100px; - padding: 0 30px; - margin-bottom: 30px; - box-sizing: border-box; - - .relatedTabs { - width: 100%; - height: 100px; - } - - .relatedContent { - width: 100%; - height: 100px; - display: flex; - - .relatedPics { - width: 742px; - height: 100px; - } - - .disabled { - color: rgba(0, 0, 0, 25%); - } - - .relatedBtn { - flex: 1; - font-size: 14px; - color: #333; - display: flex; - align-items: flex-end; - cursor: pointer; - - &:hover { - color: #09f; - } - } - } - - :global { - .ant-tabs-left>.ant-tabs-content-holder>.ant-tabs-content>.ant-tabs-tabpane { - padding-left: 16px; - } - - .ant-tabs-tab { - padding: 8px 12px !important; - text-align: right !important; - } - - .ant-tabs .ant-tabs-tab { - font-size: 14px; - font-weight: bold; - text-align: right; - justify-content: flex-end; - } - } -} diff --git a/packages/biz/lib/BigImageModal/mock.d.ts b/packages/biz/lib/BigImageModal/mock.d.ts deleted file mode 100644 index 68ff4e3..0000000 --- a/packages/biz/lib/BigImageModal/mock.d.ts +++ /dev/null @@ -1,245 +0,0 @@ -export declare const IMAGE_DATA: { - enAbleDeleteFeature: boolean; - tabsFilter: string[]; - selectIndex: number; - disableBtn: number[]; - dataSource: { - objectId: string; - condition: { - featureInfo: null; - featureData: string; - imageData: string; - alg: string; - rect: { - x: number; - y: number; - w: number; - h: number; - }; - objectImageUrl: string; - srcImageUrl: string; - }; - score: number; - timestamp: number; - deviceId: string; - id: string; - name: string; - dirid: string; - status: string; - longitude: number; - latitude: number; - caseId: string; - caseGroup: string; - isDeleted: string; - objectIndex: { - objectId: string; - solutionId: string; - deviceId: string; - fragmentId: string; - }; - objectType: string; - isObjectTrack: boolean; - pathId: string; - frameInfo: { - frameId: string; - frameTimestamp: string; - width: number; - height: number; - originWidth: number; - originHeight: number; - offsetTime: string; - skipNumber: string; - }; - level: number; - bboxInFrame: { - x: number; - y: number; - w: number; - h: number; - }; - bboxExtInFrame: { - x: number; - y: number; - w: number; - h: number; - }; - objectImageKey: string; - objectExtImageKey: string; - frameImageKey: string; - confidence: number; - sourceObjectId: string; - storeTimestamp: string; - gbNumber: string; - qualityScore: number; - subObjectCount: number; - subObjectType: string[]; - subObjectIds: string[]; - solutionId: string; - fragmentId: string; - contrastKey: string; - compaterImages: string[]; - imgSummary: string; - imageKey: string; - srcImageUrl: string; - algorithmVersion: string; - cameraId: string; - cameraName: string; - }[]; - isArchiveDetail: boolean; - ToolProps: { - renderVideoBtn: boolean; - disableVideo: boolean; - }; - specialTitle: string; -}; -export declare const BIG_IMAGE_DATA: ({ - imageKey: string; - imgSummary: string; - flvUrl: string; - compaterImages: string[]; - odRect: { - x: number; - y: number; - w: number; - h: number; - }; - attachImg: { - url: string; - label: string; - }[]; - score: string; - showScore: boolean; - cameraPosition: string; - time: string; - objects: { - objectIndex: { - objectId: string; - solutionId: string; - deviceId: string; - fragmentId: string; - }; - objectType: string; - sourceObjectId: string; - level: number; - confidence: number; - frameInfo: { - frameId: string; - frameTimestamp: string; - width: number; - height: number; - originWidth: number; - originHeight: number; - offsetTime: string; - skipNumber: string; - }; - infoOnSource: { - bboxInFrame: { - bboxRatio: { - x: number; - y: number; - w: number; - h: number; - }; - }; - countInSource: number; - indexInSource: number; - }; - qualityScore: number; - }[]; -} | { - imageKey: string; - imgSummary: string; - odRect: { - x: number; - y: number; - w: number; - h: number; - }; - attachImg: { - url: string; - label: string; - }[]; - flvUrl: string; - score: number; - showScore: boolean; - cameraPosition: string; - time: string; - objects: ({ - objectIndex: { - objectId: string; - solutionId: string; - deviceId: string; - fragmentId: string; - }; - objectType: string; - sourceObjectId: string; - frameInfo: { - frameId: string; - frameTimestamp: string; - width: number; - height: number; - originWidth: number; - originHeight: number; - offsetTime: string; - skipNumber: string; - }; - infoOnSource: { - bboxInFrame: { - bboxRatio: { - x: number; - y: number; - w: number; - h: number; - }; - }; - countInSource: number; - indexInSource: number; - }; - qualityScore: number; - level?: undefined; - confidence?: undefined; - } | { - objectIndex: { - objectId: string; - solutionId: string; - deviceId: string; - fragmentId: string; - }; - objectType: string; - sourceObjectId: string; - level: number; - confidence: number; - frameInfo: { - frameId: string; - frameTimestamp: string; - width: number; - height: number; - originWidth: number; - originHeight: number; - offsetTime: string; - skipNumber: string; - }; - infoOnSource: { - bboxInFrame: { - bboxRatio: { - x: number; - y: number; - w: number; - h: number; - }; - }; - countInSource: number; - indexInSource: number; - }; - qualityScore: number; - })[]; - compaterImages?: undefined; -})[]; -export declare const attributeList: { - title: string; - children: { - key: string; - label: string; - children: string; - }[]; -}[]; diff --git a/packages/biz/lib/BigImageModal/mock.js b/packages/biz/lib/BigImageModal/mock.js deleted file mode 100644 index 42b5935..0000000 --- a/packages/biz/lib/BigImageModal/mock.js +++ /dev/null @@ -1,567 +0,0 @@ -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/BigImageModal/mock.ts -var mock_exports = {}; -__export(mock_exports, { - BIG_IMAGE_DATA: () => BIG_IMAGE_DATA, - IMAGE_DATA: () => IMAGE_DATA, - attributeList: () => attributeList -}); -module.exports = __toCommonJS(mock_exports); -var IMAGE_DATA = { - "enAbleDeleteFeature": true, - "tabsFilter": [ - "COMPATER", - "NORMAL" - ], - "selectIndex": 4, - "disableBtn": [ - 0, - 1, - 4, - 20 - ], - "dataSource": [ - { - "objectId": "1742110565582518272", - "condition": { - "featureInfo": null, - "featureData": "AAAAAAAAAAAAAAAAAAAAAAA==", - "imageData": "", - "alg": "VERSION_REID_HEAD_ATTR", - "rect": { - "x": 0.271875, - "y": 0.32222223, - "w": 0.2859375, - "h": 0.67777777 - }, - "objectImageUrl": "singer-20240102/1/129529/1742047651878156288.jpg", - "srcImageUrl": "singer-20240102/1/129529/1742047652511496192.jpg" - }, - "score": 0.7163062, - "timestamp": 1704186491979, - "deviceId": "129533", - "id": "129533", - "name": "4楼门口过道人脸", - "dirid": "0", - "status": "1", - "longitude": 120.125, - "latitude": 30.280500411987305, - "caseId": "0", - "caseGroup": "", - "isDeleted": "DEVICEMANAGER_BOOL_DEFAULT", - "objectIndex": { - "objectId": "1742110565582518272", - "solutionId": "1", - "deviceId": "129533", - "fragmentId": "0" - }, - "objectType": "OBJECT_TYPE_PEDESTRAIN", - "isObjectTrack": true, - "pathId": "1742110532019697664", - "frameInfo": { - "frameId": "0", - "frameTimestamp": "1704186491979", - "width": 0, - "height": 0, - "originWidth": 1920, - "originHeight": 1080, - "offsetTime": "24714687", - "skipNumber": "0" - }, - "level": 1, - "bboxInFrame": { - "x": 0.603125, - "y": 0.3314815, - "w": 0.0578125, - "h": 0.2712963 - }, - "bboxExtInFrame": { - "x": 0.546875, - "y": 0.2638889, - "w": 0.17135416, - "h": 0.40648147 - }, - "objectImageKey": "", - "objectExtImageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129533/1742110565582518272.jpg", - "frameImageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129533/1742110565603489792.jpg", - "confidence": 0.817271, - "sourceObjectId": "1742110565603489792", - "storeTimestamp": "0", - "gbNumber": "", - "qualityScore": 0, - "subObjectCount": 1, - "subObjectType": [ - "OBJECT_TYPE_FACE" - ], - "subObjectIds": [ - "1742110532015503360" - ], - "solutionId": "1", - "fragmentId": "0", - "contrastKey": "singer-20240102/1/129533/1742110565582518272.jpg", - "compaterImages": [ - "http://10.0.0.7:30003/file/singer-20240102/1/129529/1742047651878156288.jpg" - ], - "imgSummary": "singer-20240102/1/129533/1742110565582518272.jpg", - "imageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129533/1742110565582518272.jpg", - "srcImageUrl": "http://10.0.0.7:30003/file/singer-20240102/1/129533/1742110565603489792.jpg", - "algorithmVersion": "VERSION_REID_HEAD_ATTR", - "cameraId": "129533", - "cameraName": "4楼门口过道人脸" - }, - { - "objectId": "1742092680994764802", - "condition": { - "featureInfo": null, - "featureData": "AAAAAAAAAAAAAAAAAAAAAAAAA==", - "imageData": "", - "alg": "VERSION_REID_HEAD_ATTR", - "rect": { - "x": 0.271875, - "y": 0.32222223, - "w": 0.2859375, - "h": 0.67777777 - }, - "objectImageUrl": "singer-20240102/1/129529/1742047651878156288.jpg", - "srcImageUrl": "singer-20240102/1/129529/1742047652511496192.jpg" - }, - "score": 0.7007122, - "timestamp": 1704182225679, - "deviceId": "129533", - "id": "129533", - "name": "4楼门口过道人脸", - "dirid": "0", - "status": "1", - "longitude": 120.125, - "latitude": 30.280500411987305, - "caseId": "0", - "caseGroup": "", - "isDeleted": "DEVICEMANAGER_BOOL_DEFAULT", - "objectIndex": { - "objectId": "1742092680994764802", - "solutionId": "1", - "deviceId": "129533", - "fragmentId": "0" - }, - "objectType": "OBJECT_TYPE_PEDESTRAIN", - "isObjectTrack": true, - "pathId": "1742092646219790337", - "frameInfo": { - "frameId": "0", - "frameTimestamp": "1704182225679", - "width": 0, - "height": 0, - "originWidth": 1920, - "originHeight": 1080, - "offsetTime": "20448387", - "skipNumber": "0" - }, - "level": 1, - "bboxInFrame": { - "x": 0.5265625, - "y": 0.49537036, - "w": 0.104166664, - "h": 0.35833332 - }, - "bboxExtInFrame": { - "x": 0.465625, - "y": 0.40648147, - "w": 0.22708334, - "h": 0.537963 - }, - "objectImageKey": "", - "objectExtImageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129533/1742092680994764802.jpg", - "frameImageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129533/1742092681720379392.jpg", - "confidence": 0.769764, - "sourceObjectId": "1742092681720379392", - "storeTimestamp": "0", - "gbNumber": "", - "qualityScore": 0, - "subObjectCount": 0, - "subObjectType": [], - "subObjectIds": [], - "solutionId": "1", - "fragmentId": "0", - "contrastKey": "singer-20240102/1/129533/1742092680994764802.jpg", - "compaterImages": [ - "http://10.0.0.7:30003/file/singer-20240102/1/129529/1742047651878156288.jpg" - ], - "imgSummary": "singer-20240102/1/129533/1742092680994764802.jpg", - "imageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129533/1742092680994764802.jpg", - "srcImageUrl": "http://10.0.0.7:30003/file/singer-20240102/1/129533/1742092681720379392.jpg", - "algorithmVersion": "VERSION_REID_HEAD_ATTR", - "cameraId": "129533", - "cameraName": "4楼门口过道人脸" - }, - { - "objectId": "1742092514409592832", - "condition": { - "featureInfo": null, - "featureData": "AAAAAAAAAAAAAAAAAAAAAAAA==", - "imageData": "", - "alg": "VERSION_REID_HEAD_ATTR", - "rect": { - "x": 0.271875, - "y": 0.32222223, - "w": 0.2859375, - "h": 0.67777777 - }, - "objectImageUrl": "singer-20240102/1/129529/1742047651878156288.jpg", - "srcImageUrl": "singer-20240102/1/129529/1742047652511496192.jpg" - }, - "score": 0.703765, - "timestamp": 1704182186451, - "deviceId": "129529", - "id": "129529", - "name": "4入口人脸", - "dirid": "0", - "status": "1", - "longitude": 120.12100219726562, - "latitude": 30.280099868774414, - "caseId": "0", - "caseGroup": "", - "isDeleted": "DEVICEMANAGER_BOOL_DEFAULT", - "objectIndex": { - "objectId": "1742092514409592832", - "solutionId": "1", - "deviceId": "129529", - "fragmentId": "0" - }, - "objectType": "OBJECT_TYPE_PEDESTRAIN", - "isObjectTrack": true, - "pathId": "1742092482440607744", - "frameInfo": { - "frameId": "0", - "frameTimestamp": "1704182186451", - "width": 0, - "height": 0, - "originWidth": 2560, - "originHeight": 1440, - "offsetTime": "20409182", - "skipNumber": "0" - }, - "level": 1, - "bboxInFrame": { - "x": 0.6195313, - "y": 0.24583334, - "w": 0.09804688, - "h": 0.41944444 - }, - "bboxExtInFrame": { - "x": 0.53515625, - "y": 0.14027777, - "w": 0.26640624, - "h": 0.63125 - }, - "objectImageKey": "", - "objectExtImageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129529/1742092514409592832.jpg", - "frameImageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129529/1742092515508500480.jpg", - "confidence": 0.92494, - "sourceObjectId": "1742092515508500480", - "storeTimestamp": "0", - "gbNumber": "", - "qualityScore": 0, - "subObjectCount": 1, - "subObjectType": [ - "OBJECT_TYPE_FACE" - ], - "subObjectIds": [ - "1742092482432219136" - ], - "solutionId": "1", - "fragmentId": "0", - "contrastKey": "singer-20240102/1/129529/1742092514409592832.jpg", - "compaterImages": [ - "http://10.0.0.7:30003/file/singer-20240102/1/129529/1742047651878156288.jpg" - ], - "imgSummary": "singer-20240102/1/129529/1742092514409592832.jpg", - "imageKey": "http://10.0.0.7:30003/file/singer-20240102/1/129529/1742092514409592832.jpg", - "srcImageUrl": "http://10.0.0.7:30003/file/singer-20240102/1/129529/1742092515508500480.jpg", - "algorithmVersion": "VERSION_REID_HEAD_ATTR", - "cameraId": "129529", - "cameraName": "4入口人脸" - } - ], - "isArchiveDetail": false, - "ToolProps": { - "renderVideoBtn": true, - "disableVideo": false - }, - "specialTitle": "" -}; -var BIG_IMAGE_DATA = [ - { - imageKey: "http://10.0.0.120:30003/file/singer-20240110/1/5/1744894622934503424.jpg", - imgSummary: "http://10.0.0.120:30003/file/singer-20240117/1/5/1747536346412488704.jpg", - flvUrl: "ws://10.0.0.120:9033/flv/Sip/34020000001310000301.flv?ip=10.0.0.120&stime=1704815972&etime=1704815992", - compaterImages: [ - "http://10.0.0.120:30003/file/singer-20240117/1/5/1747536346412488704.jpg", - "http://10.0.0.120:30003/file/public/public_20240117/file/dfdd3340-53c8-4dc4-9921-f13230aa0355.jpg" - ], - odRect: { - "x": 0.5445312, - "y": 0.19166666, - "w": 0.08671875, - "h": 0.40138888 - }, - attachImg: [ - { - "url": "http://10.0.0.120:30003/file/singer-20240110/1/5/1744894622695428096.jpg", - "label": "形体" - }, - { - "url": "http://10.0.0.120:30003/file/singer-20240110/1/5/1744894588427964418.jpg", - "label": "人脸" - } - ], - score: "0.6", - // 人脸质量分 - showScore: true, - // 人脸质量分 - cameraPosition: "string", - // 摄像头位置 - time: "2022-01-01", - // 摄像头拍摄时间 - objects: [ - { - "objectIndex": { - "objectId": "1746832189053474816", - "solutionId": "0", - "deviceId": "0", - "fragmentId": "0" - }, - "objectType": "OBJECT_TYPE_PEDESTRAIN", - "sourceObjectId": "0", - "level": 0, - "confidence": 0.881164, - "frameInfo": { - "frameId": "0", - "frameTimestamp": "1705312223057", - "width": 0, - "height": 0, - "originWidth": 0, - "originHeight": 0, - "offsetTime": "0", - "skipNumber": "0" - }, - "infoOnSource": { - "bboxInFrame": { - "bboxRatio": { - "x": 0.61418945, - "y": 0.34309354, - "w": 0.067661405, - "h": 0.34659258 - } - }, - "countInSource": 0, - "indexInSource": 0 - }, - "qualityScore": 0 - } - ] - }, - { - imageKey: "http://10.0.0.120:30003/file/singer-20240115/1/9/1746795581994436608.jpg", - imgSummary: "http://10.0.0.120:30003/file/singer-20240117/1/5/1747536346412488704.jpg", - odRect: { - "x": 0.553125, - "y": 0.29722223, - "w": 0.048958335, - "h": 0.2462963 - }, - attachImg: [ - { - "url": "http://10.0.0.120:30003/file/singer-20240115/1/9/1746795581163964416.jpg", - "label": "形体" - }, - { - "url": "http://10.0.0.120:30003/file/singer-20240115/1/9/1746795546867140608.jpg", - "label": "人脸" - } - ], - flvUrl: "ws://10.0.0.120:9033/flv/HaikangNvr/34.flv?ip=10.0.2.103&stime=1705302394&etime=1705302414", - score: 0.815207, - // 人脸质量分 - showScore: true, - // 人脸质量分 - cameraPosition: "string", - // 摄像头位置 - time: "2022-01-01", - // 摄像头拍摄时间 - objects: [ - { - "objectIndex": { - "objectId": "1746816737430472704", - "solutionId": "0", - "deviceId": "0", - "fragmentId": "0" - }, - "objectType": "OBJECT_TYPE_PEDESTRAIN", - "sourceObjectId": "0", - "frameInfo": { - "frameId": "0", - "frameTimestamp": "1705308539109", - "width": 0, - "height": 0, - "originWidth": 0, - "originHeight": 0, - "offsetTime": "0", - "skipNumber": "0" - }, - "infoOnSource": { - "bboxInFrame": { - "bboxRatio": { - "x": 0.5519352, - "y": 0.2965385, - "w": 0.05185461, - "h": 0.24698898 - } - }, - "countInSource": 0, - "indexInSource": 0 - }, - "qualityScore": 0 - }, - { - "objectIndex": { - "objectId": "1746816737430472705", - "solutionId": "0", - "deviceId": "0", - "fragmentId": "0" - }, - "objectType": "OBJECT_TYPE_PEDESTRAIN", - "sourceObjectId": "0", - "level": 0, - "confidence": 0.9310699, - "frameInfo": { - "frameId": "0", - "frameTimestamp": "1705308539109", - "width": 0, - "height": 0, - "originWidth": 0, - "originHeight": 0, - "offsetTime": "0", - "skipNumber": "0" - }, - "infoOnSource": { - "bboxInFrame": { - "bboxRatio": { - "x": 0.58543766, - "y": 0.3203356, - "w": 0.052037954, - "h": 0.2664015 - } - }, - "countInSource": 0, - "indexInSource": 0 - }, - "qualityScore": 0 - } - ] - } -]; -var attributeList = [ - { - title: "人员属性", - children: [ - { - key: "1", - label: "性别", - children: "男" - }, - { - key: "2", - label: "年龄", - children: "成年" - }, - { - key: "3", - label: "帽子", - children: "无" - }, - { - key: "4", - label: "上身颜色", - children: "灰" - }, - { - key: "5", - label: "下身颜色", - children: "蓝色" - }, - { - key: "6", - label: "附着物", - children: "无" - }, - { - key: "7", - label: "骑行", - children: "否" - } - ] - }, - { - title: "社区规范", - children: [ - { - key: "1", - label: "性别", - children: "男" - }, - { - key: "2", - label: "年龄", - children: "成年" - }, - { - key: "3", - label: "帽子", - children: "无" - }, - { - key: "4", - label: "上身颜色", - children: "灰" - }, - { - key: "5", - label: "下身颜色", - children: "蓝色" - }, - { - key: "6", - label: "附着物", - children: "无" - }, - { - key: "7", - label: "骑行", - children: "否" - } - ] - } -]; -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - BIG_IMAGE_DATA, - IMAGE_DATA, - attributeList -}); diff --git a/packages/biz/lib/BigImageModal/util/bigImageModalAdapter.d.ts b/packages/biz/lib/BigImageModal/util/bigImageModalAdapter.d.ts deleted file mode 100644 index 185982d..0000000 --- a/packages/biz/lib/BigImageModal/util/bigImageModalAdapter.d.ts +++ /dev/null @@ -1,118 +0,0 @@ -/** - * 适配老的大屏组件数据格式传入 - */ -import React from 'react'; -import { AlgorithmVersionStr, HumanProperty, ObjectType, Rect } from '@zhst/types'; -import { VideoViewProps, ImgViewProps, VideoViewRef, ImgViewRef } from '@zhst/meta'; -export type TAB_TYPE = 'COMPATER' | 'NORMAL' | 'TRACK'; -export type MODEL_TYPE = 'VIDEO' | 'IMAGE'; -export interface CarouselProps { - hasPre?: boolean; - hasNext?: boolean; - selectIndex: number; - setSelectIndex: React.Dispatch>; - dataSource: Array<{ - key: string; - url: string; - }>; -} -export type ISelectItem = Partial> & Partial>; -/** - * 描述列表 description - */ -export interface HeaderProps { - value: TAB_TYPE; - onChange: (type: TAB_TYPE) => void; - tabsFilter: TAB_TYPE[]; -} -export interface ParamProps { - tab: string; - selectItem: ISelectItem; - imgViewRef: React.MutableRefObject; - VideoViewRef: React.MutableRefObject; - model: MODEL_TYPE; - setModel: React.Dispatch>; - scale$: number; - showCrop$: boolean; -} -/** - * 工具栏 - */ -export interface ToolProps { - renderRight?: (props: ParamProps) => React.ReactNode; - renderLeft?: (props: ParamProps) => React.ReactNode; - renderVideoBtn?: boolean; - param: ParamProps; - disableVideo: boolean; -} -export interface BigImageData { - extendRectList: (Rect & { - algorithmVersion: AlgorithmVersionStr; - imageKey: string; - })[]; - rectList: (Rect & { - algorithmVersion: AlgorithmVersionStr; - imageKey: string; - })[]; - attachImg: { - url: string; - label: '形体' | '人脸'; - }[]; - odRect: Rect; - compaterImages: string[]; - constractKey: string; - frameImageKey: string; - imageKey?: string; - imgSummary: string; - objectExtImageKey: string; - attributeList: { - label: string; - list: any[]; - }[]; - archiveImages?: any; - spaceName: string; - objectIndex?: { - deviceId: string; - fragmentId: string; - objectId: string; - solutionId: string; - }; - objectType: ObjectType; - objectId: string; - bodyObjectId?: string; - faceObjectId?: string; - sourceObjectId?: string; - cameraId: string; - cameraName: string; - selectIndex: number; - humanProperty: HumanProperty; - qualityScore?: number; - score: number; - timestamp: string; - bodyImageUrl: string; - faceImageUrl: string; - algorithmVersion: AlgorithmVersionStr; - bodySpaceName: string; - faceSpaceName: string; - position: { - lat: number; - lng: number; - }; - solutionId?: string; - [index: string]: any; -} -export interface ImageModalDataProps { - targetData: BigImageData[]; - compactData: BigImageData[]; -} -export interface ModalAdapterConfigProps { - oldMode?: boolean; -} -/** - * 大图组件适配器,兼容老接口 - * @param Cmp 大图组件 - * @param config 额外配置 - * @returns 大图组件 - */ -declare const adapter: (Cmp: any, config: ModalAdapterConfigProps) => any; -export default adapter; diff --git a/packages/biz/lib/BigImageModal/util/bigImageModalAdapter.js b/packages/biz/lib/BigImageModal/util/bigImageModalAdapter.js deleted file mode 100644 index cc45b23..0000000 --- a/packages/biz/lib/BigImageModal/util/bigImageModalAdapter.js +++ /dev/null @@ -1,57 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/BigImageModal/util/bigImageModalAdapter.tsx -var bigImageModalAdapter_exports = {}; -__export(bigImageModalAdapter_exports, { - default: () => bigImageModalAdapter_default -}); -module.exports = __toCommonJS(bigImageModalAdapter_exports); -var import_react = __toESM(require("react")); -var translateOldImageData = (_data) => { - return { - ..._data, - open: _data.visible, - onCancel: _data.onClose - }; -}; -var adapter = (Cmp, config) => { - const { oldMode = false } = config; - return (props) => { - const newProps = oldMode ? translateOldImageData(props) : props; - console.log("adapter----适配数据", props, newProps); - delete newProps.visible; - return /* @__PURE__ */ import_react.default.createElement( - Cmp, - { - ...newProps - } - ); - }; -}; -var bigImageModalAdapter_default = adapter; diff --git a/packages/biz/lib/Demo/index.d.ts b/packages/biz/lib/Demo/index.d.ts deleted file mode 100644 index bcc157c..0000000 --- a/packages/biz/lib/Demo/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import React from 'react'; -declare const _default: () => React.JSX.Element; -export default _default; diff --git a/packages/biz/lib/Demo/index.js b/packages/biz/lib/Demo/index.js deleted file mode 100644 index 53d0cc4..0000000 --- a/packages/biz/lib/Demo/index.js +++ /dev/null @@ -1,41 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/Demo/index.tsx -var Demo_exports = {}; -__export(Demo_exports, { - default: () => Demo_default -}); -module.exports = __toCommonJS(Demo_exports); -var import_react = __toESM(require("react")); -var import_meta = require("@zhst/meta"); -var import_hooks = require("@zhst/hooks"); -var Demo_default = () => { - const { run } = (0, import_hooks.useThrottleFn)(() => console.log("123")); - return /* @__PURE__ */ import_react.default.createElement(import_meta.Button, { onClick: () => run() }, "测试"); -}; diff --git a/packages/biz/lib/RealTimeMonitor/RealTimeMonitor.d.ts b/packages/biz/lib/RealTimeMonitor/RealTimeMonitor.d.ts deleted file mode 100644 index a3f147f..0000000 --- a/packages/biz/lib/RealTimeMonitor/RealTimeMonitor.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; -import { IRecord, VideoPlayerCardProps, ViewLargerImageModalRef } from '@zhst/biz'; -interface RealTimeMonitorProps { - videoDataSource?: VideoPlayerCardProps[]; - handleWindowClick?: (key?: string) => void; - handleCloseButtonClick?: (key?: string) => void; - selectedWindowKey?: string; - warningDataSource?: IRecord[]; - viewLargerImageModalRef?: React.RefObject; - handleDownloadImg?: (imgSrc?: string) => void; - onRecordClick?: (record?: IRecord) => void; - selectedRecordId?: string; - isRecordListLoading?: boolean; - recordListTitle?: string; - style?: React.CSSProperties; - cardStyle?: React.CSSProperties; - imgStyle?: React.CSSProperties; - largeImageTitle?: string; -} -export declare const RealTimeMonitor: React.FC; -export default RealTimeMonitor; diff --git a/packages/biz/lib/RealTimeMonitor/RealTimeMonitor.js b/packages/biz/lib/RealTimeMonitor/RealTimeMonitor.js deleted file mode 100644 index 48ad4dc..0000000 --- a/packages/biz/lib/RealTimeMonitor/RealTimeMonitor.js +++ /dev/null @@ -1,77 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/RealTimeMonitor/RealTimeMonitor.tsx -var RealTimeMonitor_exports = {}; -__export(RealTimeMonitor_exports, { - RealTimeMonitor: () => RealTimeMonitor, - default: () => RealTimeMonitor_default -}); -module.exports = __toCommonJS(RealTimeMonitor_exports); -var import_react = __toESM(require("react")); -var import_WindowToggle = __toESM(require("./components/WindowToggle")); -var import_WarningRecordList = __toESM(require("./components/WarningRecordList")); -var RealTimeMonitor = (props) => { - const { - videoDataSource, - handleWindowClick, - handleCloseButtonClick, - selectedWindowKey, - warningDataSource, - viewLargerImageModalRef, - handleDownloadImg, - onRecordClick, - selectedRecordId, - isRecordListLoading - } = props; - return /* @__PURE__ */ import_react.default.createElement("div", { className: "zhst-biz-real-time-monitor", style: { display: "flex" } }, /* @__PURE__ */ import_react.default.createElement( - import_WindowToggle.default, - { - selectedWindowKey, - dataSource: videoDataSource, - handleWindowClick, - handleCloseButtonClick - } - ), /* @__PURE__ */ import_react.default.createElement( - import_WarningRecordList.default, - { - dataSource: warningDataSource, - handleDownloadImg, - onRecordClick, - selectedRecordId, - viewLargerImageModalRef, - isRecordListLoading, - recordListTitle: "监控预警记录" - } - )); -}; -var RealTimeMonitor_default = RealTimeMonitor; -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - RealTimeMonitor -}); diff --git a/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/WarningRecordList.d.ts b/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/WarningRecordList.d.ts deleted file mode 100644 index 6489299..0000000 --- a/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/WarningRecordList.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; -import { IRecord, ViewLargerImageModalRef } from '@zhst/biz'; -import "./index.less"; -interface WarningRecordListProps { - dataSource?: IRecord[]; - viewLargerImageModalRef?: React.RefObject; - handleDownloadImg?: (imgSrc?: string) => void; - onRecordClick?: (record?: IRecord) => void; - selectedRecordId?: string; - isRecordListLoading?: boolean; - recordListTitle?: string; - style?: React.CSSProperties; - cardStyle?: React.CSSProperties; - imgStyle?: React.CSSProperties; - largeImageTitle?: string; -} -declare const WarningRecordList: React.FC; -export default WarningRecordList; diff --git a/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/WarningRecordList.js b/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/WarningRecordList.js deleted file mode 100644 index a2441e3..0000000 --- a/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/WarningRecordList.js +++ /dev/null @@ -1,74 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/RealTimeMonitor/components/WarningRecordList/WarningRecordList.tsx -var WarningRecordList_exports = {}; -__export(WarningRecordList_exports, { - default: () => WarningRecordList_default -}); -module.exports = __toCommonJS(WarningRecordList_exports); -var import_react = __toESM(require("react")); -var import_biz = require("@zhst/biz"); -var import_antd = require("antd"); -var import_index = require("./index.less"); -var import_icons = require("@ant-design/icons"); -var WarningRecordList = (props) => { - const { - dataSource = [], - viewLargerImageModalRef, - selectedRecordId, - handleDownloadImg, - onRecordClick, - isRecordListLoading, - recordListTitle, - style, - cardStyle, - imgStyle, - largeImageTitle - } = props; - return /* @__PURE__ */ import_react.default.createElement("div", { className: "zhst-biz-warning-record-list", style }, /* @__PURE__ */ import_react.default.createElement("div", { className: "header" }, recordListTitle), /* @__PURE__ */ import_react.default.createElement("div", { className: "body" }, isRecordListLoading ? /* @__PURE__ */ import_react.default.createElement("div", { style: { height: "100%", display: "flex", justifyContent: "center", alignItems: "center" } }, /* @__PURE__ */ import_react.default.createElement(import_antd.Spin, { indicator: /* @__PURE__ */ import_react.default.createElement(import_icons.LoadingOutlined, { style: { fontSize: 24 } }) })) : (dataSource == null ? void 0 : dataSource.length) > 0 ? /* @__PURE__ */ import_react.default.createElement(import_antd.Space, { direction: "vertical", size: 10 }, dataSource == null ? void 0 : dataSource.map( - (record, index) => { - if (index > 2) - return; - return /* @__PURE__ */ import_react.default.createElement( - import_biz.WarningRecordCard, - { - key: record == null ? void 0 : record.id, - record, - onRecordClick: (record2) => { - onRecordClick == null ? void 0 : onRecordClick(record2); - }, - selectedRecordId, - cardStyle: { width: 300, height: 264, ...cardStyle }, - imgStyle: { width: 280, height: 169, ...imgStyle } - } - ); - } - )) : /* @__PURE__ */ import_react.default.createElement("div", { style: { height: "100%", display: "flex", justifyContent: "center", alignItems: "center" } }, /* @__PURE__ */ import_react.default.createElement(import_antd.Empty, { description: "暂无数据" }))), /* @__PURE__ */ import_react.default.createElement(import_biz.ViewLargerImageModal, { ref: viewLargerImageModalRef, downloadImg: handleDownloadImg, title: largeImageTitle })); -}; -var WarningRecordList_default = WarningRecordList; diff --git a/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.d.ts b/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.d.ts deleted file mode 100644 index b50da75..0000000 --- a/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import WarningRecordList from './WarningRecordList'; -export default WarningRecordList; diff --git a/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.js b/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.js deleted file mode 100644 index 6f47b77..0000000 --- a/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.js +++ /dev/null @@ -1,36 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/RealTimeMonitor/components/WarningRecordList/index.tsx -var WarningRecordList_exports = {}; -__export(WarningRecordList_exports, { - default: () => WarningRecordList_default -}); -module.exports = __toCommonJS(WarningRecordList_exports); -var import_WarningRecordList = __toESM(require("./WarningRecordList")); -var WarningRecordList_default = import_WarningRecordList.default; diff --git a/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.less b/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.less deleted file mode 100644 index e348f82..0000000 --- a/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.less +++ /dev/null @@ -1,20 +0,0 @@ -.zhst-biz-warning-record-list { - display: flex; - flex-direction: column; - border-left: solid 1px #00000026; - width: 320px; - - .header { - width: 100%; - height: 48px; - background-color: #EFF2F4; - padding: 10px 20px; - box-sizing: border-box; - } - - .body { - padding: 10px; - overflow: hidden; - flex: 1; - } -} \ No newline at end of file diff --git a/packages/biz/lib/RealTimeMonitor/components/WindowToggle/WindowToggle.d.ts b/packages/biz/lib/RealTimeMonitor/components/WindowToggle/WindowToggle.d.ts deleted file mode 100644 index c67b407..0000000 --- a/packages/biz/lib/RealTimeMonitor/components/WindowToggle/WindowToggle.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react'; -import { VideoPlayerCardProps } from '@zhst/biz'; -import './index.less'; -interface WindowToggleProps { - dataSource?: VideoPlayerCardProps[]; - handleWindowClick?: (key?: string) => void; - handleCloseButtonClick?: (key?: string) => void; - selectedWindowKey?: string; -} -export declare const WindowToggle: React.FC; -export default WindowToggle; diff --git a/packages/biz/lib/RealTimeMonitor/components/WindowToggle/WindowToggle.js b/packages/biz/lib/RealTimeMonitor/components/WindowToggle/WindowToggle.js deleted file mode 100644 index ccd71ed..0000000 --- a/packages/biz/lib/RealTimeMonitor/components/WindowToggle/WindowToggle.js +++ /dev/null @@ -1,88 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/RealTimeMonitor/components/WindowToggle/WindowToggle.tsx -var WindowToggle_exports = {}; -__export(WindowToggle_exports, { - WindowToggle: () => WindowToggle, - default: () => WindowToggle_default -}); -module.exports = __toCommonJS(WindowToggle_exports); -var import_react = __toESM(require("react")); -var import_antd = require("antd"); -var import_icons = require("@ant-design/icons"); -var import_biz = require("@zhst/biz"); -var import_index = require("./index.less"); -var import_lib = require("antd/lib"); -var WindowToggle = (props) => { - const { dataSource = [], handleWindowClick, handleCloseButtonClick, selectedWindowKey } = props; - const [size, setSize] = (0, import_react.useState)("large"); - const { useToken } = import_lib.theme; - const { token } = useToken(); - const getLabelStyle = (isSelected) => ({ - padding: "0 11px", - background: "#fff", - ...isSelected ? { background: token.colorPrimary, color: "#fff" } : {} - }); - return /* @__PURE__ */ import_react.default.createElement("div", { className: "zhst-biz-window-toggle" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "header" }, /* @__PURE__ */ import_react.default.createElement( - import_antd.Segmented, - { - defaultValue: "large", - options: [ - { value: "large", label: /* @__PURE__ */ import_react.default.createElement("div", { style: getLabelStyle(size === "large") }, /* @__PURE__ */ import_react.default.createElement(import_icons.BarsOutlined, null)) }, - { value: "small", label: /* @__PURE__ */ import_react.default.createElement("div", { style: getLabelStyle(size === "small") }, /* @__PURE__ */ import_react.default.createElement(import_icons.AppstoreOutlined, null)) } - ], - onChange: (value) => { - if (value === "large" && dataSource.length > 0) { - const { windowKey } = dataSource[0]; - handleWindowClick == null ? void 0 : handleWindowClick(windowKey); - } - setSize(value); - } - } - )), /* @__PURE__ */ import_react.default.createElement("div", { className: "body" }, dataSource == null ? void 0 : dataSource.map((item, index) => { - if (size === "large" && index > 0) - return; - return /* @__PURE__ */ import_react.default.createElement( - import_biz.VideoPlayerCard, - { - key: item.windowKey, - selectedWindowKey, - size, - ...item, - handleWindowClick, - handleCloseButtonClick - } - ); - }))); -}; -var WindowToggle_default = WindowToggle; -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - WindowToggle -}); diff --git a/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.d.ts b/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.d.ts deleted file mode 100644 index 3b57a45..0000000 --- a/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import WindowToggle from './WindowToggle'; -export default WindowToggle; diff --git a/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.js b/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.js deleted file mode 100644 index 9f8c4b6..0000000 --- a/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.js +++ /dev/null @@ -1,36 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/RealTimeMonitor/components/WindowToggle/index.tsx -var WindowToggle_exports = {}; -__export(WindowToggle_exports, { - default: () => WindowToggle_default -}); -module.exports = __toCommonJS(WindowToggle_exports); -var import_WindowToggle = __toESM(require("./WindowToggle")); -var WindowToggle_default = import_WindowToggle.default; diff --git a/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.less b/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.less deleted file mode 100644 index 61c77bd..0000000 --- a/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.less +++ /dev/null @@ -1,45 +0,0 @@ -.zhst-biz-window-toggle { - display: flex; - flex-direction: column; - flex: 1; - - .header { - width: 100%; - height: 48px; - background-color: #EFF2F4; - padding: 10px 20px; - box-sizing: border-box; - - .ant-segmented { - padding: 0; - - .ant-segmented-group { - border-radius: 4px; - overflow: hidden; - - .ant-segmented-item { - border-radius: 0; - - .ant-segmented-item-label { - padding: 0; - } - } - } - } - } - - .body { - flex: 1; - width: 100%; - background-color: #E5EAEC; - padding: 10px; - box-sizing: border-box; - display: flex; - flex-wrap: wrap; - justify-content: space-between; - - >div { - margin: 10px; - } - } -} \ No newline at end of file diff --git a/packages/biz/lib/RealTimeMonitor/index.d.ts b/packages/biz/lib/RealTimeMonitor/index.d.ts deleted file mode 100644 index 9013d29..0000000 --- a/packages/biz/lib/RealTimeMonitor/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import RealTimeMonitor from './RealTimeMonitor'; -export default RealTimeMonitor; diff --git a/packages/biz/lib/RealTimeMonitor/index.js b/packages/biz/lib/RealTimeMonitor/index.js deleted file mode 100644 index 041c33e..0000000 --- a/packages/biz/lib/RealTimeMonitor/index.js +++ /dev/null @@ -1,36 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/RealTimeMonitor/index.tsx -var RealTimeMonitor_exports = {}; -__export(RealTimeMonitor_exports, { - default: () => RealTimeMonitor_default -}); -module.exports = __toCommonJS(RealTimeMonitor_exports); -var import_RealTimeMonitor = __toESM(require("./RealTimeMonitor")); -var RealTimeMonitor_default = import_RealTimeMonitor.default; diff --git a/packages/biz/lib/VideoPlayerCard/VideoPlayerCard.d.ts b/packages/biz/lib/VideoPlayerCard/VideoPlayerCard.d.ts deleted file mode 100644 index cd1775e..0000000 --- a/packages/biz/lib/VideoPlayerCard/VideoPlayerCard.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { CardProps } from 'antd'; -import React, { ReactNode } from 'react'; -import './index.less'; -export interface VideoPlayerCardProps { - windowKey?: string; - selectedWindowKey?: string; - showType?: 'video' | "image"; - imgSrc?: string; - videoSrc?: string; - cardProps?: CardProps; - errorReasonText?: string; - isWindowLoading?: boolean; - size?: 'large' | 'small'; - title?: string | ReactNode; - handleCloseButtonClick?: (key?: string) => void; - handleWindowClick?: (key?: string) => void; -} -export declare const VideoPlayerCard: React.FC; -export default VideoPlayerCard; diff --git a/packages/biz/lib/VideoPlayerCard/VideoPlayerCard.js b/packages/biz/lib/VideoPlayerCard/VideoPlayerCard.js deleted file mode 100644 index 8dae8f4..0000000 --- a/packages/biz/lib/VideoPlayerCard/VideoPlayerCard.js +++ /dev/null @@ -1,99 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/VideoPlayerCard/VideoPlayerCard.tsx -var VideoPlayerCard_exports = {}; -__export(VideoPlayerCard_exports, { - VideoPlayerCard: () => VideoPlayerCard, - default: () => VideoPlayerCard_default -}); -module.exports = __toCommonJS(VideoPlayerCard_exports); -var import_antd = require("antd"); -var import_lib = require("antd/lib"); -var import_meta = require("@zhst/meta"); -var import_react = __toESM(require("react")); -var import_icons = require("@ant-design/icons"); -var import_index = require("./index.less"); -var VideoPlayerCard = (props) => { - const componentName = `zhst-biz-video-player-card`; - const { showType, imgSrc, videoSrc, cardProps, isWindowLoading, errorReasonText, size, title, handleCloseButtonClick, handleWindowClick, windowKey, selectedWindowKey = "" } = props; - const [cardContent, setCardContent] = (0, import_react.useState)(null); - const { useToken } = import_lib.theme; - const { token } = useToken(); - const videoRef = (0, import_react.useRef)(null); - const selectedBorderStyle = { - border: `2px solid ${token.colorPrimary}`, - boxShadow: " 0px 2px 9px 0px rgba(0,0,0,0.16)" - }; - const cardStyle = { - ...size === "large" ? { height: 931 } : { height: 456, cursor: "pointer" }, - ...size === "small" && selectedWindowKey === windowKey ? selectedBorderStyle : {} - }; - const videoPlayerCardStyle = size === "small" ? { width: "calc(50% - 20px)" } : { flex: 1 }; - (0, import_react.useEffect)(() => { - var _a; - if (!isWindowLoading && (videoSrc || imgSrc)) { - let contentElement = null; - if (videoSrc) { - contentElement = /* @__PURE__ */ import_react.default.createElement(import_meta.VideoPlayer, { ref: videoRef, url: videoSrc }); - (_a = videoRef.current) == null ? void 0 : _a.setShowCrop(true); - } else if (imgSrc) { - contentElement = /* @__PURE__ */ import_react.default.createElement( - "img", - { - alt: "首帧图", - src: imgSrc, - style: { width: "100%", height: "100%", display: "block" } - } - ); - } - setCardContent(contentElement); - } else { - setCardContent(null); - } - }, [showType, imgSrc, videoSrc, isWindowLoading]); - return /* @__PURE__ */ import_react.default.createElement("div", { className: componentName, onClick: () => { - handleWindowClick == null ? void 0 : handleWindowClick(windowKey); - }, style: videoPlayerCardStyle }, /* @__PURE__ */ import_react.default.createElement( - import_antd.Card, - { - title: /* @__PURE__ */ import_react.default.createElement(import_antd.Space, { style: { width: "100%", justifyContent: "space-between" } }, /* @__PURE__ */ import_react.default.createElement("div", null, title), /* @__PURE__ */ import_react.default.createElement("div", { className: "card-close-button" }, /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { type: "text", onClick: () => { - handleCloseButtonClick == null ? void 0 : handleCloseButtonClick(windowKey); - } }, /* @__PURE__ */ import_react.default.createElement(import_icons.CloseOutlined, null)))), - style: { display: "flex", flexDirection: "column", borderRadius: 4, overflow: "hidden", ...cardStyle }, - bodyStyle: { flex: 1 }, - ...cardProps - }, - cardContent ? /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, cardContent) : /* @__PURE__ */ import_react.default.createElement("div", { style: { backgroundColor: "#000", height: "100%", display: "flex", padding: "20px", boxSizing: "border-box" } }, isWindowLoading ? /* @__PURE__ */ import_react.default.createElement("div", { style: { flex: 1, display: "flex", justifyContent: "center", alignItems: "center" } }, /* @__PURE__ */ import_react.default.createElement(import_antd.Spin, { indicator: /* @__PURE__ */ import_react.default.createElement(import_icons.LoadingOutlined, { style: { fontSize: 24 } }) })) : !!errorReasonText && /* @__PURE__ */ import_react.default.createElement("span", { style: { color: token.colorError } }, errorReasonText)) - )); -}; -var VideoPlayerCard_default = VideoPlayerCard; -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - VideoPlayerCard -}); diff --git a/packages/biz/lib/VideoPlayerCard/index.d.ts b/packages/biz/lib/VideoPlayerCard/index.d.ts deleted file mode 100644 index 41afa58..0000000 --- a/packages/biz/lib/VideoPlayerCard/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import VideoPlayerCard from './VideoPlayerCard'; -export type { VideoPlayerCardProps } from './VideoPlayerCard'; -export default VideoPlayerCard; diff --git a/packages/biz/lib/VideoPlayerCard/index.js b/packages/biz/lib/VideoPlayerCard/index.js deleted file mode 100644 index 7810d71..0000000 --- a/packages/biz/lib/VideoPlayerCard/index.js +++ /dev/null @@ -1,36 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/VideoPlayerCard/index.tsx -var VideoPlayerCard_exports = {}; -__export(VideoPlayerCard_exports, { - default: () => VideoPlayerCard_default -}); -module.exports = __toCommonJS(VideoPlayerCard_exports); -var import_VideoPlayerCard = __toESM(require("./VideoPlayerCard")); -var VideoPlayerCard_default = import_VideoPlayerCard.default; diff --git a/packages/biz/lib/VideoPlayerCard/index.less b/packages/biz/lib/VideoPlayerCard/index.less deleted file mode 100644 index 0f87e3e..0000000 --- a/packages/biz/lib/VideoPlayerCard/index.less +++ /dev/null @@ -1,30 +0,0 @@ -.zhst-biz-video-player-card { - .ant-card-head { - padding: 0 20px; - } - - .ant-card-body { - padding: 0; - overflow: hidden; - border-radius: 0; - - .zhst-image__video-view { - height: 100%; - } - } - - .card-close-button { - .ant-btn { - padding: 0 3px; - height: 22px; - color: #00000073; - } - - .ant-btn:hover { - padding: 0 3px; - height: 22px; - color: #000000e0; - } - } - -} \ No newline at end of file diff --git a/packages/biz/lib/ViewLargerImageModal/ViewLargerImageModal.d.ts b/packages/biz/lib/ViewLargerImageModal/ViewLargerImageModal.d.ts deleted file mode 100644 index d82a52e..0000000 --- a/packages/biz/lib/ViewLargerImageModal/ViewLargerImageModal.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react'; -import { ModalProps, SpaceProps } from 'antd'; -import './index.less'; -type ViewLargerImageModalParams = { - imgSrc?: string; - warningData?: { - label?: string; - value?: string; - }[]; -}; -export interface ViewLargerImageModalRef { - show: (params?: ViewLargerImageModalParams) => void; - handleCancel: () => void; -} -export interface ViewLargerImageModalProps { - imgStyle?: React.CSSProperties; - downloadImg?: (imgSrc?: string) => void; - title?: string; - downloadText?: string; - modalProps?: ModalProps; - spaceProps?: SpaceProps; -} -export declare const ViewLargerImageModal: React.ForwardRefExoticComponent>; -export default ViewLargerImageModal; -export declare const useViewLargerImageModal: () => React.RefObject; diff --git a/packages/biz/lib/ViewLargerImageModal/ViewLargerImageModal.js b/packages/biz/lib/ViewLargerImageModal/ViewLargerImageModal.js deleted file mode 100644 index 9d5ef6f..0000000 --- a/packages/biz/lib/ViewLargerImageModal/ViewLargerImageModal.js +++ /dev/null @@ -1,87 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/ViewLargerImageModal/ViewLargerImageModal.tsx -var ViewLargerImageModal_exports = {}; -__export(ViewLargerImageModal_exports, { - ViewLargerImageModal: () => ViewLargerImageModal, - default: () => ViewLargerImageModal_default, - useViewLargerImageModal: () => useViewLargerImageModal -}); -module.exports = __toCommonJS(ViewLargerImageModal_exports); -var import_react = __toESM(require("react")); -var import_antd = require("antd"); -var import_theme = __toESM(require("antd/lib/theme")); -var import_icons = require("@ant-design/icons"); -var import_index = require("./index.less"); -var ViewLargerImageModal = (0, import_react.forwardRef)( - (props, ref) => { - const { modalProps, downloadImg, imgStyle, title = "预警大图", downloadText = "下载大图", spaceProps } = props; - const { useToken } = import_theme.default; - const { token } = useToken(); - const [open, setOpen] = (0, import_react.useState)(false); - const [imgSrc, setImgSrc] = (0, import_react.useState)(); - const [warningData, setWarningData] = (0, import_react.useState)(); - const handleCancel = () => { - setOpen(false); - }; - (0, import_react.useImperativeHandle)(ref, () => { - return { - show: (_params) => { - setOpen(true); - setImgSrc(_params == null ? void 0 : _params.imgSrc); - setWarningData(_params == null ? void 0 : _params.warningData); - }, - handleCancel - }; - }); - return /* @__PURE__ */ import_react.default.createElement( - import_antd.Modal, - { - className: "zhst-biz-view-warning-larger-image-modal", - open, - destroyOnClose: true, - title, - width: "1029px", - footer: null, - onCancel: handleCancel, - ...modalProps - }, - /* @__PURE__ */ import_react.default.createElement(import_antd.Space, { size: 0, styles: { item: { backgroundColor: "#F6F9FAFF" } }, ...spaceProps }, /* @__PURE__ */ import_react.default.createElement("img", { alt: title, src: imgSrc, style: { width: 789, height: 444, display: "block", ...imgStyle } }), /* @__PURE__ */ import_react.default.createElement("div", { className: "right-context" }, warningData == null ? void 0 : warningData.map(({ label, value }) => /* @__PURE__ */ import_react.default.createElement("div", { key: label }, /* @__PURE__ */ import_react.default.createElement("span", { className: "context-key" }, `${label}: `), value)), imgSrc && downloadImg && /* @__PURE__ */ import_react.default.createElement("div", { className: "img-download", style: { color: token.colorPrimary }, onClick: () => downloadImg == null ? void 0 : downloadImg(imgSrc) }, /* @__PURE__ */ import_react.default.createElement(import_icons.DownloadOutlined, null), /* @__PURE__ */ import_react.default.createElement("span", { style: { paddingLeft: 3 } }, downloadText)))) - ); - } -); -var ViewLargerImageModal_default = ViewLargerImageModal; -var useViewLargerImageModal = () => { - return (0, import_react.useRef)(null); -}; -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - ViewLargerImageModal, - useViewLargerImageModal -}); diff --git a/packages/biz/lib/ViewLargerImageModal/index.d.ts b/packages/biz/lib/ViewLargerImageModal/index.d.ts deleted file mode 100644 index 417e8be..0000000 --- a/packages/biz/lib/ViewLargerImageModal/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import ViewLargerImageModal, { useViewLargerImageModal } from './ViewLargerImageModal'; -export type { ViewLargerImageModalRef, ViewLargerImageModalProps } from './ViewLargerImageModal'; -export default ViewLargerImageModal; -export { useViewLargerImageModal }; diff --git a/packages/biz/lib/ViewLargerImageModal/index.js b/packages/biz/lib/ViewLargerImageModal/index.js deleted file mode 100644 index 936db94..0000000 --- a/packages/biz/lib/ViewLargerImageModal/index.js +++ /dev/null @@ -1,41 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/ViewLargerImageModal/index.tsx -var ViewLargerImageModal_exports = {}; -__export(ViewLargerImageModal_exports, { - default: () => ViewLargerImageModal_default, - useViewLargerImageModal: () => import_ViewLargerImageModal.useViewLargerImageModal -}); -module.exports = __toCommonJS(ViewLargerImageModal_exports); -var import_ViewLargerImageModal = __toESM(require("./ViewLargerImageModal")); -var ViewLargerImageModal_default = import_ViewLargerImageModal.default; -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - useViewLargerImageModal -}); diff --git a/packages/biz/lib/ViewLargerImageModal/index.less b/packages/biz/lib/ViewLargerImageModal/index.less deleted file mode 100644 index 32363d0..0000000 --- a/packages/biz/lib/ViewLargerImageModal/index.less +++ /dev/null @@ -1,62 +0,0 @@ -.zhst-biz-view-warning-larger-image-modal { - font-family: MicrosoftYaHei; - - .ant-modal-content { - padding: 0; - height: 492px; - border-radius: 6px; - overflow: hidden; - - .ant-modal-close { - top: 14px; - right: 16px; - } - - .ant-modal-header { - height: 48px; - line-height: 48px; - margin-bottom: 0; - - .ant-modal-title { - height: 100%; - line-height: 48px; - font-weight: bold; - padding-left: 20px; - } - } - - .ant-modal-body { - height: 444px; - - >div { - width: 100%; - height: 100%; - align-items: flex-start; - - >div:nth-child(2) { - position: relative; - flex: 1; - box-sizing: border-box; - height: 100%; - padding: 30px 16px; - - .right-context>div { - margin-bottom: 20px; - } - - .right-context .context-key { - font-weight: bold; - } - - .img-download { - position: absolute; - bottom: 0; - cursor: pointer; - } - - } - - } - } - } -} \ No newline at end of file diff --git a/packages/biz/lib/WarningRecordCard/WarningRecordCard.d.ts b/packages/biz/lib/WarningRecordCard/WarningRecordCard.d.ts deleted file mode 100644 index 966998b..0000000 --- a/packages/biz/lib/WarningRecordCard/WarningRecordCard.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { CardProps } from 'antd'; -import React from 'react'; -import './index.less'; -export interface IRecord { - imgSrc?: string; - id?: string; - /** - * 预警类型 - */ - warningType?: string; - warningInfo?: string[]; - boxId: string; - position: string; - cabietId?: string; - cabietText?: string; - warningTime?: string; - warningTimestamp?: string | number; - warningTimeFormat?: string; -} -export interface WarningRecordCardProps { - record?: IRecord; - onRecordClick?: (record?: IRecord) => void; - style?: React.CSSProperties; - cardProps?: CardProps; - selectedRecordId?: string; - cardStyle?: React.CSSProperties; - imgStyle?: React.CSSProperties; -} -export declare const WarningRecordCard: React.FC; -export default WarningRecordCard; diff --git a/packages/biz/lib/WarningRecordCard/WarningRecordCard.js b/packages/biz/lib/WarningRecordCard/WarningRecordCard.js deleted file mode 100644 index b5de8e4..0000000 --- a/packages/biz/lib/WarningRecordCard/WarningRecordCard.js +++ /dev/null @@ -1,74 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/WarningRecordCard/WarningRecordCard.tsx -var WarningRecordCard_exports = {}; -__export(WarningRecordCard_exports, { - WarningRecordCard: () => WarningRecordCard, - default: () => WarningRecordCard_default -}); -module.exports = __toCommonJS(WarningRecordCard_exports); -var import_antd = require("antd"); -var import_lib = require("antd/lib"); -var import_react = __toESM(require("react")); -var import_dayjs = __toESM(require("dayjs")); -var import_index = require("./index.less"); -var WarningRecordCard = (props) => { - const componentName = `zhst-biz-warning-record-card`; - const { record, onRecordClick, style, cardProps, selectedRecordId, cardStyle, imgStyle } = props; - const { imgSrc, id, warningType, warningInfo = [], cabietText, warningTime, warningTimestamp, warningTimeFormat = "YYYY-MM-DD HH:mm:ss" } = record || {}; - const formattedDate = warningTimestamp ? (0, import_dayjs.default)(warningTimestamp).format(warningTimeFormat) : ""; - const warningTimeShow = warningTime ? warningTime : formattedDate; - const { useToken } = import_lib.theme; - const { token } = useToken(); - const selectedBorderStyle = { - border: `2px solid ${token.colorPrimary}`, - boxShadow: " 0px 2px 9px 0px rgba(0,0,0,0.16)" - }; - const selectedCardStyle = { - ...selectedRecordId === (record == null ? void 0 : record.id) ? selectedBorderStyle : {} - }; - const handleClick = () => { - onRecordClick == null ? void 0 : onRecordClick(record); - }; - return /* @__PURE__ */ import_react.default.createElement("div", { className: componentName, key: id, onClick: handleClick, style }, /* @__PURE__ */ import_react.default.createElement( - import_antd.Card, - { - cover: /* @__PURE__ */ import_react.default.createElement("img", { alt: "预警图", src: imgSrc, style: { width: 336, height: 203, borderRadius: 0, ...imgStyle } }), - style: { width: 356, height: 302, padding: 10, borderRadius: 4, ...selectedCardStyle, ...cardStyle }, - ...cardProps - }, - /* @__PURE__ */ import_react.default.createElement("div", { className: "left-context" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "warning-type" }, warningType), /* @__PURE__ */ import_react.default.createElement(import_antd.Space, { size: 0, split: /* @__PURE__ */ import_react.default.createElement(import_antd.Divider, { type: "vertical" }) }, warningInfo == null ? void 0 : warningInfo.map((item, index) => /* @__PURE__ */ import_react.default.createElement("div", { key: index, className: "info-item" }, item))), /* @__PURE__ */ import_react.default.createElement("div", { className: "warning-time" }, warningTimeShow)), - /* @__PURE__ */ import_react.default.createElement("div", { className: "cabietInfo" }, cabietText) - )); -}; -var WarningRecordCard_default = WarningRecordCard; -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - WarningRecordCard -}); diff --git a/packages/biz/lib/WarningRecordCard/index.d.ts b/packages/biz/lib/WarningRecordCard/index.d.ts deleted file mode 100644 index 8b82d36..0000000 --- a/packages/biz/lib/WarningRecordCard/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import WarningRecordCard from './WarningRecordCard'; -export type { IRecord, WarningRecordCardProps } from './WarningRecordCard'; -export default WarningRecordCard; diff --git a/packages/biz/lib/WarningRecordCard/index.js b/packages/biz/lib/WarningRecordCard/index.js deleted file mode 100644 index 9d01a95..0000000 --- a/packages/biz/lib/WarningRecordCard/index.js +++ /dev/null @@ -1,36 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/WarningRecordCard/index.tsx -var WarningRecordCard_exports = {}; -__export(WarningRecordCard_exports, { - default: () => WarningRecordCard_default -}); -module.exports = __toCommonJS(WarningRecordCard_exports); -var import_WarningRecordCard = __toESM(require("./WarningRecordCard")); -var WarningRecordCard_default = import_WarningRecordCard.default; diff --git a/packages/biz/lib/WarningRecordCard/index.less b/packages/biz/lib/WarningRecordCard/index.less deleted file mode 100644 index 7cfba38..0000000 --- a/packages/biz/lib/WarningRecordCard/index.less +++ /dev/null @@ -1,27 +0,0 @@ -.zhst-biz-warning-record-card { - cursor: pointer; - - .ant-card-body { - padding: 0; - font-family: MicrosoftYaHei; - line-height: 19px; - display: flex; - margin-top: 10px; - - .left-context { - flex: 1; - - >div { - margin-top: 6px; - } - - >div:nth-child(1) { - margin-top: 0; - } - } - - .warning-type { - font-weight: bold; - } - } -} \ No newline at end of file diff --git a/packages/biz/lib/boxSelectTree/boxSelectTree.d.ts b/packages/biz/lib/boxSelectTree/boxSelectTree.d.ts deleted file mode 100644 index 0690e8f..0000000 --- a/packages/biz/lib/boxSelectTree/boxSelectTree.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { FC } from 'react'; -import { TabsProps } from 'antd'; -import type { BoxPanelProps } from './components/boxPanel'; -export interface BoxSelectTreeProps extends BoxPanelProps { - onTabChange?: (e: any) => void; - tabsProps?: TabsProps; -} -declare const BoxSelectTree: FC; -export default BoxSelectTree; diff --git a/packages/biz/lib/boxSelectTree/boxSelectTree.js b/packages/biz/lib/boxSelectTree/boxSelectTree.js deleted file mode 100644 index 79df21b..0000000 --- a/packages/biz/lib/boxSelectTree/boxSelectTree.js +++ /dev/null @@ -1,124 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/boxSelectTree/boxSelectTree.tsx -var boxSelectTree_exports = {}; -__export(boxSelectTree_exports, { - default: () => boxSelectTree_default -}); -module.exports = __toCommonJS(boxSelectTree_exports); -var import_react = __toESM(require("react")); -var import_antd = require("antd"); -var import_boxPanel = __toESM(require("./components/boxPanel")); -var BoxSelectTree = (props) => { - const { - data, - boxDataSource = [], - onTabChange, - onSearch, - onItemCheck, - onItemSelect, - onBoxBatchDelete, - onBoxDelete, - onCreateSubmit, - onClockClick, - onImport, - onCreate, - tabsProps, - searchInputProps, - treeProps, - customImport, - showOptions, - extraBtns - } = props; - const items = [ - { - key: "1", - label: /* @__PURE__ */ import_react.default.createElement("div", { style: { textAlign: "center", width: "160px" } }, "盒子组"), - children: /* @__PURE__ */ import_react.default.createElement( - import_boxPanel.default, - { - searchInputProps, - boxDataSource, - treeProps, - data, - onCreate, - onCreateSubmit, - onBoxBatchDelete, - onBoxDelete, - onSearch, - onItemCheck, - onItemSelect, - showOptions, - customImport, - extraBtns, - onClockClick, - onImport - } - ) - }, - { - key: "2", - label: /* @__PURE__ */ import_react.default.createElement("div", { style: { textAlign: "center", width: "160px" } }, "盒子"), - children: /* @__PURE__ */ import_react.default.createElement( - import_boxPanel.default, - { - boxDataSource, - searchInputProps, - treeProps, - data, - onCreate, - onBoxBatchDelete, - onCreateSubmit, - onBoxDelete, - onSearch, - onItemCheck, - onItemSelect, - showOptions, - customImport, - extraBtns, - onClockClick, - onImport - } - ) - } - ]; - return /* @__PURE__ */ import_react.default.createElement( - import_antd.Tabs, - { - defaultActiveKey: "1", - centered: true, - items, - onChange: onTabChange, - tabBarGutter: 0, - indicator: { size: (origin) => origin, align: "center" }, - ...tabsProps - } - ); -}; -var boxSelectTree_default = BoxSelectTree; diff --git a/packages/biz/lib/boxSelectTree/components/boxPanel/index.js b/packages/biz/lib/boxSelectTree/components/boxPanel/index.js deleted file mode 100644 index 6fafeaa..0000000 --- a/packages/biz/lib/boxSelectTree/components/boxPanel/index.js +++ /dev/null @@ -1,179 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/boxSelectTree/components/boxPanel/index.tsx -var boxPanel_exports = {}; -__export(boxPanel_exports, { - default: () => boxPanel_default -}); -module.exports = __toCommonJS(boxPanel_exports); -var import_react = __toESM(require("react")); -var import_antd = require("antd"); -var import_pro_components = require("@ant-design/pro-components"); -var import_icons = require("@ant-design/icons"); -var import_treeTransferModal = __toESM(require("../../../treeTransferModal")); -var import_tree = __toESM(require("../../../tree")); -var BoxPanel = (props) => { - var _a, _b, _c; - const { - searchInputProps, - showOptions = true, - extraBtns, - data = [], - onSearch, - treeProps, - onItemCheck, - onItemSelect, - onCreateSubmit, - onBoxBatchDelete, - onBoxDelete, - onClockClick, - onImport, - onBatch, - onCreate, - boxDataSource, - customImport - } = props; - const [isTreeCheckable, setIsTreeCheckable] = (0, import_react.useState)(false); - const [targetItems, setTargetItems] = (0, import_react.useState)([]); - const [boxChoiceOpen, setBoxChoiceOpen] = (0, import_react.useState)(false); - const [checkedKeys, setCheckedKeys] = (0, import_react.useState)([]); - const createFormRef = (0, import_react.useRef)(); - const handleCheckable = () => { - setIsTreeCheckable((pre) => !pre); - }; - const onTreeCheck = (keys, info) => { - let _targetItems = []; - setCheckedKeys(keys); - info.checkedNodes.forEach((o) => { - o.isLeaf && _targetItems.push(o); - }); - setTargetItems(_targetItems); - }; - const onItemDelete = (key, { keys }) => { - setCheckedKeys((pre) => { - const newKeys = pre.filter((_key) => !keys.includes(_key)); - return newKeys; - }); - setTargetItems((pre) => pre.filter((o) => o.key !== key)); - }; - const onBoxChoiceOk = async (data2) => { - var _a2, _b2, _c2; - (_a2 = createFormRef.current) == null ? void 0 : _a2.setFieldValue("boxList", data2); - (_b2 = createFormRef.current) == null ? void 0 : _b2.setFieldValue("boxName", 123); - console.log((_c2 = createFormRef.current) == null ? void 0 : _c2.getFieldValue("boxList")); - setBoxChoiceOpen(false); - }; - const onBoxChoiceReset = () => { - setCheckedKeys([]); - setTargetItems([]); - }; - return /* @__PURE__ */ import_react.default.createElement("div", { style: { padding: "0 16px" } }, /* @__PURE__ */ import_react.default.createElement( - import_treeTransferModal.default, - { - open: boxChoiceOpen, - onCancel: () => setBoxChoiceOpen(false), - onRadioChange: (e) => console.log("radio", e.target.value), - dataSource: boxDataSource, - targetItems, - checkedKeys, - onReset: onBoxChoiceReset, - onOk: onBoxChoiceOk, - onTreeCheck, - onItemDelete - } - ), /* @__PURE__ */ import_react.default.createElement(import_antd.Space, { size: 12, direction: "vertical", style: { width: "100%" } }, /* @__PURE__ */ import_react.default.createElement(import_antd.Space, { size: 4, style: { width: "100%", justifyContent: "space-between" } }, /* @__PURE__ */ import_react.default.createElement(import_antd.Input, { size: "middle", onChange: (e) => onSearch == null ? void 0 : onSearch(e), placeholder: "请输入盒子名称", ...searchInputProps }), customImport || /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { type: "text", onClick: () => (onBatch == null ? void 0 : onBatch()) || handleCheckable(), icon: isTreeCheckable ? /* @__PURE__ */ import_react.default.createElement(import_icons.SwitcherOutlined, null) : /* @__PURE__ */ import_react.default.createElement(import_icons.DiffOutlined, null) }), /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { type: "text", onClick: () => onClockClick == null ? void 0 : onClockClick(), icon: /* @__PURE__ */ import_react.default.createElement(import_icons.ClockCircleOutlined, null) }))), showOptions && /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(import_antd.Space, { align: "center" }, /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { type: "text", style: { padding: "4px 8px" }, onClick: () => onImport == null ? void 0 : onImport(), icon: /* @__PURE__ */ import_react.default.createElement(import_icons.ImportOutlined, null) }, "导入盒子"), /* @__PURE__ */ import_react.default.createElement(import_antd.Divider, { type: "vertical", style: { margin: "8px 0" } }), onCreate ? /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { onClick: onCreate, type: "text", style: { padding: "4px 8px" }, icon: /* @__PURE__ */ import_react.default.createElement(import_icons.FolderAddOutlined, null) }, "新建组") : /* @__PURE__ */ import_react.default.createElement( - import_pro_components.ModalForm, - { - width: "600px", - open: onCreate ? false : void 0, - formRef: createFormRef, - title: "新建组", - modalProps: { destroyOnClose: true }, - layout: "horizontal", - labelCol: { span: 6 }, - wrapperCol: { span: 18 }, - trigger: /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { type: "text", style: { padding: "4px 8px" }, icon: /* @__PURE__ */ import_react.default.createElement(import_icons.FolderAddOutlined, null) }, "新建组"), - submitter: { - searchConfig: { - submitText: "确定", - resetText: "取消" - } - }, - onFinish: onCreateSubmit - }, - /* @__PURE__ */ import_react.default.createElement( - import_pro_components.ProFormText, - { - rules: [ - { - required: true, - max: 20 - }, - { - pattern: /^[^\s]*$/g, - message: "禁止输入空格" - } - ], - fieldProps: { showCount: true }, - width: "md", - name: "name", - label: "盒子组名称", - placeholder: "请输入盒子名称" - } - ), - /* @__PURE__ */ import_react.default.createElement( - import_pro_components.ProFormText, - { - width: "md", - name: "boxList", - label: "盒子选择", - fieldProps: { - readOnly: true, - value: `已选择${((_b = (_a = createFormRef.current) == null ? void 0 : _a.getFieldValue("boxList")) == null ? void 0 : _b.length) || 0}个盒子`, - suffix: /* @__PURE__ */ import_react.default.createElement(import_antd.Space, null, /* @__PURE__ */ import_react.default.createElement("a", { onClick: () => { - var _a2; - (_a2 = createFormRef.current) == null ? void 0 : _a2.setFieldValue("boxList", null); - onBoxChoiceReset(); - } }, "恢复默认"), /* @__PURE__ */ import_react.default.createElement("a", { onClick: () => setBoxChoiceOpen(true) }, "范围选择")) - } - } - ) - ), /* @__PURE__ */ import_react.default.createElement(import_antd.Divider, { type: "vertical", style: { margin: "8px 0" } }), /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { danger: true, type: "text", style: { padding: "4px 8px" }, icon: /* @__PURE__ */ import_react.default.createElement(import_icons.CloseCircleOutlined, null), disabled: ((_c = treeProps == null ? void 0 : treeProps.checkedKeys) == null ? void 0 : _c.length) <= 0, onClick: onBoxBatchDelete }, "删除")), /* @__PURE__ */ import_react.default.createElement(import_antd.Divider, { style: { margin: 0 } })), extraBtns, /* @__PURE__ */ import_react.default.createElement( - import_tree.default, - { - treeCheckable: isTreeCheckable, - data, - onItemSelect, - onItemCheck, - onItemDelete: onBoxDelete, - ...treeProps - } - ))); -}; -var boxPanel_default = BoxPanel; diff --git a/packages/biz/lib/boxSelectTree/index.d.ts b/packages/biz/lib/boxSelectTree/index.d.ts deleted file mode 100644 index 2ff0f1e..0000000 --- a/packages/biz/lib/boxSelectTree/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import BoxSelectTree from './boxSelectTree'; -export type { BoxSelectTreeProps } from './boxSelectTree'; -export default BoxSelectTree; diff --git a/packages/biz/lib/boxSelectTree/index.js b/packages/biz/lib/boxSelectTree/index.js deleted file mode 100644 index 74ef62f..0000000 --- a/packages/biz/lib/boxSelectTree/index.js +++ /dev/null @@ -1,36 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/boxSelectTree/index.tsx -var boxSelectTree_exports = {}; -__export(boxSelectTree_exports, { - default: () => boxSelectTree_default -}); -module.exports = __toCommonJS(boxSelectTree_exports); -var import_boxSelectTree = __toESM(require("./boxSelectTree")); -var boxSelectTree_default = import_boxSelectTree.default; diff --git a/packages/biz/lib/boxSelectTree/mock.d.ts b/packages/biz/lib/boxSelectTree/mock.d.ts deleted file mode 100644 index 84026eb..0000000 --- a/packages/biz/lib/boxSelectTree/mock.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { TreeDataNode } from "antd"; -export declare const treeData: TreeDataNode[]; diff --git a/packages/biz/lib/boxSelectTree/mock.js b/packages/biz/lib/boxSelectTree/mock.js deleted file mode 100644 index 5160e1d..0000000 --- a/packages/biz/lib/boxSelectTree/mock.js +++ /dev/null @@ -1,60 +0,0 @@ -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/boxSelectTree/mock.tsx -var mock_exports = {}; -__export(mock_exports, { - treeData: () => treeData -}); -module.exports = __toCommonJS(mock_exports); -var treeData = [ - { - title: "全部盒子", - key: "0-0", - children: [ - { - title: "盒子组1", - key: "0-0-0", - children: [ - { - title: "摄像头1", - key: "0-0-0-0" - }, - { - title: "摄像头2", - key: "0-0-0-1" - } - ] - }, - { - title: "盒子组2", - key: "0-0-1", - children: [ - { - title: "摄像头4", - key: "0-0-1-0" - } - ] - } - ] - } -]; -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - treeData -}); diff --git a/packages/biz/lib/hooks/useIntelligentTracking/index.d.ts b/packages/biz/lib/hooks/useIntelligentTracking/index.d.ts deleted file mode 100644 index c1e54ef..0000000 --- a/packages/biz/lib/hooks/useIntelligentTracking/index.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { Dayjs as Moment } from 'dayjs'; -export declare const getDefaultRadius: () => number; -export declare const setDefaultRadius: (radius: number) => void; -export declare const setSearchIntervalDuration: (duration: number) => void; -export declare const getSearchIntervalDuration: (time: number) => number; -export declare const operateTrackById: (smartTrackId: number, operationType: OperationType) => Promise; -export declare const deleteTrackById: (smartTrackId: number) => Promise; -export declare const modifyTrackImgs: (smartTrackId: number, images: Array) => Promise; -export declare const modifyTrackConf: (conf: any, smartTrackId: number) => Promise; -export declare const getTrackTaskById: (smartTrackId?: number) => Promise; -export declare const getTackDetailInfo: (smartTrackId?: number) => Promise; -export declare const getTaskCameraByCenterAndPower: (value: { - taskPower: { - facePower: number; - bodyPower: number; - }; - cameraInfos: Array; - center: [number, number]; -}) => Promise; -/**创建追踪任务 */ -export declare const createIntelligentTrack: (value: { - images: Array; - deviceIds: Array; - circleCenter: [number, number]; - model: number; - circleRadius: number; - facePower?: number; - bodyPower?: number; - historyTime?: [Moment, Moment]; - topping?: boolean; -}) => Promise; -export declare const emitHeartbeat: (smartTrackId: number) => Promise; -export declare const ModifyTrackCameras: (value: { - smartTrackId: number; - deviceIds: Array; - centerPoint: [number, number]; -}) => Promise; -export declare const setIntelligentTrackCircleInfo: (smartTrackId: number, circleCenter: [number, number]) => Promise; -export declare const getTackCameraInfo: (value: { - circleCenter: [Moment, Moment]; - radius: number; - zoom: number; -}) => Promise; -export declare const getCameraInfoByCircle: (circleCenter: any, radius: any, zoom?: number) => Promise; -export declare const taskInfoToSearchItem: (taskInfo: any) => any[]; diff --git a/packages/biz/lib/hooks/useIntelligentTracking/index.js b/packages/biz/lib/hooks/useIntelligentTracking/index.js deleted file mode 100644 index 6fe4a23..0000000 --- a/packages/biz/lib/hooks/useIntelligentTracking/index.js +++ /dev/null @@ -1,371 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/hooks/useIntelligentTracking/index.tsx -var useIntelligentTracking_exports = {}; -__export(useIntelligentTracking_exports, { - ModifyTrackCameras: () => ModifyTrackCameras, - createIntelligentTrack: () => createIntelligentTrack, - deleteTrackById: () => deleteTrackById, - emitHeartbeat: () => emitHeartbeat, - getCameraInfoByCircle: () => getCameraInfoByCircle, - getDefaultRadius: () => getDefaultRadius, - getSearchIntervalDuration: () => getSearchIntervalDuration, - getTackCameraInfo: () => getTackCameraInfo, - getTackDetailInfo: () => getTackDetailInfo, - getTaskCameraByCenterAndPower: () => getTaskCameraByCenterAndPower, - getTrackTaskById: () => getTrackTaskById, - modifyTrackConf: () => modifyTrackConf, - modifyTrackImgs: () => modifyTrackImgs, - operateTrackById: () => operateTrackById, - setDefaultRadius: () => setDefaultRadius, - setIntelligentTrackCircleInfo: () => setIntelligentTrackCircleInfo, - setSearchIntervalDuration: () => setSearchIntervalDuration, - taskInfoToSearchItem: () => taskInfoToSearchItem -}); -module.exports = __toCommonJS(useIntelligentTracking_exports); -var turf = __toESM(require("@turf/turf")); -var import_useTaskState = require("../useTaskState"); -var import_Tree = __toESM(require("@common/components/CameraTree/Tree")); -var import_request = __toESM(require("../../utils/request")); -var import_meta = require("@zhst/meta"); -var import_utils = require("@common/components/CameraTree/utils"); -var import_func = require("@zhst/func"); -var defaultFaceThreshold = 0.68; -var defaultBodyThreshold = 0.7; -var defaultFaceResultNum = 5; -var defaultRadius = 0.15; -var defaultQueryCycle = 10; -var getDefaultRadius = () => { - return defaultRadius; -}; -var setDefaultRadius = (radius) => { - defaultRadius = radius; -}; -var searchIntervalDuration = 10; -var setSearchIntervalDuration = (duration) => { - searchIntervalDuration = duration; -}; -var getSearchIntervalDuration = (time) => { - return time; -}; -var operateTrackById = async (smartTrackId, operationType) => { - try { - const data = { - operationType, - smartTrackId - }; - await (0, import_request.default)({ - method: "PUT", - url: "/singer.SmartTrackService/OperationSmartTrack", - data - }); - import_meta.message.success("操作成功"); - } catch (err) { - console.error(err); - import_meta.message.success("操作失败"); - } -}; -var deleteTrackById = async (smartTrackId) => { - try { - await (0, import_request.default)({ - method: "DELETE", - url: "/singer.SmartTrackService/DeleteSmartTrack", - data: { - smartTrackId - } - }); - } catch (err) { - console.error(err); - } -}; -var modifyTrackImgs = async (smartTrackId, images) => { - try { - await (0, import_request.default)({ - method: "PUT", - url: "/singer.SmartTrackService/ModifyTrackImg", - data: { - images, - smartTrackId - } - }); - } catch (err) { - console.log("err", err); - } -}; -var modifyTrackConf = async (conf, smartTrackId) => { - try { - await (0, import_request.default)({ - method: "PUT", - url: "/singer.SmartTrackService/ModifyTrackConf", - data: { - conf, - smartTrackId - } - }); - } catch (err) { - console.log("err", err); - } -}; -var getTrackTaskById = async (smartTrackId = 0) => { - try { - const data = smartTrackId ? { - smartTrackId - } : {}; - let req = await (0, import_request.default)({ - method: "POST", - url: "/singer.SmartTrackService/GetSmartTrack", - data - }); - return req; - } catch (err) { - console.error(err); - } -}; -var getTackDetailInfo = async (smartTrackId = 0) => { - const data = smartTrackId ? { - smartTrackId - } : {}; - let req = await (0, import_request.default)({ - method: "POST", - url: "/singer.SmartTrackService/GetTrackOverView", - data - }); - return req; -}; -var getTaskCameraByCenterAndPower = async (value) => { - let realCameraInfos = value["cameraInfos"]; - let realPreprocessInfos = []; - if (!(0, import_func.isEmpty)(realCameraInfos)) { - const { taskStatus } = await (0, import_useTaskState.getListTaskStatus)(); - realPreprocessInfos = (0, import_useTaskState.getCameraStatusFunc)(taskStatus); - } - const runRealCameraInfos = []; - realCameraInfos = realCameraInfos.filter((v) => { - if (import_Tree.default.judgeOccupyPowerById(v["id"], realPreprocessInfos)) { - runRealCameraInfos.push(v); - } - return !import_Tree.default.judgeOccupyPowerById(v["id"], realPreprocessInfos); - }); - let from = turf.point(value["center"]); - if (realCameraInfos.length > value["taskPower"]["bodyPower"]) { - realCameraInfos.map((v) => { - let dis = turf.distance(from, turf.point([v["longitude"], v["latitude"]])); - return { - ...v, - dis - }; - }).sort((a, b) => { - return a - b; - }); - realCameraInfos = realCameraInfos.slice(0, value["taskPower"]["bodyPower"]); - } - return [...runRealCameraInfos, ...realCameraInfos]; -}; -var createIntelligentTrack = async (value) => { - const data = { - images: value["images"], - type: value["model"], - normalComputerPower: value["bodyPower"] || 0, - faceComputerPower: value["facePower"] || 0, - // deviceIds: ['129537'], - deviceIds: value["deviceIds"], - conf: { - faceThreshold: defaultFaceThreshold, - bodyThreshold: defaultBodyThreshold, - faceResultNum: defaultFaceResultNum, - radius: value["circleRadius"] * 1e3, - queryCycle: defaultQueryCycle - }, - centerConf: { - centerX: value["circleCenter"][0], - centerY: value["circleCenter"][1] - } - }; - const res = await (0, import_request.default)({ - method: "PUT", - url: "/singer.SmartTrackService/CreateSmartTrack", - data - }); - return res; -}; -var emitHeartbeat = async (smartTrackId) => { - try { - await (0, import_request.default)({ - method: "POST", - url: "/singer.SmartTrackService/SmartTrackHeartBeat", - data: { - smartTrackId - } - }); - } catch (err) { - console.error(err); - } -}; -var ModifyTrackCameras = async (value) => { - try { - await setIntelligentTrackCircleInfo(value["smartTrackId"], value["centerPoint"]); - await (0, import_request.default)({ - url: "/singer.SmartTrackService/ModifyTrackCameras", - method: "PUT", - data: { - smartTrackId: value["smartTrackId"], - deviceIds: value["deviceIds"] - } - }); - } catch (err) { - import_meta.message.error(err); - } -}; -var setIntelligentTrackCircleInfo = async (smartTrackId, circleCenter) => { - try { - await (0, import_request.default)({ - url: "/singer.SmartTrackService/ModifyTrackScopeConf", - method: "PUT", - data: { - smartTrackId, - centerConf: { - centerX: (0, import_func.get)(circleCenter, "0"), - centerY: (0, import_func.get)(circleCenter, "1") - } - } - }); - } catch (err) { - import_meta.message.error(err); - } -}; -var getTackCameraInfo = async (value) => { - let circleCameraInfos = await getCameraInfoByCircle( - value["circleCenter"], - value["radius"], - value["zoom"] - ); - return circleCameraInfos; -}; -var getCameraInfoByCircle = async (circleCenter, radius, zoom = 16) => { - try { - let centerFeature = turf.circle(turf.point(circleCenter), radius, { - units: "kilometers", - steps: 64 - }); - let minx = 0; - let maxx = 0; - let miny = 0; - let maxy = 0; - for (let i = 0; i < 4; i++) { - let point2 = turf.destination(turf.point(circleCenter), radius, 90 * i, { - units: "kilometers" - }).geometry.coordinates; - if (point2[0] < minx || minx === 0) { - minx = point2[0]; - } - if (point2[0] > maxx || maxx === 0) { - maxx = point2[0]; - } - if (point2[1] < miny || miny === 0) { - miny = point2[1]; - } - if (point2[1] > maxy || maxy === 0) { - maxy = point2[1]; - } - } - let { clusterPoint } = await (0, import_request.default)({ - url: "/singer.DeviceService/GetClusters", - method: "POST", - data: { - northEast: { X: maxx, Y: maxy }, - southWest: { X: minx, Y: miny }, - zoom - } - }); - let cameraIds = []; - clusterPoint.forEach((v) => { - cameraIds.push(...v["cameraIDs"]); - }); - const { cameras } = await (0, import_utils.SearchCamera)({ - cameraId: cameraIds, - maxResults: cameraIds.length - }); - const cameraInfos = cameras.filter((v) => { - let cameraPoint = turf.point([(0, import_func.get)(v, "longitude"), (0, import_func.get)(v, "latitude")]); - return turf.booleanPointInPolygon(cameraPoint, centerFeature); - }); - return cameraInfos; - } catch (err) { - console.error(err); - return []; - } -}; -var taskInfoToSearchItem = (taskInfo) => { - let imageList = []; - (0, import_func.get)(taskInfo, "images", []).forEach((v) => { - const url = (0, import_func.get)(v, "conds.0.srcImageUrl"); - const objectId = (0, import_func.get)(v, "conds.0.featureInfo.objectId"); - let imageItem = { - index: 0, - url, - objectId, - odRects: (0, import_func.get)(v, "conds").map((item) => { - return { - fileKey: (0, import_func.get)(item, "objectImageUrl"), - extendRect: { - algorithmVersion: (0, import_func.get)(item, "alg", ""), - ...(0, import_func.get)(item, "rect", {}) - }, - rect: { - algorithmVersion: (0, import_func.get)(item, "alg", ""), - rect: (0, import_func.get)(item, "rect", {}) - } - }; - }) - }; - imageList.push(imageItem); - }); - return imageList; -}; -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - ModifyTrackCameras, - createIntelligentTrack, - deleteTrackById, - emitHeartbeat, - getCameraInfoByCircle, - getDefaultRadius, - getSearchIntervalDuration, - getTackCameraInfo, - getTackDetailInfo, - getTaskCameraByCenterAndPower, - getTrackTaskById, - modifyTrackConf, - modifyTrackImgs, - operateTrackById, - setDefaultRadius, - setIntelligentTrackCircleInfo, - setSearchIntervalDuration, - taskInfoToSearchItem -}); diff --git a/packages/biz/lib/index.d.ts b/packages/biz/lib/index.d.ts deleted file mode 100644 index 743bed4..0000000 --- a/packages/biz/lib/index.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -export { default as BigImageModal } from './BigImageModal'; -export type { BigImageModalProps } from './BigImageModal'; -export { default as BoxSelectTree } from './boxSelectTree'; -export type { BoxSelectTreeProps } from './boxSelectTree'; -export { default as Tree } from './tree'; -export type { BoxTreeProps, TreeData } from './tree'; -export { default as TreeTransfer } from './treeTransfer'; -export type { TreeTransferProps } from './treeTransfer'; -export { default as TreeTransferModal } from './treeTransferModal'; -export type { TreeTransferModalProps } from './treeTransferModal'; -export { default as WarningRecordCard } from './WarningRecordCard'; -export type { IRecord, WarningRecordCardProps } from './WarningRecordCard'; -export type { ViewLargerImageModalRef, ViewLargerImageModalProps } from './ViewLargerImageModal'; -export { default as ViewLargerImageModal, useViewLargerImageModal } from './ViewLargerImageModal'; -export type { VideoPlayerCardProps } from './VideoPlayerCard'; -export { default as VideoPlayerCard } from './VideoPlayerCard'; -export { default as RealTimeMonitor } from './RealTimeMonitor'; diff --git a/packages/biz/lib/index.js b/packages/biz/lib/index.js deleted file mode 100644 index 435cd59..0000000 --- a/packages/biz/lib/index.js +++ /dev/null @@ -1,65 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/index.tsx -var src_exports = {}; -__export(src_exports, { - BigImageModal: () => import_BigImageModal.default, - BoxSelectTree: () => import_boxSelectTree.default, - RealTimeMonitor: () => import_RealTimeMonitor.default, - Tree: () => import_tree.default, - TreeTransfer: () => import_treeTransfer.default, - TreeTransferModal: () => import_treeTransferModal.default, - VideoPlayerCard: () => import_VideoPlayerCard.default, - ViewLargerImageModal: () => import_ViewLargerImageModal.default, - WarningRecordCard: () => import_WarningRecordCard.default, - useViewLargerImageModal: () => import_ViewLargerImageModal.useViewLargerImageModal -}); -module.exports = __toCommonJS(src_exports); -var import_BigImageModal = __toESM(require("./BigImageModal")); -var import_boxSelectTree = __toESM(require("./boxSelectTree")); -var import_tree = __toESM(require("./tree")); -var import_treeTransfer = __toESM(require("./treeTransfer")); -var import_treeTransferModal = __toESM(require("./treeTransferModal")); -var import_WarningRecordCard = __toESM(require("./WarningRecordCard")); -var import_ViewLargerImageModal = __toESM(require("./ViewLargerImageModal")); -var import_VideoPlayerCard = __toESM(require("./VideoPlayerCard")); -var import_RealTimeMonitor = __toESM(require("./RealTimeMonitor")); -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - BigImageModal, - BoxSelectTree, - RealTimeMonitor, - Tree, - TreeTransfer, - TreeTransferModal, - VideoPlayerCard, - ViewLargerImageModal, - WarningRecordCard, - useViewLargerImageModal -}); diff --git a/packages/biz/lib/tree/boxTree.d.ts b/packages/biz/lib/tree/boxTree.d.ts deleted file mode 100644 index 5e34aef..0000000 --- a/packages/biz/lib/tree/boxTree.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { FC } from 'react'; -import { TreeDataNode, TreeProps } from 'antd'; -import './index.less'; -export interface BoxTreeProps extends TreeProps { - data: TreeDataNode[]; - treeCheckable?: boolean; - showItemOption?: boolean; - customOptions?: any; - onItemCheck?: TreeProps['onCheck']; - onItemSelect?: TreeProps['onSelect']; - onItemSetting?: (_data: any) => void; - onItemDelete?: (_data: any) => void; - onItemRename?: (_nodeData: any) => void; - onItemRenameFinish?: (_data: any, _nodeData: any) => Promise; -} -declare const boxTree: FC; -export default boxTree; diff --git a/packages/biz/lib/tree/boxTree.js b/packages/biz/lib/tree/boxTree.js deleted file mode 100644 index 835a8f7..0000000 --- a/packages/biz/lib/tree/boxTree.js +++ /dev/null @@ -1,134 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/tree/boxTree.tsx -var boxTree_exports = {}; -__export(boxTree_exports, { - default: () => boxTree_default -}); -module.exports = __toCommonJS(boxTree_exports); -var import_react = __toESM(require("react")); -var import_antd = require("antd"); -var import_theme = __toESM(require("antd/es/theme")); -var import_icons = require("@ant-design/icons"); -var import_pro_components = require("@ant-design/pro-components"); -var import_index = require("./index.less"); -var componentName = "zhst-biz-tree"; -var { useToken } = import_theme.default; -var boxTree = (props) => { - const { - onItemSelect, - onItemCheck, - onItemSetting, - onItemDelete, - data = [], - showItemOption = true, - treeCheckable = false, - onItemRename, - onItemRenameFinish, - customOptions - } = props; - const { token } = useToken(); - const [checkedItem, setCheckedItem] = (0, import_react.useState)(""); - const cameraStatus = /* @__PURE__ */ new Map([ - ["0", "error"], - ["1", "success"], - ["3", "processing"], - ["4", "default"] - ]); - return /* @__PURE__ */ import_react.default.createElement( - import_antd.Tree, - { - checkable: treeCheckable, - blockNode: true, - onSelect: (selectedKeys, info) => { - setCheckedItem(selectedKeys[0]); - onItemSelect == null ? void 0 : onItemSelect(selectedKeys, info); - }, - onCheck: onItemCheck, - treeData: data, - titleRender: (_nodeData) => { - return /* @__PURE__ */ import_react.default.createElement("div", { className: `${componentName}-item-render` }, !_nodeData.children && _nodeData.isCamera && /* @__PURE__ */ import_react.default.createElement(import_antd.Badge, { style: { marginRight: "6px" }, status: cameraStatus.get(_nodeData.status || "4") }), /* @__PURE__ */ import_react.default.createElement( - "span", - { - style: checkedItem === _nodeData.key && _nodeData.isCamera ? { - color: token.colorPrimary - } : {} - }, - _nodeData.title - ), showItemOption && /* @__PURE__ */ import_react.default.createElement(import_antd.Space, { className: `${componentName}-item-render_right`, style: { float: "right" } }, customOptions || /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement( - import_pro_components.ModalForm, - { - title: "重命名", - width: 600, - modalProps: { destroyOnClose: true }, - layout: "horizontal", - labelCol: { span: 6 }, - wrapperCol: { span: 18 }, - trigger: /* @__PURE__ */ import_react.default.createElement(import_icons.EditOutlined, { onClick: (e) => { - e.preventDefault(); - e.stopPropagation(); - onItemRename == null ? void 0 : onItemRename(_nodeData); - } }), - submitter: { - searchConfig: { - submitText: "确定", - resetText: "取消" - } - }, - onFinish: async (value) => onItemRenameFinish == null ? void 0 : onItemRenameFinish(value, _nodeData) - }, - /* @__PURE__ */ import_react.default.createElement( - import_pro_components.ProFormText, - { - rules: [ - { - required: true - } - ], - width: "md", - name: "name", - label: "盒子名称", - placeholder: "请输入盒子名称" - } - ) - ), /* @__PURE__ */ import_react.default.createElement(import_icons.SettingOutlined, { onClick: (e) => { - e.preventDefault(); - e.stopPropagation(); - onItemSetting == null ? void 0 : onItemSetting(_nodeData); - } }), /* @__PURE__ */ import_react.default.createElement(import_icons.CloseOutlined, { onClick: (e) => { - e.preventDefault(); - e.stopPropagation(); - onItemDelete == null ? void 0 : onItemDelete(_nodeData); - } })))); - }, - ...props - } - ); -}; -var boxTree_default = boxTree; diff --git a/packages/biz/lib/tree/index.d.ts b/packages/biz/lib/tree/index.d.ts deleted file mode 100644 index 4082eb0..0000000 --- a/packages/biz/lib/tree/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { TreeDataNode } from 'antd'; -import BoxTree from './boxTree'; -export interface TreeData extends TreeDataNode { - children?: TreeDataNode['children'] & { - isCamera?: boolean; - /** - * 0-失败 1-成功 2-进行中 3-未知 - */ - status?: '0' | '1' | '2' | '3'; - }[]; -} -export type { BoxTreeProps } from './boxTree'; -export default BoxTree; diff --git a/packages/biz/lib/tree/index.js b/packages/biz/lib/tree/index.js deleted file mode 100644 index 46783d3..0000000 --- a/packages/biz/lib/tree/index.js +++ /dev/null @@ -1,36 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/tree/index.tsx -var tree_exports = {}; -__export(tree_exports, { - default: () => tree_default -}); -module.exports = __toCommonJS(tree_exports); -var import_boxTree = __toESM(require("./boxTree")); -var tree_default = import_boxTree.default; diff --git a/packages/biz/lib/tree/index.less b/packages/biz/lib/tree/index.less deleted file mode 100644 index 9da4e2d..0000000 --- a/packages/biz/lib/tree/index.less +++ /dev/null @@ -1,9 +0,0 @@ -.zhst-biz-tree-item-render { - &_right { - display: none; - } - - &:hover &_right { - display: inline-flex; - } -} diff --git a/packages/biz/lib/treeTransfer/TreeTransfer.d.ts b/packages/biz/lib/treeTransfer/TreeTransfer.d.ts deleted file mode 100644 index b74b4f3..0000000 --- a/packages/biz/lib/treeTransfer/TreeTransfer.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react'; -import { InputProps } from 'antd'; -import { TransferProps, TreeDataNode, TreeProps } from 'antd'; -import './index.less'; -export interface TreeTransferProps { - dataSource: TreeDataNode[]; - treeProps?: TreeProps; - searchInputProps?: InputProps; - targetItems: TreeDataNode[]; - checkedKeys: string[]; - onTreeSelect?: TreeProps['onSelect']; - onTreeCheck?: TreeProps['onCheck']; - onItemDelete?: (key: string, info?: { - root: TreeDataNode[]; - keys: string[]; - }) => void; - onChange?: TransferProps['onChange']; - onOk?: (data: any) => void; - onReset?: () => void; -} -declare const TreeTransfer: React.FC; -export default TreeTransfer; diff --git a/packages/biz/lib/treeTransfer/TreeTransfer.js b/packages/biz/lib/treeTransfer/TreeTransfer.js deleted file mode 100644 index 5c8aa59..0000000 --- a/packages/biz/lib/treeTransfer/TreeTransfer.js +++ /dev/null @@ -1,137 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/treeTransfer/TreeTransfer.tsx -var TreeTransfer_exports = {}; -__export(TreeTransfer_exports, { - default: () => TreeTransfer_default -}); -module.exports = __toCommonJS(TreeTransfer_exports); -var import_react = __toESM(require("react")); -var import_antd = require("antd"); -var import_theme = __toESM(require("antd/es/theme")); -var import_index = require("./index.less"); -var import_icons = require("@ant-design/icons"); -var import_treeTransferHelper = require("./treeTransferHelper"); -var componentName = "zhst-biz-treeTransfer"; -var { useToken } = import_theme.default; -var TreeTransfer = ({ - dataSource, - treeProps, - searchInputProps, - targetItems = [], - checkedKeys = [], - onTreeCheck, - onTreeSelect, - onItemDelete, - onOk, - onReset -}) => { - const { token } = useToken(); - const [keyWords, setKeyWords] = (0, import_react.useState)(""); - function findNodesWithKeyword(_keyWords, _treeData) { - function dfs(node) { - return node.filter((item) => item.title.includes(_keyWords)); - } - const data = dfs(_treeData); - return data || []; - } - return /* @__PURE__ */ import_react.default.createElement(import_antd.Flex, { gap: 20, className: componentName, align: "center", justify: "center" }, /* @__PURE__ */ import_react.default.createElement("div", { className: `${componentName}-left` }, /* @__PURE__ */ import_react.default.createElement( - import_antd.Card, - { - className: `${componentName}-left_card`, - title: /* @__PURE__ */ import_react.default.createElement("div", { style: { textAlign: "center" } }, "可选择的范围"), - bodyStyle: { padding: 12 } - }, - /* @__PURE__ */ import_react.default.createElement(import_antd.Input, { prefix: /* @__PURE__ */ import_react.default.createElement(import_icons.SearchOutlined, null), onChange: (e) => setKeyWords(e.target.value), placeholder: "请输入设备名称", ...searchInputProps }), - /* @__PURE__ */ import_react.default.createElement( - import_antd.Tree, - { - style: { marginTop: "6px" }, - height: 420, - blockNode: true, - checkable: true, - checkedKeys, - treeData: findNodesWithKeyword(keyWords, dataSource), - onCheck: (keys, info) => onTreeCheck == null ? void 0 : onTreeCheck(keys, info), - onSelect: (keys, info) => onTreeSelect == null ? void 0 : onTreeSelect(keys, info), - ...treeProps - } - ) - )), /* @__PURE__ */ import_react.default.createElement(import_icons.DoubleRightOutlined, null), /* @__PURE__ */ import_react.default.createElement("div", { className: `${componentName}-right` }, /* @__PURE__ */ import_react.default.createElement( - import_antd.Card, - { - className: `${componentName}-right_card`, - title: /* @__PURE__ */ import_react.default.createElement("div", { style: { textAlign: "center" } }, "已选择的范围"), - bodyStyle: { padding: 0 } - }, - /* @__PURE__ */ import_react.default.createElement( - "div", - { - className: `${componentName}-right_card__items` - }, - targetItems.map((item) => /* @__PURE__ */ import_react.default.createElement( - "div", - { - className: `${componentName}-right_card__items___item`, - key: item.key, - onMouseEnter: (e) => { - e.target.style.backgroundColor = token.colorPrimaryBg; - e.target.style.color = token.colorPrimary; - }, - onMouseLeave: (e) => { - e.target.style.color = token.colorText; - e.target.style.backgroundColor = null; - } - }, - item.title, - /* @__PURE__ */ import_react.default.createElement("div", { style: { float: "right" } }, /* @__PURE__ */ import_react.default.createElement(import_icons.DeleteOutlined, { onClick: () => { - const { root, keys } = (0, import_treeTransferHelper.getAllRootKeyById)(item.key, dataSource); - onItemDelete == null ? void 0 : onItemDelete(item.key, { root, keys }); - } })) - )) - ), - /* @__PURE__ */ import_react.default.createElement( - import_antd.Flex, - { - className: `${componentName}-right_card__btns` - }, - /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { style: { marginRight: 8, width: "50%" }, disabled: targetItems.length <= 0, onClick: onReset }, "重置"), - /* @__PURE__ */ import_react.default.createElement( - import_antd.Button, - { - style: { width: "50%" }, - type: "primary", - onClick: () => onOk == null ? void 0 : onOk(targetItems) - }, - "确定" - ) - ) - ))); -}; -var TreeTransfer_default = TreeTransfer; diff --git a/packages/biz/lib/treeTransfer/index.d.ts b/packages/biz/lib/treeTransfer/index.d.ts deleted file mode 100644 index 7ea5c47..0000000 --- a/packages/biz/lib/treeTransfer/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import TreeTransfer from "./TreeTransfer"; -export type { TreeTransferProps } from './TreeTransfer'; -export * from './treeTransferHelper'; -export default TreeTransfer; diff --git a/packages/biz/lib/treeTransfer/index.js b/packages/biz/lib/treeTransfer/index.js deleted file mode 100644 index 7e50781..0000000 --- a/packages/biz/lib/treeTransfer/index.js +++ /dev/null @@ -1,42 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/treeTransfer/index.tsx -var treeTransfer_exports = {}; -__export(treeTransfer_exports, { - default: () => treeTransfer_default -}); -module.exports = __toCommonJS(treeTransfer_exports); -var import_TreeTransfer = __toESM(require("./TreeTransfer")); -__reExport(treeTransfer_exports, require("./treeTransferHelper"), module.exports); -var treeTransfer_default = import_TreeTransfer.default; -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - ...require("./treeTransferHelper") -}); diff --git a/packages/biz/lib/treeTransfer/index.less b/packages/biz/lib/treeTransfer/index.less deleted file mode 100644 index 9ffe8cd..0000000 --- a/packages/biz/lib/treeTransfer/index.less +++ /dev/null @@ -1,43 +0,0 @@ -.zhst-biz-treeTransfer { - &-left { - &_card { - width: 500px; - height: 522px; - background-color: #FCFCFC; - } - } - - &-right { - &_card { - width: 300px; - height: 522px; - background-color: #FCFCFC; - - &__items { - padding: 8px 4px; - overflow: scroll; - - &::-webkit-scrollbar { - display: none; - } - - &___item { - margin: 0; - padding: 4px 12px; - cursor: pointer; - } - } - - &__btns { - width: 100%; - padding: 8px; - position: absolute; - bottom: 0; - left: 50%; - transform: translateX(-50%); - box-sizing: border-box; - border-top: 1px solid #f0f0f0; - } - } - } -} diff --git a/packages/biz/lib/treeTransfer/treeTransferHelper.d.ts b/packages/biz/lib/treeTransfer/treeTransferHelper.d.ts deleted file mode 100644 index 705684c..0000000 --- a/packages/biz/lib/treeTransfer/treeTransferHelper.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export declare const isChecked: (selectedKeys: React.Key[], eventKey: React.Key) => boolean; -/** - * 通过子元素找到父级节点 - * @param objects - * @param element - * @returns - */ -export declare const findParentByChild: (objects: any[], propertyValue: string | number, propertyKey?: string) => any; -export declare const getAllRootKeyById: (val: string | number, list: any[], key?: string) => { - root: any; - keys: any[]; -}; diff --git a/packages/biz/lib/treeTransfer/treeTransferHelper.js b/packages/biz/lib/treeTransfer/treeTransferHelper.js deleted file mode 100644 index 1c3c4eb..0000000 --- a/packages/biz/lib/treeTransfer/treeTransferHelper.js +++ /dev/null @@ -1,77 +0,0 @@ -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/treeTransfer/treeTransferHelper.ts -var treeTransferHelper_exports = {}; -__export(treeTransferHelper_exports, { - findParentByChild: () => findParentByChild, - getAllRootKeyById: () => getAllRootKeyById, - isChecked: () => isChecked -}); -module.exports = __toCommonJS(treeTransferHelper_exports); -var isChecked = (selectedKeys, eventKey) => selectedKeys.includes(eventKey); -function isObject(value) { - return value !== null && typeof value === "object" && !Array.isArray(value); -} -var findParentByChild = (objects, propertyValue, propertyKey = "key") => { - for (let i = 0; i < objects.length; i++) { - const obj = objects[i]; - if (obj[propertyKey] === propertyValue) { - return obj; - } else if (typeof obj === "object") { - const found = findParentByChild(Object.values(obj), propertyValue); - if (found) { - return obj; - } - } - } - return null; -}; -var getAllRootKeyById = (val, list, key = "key") => { - let keys = []; - const findParentByChild2 = (propertyValue, objects, propertyKey) => { - for (let i = 0; i < objects.length; i++) { - const obj = objects[i]; - if (obj[propertyKey] === propertyValue) { - console.log("obj", obj); - return obj; - } else if (typeof obj === "object") { - const found = findParentByChild2(propertyValue, Object.values(obj), propertyKey); - if (found) { - if (isObject(found)) { - keys.push(found.key); - } - return obj; - } - } - } - return null; - }; - const data = findParentByChild2(val, list, key); - data.key && keys.push(data.key); - return { - root: data, - keys - }; -}; -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - findParentByChild, - getAllRootKeyById, - isChecked -}); diff --git a/packages/biz/lib/treeTransferModal/TreeTransferModal.d.ts b/packages/biz/lib/treeTransferModal/TreeTransferModal.d.ts deleted file mode 100644 index e0a0d0e..0000000 --- a/packages/biz/lib/treeTransferModal/TreeTransferModal.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { FC } from 'react'; -import { ModalProps, RadioGroupProps, SelectProps, TransferProps, TreeDataNode, TreeProps } from 'antd'; -export interface TreeTransferModalProps { - dataSource: TreeDataNode[]; - treeProps?: TreeProps; - targetItems: TreeDataNode[]; - checkedKeys: string[]; - onTreeSelect?: TreeProps['onSelect']; - onTreeCheck?: TreeProps['onCheck']; - onItemDelete?: (key: string, info?: { - root: TreeDataNode[]; - keys: string[]; - }) => void; - onChange?: TransferProps['onChange']; - onOk?: (data: any) => void; - onReset?: () => void; - open?: boolean; - onCancel?: ModalProps['onCancel']; - onRadioChange?: RadioGroupProps['onChange']; - onSelect?: SelectProps['onSelect']; - modalProps?: ModalProps; - radioProps?: RadioGroupProps; - selectProps?: SelectProps; -} -declare const TreeTransferModal: FC; -export default TreeTransferModal; diff --git a/packages/biz/lib/treeTransferModal/TreeTransferModal.js b/packages/biz/lib/treeTransferModal/TreeTransferModal.js deleted file mode 100644 index 5c20927..0000000 --- a/packages/biz/lib/treeTransferModal/TreeTransferModal.js +++ /dev/null @@ -1,114 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/treeTransferModal/TreeTransferModal.tsx -var TreeTransferModal_exports = {}; -__export(TreeTransferModal_exports, { - default: () => TreeTransferModal_default -}); -module.exports = __toCommonJS(TreeTransferModal_exports); -var import_react = __toESM(require("react")); -var import_antd = require("antd"); -var import_treeTransfer = __toESM(require("../treeTransfer")); -var import_constants = require("../utils/constants"); -var TreeTransferModal = (props) => { - const { - open, - dataSource = [], - checkedKeys, - onItemDelete, - onOk, - onCancel, - onReset, - onRadioChange, - onTreeCheck, - onSelect, - targetItems, - modalProps, - radioProps, - selectProps - } = props; - const [type, setType] = (0, import_react.useState)("1"); - return /* @__PURE__ */ import_react.default.createElement( - import_antd.Modal, - { - open, - destroyOnClose: true, - title: "统计点位", - width: "948px", - footer: null, - onCancel, - ...modalProps - }, - /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement( - import_antd.Radio.Group, - { - onChange: (e) => { - setType(e.target.value); - onRadioChange == null ? void 0 : onRadioChange(e); - }, - style: { marginLeft: "24px", padding: "20px 0" }, - value: type, - options: import_constants.BOX_TYPE_LIST, - ...radioProps - } - ), /* @__PURE__ */ import_react.default.createElement( - import_antd.Select, - { - defaultValue: "", - style: { marginLeft: 200, width: 150 }, - options: import_constants.ALL_LIST, - onSelect, - ...selectProps - } - )), type === "box" ? /* @__PURE__ */ import_react.default.createElement( - import_treeTransfer.default, - { - dataSource, - targetItems, - checkedKeys, - onTreeCheck, - onItemDelete, - onOk, - onReset - } - ) : /* @__PURE__ */ import_react.default.createElement( - import_treeTransfer.default, - { - dataSource, - targetItems, - checkedKeys, - onTreeCheck, - onItemDelete, - onOk, - onReset - } - ), /* @__PURE__ */ import_react.default.createElement("p", { style: { textAlign: "right" } }, "已选中", targetItems.length, "个点位")) - ); -}; -var TreeTransferModal_default = TreeTransferModal; diff --git a/packages/biz/lib/treeTransferModal/index.d.ts b/packages/biz/lib/treeTransferModal/index.d.ts deleted file mode 100644 index 8e5245a..0000000 --- a/packages/biz/lib/treeTransferModal/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import TreeTransferModal from './TreeTransferModal'; -export type { TreeTransferModalProps } from './TreeTransferModal'; -export default TreeTransferModal; diff --git a/packages/biz/lib/treeTransferModal/index.js b/packages/biz/lib/treeTransferModal/index.js deleted file mode 100644 index 19037a6..0000000 --- a/packages/biz/lib/treeTransferModal/index.js +++ /dev/null @@ -1,36 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/treeTransferModal/index.tsx -var treeTransferModal_exports = {}; -__export(treeTransferModal_exports, { - default: () => treeTransferModal_default -}); -module.exports = __toCommonJS(treeTransferModal_exports); -var import_TreeTransferModal = __toESM(require("./TreeTransferModal")); -var treeTransferModal_default = import_TreeTransferModal.default; diff --git a/packages/biz/lib/utils/constants.js b/packages/biz/lib/utils/constants.js deleted file mode 100644 index 733d65a..0000000 --- a/packages/biz/lib/utils/constants.js +++ /dev/null @@ -1,91 +0,0 @@ -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/utils/constants.ts -var constants_exports = {}; -__export(constants_exports, { - ALL_LIST: () => ALL_LIST, - BODY_SEARCH_THRESHOID: () => BODY_SEARCH_THRESHOID, - BOX_TYPE_LIST: () => BOX_TYPE_LIST, - DeviceTab: () => DeviceTab, - ENTER_CIRCLE: () => ENTER_CIRCLE, - GLOBAL_IS_BOX_VMS_SHOW: () => GLOBAL_IS_BOX_VMS_SHOW, - GLOBAL_IS_ITEM_NUMBER_SHOW: () => GLOBAL_IS_ITEM_NUMBER_SHOW, - MODE_KEY: () => MODE_KEY, - OBJECT_AGE_TYPE_THRESHOLD: () => OBJECT_AGE_TYPE_THRESHOLD, - OBJECT_GRNER_THRESHOLD: () => OBJECT_GRNER_THRESHOLD, - OUT_CIRCLE: () => OUT_CIRCLE, - RECORD_VERSION: () => RECORD_VERSION, - SEARCH_IMG_COUNT: () => SEARCH_IMG_COUNT, - TEMP: () => TEMP, - publicPath: () => publicPath -}); -module.exports = __toCommonJS(constants_exports); -var OBJECT_GRNER_THRESHOLD = 0.8; -var OBJECT_AGE_TYPE_THRESHOLD = 0.5; -var MODE_KEY = "test_mode"; -var SEARCH_IMG_COUNT = 10; -var GLOBAL_IS_ITEM_NUMBER_SHOW = false; -var publicPath = "hummingbird"; -var ENTER_CIRCLE = "MONITORTYPE_ENTER_CIRCLE"; -var OUT_CIRCLE = "MONITORTYPE_OUT_CIRCLE"; -var TEMP = "MONITORTYPE_TEMP"; -var GLOBAL_IS_BOX_VMS_SHOW = true; -var BODY_SEARCH_THRESHOID = 0.45; -var RECORD_VERSION = "3.0.0"; -var DeviceTab = { - EMPTY: 0, - REAL_CAMERA: 1, - PREPROCESS_CAMERA: 2, - //摄像头列表 - TAG_CAMERA: 3, - //预案列表 - HISTORY_VIDEO_GROUP: 4, - //录像回放 - VIRTUAL_CAMERA: 5, - //离线视频 - REAL_CAMERA_NOFACE: 6, - REAL_CAMERA_ONLYFACE: 7, - REAL_CAMERA_NOFACE_NOBOX_NODIRECONNECT: 8 - // 只有普通摄像头,没有人脸、没有盒子、直连 -}; -var BOX_TYPE_LIST = [ - { value: "1", label: "盒子" }, - { value: "2", label: "盒子组" } -]; -var ALL_LIST = [ - { value: "", label: "全部" } -]; -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - ALL_LIST, - BODY_SEARCH_THRESHOID, - BOX_TYPE_LIST, - DeviceTab, - ENTER_CIRCLE, - GLOBAL_IS_BOX_VMS_SHOW, - GLOBAL_IS_ITEM_NUMBER_SHOW, - MODE_KEY, - OBJECT_AGE_TYPE_THRESHOLD, - OBJECT_GRNER_THRESHOLD, - OUT_CIRCLE, - RECORD_VERSION, - SEARCH_IMG_COUNT, - TEMP, - publicPath -}); diff --git a/packages/biz/lib/utils/index.d.ts b/packages/biz/lib/utils/index.d.ts deleted file mode 100644 index e69de29..0000000 diff --git a/packages/biz/lib/utils/index.js b/packages/biz/lib/utils/index.js deleted file mode 100644 index e69de29..0000000 diff --git a/packages/biz/package.json b/packages/biz/package.json index 3144210..0fd75b1 100644 --- a/packages/biz/package.json +++ b/packages/biz/package.json @@ -1,6 +1,6 @@ { "name": "@zhst/biz", - "version": "0.11.3", + "version": "0.12.1", "description": "业务库", "keywords": [ "business", @@ -42,10 +42,11 @@ "@ant-design/pro-components": "^2.6.49", "@zhst/func": "workspace:^", "@zhst/hooks": "workspace:^", + "@zhst/icon": "workspace:^", "@zhst/meta": "workspace:^", "antd": "^5.12.5", "classnames": "^2.5.1", - "rc-util": "^5.38.1", - "dayjs": "^1.11.10" + "dayjs": "^1.11.10", + "rc-util": "^5.38.1" } } diff --git a/packages/biz/src/BigImageModal/components/navigation/index.tsx b/packages/biz/src/BigImageModal/components/navigation/index.tsx index eeb0afc..946b1e5 100644 --- a/packages/biz/src/BigImageModal/components/navigation/index.tsx +++ b/packages/biz/src/BigImageModal/components/navigation/index.tsx @@ -1,6 +1,7 @@ import * as React from 'react'; import classnames from 'classnames'; -import { Icon, Button } from '@zhst/meta'; +import { Button } from '@zhst/meta'; +import { IconFont } from '@zhst/icon' import './index.less'; const componentName = `zhst-image__nav`; @@ -29,7 +30,7 @@ const Navigation: React.FC<{ )} > ); diff --git a/packages/func/CHANGELOG.md b/packages/func/CHANGELOG.md index 38b33d5..0d6864f 100644 --- a/packages/func/CHANGELOG.md +++ b/packages/func/CHANGELOG.md @@ -1,5 +1,12 @@ # @zhst/utils +## 0.9.2 + +### Patch Changes + +- Updated dependencies + - @zhst/request@0.9.1 + ## 0.9.1 ### Patch Changes diff --git a/packages/func/package.json b/packages/func/package.json index 702a401..a43e75a 100644 --- a/packages/func/package.json +++ b/packages/func/package.json @@ -1,6 +1,6 @@ { "name": "@zhst/func", - "version": "0.9.1", + "version": "0.9.2", "description": "函数合集", "keywords": [ "hooks" diff --git a/packages/hooks/CHANGELOG.md b/packages/hooks/CHANGELOG.md index a7f0f66..37342bd 100644 --- a/packages/hooks/CHANGELOG.md +++ b/packages/hooks/CHANGELOG.md @@ -1,5 +1,11 @@ # @zhst/hooks +## 0.8.11 + +### Patch Changes + +- @zhst/func@0.9.2 + ## 0.8.10 ### Patch Changes diff --git a/packages/hooks/package.json b/packages/hooks/package.json index 7df2d88..a74815b 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -1,6 +1,6 @@ { "name": "@zhst/hooks", - "version": "0.8.10", + "version": "0.8.11", "description": "hooks合集", "keywords": [ "hooks" diff --git a/packages/material/CHANGELOG.md b/packages/material/CHANGELOG.md index e29de51..d0b21dc 100644 --- a/packages/material/CHANGELOG.md +++ b/packages/material/CHANGELOG.md @@ -1,5 +1,27 @@ # @zhst/material +## 0.8.0 + +### Minor Changes + +- 修改物料库算法编辑新增箭头选择,元组件新增图片标记组件 + +### Patch Changes + +- Updated dependencies + - @zhst/meta@0.11.0 + - @zhst/biz@0.12.1 + - @zhst/func@0.9.2 + - @zhst/hooks@0.8.11 + +## 0.7.8 + +### Patch Changes + +- Updated dependencies + - @zhst/meta@0.10.0 + - @zhst/biz@0.12.0 + ## 0.7.7 ### Patch Changes diff --git a/packages/material/es/algorithmConfig/algorithmConfig.d.ts b/packages/material/es/algorithmConfig/algorithmConfig.d.ts deleted file mode 100644 index 9c0101e..0000000 --- a/packages/material/es/algorithmConfig/algorithmConfig.d.ts +++ /dev/null @@ -1,53 +0,0 @@ -import React from 'react'; -import { AlgorithmTableProps } from './components/algorithmTable/AlgorithmTable'; -import { TimeTemplateTableProps } from './components/timeTemplateTable/TimeTemplateTable'; -export interface AlgorithmConfigProps { - onAddAlgorithm?: () => void; - /** - * 单选的图片数据 - */ - drawData?: { - imageKey: string; - odRect?: { - x: number; - y: number; - w: number; - h: number; - }; - score?: string; - time?: string; - }; - /** - * 单选状态圈选后的监听事件 - */ - drawListener?: (data: any) => void; - algorithmTableDataSource?: { - id: string; - templateName: string; - operatingCycle: string; - algorithmOccupied: number; - }[]; - timeTemplateDataSource?: { - id: string; - templateName: string; - operatingCycle: string; - arrangeWeek: string; - algorithmOccupied: string; - }[]; - boxList: { - id: string; - name: string; - }[]; - algorithmTableProps?: AlgorithmTableProps; - timeTemplateTableProps?: TimeTemplateTableProps; - selectedKey?: string; - rowKey?: string; - type: AlgorithmTableProps['tableType']; - onSelect?: (key: string, info?: any) => void; -} -export interface AlgorithmConfigRef { - draw: () => void; - cancelDraw: () => void; -} -declare const AlgorithmConfig: React.ForwardRefExoticComponent>; -export default AlgorithmConfig; diff --git a/packages/material/es/algorithmConfig/algorithmConfig.js b/packages/material/es/algorithmConfig/algorithmConfig.js index f283541..67f06e1 100644 --- a/packages/material/es/algorithmConfig/algorithmConfig.js +++ b/packages/material/es/algorithmConfig/algorithmConfig.js @@ -1,8 +1,8 @@ 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); } -import React, { useRef, forwardRef, useImperativeHandle } from 'react'; +import React, { forwardRef } from 'react'; import { Flex, Image } from "antd"; import theme from 'antd/es/theme'; -import { BigImagePreview } from '@zhst/meta'; +import { CropperImage } from '@zhst/meta'; import { AlgorithmConfigImg, ErrorImage } from "../utils/base64Images"; import AlgorithmTable from "./components/algorithmTable"; import TimeTemplateTable from "./components/timeTemplateTable"; @@ -16,15 +16,16 @@ var Title = function Title(props) { } }, props.children); }; -var AlgorithmConfig = /*#__PURE__*/forwardRef(function (props, ref) { +var AlgorithmConfig = /*#__PURE__*/forwardRef(function (props) { var _props$algorithmTable = props.algorithmTableDataSource, algorithmTableDataSource = _props$algorithmTable === void 0 ? [] : _props$algorithmTable, _props$timeTemplateDa = props.timeTemplateDataSource, timeTemplateDataSource = _props$timeTemplateDa === void 0 ? [] : _props$timeTemplateDa, _props$boxList = props.boxList, boxList = _props$boxList === void 0 ? [] : _props$boxList, - drawData = props.drawData, drawListener = props.drawListener, + _props$cropperImagePr = props.cropperImageProps, + cropperImageProps = _props$cropperImagePr === void 0 ? {} : _props$cropperImagePr, algorithmTableProps = props.algorithmTableProps, timeTemplateTableProps = props.timeTemplateTableProps, selectedKey = props.selectedKey, @@ -32,33 +33,28 @@ var AlgorithmConfig = /*#__PURE__*/forwardRef(function (props, ref) { type = _props$type === void 0 ? 'multiple' : _props$type, _props$rowKey = props.rowKey, rowKey = _props$rowKey === void 0 ? 'id' : _props$rowKey, - onSelect = props.onSelect; - var drawImageRef = useRef(null); + onSelect = props.onSelect, + _props$title = props.title, + title = _props$title === void 0 ? '盒子名称' : _props$title; var _useToken = useToken(), token = _useToken.token; - useImperativeHandle(ref, function () { - return { - draw: function draw() { - var _drawImageRef$current; - (_drawImageRef$current = drawImageRef.current) === null || _drawImageRef$current === void 0 || _drawImageRef$current.setShowCrop(true); - }, - cancelDraw: function cancelDraw() { - var _drawImageRef$current2; - (_drawImageRef$current2 = drawImageRef.current) === null || _drawImageRef$current2 === void 0 || _drawImageRef$current2.setShowCrop(false); - } - }; - }); + // @ts-ignore + var cropType = cropperImageProps.type; + + // useImperativeHandle(ref, () => ({ + // })) + return /*#__PURE__*/React.createElement(Flex, { style: { border: "1px solid ".concat(token.colorBorder), backgroundColor: token.colorBgBase } }, /*#__PURE__*/React.createElement("div", { - title: "\u76D2\u5B50\u5217\u8868", + title: title, style: { width: '13.9%' } - }, /*#__PURE__*/React.createElement(Title, null, "\u76D2\u5B50\u5217\u8868"), /*#__PURE__*/React.createElement("div", { + }, /*#__PURE__*/React.createElement(Title, null, title), /*#__PURE__*/React.createElement("div", { style: { borderTop: "1px solid ".concat(token.colorBorder) } @@ -76,7 +72,7 @@ var AlgorithmConfig = /*#__PURE__*/forwardRef(function (props, ref) { color: selectedKey === item[rowKey] ? token.colorPrimary : token.colorText, // @ts-ignore backgroundColor: selectedKey === item[rowKey] ? token.blue1 : token.colorBgBase, - transition: '0.2s ease' + transition: '0cancelDraw.2s ease' } }, item.name); }))), /*#__PURE__*/React.createElement("div", { @@ -87,18 +83,10 @@ var AlgorithmConfig = /*#__PURE__*/forwardRef(function (props, ref) { borderLeft: "1px solid ".concat(token.colorBorder), borderRight: "1px solid ".concat(token.colorBorder) } - }, type === 'single' ? /*#__PURE__*/React.createElement(BigImagePreview, { - ref: drawImageRef, - hideTypeBtns: true, - type: "CUSTOM", - screenshotButtonRender: function screenshotButtonRender() { - return /*#__PURE__*/React.createElement(React.Fragment, null); - } - // @ts-ignore - , - data: drawData, - onDraw: drawListener - }) : /*#__PURE__*/React.createElement("div", { + }, type === 'single' ? /*#__PURE__*/React.createElement(CropperImage, _extends({ + type: "line", + onCropEnd: drawListener + }, cropperImageProps)) : /*#__PURE__*/React.createElement("div", { style: { padding: '84px' } diff --git a/packages/material/es/index.d.ts b/packages/material/es/index.d.ts deleted file mode 100644 index 997d45d..0000000 --- a/packages/material/es/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export { default as AlgorithmConfigModal } from './algorithmConfigModal'; -export { default as AlgorithmConfig } from './algorithmConfig'; -export type { AlgorithmConfigRef, AlgorithmConfigProps } from './algorithmConfig'; -export { default as Login } from './login'; -export { default as Password } from './password'; -export { default as SchemaFormModal } from './algorithmConfig/components/schemaFormModal'; -export * from 'rc-util'; diff --git a/packages/material/lib/algorithmConfig/algorithmConfig.d.ts b/packages/material/lib/algorithmConfig/algorithmConfig.d.ts deleted file mode 100644 index 9c0101e..0000000 --- a/packages/material/lib/algorithmConfig/algorithmConfig.d.ts +++ /dev/null @@ -1,53 +0,0 @@ -import React from 'react'; -import { AlgorithmTableProps } from './components/algorithmTable/AlgorithmTable'; -import { TimeTemplateTableProps } from './components/timeTemplateTable/TimeTemplateTable'; -export interface AlgorithmConfigProps { - onAddAlgorithm?: () => void; - /** - * 单选的图片数据 - */ - drawData?: { - imageKey: string; - odRect?: { - x: number; - y: number; - w: number; - h: number; - }; - score?: string; - time?: string; - }; - /** - * 单选状态圈选后的监听事件 - */ - drawListener?: (data: any) => void; - algorithmTableDataSource?: { - id: string; - templateName: string; - operatingCycle: string; - algorithmOccupied: number; - }[]; - timeTemplateDataSource?: { - id: string; - templateName: string; - operatingCycle: string; - arrangeWeek: string; - algorithmOccupied: string; - }[]; - boxList: { - id: string; - name: string; - }[]; - algorithmTableProps?: AlgorithmTableProps; - timeTemplateTableProps?: TimeTemplateTableProps; - selectedKey?: string; - rowKey?: string; - type: AlgorithmTableProps['tableType']; - onSelect?: (key: string, info?: any) => void; -} -export interface AlgorithmConfigRef { - draw: () => void; - cancelDraw: () => void; -} -declare const AlgorithmConfig: React.ForwardRefExoticComponent>; -export default AlgorithmConfig; diff --git a/packages/material/lib/algorithmConfig/algorithmConfig.js b/packages/material/lib/algorithmConfig/algorithmConfig.js index b21feb9..71c4468 100644 --- a/packages/material/lib/algorithmConfig/algorithmConfig.js +++ b/packages/material/lib/algorithmConfig/algorithmConfig.js @@ -41,33 +41,24 @@ var import_algorithmTable = __toESM(require("./components/algorithmTable")); var import_timeTemplateTable = __toESM(require("./components/timeTemplateTable")); var { useToken } = import_theme.default; var Title = (props) => /* @__PURE__ */ import_react.default.createElement("h2", { style: { margin: "18px 16px", fontSize: "14px", color: "rgba(0, 0, 0, 0.88)" } }, props.children); -var AlgorithmConfig = (0, import_react.forwardRef)((props, ref) => { +var AlgorithmConfig = (0, import_react.forwardRef)((props) => { const { algorithmTableDataSource = [], timeTemplateDataSource = [], boxList = [], - drawData, drawListener, + cropperImageProps = {}, algorithmTableProps, timeTemplateTableProps, selectedKey, type = "multiple", rowKey = "id", - onSelect + onSelect, + title = "盒子名称" } = props; - const drawImageRef = (0, import_react.useRef)(null); const { token } = useToken(); - (0, import_react.useImperativeHandle)(ref, () => ({ - draw: () => { - var _a; - (_a = drawImageRef.current) == null ? void 0 : _a.setShowCrop(true); - }, - cancelDraw: () => { - var _a; - (_a = drawImageRef.current) == null ? void 0 : _a.setShowCrop(false); - } - })); - return /* @__PURE__ */ import_react.default.createElement(import_antd.Flex, { style: { border: `1px solid ${token.colorBorder}`, backgroundColor: token.colorBgBase } }, /* @__PURE__ */ import_react.default.createElement("div", { title: "盒子列表", style: { width: "13.9%" } }, /* @__PURE__ */ import_react.default.createElement(Title, null, "盒子列表"), /* @__PURE__ */ import_react.default.createElement("div", { style: { borderTop: `1px solid ${token.colorBorder}` } }, boxList.map((item) => { + const { type: cropType } = cropperImageProps; + return /* @__PURE__ */ import_react.default.createElement(import_antd.Flex, { style: { border: `1px solid ${token.colorBorder}`, backgroundColor: token.colorBgBase } }, /* @__PURE__ */ import_react.default.createElement("div", { title, style: { width: "13.9%" } }, /* @__PURE__ */ import_react.default.createElement(Title, null, title), /* @__PURE__ */ import_react.default.createElement("div", { style: { borderTop: `1px solid ${token.colorBorder}` } }, boxList.map((item) => { return /* @__PURE__ */ import_react.default.createElement( "p", { @@ -81,20 +72,17 @@ var AlgorithmConfig = (0, import_react.forwardRef)((props, ref) => { color: selectedKey === item[rowKey] ? token.colorPrimary : token.colorText, // @ts-ignore backgroundColor: selectedKey === item[rowKey] ? token.blue1 : token.colorBgBase, - transition: "0.2s ease" + transition: "0cancelDraw.2s ease" } }, item.name ); }))), /* @__PURE__ */ import_react.default.createElement("div", { style: { boxSizing: "border-box", width: "46.3%", textAlign: "center", borderLeft: `1px solid ${token.colorBorder}`, borderRight: `1px solid ${token.colorBorder}` } }, type === "single" ? /* @__PURE__ */ import_react.default.createElement( - import_meta.BigImagePreview, + import_meta.CropperImage, { - ref: drawImageRef, - hideTypeBtns: true, - type: "CUSTOM", - screenshotButtonRender: () => /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null), - data: drawData, - onDraw: drawListener + type: "line", + onCropEnd: drawListener, + ...cropperImageProps } ) : /* @__PURE__ */ import_react.default.createElement("div", { style: { padding: "84px" } }, /* @__PURE__ */ import_react.default.createElement( import_antd.Image, diff --git a/packages/material/lib/index.d.ts b/packages/material/lib/index.d.ts deleted file mode 100644 index 997d45d..0000000 --- a/packages/material/lib/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export { default as AlgorithmConfigModal } from './algorithmConfigModal'; -export { default as AlgorithmConfig } from './algorithmConfig'; -export type { AlgorithmConfigRef, AlgorithmConfigProps } from './algorithmConfig'; -export { default as Login } from './login'; -export { default as Password } from './password'; -export { default as SchemaFormModal } from './algorithmConfig/components/schemaFormModal'; -export * from 'rc-util'; diff --git a/packages/material/package.json b/packages/material/package.json index 7adce7b..073bfc7 100644 --- a/packages/material/package.json +++ b/packages/material/package.json @@ -1,6 +1,6 @@ { "name": "@zhst/material", - "version": "0.7.7", + "version": "0.8.0", "description": "物料库", "keywords": [ "business", diff --git a/packages/material/src/algorithmConfig/algorithmConfig.tsx b/packages/material/src/algorithmConfig/algorithmConfig.tsx index 02bbe6b..5758c80 100644 --- a/packages/material/src/algorithmConfig/algorithmConfig.tsx +++ b/packages/material/src/algorithmConfig/algorithmConfig.tsx @@ -1,8 +1,8 @@ -import React, { useRef, forwardRef, useImperativeHandle } from 'react'; +import React, { forwardRef } from 'react'; import { Flex, Image } from "antd"; import theme from 'antd/es/theme' -import { BigImagePreview } from '@zhst/meta' -import type { ImgViewRef } from '@zhst/meta' +import { CropperImage } from '@zhst/meta' +import type { CropperImageProps } from '@zhst/meta' import { AlgorithmConfigImg, ErrorImage } from '../utils/base64Images' import AlgorithmTable from './components/algorithmTable' import TimeTemplateTable from './components/timeTemplateTable'; @@ -15,20 +15,6 @@ const Title = (props: any) =>

void - /** - * 单选的图片数据 - */ - drawData?: { - imageKey: string - odRect?: { - x: number - y: number - w: number - h: number - } - score?: string - time?: string - } /** * 单选状态圈选后的监听事件 */ @@ -57,6 +43,7 @@ export interface AlgorithmConfigProps { }[] algorithmTableProps?: AlgorithmTableProps timeTemplateTableProps?: TimeTemplateTableProps + cropperImageProps?: CropperImageProps selectedKey?: string rowKey?: string type: AlgorithmTableProps['tableType'] @@ -65,17 +52,15 @@ export interface AlgorithmConfigProps { } export interface AlgorithmConfigRef { - draw: () => void; - cancelDraw: () => void; } -const AlgorithmConfig = forwardRef((props, ref) => { +const AlgorithmConfig = forwardRef((props) => { const { algorithmTableDataSource = [], timeTemplateDataSource = [], boxList = [], - drawData, drawListener, + cropperImageProps = {}, algorithmTableProps, timeTemplateTableProps, selectedKey, @@ -83,17 +68,12 @@ const AlgorithmConfig = forwardRef((pr rowKey = 'id', onSelect, title='盒子名称', } = props - const drawImageRef = useRef(null) const { token } = useToken() + // @ts-ignore + const { type: cropType } = cropperImageProps - useImperativeHandle(ref, () => ({ - draw: () => { - drawImageRef.current?.setShowCrop(true) - }, - cancelDraw: () => { - drawImageRef.current?.setShowCrop(false) - }, - })) + // useImperativeHandle(ref, () => ({ + // })) return ( @@ -113,7 +93,7 @@ const AlgorithmConfig = forwardRef((pr color: selectedKey === item[rowKey] ? token.colorPrimary : token.colorText, // @ts-ignore backgroundColor: selectedKey === item[rowKey] ? token.blue1 : token.colorBgBase, - transition: '0.2s ease' + transition: '0cancelDraw.2s ease' }} >{item.name}

) @@ -121,15 +101,12 @@ const AlgorithmConfig = forwardRef((pr
+ {/* 单个配置 */} {type === 'single' ? ( - <>} - // @ts-ignore - data={drawData} - onDraw={drawListener} + ) : (
diff --git a/packages/material/src/algorithmConfig/demo/basic.tsx b/packages/material/src/algorithmConfig/demo/basic.tsx index 8afd974..e80605b 100644 --- a/packages/material/src/algorithmConfig/demo/basic.tsx +++ b/packages/material/src/algorithmConfig/demo/basic.tsx @@ -42,43 +42,33 @@ const demo = () => { const [timeTemplateData, setTimeTemplateData] = useState(timeTemplateDataSource) const [boxList, setBoxList] = useState(boxListData) const [selectedKey, setSelectedKey] = useState('1') + const [cropType, setCropType] = useState<'line' | 'rect'>('line') const [algorithmSelectedKey, setAlgorithmSelectedKey] = useState('1') const [tableType, setTableType] = useState('multiple') - const [drawData, setDrawData] = useState<{ - imageKey: string; - odRect?: { x: number; y: number; h: number; w: number } - }>({ - imageKey: '', - }) - + const [editAble, setEditAble] = useState(false) const algorithmConfigRef = useRef(null) // 绘画事件 const handleDraw = (id: any, info: any) => { console.log('箭头圈选事件', id, info) - // 先赋值绘画框对象,再打开绘画功能 - setDrawData({ - imageKey: info.imageKey, - odRect: info.odRect, - }) - algorithmConfigRef.current?.draw() + setEditAble(true) + setCropType('line') } return ( setTableType(_status ? 'single': 'multiple')} /> + setCropType(_status ? 'rect': 'line')} /> + setEditAble(pre => !pre) + }}>{editAble ? '圈选' : '取消圈选'} console.log('监听圈选后的事件', o)} selectedKey={selectedKey} onSelect={key => { @@ -88,6 +78,7 @@ const demo = () => { // setBoxList([]) }} type={tableType} + // 算法模块 algorithmTableProps={{ onItemSwitch: (status, id) => { console.log('算法状态 switch 变更') @@ -115,9 +106,15 @@ const demo = () => { { label: '黑夜', value: '2' }, ] }} + // 时间模板模块 timeTemplateTableProps={{ onItemBlur: (val, id, itemInfo) => console.log('失焦事件', val, id, itemInfo), }} + cropperImageProps={{ + type: cropType, + editAble, + url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png' + }} /> ); diff --git a/packages/material/src/algorithmConfig/index.md b/packages/material/src/algorithmConfig/index.md index cf21815..946dc7b 100644 --- a/packages/material/src/algorithmConfig/index.md +++ b/packages/material/src/algorithmConfig/index.md @@ -55,6 +55,12 @@ group: | type | fire 火焰、smoke:烟雾、traffic: 人流量、face: 面部遮挡、destroy:人员损坏、wander:人员徘徊、cameraBlock:摄像头遮挡、gather:人员聚集 | string | fire | - | | onFinish | 提交事件,可以通过返回布尔值来判定 | async (values) => Promise | - | - | +### cropperImageProps + +图片裁切组件透传,参考 Meta/CropperImage 组件 + +> 详细的参数:[CropperImage](/modules/meta/cropper-image) + ### algorithmConfigRef | 参数 | 说明 | 类型 | 默认值 | 版本 | diff --git a/packages/meta/CHANGELOG.md b/packages/meta/CHANGELOG.md index 7bf6e8f..74921c2 100644 --- a/packages/meta/CHANGELOG.md +++ b/packages/meta/CHANGELOG.md @@ -1,5 +1,29 @@ # @zhst/utils +## 0.11.0 + +### Minor Changes + +- 修改物料库算法编辑新增箭头选择,元组件新增图片标记组件 + +### Patch Changes + +- Updated dependencies + - @zhst/meta@0.11.0 + - @zhst/func@0.9.2 + - @zhst/hooks@0.8.11 + +## 0.10.0 + +### Minor Changes + +- 优化 meta 预览图组件 + +### Patch Changes + +- Updated dependencies + - @zhst/meta@0.10.0 + ## 0.9.7 ### Patch Changes diff --git a/packages/meta/es/BigImagePreview/BigImagePreview.js b/packages/meta/es/BigImagePreview/BigImagePreview.js index a7b5d37..c07d1c2 100644 --- a/packages/meta/es/BigImagePreview/BigImagePreview.js +++ b/packages/meta/es/BigImagePreview/BigImagePreview.js @@ -18,7 +18,7 @@ import classNames from 'classnames'; import { get, pick, isNull, generateImg, dataURLToBlob, getTransforms, addEventListenerWrapper, getFileByRect } from '@zhst/func'; import Align from 'rc-align'; import { Button, Empty } from '..'; -import Icon from "../iconfont"; +import { IconFont as Icon } from '@zhst/icon'; import { Cropper, Viewer, EVENT_VIEWER_TRANSFORM_CHANGE, EVENT_VIEWER_READY, EVENT_CROP_START, EVENT_CROP_END } from "../ImageEditor"; import BtnGroup from "./components/BtnGroup"; import "./index.less"; @@ -237,6 +237,7 @@ export var BigImagePreview = /*#__PURE__*/React.forwardRef(function (props, ref) selectShape = shapeList.find(function (v) { return v['id'] === id; }); + console.log('selectShape', selectShape); if (selectShape) { setSelectAlgorithmVersion(selectShape['algorithmVersion']); //换算成屏幕坐标 @@ -258,7 +259,7 @@ export var BigImagePreview = /*#__PURE__*/React.forwardRef(function (props, ref) // @ts-ignore setCropRect(null); } - case 4: + case 5: case "end": return _context.stop(); } @@ -323,6 +324,7 @@ export var BigImagePreview = /*#__PURE__*/React.forwardRef(function (props, ref) }()); cropInsRef.current = new Cropper(imgContainerRef.current, { showMask: true, + type: 'arrow', viewer: imgIns }); } diff --git a/packages/meta/es/BigImagePreview/components/BtnGroup/index.js b/packages/meta/es/BigImagePreview/components/BtnGroup/index.js index c8854d7..f385505 100644 --- a/packages/meta/es/BigImagePreview/components/BtnGroup/index.js +++ b/packages/meta/es/BigImagePreview/components/BtnGroup/index.js @@ -2,7 +2,7 @@ import React from 'react'; import classNames from 'classnames'; // @ts-ignore import { Button, Tooltip } from "../../.."; -import Icon from "../../../iconfont"; +import { IconFont as Icon } from '@zhst/icon'; import "./index.less"; var componentName = "zhst-image__btn-group"; export var BtnGroup = function BtnGroup(props) { diff --git a/packages/meta/es/CompareImage/CompareImage.js b/packages/meta/es/CompareImage/CompareImage.js index e4b5558..5d84cc4 100644 --- a/packages/meta/es/CompareImage/CompareImage.js +++ b/packages/meta/es/CompareImage/CompareImage.js @@ -80,7 +80,7 @@ var CompareImage = /*#__PURE__*/forwardRef(function (props, ref) { }); return /*#__PURE__*/React.createElement("div", { className: classNames("".concat(componentName, "__container")) - }, /*#__PURE__*/React.createElement("div", { + }, label && /*#__PURE__*/React.createElement("div", { className: classNames("".concat(componentName, "__label")) }, label), !url ? /*#__PURE__*/React.createElement("div", { className: classNames("".concat(componentName, "__empty")) diff --git a/packages/meta/es/ImageEditor/cropper/event.js b/packages/meta/es/ImageEditor/cropper/event.js index 3d3893a..faefbe1 100644 --- a/packages/meta/es/ImageEditor/cropper/event.js +++ b/packages/meta/es/ImageEditor/cropper/event.js @@ -30,7 +30,7 @@ export default { unbind: function unbind() { var eventHandleList = this.eventHandleList; for (var index = eventHandleList.length; index > 0; index--) { - var handler = eventHandleList.shift; + var handler = eventHandleList[index - 1]; try { handler.remove(); } catch (error) { diff --git a/packages/meta/es/ImageEditor/cropper/viewerBridge.js b/packages/meta/es/ImageEditor/cropper/viewerBridge.js index ab55778..a200d90 100644 --- a/packages/meta/es/ImageEditor/cropper/viewerBridge.js +++ b/packages/meta/es/ImageEditor/cropper/viewerBridge.js @@ -12,9 +12,12 @@ export default { option = this.option; if (this.options.viewer) { var viewer = this.options.viewer; + var scaleAble = this.options.scaleAble; //添加缩放事件 - var handleWhele = addEventListenerWrapper(container, EVENT_WHEEL, this.onWheel.bind(this)); - eventHandleList.push(handleWhele); + if (scaleAble) { + var handleWhele = addEventListenerWrapper(canvas, EVENT_WHEEL, this.onWheel.bind(this)); + eventHandleList.push(handleWhele); + } //添加事件监听 获取limit crop box & 渲染canvas this.onTransformChange(viewer); this.limited = true; @@ -76,8 +79,8 @@ export default { //渲染预览框 if (this.previewBox) { - var canvas = this.previewBox; - var ctx = canvas.getContext('2d'); + var _canvas = this.previewBox; + var ctx = _canvas.getContext('2d'); var viewerRender = viewer.renderCanvas.bind(viewer); viewerRender(ctx); } diff --git a/packages/meta/es/ImageEditor/viewer/event.js b/packages/meta/es/ImageEditor/viewer/event.js index bfcaa00..77ebe5e 100644 --- a/packages/meta/es/ImageEditor/viewer/event.js +++ b/packages/meta/es/ImageEditor/viewer/event.js @@ -59,7 +59,7 @@ export default { unbind: function unbind() { var eventHandleList = this.eventHandleList; for (var index = eventHandleList.length; index > 0; index--) { - var handler = eventHandleList.shift(); + var handler = eventHandleList[index - 1]; try { handler.remove(); } catch (error) { diff --git a/packages/meta/es/ImageEditor/viewer/helper.js b/packages/meta/es/ImageEditor/viewer/helper.js index 9b67aa7..c3462f4 100644 --- a/packages/meta/es/ImageEditor/viewer/helper.js +++ b/packages/meta/es/ImageEditor/viewer/helper.js @@ -1,7 +1,7 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } var _excluded = ["x", "y"], _excluded2 = ["x", "y"], - _excluded3 = ["x", "y", "w", "h"], + _excluded3 = ["x", "y", "w", "h", "image"], _excluded4 = ["x", "y"], _excluded5 = ["x", "y"], _excluded6 = ["x", "y", "w", "h"]; @@ -39,6 +39,13 @@ export var setNumberAccuracy = function setNumberAccuracy(originNumber) { return returnData; }; export default { + targetTransform: { + translateX: 0, + translateY: 0, + scale: 0, + rotate: 0 + // rotate: 90, + }, windowToCanvasAxis: function windowToCanvasAxis(event) { var _this$canvas$getBound = this.canvas.getBoundingClientRect(), x = _this$canvas$getBound.x, @@ -103,11 +110,19 @@ export default { w = _ref4$w === void 0 ? 0 : _ref4$w, _ref4$h = _ref4.h, h = _ref4$h === void 0 ? 0 : _ref4$h, + image = _ref4.image, others = _objectWithoutProperties(_ref4, _excluded3); - var _this$image = this.image, - width = _this$image.width, - height = _this$image.height; - var targetTransform = this.targetTransform; + var _ref5 = this.image || image, + width = _ref5.width, + height = _ref5.height; + var _ref6 = this || { + translateX: 0, + translateY: 0, + scale: 0, + rotate: 0 + // rotate: 90, + }, + targetTransform = _ref6.targetTransform; var rotate = targetTransform.rotate; var theta = Math.PI / 180 * rotate; var offsetRect = { @@ -140,13 +155,13 @@ export default { __AXIS_TYPE__: AXIS_TYPE_CANVAS }); }, - originAxisToImgAxis: function originAxisToImgAxis(_ref5) { - var x = _ref5.x, - y = _ref5.y, - others = _objectWithoutProperties(_ref5, _excluded4); - var _this$image2 = this.image, - width = _this$image2.width, - height = _this$image2.height; + originAxisToImgAxis: function originAxisToImgAxis(_ref7) { + var x = _ref7.x, + y = _ref7.y, + others = _objectWithoutProperties(_ref7, _excluded4); + var _this$image = this.image, + width = _this$image.width, + height = _this$image.height; var targetTransform = this.targetTransform; var rotate = targetTransform.rotate; var theta = Math.PI / 180 * (360 - rotate); @@ -159,13 +174,13 @@ export default { __AXIS_TYPE__: AXIS_TYPE_IMAGE }); }, - imgAxisToOriginAxis: function imgAxisToOriginAxis(_ref6) { - var _x = _ref6.x, - _y = _ref6.y, - others = _objectWithoutProperties(_ref6, _excluded5); - var _this$image3 = this.image, - width = _this$image3.width, - height = _this$image3.height; + imgAxisToOriginAxis: function imgAxisToOriginAxis(_ref8) { + var _x = _ref8.x, + _y = _ref8.y, + others = _objectWithoutProperties(_ref8, _excluded5); + var _this$image2 = this.image, + width = _this$image2.width, + height = _this$image2.height; // var x = width * _x; var y = height * _y; @@ -182,16 +197,16 @@ export default { __AXIS_TYPE__: AXIS_TYPE_ORIGIN }); }, - getDataUrlbyOriginAxis: function getDataUrlbyOriginAxis(_ref7) { - var _ref7$x = _ref7.x, - x = _ref7$x === void 0 ? 0 : _ref7$x, - _ref7$y = _ref7.y, - y = _ref7$y === void 0 ? 0 : _ref7$y, - _ref7$w = _ref7.w, - w = _ref7$w === void 0 ? 0 : _ref7$w, - _ref7$h = _ref7.h, - h = _ref7$h === void 0 ? 0 : _ref7$h, - others = _objectWithoutProperties(_ref7, _excluded6); + getDataUrlbyOriginAxis: function getDataUrlbyOriginAxis(_ref9) { + var _ref9$x = _ref9.x, + x = _ref9$x === void 0 ? 0 : _ref9$x, + _ref9$y = _ref9.y, + y = _ref9$y === void 0 ? 0 : _ref9$y, + _ref9$w = _ref9.w, + w = _ref9$w === void 0 ? 0 : _ref9$w, + _ref9$h = _ref9.h, + h = _ref9$h === void 0 ? 0 : _ref9$h, + others = _objectWithoutProperties(_ref9, _excluded6); var ctx = this.canvas.getContext('2d'); var commonCanvas = document.createElement('canvas'); commonCanvas.width = w; diff --git a/packages/meta/es/VideoPlayer/VideoPlayer.js b/packages/meta/es/VideoPlayer/VideoPlayer.js index efae045..cabb122 100644 --- a/packages/meta/es/VideoPlayer/VideoPlayer.js +++ b/packages/meta/es/VideoPlayer/VideoPlayer.js @@ -20,7 +20,7 @@ import { useLatest, useUpdateEffect, useFullscreen, useUnmount } from '@zhst/hoo import classNames from 'classnames'; import download from 'downloadjs'; import { Button, message } from '..'; -import Icon from "../iconfont"; +import { IconFont } from '@zhst/icon'; import { Cropper, EVENT_CROP_START, EVENT_CROP_END } from "../ImageEditor"; import FlvPlayer, { FLV_EVENT } from "./components/FlvPlayer"; import Range from "./components/Progress"; @@ -638,7 +638,7 @@ var VideoPlayer = /*#__PURE__*/forwardRef(function (props, ref) { videoInsRef === null || videoInsRef === void 0 || (_videoInsRef$current9 = videoInsRef.current) === null || _videoInsRef$current9 === void 0 || _videoInsRef$current9.pause(); } } - }, /*#__PURE__*/React.createElement(Icon, { + }, /*#__PURE__*/React.createElement(IconFont, { styles: { color: '#fff', display: 'flex' @@ -662,7 +662,7 @@ var VideoPlayer = /*#__PURE__*/forwardRef(function (props, ref) { e.stopPropagation(); toggleFullscreen(); } - }, /*#__PURE__*/React.createElement(Icon, { + }, /*#__PURE__*/React.createElement(IconFont, { styles: { color: '#fff', display: 'flex' diff --git a/packages/meta/es/VideoPlayer/components/Loading/index.js b/packages/meta/es/VideoPlayer/components/Loading/index.js index d7d18b6..c88f084 100644 --- a/packages/meta/es/VideoPlayer/components/Loading/index.js +++ b/packages/meta/es/VideoPlayer/components/Loading/index.js @@ -1,7 +1,7 @@ import React from 'react'; import { Spin } from 'antd'; import classNames from 'classnames'; -import Icon from "../../../iconfont"; +import { IconFont as Icon } from '@zhst/icon'; import "./index.less"; var componentName = "zhst-image__video-view"; var Loading = function Loading(props) { diff --git a/packages/meta/es/iconfont/iconfont.css b/packages/meta/es/iconfont/iconfont.css deleted file mode 100644 index f97863a..0000000 --- a/packages/meta/es/iconfont/iconfont.css +++ /dev/null @@ -1,1679 +0,0 @@ -@font-face { - font-family: "iconfont"; /* Project id 1739270 */ - src: url('iconfont.woff2?t=1689583241972') format('woff2'), - url('iconfont.woff?t=1689583241972') format('woff'), - url('iconfont.ttf?t=1689583241972') format('truetype'); -} - -.iconfont { - font-family: "iconfont" !important; - font-size: 16px; - font-style: normal; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-danganxiangqing_hangweifenxi:before { - content: "\e78d"; -} - -.icon-danganxiangqing_shujuganzhi:before { - content: "\e78e"; -} - -.icon-danganxiangqing_huodongguiji:before { - content: "\e78f"; -} - -.icon-danganxiangqing_jibenxinxi:before { - content: "\e7ea"; -} - -.icon-danganxiangqing_fushuwupin:before { - content: "\e7eb"; -} - -.icon-danganxiangqing_jizhanyingyong:before { - content: "\e7ec"; -} - -.icon-jiarudanganku:before { - content: "\e787"; -} - -.icon-dangankunor:before { - content: "\e793"; -} - -.icon-bukongrenwuselect:before { - content: "\e799"; -} - -.icon-bukongrenwunor1:before { - content: "\e79a"; -} - -.icon-dangankuselect:before { - content: "\e79b"; -} - -.icon-jizhanfanor:before { - content: "\e79c"; -} - -.icon-feijidongchechaxunnor:before { - content: "\e79d"; -} - -.icon-jidongchechaxunselect:before { - content: "\e79e"; -} - -.icon-a-lixianfenxiselect2:before { - content: "\e7a1"; -} - -.icon-huisufenxiselect:before { - content: "\e7a2"; -} - -.icon-jizhanfaselect:before { - content: "\e7a3"; -} - -.icon-mubiaojiansuonor:before { - content: "\e7ae"; -} - -.icon-lurenkuselect:before { - content: "\e7b1"; -} - -.icon-shujujiashicangselect:before { - content: "\e7b2"; -} - -.icon-shishijiexiselect:before { - content: "\e7b4"; -} - -.icon-shishijiexinor:before { - content: "\e7b9"; -} - -.icon-jidongchechaxunnor:before { - content: "\e7c1"; -} - -.icon-lurenkunor1:before { - content: "\e7cf"; -} - -.icon-mubiaotezhengchaxunnor:before { - content: "\e7e1"; -} - -.icon-yujingjiluselect:before { - content: "\e7e2"; -} - -.icon-mubiaotezhengchaxunselect:before { - content: "\e7e3"; -} - -.icon-feijidongchechaxunselect:before { - content: "\e7e4"; -} - -.icon-yujingjilunor:before { - content: "\e7e5"; -} - -.icon-lixianfenxiselect:before { - content: "\e7e6"; -} - -.icon-huisufenxinor:before { - content: "\e7e7"; -} - -.icon-shujujiashicangnor:before { - content: "\e7e8"; -} - -.icon-mubiaojiansuoselect:before { - content: "\e7e9"; -} - -.icon-kuangxuangongju:before { - content: "\e796"; -} - -.icon-fengniao:before { - content: "\e792"; -} - -.icon-zhankai:before { - content: "\e790"; -} - -.icon-shouqi:before { - content: "\e791"; -} - -.icon-shijian:before { - content: "\e786"; -} - -.icon-dingwei2:before { - content: "\e613"; -} - -.icon-renyuan:before { - content: "\e784"; -} - -.icon-houtai:before { - content: "\e785"; -} - -.icon-zuo:before { - content: "\e781"; -} - -.icon-you:before { - content: "\e783"; -} - -.icon-kakou:before { - content: "\e780"; -} - -.icon-yujing1:before { - content: "\e77e"; -} - -.icon-yuan2:before { - content: "\e77d"; -} - -.icon-moxingpengzhuang:before { - content: "\e777"; -} - -.icon-moxingpengzhuangnor:before { - content: "\e778"; -} - -.icon-lurenku:before { - content: "\e77b"; -} - -.icon-lurenkunor:before { - content: "\e77c"; -} - -.icon-shiming:before { - content: "\e776"; -} - -.icon-suoxiao2:before { - content: "\e774"; -} - -.icon-fangda1:before { - content: "\e775"; -} - -.icon-guanbi2:before { - content: "\e772"; -} - -.icon-fanhui1:before { - content: "\e773"; -} - -.icon-xiansuomopai:before { - content: "\e76f"; -} - -.icon-xiansuomopainor:before { - content: "\e76e"; -} - -.icon-zhajiyujing:before { - content: "\e770"; -} - -.icon-zhajiyujingnor:before { - content: "\e771"; -} - -.icon-zhuizongpeizhi:before { - content: "\e76c"; -} - -.icon-zhuizongpeizhinor:before { - content: "\e76d"; -} - -.icon-dapingqiehuan:before { - content: "\e76b"; -} - -.icon-xuanze:before { - content: "\e769"; -} - -.icon-shaixuan1:before { - content: "\e76a"; -} - -.icon-chekashebei:before { - content: "\e764"; -} - -.icon-imsishebei:before { - content: "\e765"; -} - -.icon-xingtishebei:before { - content: "\e766"; -} - -.icon-renlianshebei:before { - content: "\e767"; -} - -.icon-wifishebei:before { - content: "\e768"; -} - -.icon-a-miaozhun2:before { - content: "\e762"; -} - -.icon-a-bianzu19:before { - content: "\e763"; -} - -.icon-fanye:before { - content: "\e75e"; -} - -.icon-shenfenzheng:before { - content: "\e75f"; -} - -.icon-dizhi:before { - content: "\e760"; -} - -.icon-guanbi:before { - content: "\e761"; -} - -.icon-dianwei1:before { - content: "\e75b"; -} - -.icon-weikakou:before { - content: "\e757"; -} - -.icon-weikakounor:before { - content: "\e758"; -} - -.icon-changsuoma:before { - content: "\e759"; -} - -.icon-changsuomanor:before { - content: "\e75a"; -} - -.icon-yujing:before { - content: "\e756"; -} - -.icon-jiansuonor:before { - content: "\e747"; -} - -.icon-tonghangrenfenxinor1:before { - content: "\e748"; -} - -.icon-zhinengyanpannor:before { - content: "\e749"; -} - -.icon-bukongyujingnor:before { - content: "\e74a"; -} - -.icon-bukongrenwunor:before { - content: "\e74b"; -} - -.icon-dianziditunor:before { - content: "\e754"; -} - -.icon-zhuizongnor1:before { - content: "\e755"; -} - -.icon-zhuizong1:before { - content: "\e746"; -} - -.icon-bukongrenwu3:before { - content: "\e74c"; -} - -.icon-dianziditu:before { - content: "\e74d"; -} - -.icon-bukongyujing:before { - content: "\e750"; -} - -.icon-tonghangrenfenxi1:before { - content: "\e751"; -} - -.icon-zhinengyanpan:before { - content: "\e752"; -} - -.icon-jiansuo1:before { - content: "\e753"; -} - -.icon-kaiqijulei:before { - content: "\e745"; -} - -.icon-tongbu:before { - content: "\e744"; -} - -.icon-tonghangrenfenxi:before { - content: "\e743"; -} - -.icon-tonghangrenfenxinor:before { - content: "\e742"; -} - -.icon-jizhanyingyong:before { - content: "\e741"; -} - -.icon-haikangrenlianbukongnor:before { - content: "\e740"; -} - -.icon-haikangrenlianbukong:before { - content: "\e73f"; -} - -.icon-tuozhanshouduantishi:before { - content: "\e73e"; -} - -.icon-fanhuimopailiebiao:before { - content: "\e73d"; -} - -.icon-toukuijiancenor:before { - content: "\e73c"; -} - -.icon-toukuijiance:before { - content: "\e718"; -} - -.icon-zhuixing:before { - content: "\e717"; -} - -.icon-tishi4:before { - content: "\e73b"; -} - -.icon-a-shaixuanfeiji:before { - content: "\e733"; -} - -.icon-a-zidongtiaozhengfanweifeiji:before { - content: "\e73a"; -} - -.icon-heziyunwei:before { - content: "\e739"; -} - -.icon-qiehuan:before { - content: "\e738"; -} - -.icon-disanfangxiaoxinor:before { - content: "\e737"; -} - -.icon-disanfangxiaoxi:before { - content: "\e736"; -} - -.icon-daohang:before { - content: "\e735"; -} - -.icon-yonghu:before { - content: "\e734"; -} - -.icon-feiji:before { - content: "\e732"; -} - -.icon-jieshuzhuizong:before { - content: "\e730"; -} - -.icon-huisuzhoubian:before { - content: "\e731"; -} - -.icon-jixuzhuizong:before { - content: "\e72d"; -} - -.icon-tiaozhengfanwei:before { - content: "\e72e"; -} - -.icon-jiansuo:before { - content: "\e72f"; -} - -.icon-guiji:before { - content: "\e72c"; -} - -.icon-jichuxinxi:before { - content: "\e72b"; -} - -.icon-danganzhaiyao:before { - content: "\e72a"; -} - -.icon-jingzhunbukongicon_on:before { - content: "\e728"; -} - -.icon-jingzhunbukongicon_off:before { - content: "\e729"; -} - -.icon-tiaozhuan:before { - content: "\e727"; -} - -.icon-shezhi:before { - content: "\e726"; -} - -.icon-bangzhu1:before { - content: "\e725"; -} - -.icon-shuaxin1:before { - content: "\e724"; -} - -.icon-duosucaibeifen:before { - content: "\e722"; -} - -.icon-duosucai:before { - content: "\e723"; -} - -.icon-shujutongji:before { - content: "\e721"; -} - -.icon-renlian:before { - content: "\e71c"; -} - -.icon-xingti:before { - content: "\e71d"; -} - -.icon-jidongche:before { - content: "\e71e"; -} - -.icon-huisufenxi4:before { - content: "\e71f"; -} - -.icon-lixianfenxi4:before { - content: "\e720"; -} - -.icon-feijidongche:before { - content: "\e71b"; -} - -.icon-shujudaping:before { - content: "\e71a"; -} - -.icon-peizhisuanfa:before { - content: "\e719"; -} - -.icon-zhuizong:before { - content: "\e715"; -} - -.icon-zhuizongnor:before { - content: "\e716"; -} - -.icon-dianwei:before { - content: "\e714"; -} - -.icon-Container:before { - content: "\e713"; -} - -.icon-Attachment:before { - content: "\e712"; -} - -.icon-cha:before { - content: "\e711"; -} - -.icon-gou:before { - content: "\e710"; -} - -.icon-daoru:before { - content: "\e70f"; -} - -.icon-quanxijiansuo:before { - content: "\e70e"; -} - -.icon-chakanjiankong:before { - content: "\e70c"; -} - -.icon-tishi3:before { - content: "\e70d"; -} - -.icon-heiyemoshi:before { - content: "\e70b"; -} - -.icon-zhengchangmoshi:before { - content: "\e70a"; -} - -.icon-dingwei1:before { - content: "\e709"; -} - -.icon-paixu:before { - content: "\e708"; -} - -.icon-tianjiayuan:before { - content: "\e707"; -} - -.icon-juleidangankunor:before { - content: "\e705"; -} - -.icon-juleidanganku:before { - content: "\e706"; -} - -.icon-guanlian:before { - content: "\e704"; -} - -.icon-renlianbiaozhu:before { - content: "\e703"; -} - -.icon-juleijieguo:before { - content: "\e6ec"; -} - -.icon-juleirenwunor:before { - content: "\e6fb"; -} - -.icon-juleijieguonor:before { - content: "\e701"; -} - -.icon-juleirenwu:before { - content: "\e702"; -} - -.icon-zhongzhi3:before { - content: "\e8ff"; -} - -.icon-xuanzhuan1:before { - content: "\e6fd"; -} - -.icon-shuangmubiaozhu1:before { - content: "\e700"; -} - -.icon-shoudongkuangxuan:before { - content: "\e6f9"; -} - -.icon-zanting1:before { - content: "\e6fe"; -} - -.icon-zhongzhi1:before { - content: "\e6ff"; -} - -.icon-shoudong:before { - content: "\e6fa"; -} - -.icon-zidong:before { - content: "\e6fc"; -} - -.icon-zhenduan:before { - content: "\e6f8"; -} - -.icon-Check-Circle-Fill1:before { - content: "\e6f3"; -} - -.icon-Info--Circle-Fill:before { - content: "\e6f4"; -} - -.icon-Close-Circle-Fill:before { - content: "\e6f5"; -} - -.icon-Warning-Circle-Fill:before { - content: "\e6f6"; -} - -.icon-Question-Circle-Fill:before { - content: "\e6f7"; -} - -.icon-zancunjia:before { - content: "\e6f2"; -} - -.icon-Check-Circle-Fill:before { - content: "\e6f1"; -} - -.icon-tupianji:before { - content: "\e6f0"; -} - -.icon-quanping1:before { - content: "\e6ed"; -} - -.icon-yinliang:before { - content: "\e6ee"; -} - -.icon-suoxiao1:before { - content: "\e6ef"; -} - -.icon-home:before { - content: "\e6eb"; -} - -.icon-zuixiaohua:before { - content: "\e6e9"; -} - -.icon-zuidahua:before { - content: "\e6ea"; -} - -.icon-biaozhunhua:before { - content: "\e6e6"; -} - -.icon-julei:before { - content: "\e6e5"; -} - -.icon-bianzu:before { - content: "\e6e7"; -} - -.icon-bianzu3:before { - content: "\e6e8"; -} - -.icon-bianzu7:before { - content: "\e6e3"; -} - -.icon-bianzu2:before { - content: "\e6e4"; -} - -.icon-kapianqiehuan:before { - content: "\e6e2"; -} - -.icon-duobianxing1:before { - content: "\e6e0"; -} - -.icon-fang1:before { - content: "\e6e1"; -} - -.icon-yuan1:before { - content: "\e6df"; -} - -.icon-cejuli:before { - content: "\e6de"; -} - -.icon-wanggekuangxuannor:before { - content: "\e6dc"; -} - -.icon-lujingkuangxuannor:before { - content: "\e6dd"; -} - -.icon-chuansuo:before { - content: "\e6db"; -} - -.icon-bianyuanhezinor:before { - content: "\e6d8"; -} - -.icon-wujiankuhov:before { - content: "\e6d9"; -} - -.icon-caozuorizhinor:before { - content: "\e6da"; -} - -.icon-collect_dot:before { - content: "\e619"; -} - -.icon-chuxiandingweibg:before { - content: "\e6d4"; -} - -.icon-chuxiandingweiicon:before { - content: "\e6d5"; -} - -.icon-shexiangtoudingweibg:before { - content: "\e6d6"; -} - -.icon-shexiangtoudingweiicon:before { - content: "\e6d7"; -} - -.icon-xiafajieguo:before { - content: "\e6d2"; -} - -.icon-daochu1:before { - content: "\e6d3"; -} - -.icon-zuijinchuxian:before { - content: "\e6cc"; -} - -.icon-leijizhuapai:before { - content: "\e6d0"; -} - -.icon-yichangshijian:before { - content: "\e6d1"; -} - -.icon-dingwei:before { - content: "\e6cb"; -} - -.icon-tupian:before { - content: "\e6ad"; -} - -.icon-wenti:before { - content: "\e6ac"; -} - -.icon-lixian1:before { - content: "\e6ab"; -} - -.icon-yichang:before { - content: "\e6a8"; -} - -.icon-zhuixing-xiugaidianwei:before { - content: "\e6a7"; -} - -.icon-wenhao1:before { - content: "\e69e"; -} - -.icon-ditu_dingwei:before { - content: "\e69d"; -} - -.icon-ditu_fangda:before { - content: "\e689"; -} - -.icon-ditu_suoxiao:before { - content: "\e69a"; -} - -.icon-chakanbukongrenwu:before { - content: "\e688"; -} - -.icon-lietu:before { - content: "\e687"; -} - -.icon-zhongzhi:before { - content: "\e67e"; -} - -.icon-xialada:before { - content: "\e67f"; -} - -.icon-zhinengguanlian_xingti:before { - content: "\e67b"; -} - -.icon-zhinengguanlian_renlian:before { - content: "\e67c"; -} - -.icon-xiajiantou:before { - content: "\e75c"; -} - -.icon-zhinengguanlian_xiaojiantou:before { - content: "\e67d"; -} - -.icon-zhinengguanlian_jiantou:before { - content: "\e67a"; -} - -.icon-shangjiantou:before { - content: "\e75d"; -} - -.icon-banbenxinxi:before { - content: "\e679"; -} - -.icon-wenhao:before { - content: "\e61f"; -} - -.icon-bianjirenyuan:before { - content: "\e7e0"; -} - -.icon-tishi2:before { - content: "\e7df"; -} - -.icon-shexiangji2:before { - content: "\e7de"; -} - -.icon-guijizhuizong:before { - content: "\e7dd"; -} - -.icon-jiezhen1:before { - content: "\e7dc"; -} - -.icon-tianjiaguijihuisu:before { - content: "\e7db"; -} - -.icon-tingzhi:before { - content: "\e7cd"; -} - -.icon-baoweiquan:before { - content: "\e7ce"; -} - -.icon-shangchuanshipin:before { - content: "\e7d0"; -} - -.icon-yidong:before { - content: "\e7d1"; -} - -.icon-chuangjianxinbukong1:before { - content: "\e7d2"; -} - -.icon-yichu1:before { - content: "\e7d3"; -} - -.icon-tishi1:before { - content: "\e7d4"; -} - -.icon-VS:before { - content: "\e7d5"; -} - -.icon-quanjuzonglan:before { - content: "\e7d6"; -} - -.icon-chakanfenxirenwu1:before { - content: "\e7d7"; -} - -.icon-xiaoxi:before { - content: "\e7d8"; -} - -.icon-yonghuming:before { - content: "\e7d9"; -} - -.icon-tuichu:before { - content: "\e7da"; -} - -.icon-guijizhuizongnor:before { - content: "\e7cb"; -} - -.icon-guijizhuizong2:before { - content: "\e7cc"; -} - -.icon-bukongrenwu1:before { - content: "\e7b7"; -} - -.icon-shexiangji:before { - content: "\e7b8"; -} - -.icon-yujingditu:before { - content: "\e7ba"; -} - -.icon-lixianfenxi2:before { - content: "\e7bb"; -} - -.icon-yuanguanli1:before { - content: "\e7bc"; -} - -.icon-danganku:before { - content: "\e7bd"; -} - -.icon-huisufenxi2:before { - content: "\e7be"; -} - -.icon-kuneijiansuo:before { - content: "\e7bf"; -} - -.icon-jiegouhuachaxun:before { - content: "\e7c0"; -} - -.icon-bukongrenwu2:before { - content: "\e7c2"; -} - -.icon-yuanguanli2:before { - content: "\e7c3"; -} - -.icon-shexiangji1:before { - content: "\e7c4"; -} - -.icon-kuneijiansuo1:before { - content: "\e7c5"; -} - -.icon-lixianfenxi3:before { - content: "\e7c6"; -} - -.icon-danganku1:before { - content: "\e7c7"; -} - -.icon-yujingditu1:before { - content: "\e7c8"; -} - -.icon-huisufenxi3:before { - content: "\e7c9"; -} - -.icon-jiegouhuachaxunnor:before { - content: "\e7ca"; -} - -.icon-chuangjianxinbukong:before { - content: "\e7b6"; -} - -.icon-kuangxuan:before { - content: "\e77f"; -} - -.icon-gaojishaixuan:before { - content: "\e779"; -} - -.icon-gaojishaixuanshouqi:before { - content: "\e77a"; -} - -.icon-bukongrenwu:before { - content: "\e7b5"; -} - -.icon-riqi:before { - content: "\e74f"; -} - -.icon-shijianqiehuan:before { - content: "\e797"; -} - -.icon-shouquan1:before { - content: "\e7b3"; -} - -.icon-video-play:before { - content: "\e653"; -} - -.icon-shishifenxi:before { - content: "\e7af"; -} - -.icon-chakanfenxirenwu:before { - content: "\e7b0"; -} - -.icon-jiegouhuafenxi:before { - content: "\e7ad"; -} - -.icon-tianjiaguiji2:before { - content: "\e6aa"; -} - -.icon-tianjiajiansuomubiao:before { - content: "\e6b0"; -} - -.icon-add:before { - content: "\e661"; -} - -.icon-didian:before { - content: "\e798"; -} - -.icon-bofanghov:before { - content: "\e79f"; -} - -.icon-bofang3:before { - content: "\e7a0"; -} - -.icon-jinggao:before { - content: "\e788"; -} - -.icon-tishi:before { - content: "\e789"; -} - -.icon-bangzhu:before { - content: "\e78a"; -} - -.icon-guanbi1:before { - content: "\e78b"; -} - -.icon-chenggong:before { - content: "\e78c"; -} - -.icon-qianwang:before { - content: "\e7ac"; -} - -.icon-shouquan:before { - content: "\e7ab"; -} - -.icon-jingweidu:before { - content: "\e7aa"; -} - -.icon-shanchu1:before { - content: "\e74e"; -} - -.icon-daochu:before { - content: "\e782"; -} - -.icon-ziyuanguanli:before { - content: "\e7a4"; -} - -.icon-fuwuqishouquan:before { - content: "\e7a5"; -} - -.icon-xiugaimima:before { - content: "\e7a6"; -} - -.icon-zhanghaoguanli:before { - content: "\e7a7"; -} - -.icon-suanlipeie:before { - content: "\e7a8"; -} - -.icon-VMSpeizhi:before { - content: "\e7a9"; -} - -.icon-tianjia1:before { - content: "\e794"; -} - -.icon-yichu:before { - content: "\e795"; -} - -.icon-lujing:before { - content: "\e6cf"; -} - -.icon-jiankongxinxi:before { - content: "\e6c8"; -} - -.icon-fanwei:before { - content: "\e6c9"; -} - -.icon-anfadidian:before { - content: "\e6ca"; -} - -.icon-gongjuxiang:before { - content: "\e6cd"; -} - -.icon-gongjuxiangguanbi1:before { - content: "\e6ce"; -} - -.icon-jiezhen:before { - content: "\e6c2"; -} - -.icon-huisufenxi1:before { - content: "\e6c6"; -} - -.icon-huisufenxi:before { - content: "\e6c7"; -} - -.icon-tianjiashipinwenjian1:before { - content: "\e6c5"; -} - -.icon-jiazaishibai:before { - content: "\e6c3"; -} - -.icon-shuaxin:before { - content: "\e6c4"; -} - -.icon-quanping:before { - content: "\e6c0"; -} - -.icon-quxiaoquanping:before { - content: "\e6c1"; -} - -.icon-shipinbofang:before { - content: "\e6be"; -} - -.icon-shipinzanting:before { - content: "\e6bf"; -} - -.icon-lixianguiji:before { - content: "\e6bd"; -} - -.icon-lixian:before { - content: "\e6bc"; -} - -.icon-xiaojiaobiao:before { - content: "\e6bb"; -} - -.icon-shangchuan1:before { - content: "\e6ba"; -} - -.icon-tianjiaweijiansuoduixiang:before { - content: "\e6b8"; -} - -.icon-tianjiaweijiansuojilu:before { - content: "\e6b9"; -} - -.icon-lixianfenxi1:before { - content: "\e6b7"; -} - -.icon-kuaisujiansuohov:before { - content: "\e6b5"; -} - -.icon-kuaisujiansuo1:before { - content: "\e6b6"; -} - -.icon-kuaisujiansuo:before { - content: "\e6b4"; -} - -.icon-yuanguanli:before { - content: "\e6b1"; -} - -.icon-shexiangtou:before { - content: "\e6b2"; -} - -.icon-lixianfenxi:before { - content: "\e6b3"; -} - -.icon-filter:before { - content: "\e61a"; -} - -.icon-tianjiaweizhuizongduixiang2:before { - content: "\e6af"; -} - -.icon-tianjiaweizhuizongduixiang1:before { - content: "\e6ae"; -} - -.icon-baocun1:before { - content: "\e6a9"; -} - -.icon-tianjiashipinwenjianjia:before { - content: "\e6a5"; -} - -.icon-tianjiashipinwenjian:before { - content: "\e6a6"; -} - -.icon-ditu:before { - content: "\e6a4"; -} - -.icon-xinjianshexiangtou:before { - content: "\e6a3"; -} - -.icon-lishihuisu:before { - content: "\e6a2"; -} - -.icon-decoyitianjiaweiguiji:before { - content: "\e69f"; -} - -.icon-bofangqiehuan:before { - content: "\e6a0"; -} - -.icon-tianjia:before { - content: "\e6a1"; -} - -.icon-baocun:before { - content: "\e698"; -} - -.icon-gongjuxiangguanbi:before { - content: "\e699"; -} - -.icon-shangchuan:before { - content: "\e69b"; -} - -.icon-gongjuxiang1:before { - content: "\e69c"; -} - -.icon-logo:before { - content: "\e692"; -} - -.icon-setting:before { - content: "\e627"; -} - -.icon-user:before { - content: "\e628"; -} - -.icon-quit:before { - content: "\e629"; -} - -.icon-arrowzhankaimeixuanzhong:before { - content: "\e693"; -} - -.icon-arrowzhankaixuanzhong:before { - content: "\e694"; -} - -.icon-xuanzexuanzhong:before { - content: "\e695"; -} - -.icon-xuanzebanxuan:before { - content: "\e696"; -} - -.icon-xuanzenor:before { - content: "\e697"; -} - -.icon-shaixuanguanbinor:before { - content: "\e691"; -} - -.icon-gengduo:before { - content: "\e68e"; -} - -.icon-youzhankai:before { - content: "\e68f"; -} - -.icon-zuoshouqi:before { - content: "\e690"; -} - -.icon-yuan:before { - content: "\e68a"; -} - -.icon-duobianxing:before { - content: "\e68b"; -} - -.icon-fang:before { - content: "\e68c"; -} - -.icon-ceju:before { - content: "\e68d"; -} - -.icon-shishizhuizong1:before { - content: "\e683"; -} - -.icon-guijihuisu1:before { - content: "\e684"; -} - -.icon-tianjiaguiji:before { - content: "\e685"; -} - -.icon-yichuguiji:before { - content: "\e686"; -} - -.icon-fangda:before { - content: "\e680"; -} - -.icon-suoxiao:before { - content: "\e681"; -} - -.icon-xiazai:before { - content: "\e682"; -} - -.icon-fanhui:before { - content: "\e678"; -} - -.icon-sousuo:before { - content: "\e669"; -} - -.icon-quxiaoxuanzhong:before { - content: "\e66a"; -} - -.icon-piliangxuanzenor:before { - content: "\e66b"; -} - -.icon-kaiqifenxi:before { - content: "\e66c"; -} - -.icon-quxiaofenxi:before { - content: "\e66d"; -} - -.icon-shaixuan:before { - content: "\e66e"; -} - -.icon-dangan:before { - content: "\e66f"; -} - -.icon-bofang:before { - content: "\e670"; -} - -.icon-zanting:before { - content: "\e671"; -} - -.icon-shanchu:before { - content: "\e672"; -} - -.icon-tianjiaweizhuizongduixiang:before { - content: "\e673"; -} - -.icon-chakandatu:before { - content: "\e674"; -} - -.icon-jiansuojilu:before { - content: "\e675"; -} - -.icon-yuzhi:before { - content: "\e676"; -} - -.icon-chakanxiangqing:before { - content: "\e677"; -} - -.icon-guijihuisu:before { - content: "\e65c"; -} - -.icon-dianweipeizhinor:before { - content: "\e65d"; -} - -.icon-yirenyidang:before { - content: "\e65e"; -} - -.icon-tongbanfenxi:before { - content: "\e65f"; -} - -.icon-qiehuanzuo:before { - content: "\e662"; -} - -.icon-qiehuanyou:before { - content: "\e663"; -} - -.icon-tingzhidengdai:before { - content: "\e664"; -} - -.icon-yiguanbi:before { - content: "\e665"; -} - -.icon-danchuangguanbi:before { - content: "\e666"; -} - -.icon-lishijilu:before { - content: "\e64a"; -} - -.icon-xuanzhuan:before { - content: "\e648"; -} - -.icon-qingchu:before { - content: "\e649"; -} - -.icon-dangantianjia:before { - content: "\e63d"; -} - -.icon-bianji:before { - content: "\e63e"; -} - -.icon-fullscreen:before { - content: "\e63b"; -} - -.icon-cancle_fullscreen:before { - content: "\e63c"; -} - -.icon-quanyujiansuo_nor:before { - content: "\e639"; -} - -.icon-guijihuisu_nor:before { - content: "\e63a"; -} - diff --git a/packages/meta/es/iconfont/iconfont.js b/packages/meta/es/iconfont/iconfont.js deleted file mode 100644 index 6eeb914..0000000 --- a/packages/meta/es/iconfont/iconfont.js +++ /dev/null @@ -1,43 +0,0 @@ -window._iconfont_svg_string_1739270 = '', function (h) { - var a = (a = document.getElementsByTagName("script"))[a.length - 1], - l = a.getAttribute("data-injectcss"), - a = a.getAttribute("data-disable-injectsvg"); - if (!a) { - var i, - _c, - o, - t, - z, - v = function v(a, l) { - l.parentNode.insertBefore(a, l); - }; - if (l && !h.__iconfont__svg__cssinject__) { - h.__iconfont__svg__cssinject__ = !0; - try { - document.write(""); - } catch (a) { - console && console.log(a); - } - } - i = function i() { - var a, - l = document.createElement("div"); - l.innerHTML = h._iconfont_svg_string_1739270, (l = l.getElementsByTagName("svg")[0]) && (l.setAttribute("aria-hidden", "true"), l.style.position = "absolute", l.style.width = 0, l.style.height = 0, l.style.overflow = "hidden", l = l, (a = document.body).firstChild ? v(l, a.firstChild) : a.appendChild(l)); - }, document.addEventListener ? ~["complete", "loaded", "interactive"].indexOf(document.readyState) ? setTimeout(i, 0) : (_c = function c() { - document.removeEventListener("DOMContentLoaded", _c, !1), i(); - }, document.addEventListener("DOMContentLoaded", _c, !1)) : document.attachEvent && (o = i, t = h.document, z = !1, p(), t.onreadystatechange = function () { - "complete" == t.readyState && (t.onreadystatechange = null, m()); - }); - } - function m() { - z || (z = !0, o()); - } - function p() { - try { - t.documentElement.doScroll("left"); - } catch (a) { - return void setTimeout(p, 50); - } - m(); - } -}(window); \ No newline at end of file diff --git a/packages/meta/es/iconfont/iconfont.ttf b/packages/meta/es/iconfont/iconfont.ttf deleted file mode 100644 index 0043e6adb470d27d9eb668a85699dab6ac06590f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105116 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�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 diff --git a/packages/meta/es/iconfont/iconfont.woff2 b/packages/meta/es/iconfont/iconfont.woff2 deleted file mode 100644 index 81733409e71fc4817fe0404afb2dc8294fcd6a6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48900 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 diff --git a/packages/meta/es/iconfont/index.js b/packages/meta/es/iconfont/index.js deleted file mode 100644 index df5a782..0000000 --- a/packages/meta/es/iconfont/index.js +++ /dev/null @@ -1,42 +0,0 @@ -function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } -function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } -function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -import React from 'react'; -import classNames from 'classnames'; -import "./iconfont.css"; -var IconFont = function IconFont(props) { - var _ref = props || {}, - _ref$title = _ref.title, - title = _ref$title === void 0 ? '' : _ref$title, - _ref$className = _ref.className, - className = _ref$className === void 0 ? '' : _ref$className, - _ref$styles = _ref.styles, - styles = _ref$styles === void 0 ? {} : _ref$styles, - icon = _ref.icon, - _ref$size = _ref.size, - size = _ref$size === void 0 ? 14 : _ref$size, - onIconClick = _ref.onIconClick, - children = _ref.children, - _ref$active = _ref.active, - active = _ref$active === void 0 ? false : _ref$active, - _ref$color = _ref.color, - color = _ref$color === void 0 ? '' : _ref$color; - return /*#__PURE__*/React.createElement("i", { - title: title, - onClick: function onClick(e) { - onIconClick && onIconClick(e); - }, - style: _objectSpread(_objectSpread({}, styles), {}, { - cursor: 'pointer', - fontSize: size, - color: color - }, active ? { - color: '#09f' - } : {}), - className: classNames('iconfont', icon, className) - }, children); -}; -export default IconFont; \ No newline at end of file diff --git a/packages/meta/es/index.js b/packages/meta/es/index.js index 52607d6..791095f 100644 --- a/packages/meta/es/index.js +++ b/packages/meta/es/index.js @@ -1,6 +1,6 @@ -export { default as Icon } from "./iconfont"; export { default as CompareImage } from "./CompareImage"; export { default as BigImagePreview } from "./BigImagePreview"; +export { default as CropperImage } from "./cropperImage"; export { default as VideoPlayer } from "./VideoPlayer"; export { default as Tabs } from "./tabs"; export { default as Button } from "./button"; diff --git a/packages/meta/package.json b/packages/meta/package.json index b1b58a0..7df38d8 100644 --- a/packages/meta/package.json +++ b/packages/meta/package.json @@ -1,6 +1,6 @@ { "name": "@zhst/meta", - "version": "0.9.7", + "version": "0.11.0", "description": "原子组件", "keywords": [ "meta", @@ -86,6 +86,7 @@ "@turf/boolean-point-in-polygon": "^6.5.0", "@turf/turf": "^6.5.0", "@types/downloadjs": "^1.4.6", + "@types/fabric": "^5.3.7", "@zhst/func": "workspace:^", "@zhst/hooks": "workspace:^", "@zhst/icon": "workspace:^", @@ -97,6 +98,7 @@ "copy-to-clipboard": "^3.3.3", "dayjs": "^1.11.10", "downloadjs": "^1.4.7", + "fabric": "^5.3.0", "flv.js": "^1.6.2", "lunar-typescript": "^1.7.3", "rc-align": "^4.0.15", diff --git a/packages/meta/src/BigImagePreview/BigImagePreview.tsx b/packages/meta/src/BigImagePreview/BigImagePreview.tsx index b531541..25a9fa7 100644 --- a/packages/meta/src/BigImagePreview/BigImagePreview.tsx +++ b/packages/meta/src/BigImagePreview/BigImagePreview.tsx @@ -13,7 +13,7 @@ import { import Align from 'rc-align'; import { Button, Empty } from '..'; import { type Rect, type IScreenshotButtonProp, type AlignType } from '@zhst/types' -import Icon from '../iconfont'; +import { IconFont as Icon } from '@zhst/icon' import { Cropper, Viewer, @@ -271,8 +271,7 @@ export const BigImagePreview = React.forwardRef((props const shapeList = odList.map((rect: { [x: string]: any; algorithmVersion: any; }) => ({ ...rect, selectAble: true, - id: - ['id'], + id: ['id'], algorithmVersion: rect.algorithmVersion, })); imgIns.replaceShape(shapeList); @@ -289,6 +288,7 @@ export const BigImagePreview = React.forwardRef((props const id = e.detail; setSelectRectId(id); const selectShape = shapeList.find((v: { [x: string]: any; }) => v['id'] === id); + console.log('selectShape', selectShape,) if (selectShape) { setSelectAlgorithmVersion(selectShape['algorithmVersion']); //换算成屏幕坐标 @@ -337,6 +337,7 @@ export const BigImagePreview = React.forwardRef((props }); cropInsRef.current = new Cropper(imgContainerRef.current, { showMask: true, + type: 'arrow', viewer: imgIns, }); } diff --git a/packages/meta/src/BigImagePreview/components/BtnGroup/index.tsx b/packages/meta/src/BigImagePreview/components/BtnGroup/index.tsx index c7e8019..ac6ee1c 100644 --- a/packages/meta/src/BigImagePreview/components/BtnGroup/index.tsx +++ b/packages/meta/src/BigImagePreview/components/BtnGroup/index.tsx @@ -2,7 +2,7 @@ import React, { MouseEvent } from 'react'; import classNames from 'classnames'; // @ts-ignore import { Button, Tooltip, TooltipProps } from '../../..'; -import Icon from '../../../iconfont'; +import { IconFont as Icon } from '@zhst/icon' import './index.less'; const componentName = `zhst-image__btn-group`; diff --git a/packages/meta/src/CompareImage/CompareImage.tsx b/packages/meta/src/CompareImage/CompareImage.tsx index 0b10d75..7a340ac 100644 --- a/packages/meta/src/CompareImage/CompareImage.tsx +++ b/packages/meta/src/CompareImage/CompareImage.tsx @@ -52,7 +52,7 @@ const CompareImage = forwardRef((props, const { getPrefixCls } = useContext(ConfigContext); const componentName = getPrefixCls('image__compater-view', customizePrefixCls); - const imgContainerRef = useRef(null); + const imgContainerRef = useRef(null); const imgInsRef = useRef(null); const [scale, setScale] = useState(0); @@ -97,8 +97,7 @@ const CompareImage = forwardRef((props, return (
-
{label}
- + {label &&
{label}
} {!url ? (
{ const ref = useRef(null) diff --git a/packages/meta/src/ImageEditor/cropper/event.ts b/packages/meta/src/ImageEditor/cropper/event.ts index 0d75383..d60ec27 100644 --- a/packages/meta/src/ImageEditor/cropper/event.ts +++ b/packages/meta/src/ImageEditor/cropper/event.ts @@ -62,7 +62,7 @@ export default { unbind() { const { eventHandleList } = this; for (let index = eventHandleList.length; index > 0; index--) { - const handler = eventHandleList.shift; + const handler = eventHandleList[index - 1]; try { handler.remove(); } catch (error) { diff --git a/packages/meta/src/ImageEditor/cropper/viewerBridge.ts b/packages/meta/src/ImageEditor/cropper/viewerBridge.ts index ec9159c..d66029a 100644 --- a/packages/meta/src/ImageEditor/cropper/viewerBridge.ts +++ b/packages/meta/src/ImageEditor/cropper/viewerBridge.ts @@ -9,9 +9,12 @@ export default { if (this.options.viewer) { const viewer = this.options.viewer; + const scaleAble = this.options.scaleAble; //添加缩放事件 - const handleWhele = addEventListenerWrapper(container, EVENT_WHEEL, this.onWheel.bind(this)); - eventHandleList.push(handleWhele); + if (scaleAble) { + const handleWhele = addEventListenerWrapper(canvas, EVENT_WHEEL, this.onWheel.bind(this)); + eventHandleList.push(handleWhele); + } //添加事件监听 获取limit crop box & 渲染canvas this.onTransformChange(viewer); this.limited = true; diff --git a/packages/meta/src/ImageEditor/viewer/event.ts b/packages/meta/src/ImageEditor/viewer/event.ts index de1cd71..e9ccb16 100644 --- a/packages/meta/src/ImageEditor/viewer/event.ts +++ b/packages/meta/src/ImageEditor/viewer/event.ts @@ -74,7 +74,7 @@ export default { unbind() { const { eventHandleList } = this; for (let index = eventHandleList.length; index > 0; index--) { - const handler = eventHandleList.shift(); + const handler = eventHandleList[index - 1]; try { handler.remove(); } catch (error) { diff --git a/packages/meta/src/ImageEditor/viewer/helper.ts b/packages/meta/src/ImageEditor/viewer/helper.ts index 1396bd5..aa22bf5 100644 --- a/packages/meta/src/ImageEditor/viewer/helper.ts +++ b/packages/meta/src/ImageEditor/viewer/helper.ts @@ -25,6 +25,13 @@ export const setNumberAccuracy = (originNumber: number, accuracy = 0, isCeil = t } export default { + targetTransform: { + translateX: 0, + translateY: 0, + scale: 0, + rotate: 0, + // rotate: 90, + }, windowToCanvasAxis(event) { const { x, y } = this.canvas.getBoundingClientRect(); @@ -65,9 +72,15 @@ export default { }; return axis; }, - imgRectAxisToCanvasAxisRect({ x = 0, y = 0, w = 0, h = 0, ...others }) { - const { width, height } = this.image; - const { targetTransform } = this; + imgRectAxisToCanvasAxisRect({ x = 0, y = 0, w = 0, h = 0, image, ...others }) { + const { width, height } = this.image || image; + const { targetTransform } = this || { + translateX: 0, + translateY: 0, + scale: 0, + rotate: 0, + // rotate: 90, + }; const { rotate } = targetTransform; const theta = (Math.PI / 180) * rotate; const offsetRect = { diff --git a/packages/meta/src/ImageEditor/viewer/index.ts b/packages/meta/src/ImageEditor/viewer/index.ts index 1b89837..e9286da 100644 --- a/packages/meta/src/ImageEditor/viewer/index.ts +++ b/packages/meta/src/ImageEditor/viewer/index.ts @@ -53,7 +53,7 @@ class Viewer { /* 是否初始化完成 */ ready: boolean; - constructor(element, options) { + constructor(element: HTMLDivElement, options: Option) { this.element = element; this.options = Object.assign({}, isPlainObject(options) && options); this.ready = false; diff --git a/packages/meta/src/ImageEditor/viewer/shape.ts b/packages/meta/src/ImageEditor/viewer/shape.ts index 03aa7b4..47136e4 100644 --- a/packages/meta/src/ImageEditor/viewer/shape.ts +++ b/packages/meta/src/ImageEditor/viewer/shape.ts @@ -19,9 +19,9 @@ function rectToPolygon(axisRect: any) { return polygon; } export interface Shape { - id: number | string; //uuid - selectAble: boolean; - color: string; + id?: number | string; //uuid + selectAble?: boolean; + color?: string; } export interface Rect extends Shape { diff --git a/packages/meta/src/VideoPlayer/VideoPlayer.tsx b/packages/meta/src/VideoPlayer/VideoPlayer.tsx index 56ddf4d..d9b35e2 100644 --- a/packages/meta/src/VideoPlayer/VideoPlayer.tsx +++ b/packages/meta/src/VideoPlayer/VideoPlayer.tsx @@ -15,7 +15,7 @@ import { useLatest, useUpdateEffect, useFullscreen, useUnmount } from '@zhst/hoo import classNames from 'classnames'; import download from 'downloadjs'; import { Button, message } from '..'; -import Icon from '../iconfont'; +import { IconFont } from '@zhst/icon'; import { Cropper, EVENT_CROP_START, @@ -603,7 +603,7 @@ const VideoPlayer = forwardRef((props, ref) => { } }} > - ((props, ref) => { toggleFullscreen(); }} > - { return ( - + diff --git a/packages/meta/src/cropperImage/CropperImage.tsx b/packages/meta/src/cropperImage/CropperImage.tsx new file mode 100644 index 0000000..838847d --- /dev/null +++ b/packages/meta/src/cropperImage/CropperImage.tsx @@ -0,0 +1,335 @@ +import React, { useRef, useEffect, forwardRef, useImperativeHandle, useContext, useState } from 'react' +import classNames from 'classnames' +import { fabric } from 'fabric' +import { addEventListenerWrapper, getTransforms, pick } from '@zhst/func' +import Viewer from '../ImageEditor/viewer'; +import './index.less' +import { ConfigContext } from '../config-provider'; +import { Cropper, EVENT_CROP_END, EVENT_CROP_START, EVENT_SHAPE_SELECT } from '../ImageEditor'; +import { Rect } from '../ImageEditor/viewer/shape'; +import { checkPointInRect, drawArrowLine, getImageDataByPosition, percentToLength } from './cropperImagehelper'; +import Align from 'rc-align'; + +interface RectPro extends Rect { + imageRect: string +} + +export interface CropperImageProps { + prefixCls?: string; + url?: string; + width?: number; + height?: number; + odList?: Rect[] // od框 + lineConfig?: fabric.Line; // 线条配置 + editAble?: boolean; // 是否可编辑 + selectedItem?: RectPro + // 是否可放大缩小 + scaleAble?: boolean; + // 是否展示框选拓展框 + showToast?: boolean; + // 自定义拓展框 + customToast?: (data?: any) => React.JSX.Element + type?: 'line' | 'rect'; // 编辑类型 + onMouseDown?: (data: { x: number; y: number }) => void; + onMouseUp?: (data: { startX: number; startY: number; endX: number; endY: number; imageDom?: HTMLImageElement }) => void; + onShapeSelected?: (id: string, shapeData?: RectPro & { + originData: Rect + }) => void + onCropStart?: () => void + onCropEnd?: (data: RectPro) => void +} + +export interface CanvasPro extends fabric.Canvas { + selectionStart?: { x: number; y: number } + selectionEnd?: { x: number; y: number } + startDraw?: boolean; +} + +export interface CropperImageRefProps { + fabricCanvas?: CanvasPro +} + +// 对比图组件 +const CropperImage = forwardRef((props, ref) => { + const { + prefixCls: customizePrefixCls, + url, + odList, + selectedItem, + onMouseDown, + onMouseUp, + onCropStart, + onCropEnd, + editAble, + onShapeSelected, + showToast = false, + customToast = () =>
, + type = 'ract', + scaleAble = false, + lineConfig = { + stroke: '#09f', + strokeWidth: 3, + selectable: true // 避免线选中而不是箭头 + }, + } = props; + const { getPrefixCls } = useContext(ConfigContext); + const componentName = getPrefixCls('cropper-view', customizePrefixCls); + + const canvasRef = useRef(null); + const currentShapeRef = useRef(null) + const imageRef = useRef(null) + const viewerRef = useRef(null) + const [fabricCanvas, setFabricCanvas] = useState() + + // 自定义弹框 + const alginContainerRef: any = useRef(null); + const alignRef: any = useRef(null); + + // 初始化 - 图片 + useEffect(() => { + viewerRef.current = new Viewer(imageRef.current!!, { + image: url, + scaleAble, + dragAble: false, + }); + + // 监听形状选择事件 + addEventListenerWrapper(imageRef.current, EVENT_SHAPE_SELECT, async (e: { detail: any; }) => { + // 选中的od + const id = e.detail; + if (id) { + const setlectRectData = odList!.filter(_od => _od.id === id)?.[0] + const _data = percentToLength(setlectRectData, viewerRef.current.canvas) + const imageRect = getImageDataByPosition( + { x: _data.x, y: _data.y, w: _data.w, h: _data.h }, + { canvas: viewerRef.current.canvas } + ) + id && onShapeSelected?.(id, { ..._data, imageRect, originData: setlectRectData }) + } + }) + + return () => { + viewerRef?.current?.destroy?.(); + viewerRef.current = null; + viewerRef.current?.clearShape?.(); + } + }, []) + + const cropStartRef = useRef(null) + const cropEndRef = useRef(null) + + // 初始化 - 编辑器 + useEffect(() => { + // 判断是否可编辑 + if (!editAble) { + // 判定是否存在od框 + odList && odList.forEach(_od => { + viewerRef.current?.addShape?.(_od); + }) + return + } else { + viewerRef.current?.clearShape?.(); + + if (type === 'rect') { + currentShapeRef.current = initRect() + // 矩形 - 开始绘制实践 + cropStartRef.current = addEventListenerWrapper(imageRef.current, EVENT_CROP_START, () => onCropStart?.()); + // 矩形 - 结束绘制实践 + cropEndRef.current = addEventListenerWrapper(imageRef.current, EVENT_CROP_END, async (event: { detail: any; }) => { + const data = event.detail; + const imageRect = getImageDataByPosition({ x: data.left, y: data.top, w: data.width, h: data.height }, { canvas: viewerRef.current.canvas }) + onCropEnd?.({ ...data , imageRect }) + }) + } else { + currentShapeRef.current = initLine() + } + } + + return () => { + cropStartRef.current?.remove?.() + cropEndRef.current?.remove?.() + currentShapeRef.current?.destroy?.() + currentShapeRef.current?.dispose?.() + } + },[type, editAble]) + + // 初始化 - 矩形圈选工具 + const initRect = () => { + const currentCropper = new Cropper(imageRef.current, { + showMask: true, + scaleAble: false, + viewer: viewerRef.current, + }); + + return currentCropper + } + + // 初始化线条 + const initLine = () => { + const viewer = viewerRef?.current || {} + const { containerData = {}, targetTransform = {} } = viewer + const imageSize = viewer.getImgSize() + + let currentFabric: CanvasPro = new fabric.Canvas( + canvasRef.current, + { + backgroundColor: 'transparent', + width: containerData.width, + height: containerData.height, + selection: false, + } + ) + + // 事件监听: 鼠标抬起事件 + currentFabric.on('mouse:down', function(options) { + var evt = options.e; + + // 检查鼠标是否按下左键并且没有按住Ctrl键(Windows系统) + if (evt.button === 1 || (evt.button === 0 && evt.ctrlKey === true)) { + return; + } + + // 阻止默认行为 + evt.preventDefault(); + + // 记录起始点坐标 + const pointer = currentFabric.getPointer(evt); + + if (!checkPointInRect(pointer, { + ...pick(targetTransform, 'scale', 'translateX', 'translateY'), + ...imageSize + })) return + + currentFabric.selectionStart = { + x: pointer.x, + y: pointer.y + }; + currentFabric.startDraw = true + currentFabric.renderAll(); + onMouseDown?.(currentFabric.selectionStart) + }); + + // 事件监听:鼠标松开事件 + currentFabric.on('mouse:up', async function(_options) { + currentFabric.clear() + let group = drawArrowLine( + currentFabric?.selectionStart?.x as number, + currentFabric.selectionStart?.y as number, + currentFabric.selectionEnd?.x as number, + currentFabric.selectionEnd?.y as number, + lineConfig + ) + + currentFabric.add(group) + // 停止绘制 + currentFabric.startDraw = false + currentFabric.renderAll(); + + const _shapeData = { + startX: currentFabric.selectionStart?.x as number, + startY: currentFabric.selectionStart?.y as number, + endX: currentFabric.selectionEnd?.x as number, + endY: currentFabric.selectionEnd?.y as number + } + onMouseUp?.({ ..._shapeData }) + }); + + // 事件监听:鼠标移动事件 + currentFabric.on('mouse:move', function(options) { + // 存在起始点,开始绘制 + if (currentFabric.selectionStart && currentFabric.startDraw) { + + // 阻止默认行为 + options.e.preventDefault(); + var endPointer = options.pointer!!; + + // 限定绘制区域 + if (!checkPointInRect(endPointer, { + ...pick(targetTransform, 'scale', 'translateX', 'translateY'), + ...imageSize + } + )) return + + // 更新选区大小 + currentFabric.selectionEnd = { + x: endPointer?.x || 0, + y: endPointer?.y || 0 + }; + + // 清除之前的选择框 + currentFabric.clear(); + let group = drawArrowLine( + currentFabric.selectionStart.x, + currentFabric.selectionStart.y, + endPointer?.x || 0, + endPointer?.y || 0, + lineConfig + ) + + currentFabric.add(group) + } + currentFabric.renderAll(); + }); + setFabricCanvas(currentFabric) + return currentFabric + } + + useImperativeHandle(ref, () => ({ + canvasRef, + fabricCanvas, + viewerRef + })); + + return ( +
+ {/* 图片 */} +
+ {!editAble && showToast && selectedItem && <> +
+
+ + {customToast?.({ + selectedItem + })} + + } + +
+ ); +}) + +export default CropperImage diff --git a/packages/meta/src/cropperImage/cropperImagehelper.ts b/packages/meta/src/cropperImage/cropperImagehelper.ts new file mode 100644 index 0000000..1d5f65e --- /dev/null +++ b/packages/meta/src/cropperImage/cropperImagehelper.ts @@ -0,0 +1,101 @@ +import { isString } from "@zhst/func"; +import { fabric } from 'fabric' +import { ILineOptions } from "fabric/fabric-impl"; +import { Rect } from '../ImageEditor/viewer/shape'; + +export const getImage = (propImage: HTMLImageElement | string) => { + return new Promise((resolve, reject) => { + if (isString(propImage)) { + const image = new Image(); + image.crossOrigin = 'anonymous'; + image.src = propImage; + image.onload = () => { + resolve(image); + }; + image.onerror = (err) => { + reject(err); + }; + } else { + resolve(propImage); + } + }); +} + +// 检查是否在规定区域内 +export const checkPointInRect = (point: { x: number; y: number;}, rect: { w: number; h: number, translateX?: number; translateY?: number, scale: number }) => { + const { w, h, translateX = 0, translateY = 0, scale = 1 } = rect; + const limitStartX = translateX + const limitEndX = translateX + (w * scale) + const limitStartY = translateY + const limitEndY = translateY + (h * scale) + + if ((point.x >= limitStartX) && (point.x <= limitEndX) + && (point.y >= limitStartY) && (point.y <= limitEndY) + ) { + return true + } + return false +} + +// 绘制带箭头的直线函数 +export const drawArrowLine = (startX: number, startY: number, endX: number, endY: number, lineConfig: ILineOptions) => { + + var angle = Math.atan2(endY - startY, endX - startX); + + var line = new fabric.Line([startX, startY, endX, endY], lineConfig); + + var arrowLength = 20; + var arrowWidth = 20; + + var arrow = new fabric.Triangle({ + left: endX - arrowLength / 2 * Math.cos(angle), + top: endY - arrowLength / 2 * Math.sin(angle), + width: arrowWidth, + height: arrowWidth, + originX: 'center', + originY: 'center', + fill: '#09f', + angle: angle * 180 / Math.PI + 90 + }); + + return new fabric.Group([line, arrow], { + selectable: false, + }); + } + +// 百分比转长度 +export const percentToLength = (originData: Rect, canvas: HTMLCanvasElement) => { + const { x = 0, y = 0, w = 0, h = 0 } = originData + const canvasW = canvas.width + const canvasH = canvas.height + + return { + x: x * canvasW, + y: y * canvasH, + w: w * canvasW, + h: h * canvasH + } +} + +// 通过位置截取图片 +export const getImageDataByPosition = (position: { + w: number; + h: number; + x: number; + y: number; +}, opt: { + canvas: HTMLCanvasElement + fileType?: string +}) => { + const { x =0, y = 0, w = 0, h = 0 } = position + const { fileType = 'image/jpg', canvas } = opt + const _canvas = canvas + const ctx = _canvas.getContext('2d') + const imageData = ctx?.getImageData(x, y, w, h) + const newCanvas = document.createElement('canvas') + const newCtx = newCanvas.getContext('2d') + newCanvas.width = imageData?.width || 0 + newCanvas.height = imageData?.height || 0 + newCtx?.putImageData(imageData!!, 0, 0) + return newCanvas.toDataURL(fileType) +} diff --git a/packages/meta/src/cropperImage/demo/basic.tsx b/packages/meta/src/cropperImage/demo/basic.tsx new file mode 100644 index 0000000..cdd9e76 --- /dev/null +++ b/packages/meta/src/cropperImage/demo/basic.tsx @@ -0,0 +1,61 @@ + +import React, { useRef, useState } from 'react'; +import { CropperImage } from '@zhst/meta' +import { Rect } from '@zhst/func' +import { Button, Space, Image } from 'antd'; + +export default () => { + const [type, setType] = useState<'rect' | 'line'>('line') + const [editAble, setEditAble] = useState(false) + const [imgUrl, setImgUrl] = useState('') + const [selectedItem, setSelectedItem] = useState() + + return ( + + + + + + +
+ console.log('箭头绘制结束:', data)} + onShapeSelected={(id, shapeData) => { + console.log('矩形选择', id, shapeData) + setImgUrl(shapeData?.imageRect as string) + }} + onCropStart={() => console.log('矩形开始绘制')} + onCropEnd={(data) => { + console.log('矩形结束绘制', data) + setSelectedItem({ x: data.left, y: data.top, h: data.height, w: data.width }) + setImgUrl(data.imageRect as string) + }} + selectedItem={selectedItem} + showToast + customToast={() =>
多功能框
} + /> +
+ +
+ ) +} diff --git a/packages/meta/src/cropperImage/demo/withOD.tsx b/packages/meta/src/cropperImage/demo/withOD.tsx new file mode 100644 index 0000000..85df364 --- /dev/null +++ b/packages/meta/src/cropperImage/demo/withOD.tsx @@ -0,0 +1,38 @@ + +import React, { useState } from 'react'; +import { CropperImage } from '@zhst/meta' +import { Button, Space } from 'antd'; + +export default () => { + const [editAble, setEditAble] = useState(false) + + return ( + + +
+ +
+
+ ) +} diff --git a/packages/biz/es/BigImageModal/images/emptyImage.png b/packages/meta/src/cropperImage/images/emptyImage.png similarity index 100% rename from packages/biz/es/BigImageModal/images/emptyImage.png rename to packages/meta/src/cropperImage/images/emptyImage.png diff --git a/packages/biz/es/BigImageModal/images/percent_background.png b/packages/meta/src/cropperImage/images/percent_background.png similarity index 100% rename from packages/biz/es/BigImageModal/images/percent_background.png rename to packages/meta/src/cropperImage/images/percent_background.png diff --git a/packages/meta/src/cropperImage/index.less b/packages/meta/src/cropperImage/index.less new file mode 100644 index 0000000..8162f42 --- /dev/null +++ b/packages/meta/src/cropperImage/index.less @@ -0,0 +1,34 @@ +.zhst-cropper-view { + position: relative; + width: 100%; + height: 100%; + font-size: 0; + + &_img { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + } + + .canvas-container { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + } + + &_draw { + width: 100%; + height: 100%; + } + + &-align { + position: absolute; + top: 0; + left: 0; + pointer-events: none; + } +} diff --git a/packages/meta/src/cropperImage/index.md b/packages/meta/src/cropperImage/index.md new file mode 100644 index 0000000..4902a5d --- /dev/null +++ b/packages/meta/src/cropperImage/index.md @@ -0,0 +1,51 @@ +--- +group: 媒体 +category: Components +subtitle: 图片标注 +toc: content +title: CropperImage 图片标注 +--- + +## CropperImage 图片标注 + +导入图片资源,并且能对图片资源进行一些圈选操作 + +### 功能实现 + +* 初始化注入矩形OD框 【✔】 +* 矩形OD框选中可透出图片 【✔】 +* 矩形圈选 【✔】 +* 箭头绘制 【✔】 +* 是否可编辑 【✔】 +* 矩形圈选图片透出 【✔】 + +## 示例 + +基本 + +OD 展示 + +## API + +| 参数 | 说明 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| url | 链接 | string | - | | +| type | 模式 | 'line' 'rect' | rect | | +| editAble | 是否可编辑 | boolean | false | | +| scaleAble | 缩放 | boolean | false | | +| odList | 缩放 | IODList[] | false | | +| onMouseUp | 箭头绘制结束 | (data) => void; | - | | +| onShapeSelected | 矩形选择 | (id, shapeData) => void; | - | | +| onCropStart | 矩形开始绘制 | () => void; | - | | +| onCropEnd | 矩形结束绘制 | (data) => void; | - | | + +## IODList + +| 参数 | 说明 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| id | 唯一id | string | - | | +| x | 左上角横坐标 | number | - | | +| y | 左上角纵坐标 | number | - | | +| w | 宽 | number | - | | +| h | 高 | number | - | | +| selectAble | 是否可选中 | boolean | true | | diff --git a/packages/meta/src/cropperImage/index.tsx b/packages/meta/src/cropperImage/index.tsx new file mode 100644 index 0000000..d985aec --- /dev/null +++ b/packages/meta/src/cropperImage/index.tsx @@ -0,0 +1,5 @@ +import CropperImage from "./CropperImage"; + +export type { CropperImageRefProps, CropperImageProps } from './CropperImage' + +export default CropperImage diff --git a/packages/meta/src/iconfont/iconfont.css b/packages/meta/src/iconfont/iconfont.css deleted file mode 100644 index f97863a..0000000 --- a/packages/meta/src/iconfont/iconfont.css +++ /dev/null @@ -1,1679 +0,0 @@ -@font-face { - font-family: "iconfont"; /* Project id 1739270 */ - src: url('iconfont.woff2?t=1689583241972') format('woff2'), - url('iconfont.woff?t=1689583241972') format('woff'), - url('iconfont.ttf?t=1689583241972') format('truetype'); -} - -.iconfont { - font-family: "iconfont" !important; - font-size: 16px; - font-style: normal; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-danganxiangqing_hangweifenxi:before { - content: "\e78d"; -} - -.icon-danganxiangqing_shujuganzhi:before { - content: "\e78e"; -} - -.icon-danganxiangqing_huodongguiji:before { - content: "\e78f"; -} - -.icon-danganxiangqing_jibenxinxi:before { - content: "\e7ea"; -} - -.icon-danganxiangqing_fushuwupin:before { - content: "\e7eb"; -} - -.icon-danganxiangqing_jizhanyingyong:before { - content: "\e7ec"; -} - -.icon-jiarudanganku:before { - content: "\e787"; -} - -.icon-dangankunor:before { - content: "\e793"; -} - -.icon-bukongrenwuselect:before { - content: "\e799"; -} - -.icon-bukongrenwunor1:before { - content: "\e79a"; -} - -.icon-dangankuselect:before { - content: "\e79b"; -} - -.icon-jizhanfanor:before { - content: "\e79c"; -} - -.icon-feijidongchechaxunnor:before { - content: "\e79d"; -} - -.icon-jidongchechaxunselect:before { - content: "\e79e"; -} - -.icon-a-lixianfenxiselect2:before { - content: "\e7a1"; -} - -.icon-huisufenxiselect:before { - content: "\e7a2"; -} - -.icon-jizhanfaselect:before { - content: "\e7a3"; -} - -.icon-mubiaojiansuonor:before { - content: "\e7ae"; -} - -.icon-lurenkuselect:before { - content: "\e7b1"; -} - -.icon-shujujiashicangselect:before { - content: "\e7b2"; -} - -.icon-shishijiexiselect:before { - content: "\e7b4"; -} - -.icon-shishijiexinor:before { - content: "\e7b9"; -} - -.icon-jidongchechaxunnor:before { - content: "\e7c1"; -} - -.icon-lurenkunor1:before { - content: "\e7cf"; -} - -.icon-mubiaotezhengchaxunnor:before { - content: "\e7e1"; -} - -.icon-yujingjiluselect:before { - content: "\e7e2"; -} - -.icon-mubiaotezhengchaxunselect:before { - content: "\e7e3"; -} - -.icon-feijidongchechaxunselect:before { - content: "\e7e4"; -} - -.icon-yujingjilunor:before { - content: "\e7e5"; -} - -.icon-lixianfenxiselect:before { - content: "\e7e6"; -} - -.icon-huisufenxinor:before { - content: "\e7e7"; -} - -.icon-shujujiashicangnor:before { - content: "\e7e8"; -} - -.icon-mubiaojiansuoselect:before { - content: "\e7e9"; -} - -.icon-kuangxuangongju:before { - content: "\e796"; -} - -.icon-fengniao:before { - content: "\e792"; -} - -.icon-zhankai:before { - content: "\e790"; -} - -.icon-shouqi:before { - content: "\e791"; -} - -.icon-shijian:before { - content: "\e786"; -} - -.icon-dingwei2:before { - content: "\e613"; -} - -.icon-renyuan:before { - content: "\e784"; -} - -.icon-houtai:before { - content: "\e785"; -} - -.icon-zuo:before { - content: "\e781"; -} - -.icon-you:before { - content: "\e783"; -} - -.icon-kakou:before { - content: "\e780"; -} - -.icon-yujing1:before { - content: "\e77e"; -} - -.icon-yuan2:before { - content: "\e77d"; -} - -.icon-moxingpengzhuang:before { - content: "\e777"; -} - -.icon-moxingpengzhuangnor:before { - content: "\e778"; -} - -.icon-lurenku:before { - content: "\e77b"; -} - -.icon-lurenkunor:before { - content: "\e77c"; -} - -.icon-shiming:before { - content: "\e776"; -} - -.icon-suoxiao2:before { - content: "\e774"; -} - -.icon-fangda1:before { - content: "\e775"; -} - -.icon-guanbi2:before { - content: "\e772"; -} - -.icon-fanhui1:before { - content: "\e773"; -} - -.icon-xiansuomopai:before { - content: "\e76f"; -} - -.icon-xiansuomopainor:before { - content: "\e76e"; -} - -.icon-zhajiyujing:before { - content: "\e770"; -} - -.icon-zhajiyujingnor:before { - content: "\e771"; -} - -.icon-zhuizongpeizhi:before { - content: "\e76c"; -} - -.icon-zhuizongpeizhinor:before { - content: "\e76d"; -} - -.icon-dapingqiehuan:before { - content: "\e76b"; -} - -.icon-xuanze:before { - content: "\e769"; -} - -.icon-shaixuan1:before { - content: "\e76a"; -} - -.icon-chekashebei:before { - content: "\e764"; -} - -.icon-imsishebei:before { - content: "\e765"; -} - -.icon-xingtishebei:before { - content: "\e766"; -} - -.icon-renlianshebei:before { - content: "\e767"; -} - -.icon-wifishebei:before { - content: "\e768"; -} - -.icon-a-miaozhun2:before { - content: "\e762"; -} - -.icon-a-bianzu19:before { - content: "\e763"; -} - -.icon-fanye:before { - content: "\e75e"; -} - -.icon-shenfenzheng:before { - content: "\e75f"; -} - -.icon-dizhi:before { - content: "\e760"; -} - -.icon-guanbi:before { - content: "\e761"; -} - -.icon-dianwei1:before { - content: "\e75b"; -} - -.icon-weikakou:before { - content: "\e757"; -} - -.icon-weikakounor:before { - content: "\e758"; -} - -.icon-changsuoma:before { - content: "\e759"; -} - -.icon-changsuomanor:before { - content: "\e75a"; -} - -.icon-yujing:before { - content: "\e756"; -} - -.icon-jiansuonor:before { - content: "\e747"; -} - -.icon-tonghangrenfenxinor1:before { - content: "\e748"; -} - -.icon-zhinengyanpannor:before { - content: "\e749"; -} - -.icon-bukongyujingnor:before { - content: "\e74a"; -} - -.icon-bukongrenwunor:before { - content: "\e74b"; -} - -.icon-dianziditunor:before { - content: "\e754"; -} - -.icon-zhuizongnor1:before { - content: "\e755"; -} - -.icon-zhuizong1:before { - content: "\e746"; -} - -.icon-bukongrenwu3:before { - content: "\e74c"; -} - -.icon-dianziditu:before { - content: "\e74d"; -} - -.icon-bukongyujing:before { - content: "\e750"; -} - -.icon-tonghangrenfenxi1:before { - content: "\e751"; -} - -.icon-zhinengyanpan:before { - content: "\e752"; -} - -.icon-jiansuo1:before { - content: "\e753"; -} - -.icon-kaiqijulei:before { - content: "\e745"; -} - -.icon-tongbu:before { - content: "\e744"; -} - -.icon-tonghangrenfenxi:before { - content: "\e743"; -} - -.icon-tonghangrenfenxinor:before { - content: "\e742"; -} - -.icon-jizhanyingyong:before { - content: "\e741"; -} - -.icon-haikangrenlianbukongnor:before { - content: "\e740"; -} - -.icon-haikangrenlianbukong:before { - content: "\e73f"; -} - -.icon-tuozhanshouduantishi:before { - content: "\e73e"; -} - -.icon-fanhuimopailiebiao:before { - content: "\e73d"; -} - -.icon-toukuijiancenor:before { - content: "\e73c"; -} - -.icon-toukuijiance:before { - content: "\e718"; -} - -.icon-zhuixing:before { - content: "\e717"; -} - -.icon-tishi4:before { - content: "\e73b"; -} - -.icon-a-shaixuanfeiji:before { - content: "\e733"; -} - -.icon-a-zidongtiaozhengfanweifeiji:before { - content: "\e73a"; -} - -.icon-heziyunwei:before { - content: "\e739"; -} - -.icon-qiehuan:before { - content: "\e738"; -} - -.icon-disanfangxiaoxinor:before { - content: "\e737"; -} - -.icon-disanfangxiaoxi:before { - content: "\e736"; -} - -.icon-daohang:before { - content: "\e735"; -} - -.icon-yonghu:before { - content: "\e734"; -} - -.icon-feiji:before { - content: "\e732"; -} - -.icon-jieshuzhuizong:before { - content: "\e730"; -} - -.icon-huisuzhoubian:before { - content: "\e731"; -} - -.icon-jixuzhuizong:before { - content: "\e72d"; -} - -.icon-tiaozhengfanwei:before { - content: "\e72e"; -} - -.icon-jiansuo:before { - content: "\e72f"; -} - -.icon-guiji:before { - content: "\e72c"; -} - -.icon-jichuxinxi:before { - content: "\e72b"; -} - -.icon-danganzhaiyao:before { - content: "\e72a"; -} - -.icon-jingzhunbukongicon_on:before { - content: "\e728"; -} - -.icon-jingzhunbukongicon_off:before { - content: "\e729"; -} - -.icon-tiaozhuan:before { - content: "\e727"; -} - -.icon-shezhi:before { - content: "\e726"; -} - -.icon-bangzhu1:before { - content: "\e725"; -} - -.icon-shuaxin1:before { - content: "\e724"; -} - -.icon-duosucaibeifen:before { - content: "\e722"; -} - -.icon-duosucai:before { - content: "\e723"; -} - -.icon-shujutongji:before { - content: "\e721"; -} - -.icon-renlian:before { - content: "\e71c"; -} - -.icon-xingti:before { - content: "\e71d"; -} - -.icon-jidongche:before { - content: "\e71e"; -} - -.icon-huisufenxi4:before { - content: "\e71f"; -} - -.icon-lixianfenxi4:before { - content: "\e720"; -} - -.icon-feijidongche:before { - content: "\e71b"; -} - -.icon-shujudaping:before { - content: "\e71a"; -} - -.icon-peizhisuanfa:before { - content: "\e719"; -} - -.icon-zhuizong:before { - content: "\e715"; -} - -.icon-zhuizongnor:before { - content: "\e716"; -} - -.icon-dianwei:before { - content: "\e714"; -} - -.icon-Container:before { - content: "\e713"; -} - -.icon-Attachment:before { - content: "\e712"; -} - -.icon-cha:before { - content: "\e711"; -} - -.icon-gou:before { - content: "\e710"; -} - -.icon-daoru:before { - content: "\e70f"; -} - -.icon-quanxijiansuo:before { - content: "\e70e"; -} - -.icon-chakanjiankong:before { - content: "\e70c"; -} - -.icon-tishi3:before { - content: "\e70d"; -} - -.icon-heiyemoshi:before { - content: "\e70b"; -} - -.icon-zhengchangmoshi:before { - content: "\e70a"; -} - -.icon-dingwei1:before { - content: "\e709"; -} - -.icon-paixu:before { - content: "\e708"; -} - -.icon-tianjiayuan:before { - content: "\e707"; -} - -.icon-juleidangankunor:before { - content: "\e705"; -} - -.icon-juleidanganku:before { - content: "\e706"; -} - -.icon-guanlian:before { - content: "\e704"; -} - -.icon-renlianbiaozhu:before { - content: "\e703"; -} - -.icon-juleijieguo:before { - content: "\e6ec"; -} - -.icon-juleirenwunor:before { - content: "\e6fb"; -} - -.icon-juleijieguonor:before { - content: "\e701"; -} - -.icon-juleirenwu:before { - content: "\e702"; -} - -.icon-zhongzhi3:before { - content: "\e8ff"; -} - -.icon-xuanzhuan1:before { - content: "\e6fd"; -} - -.icon-shuangmubiaozhu1:before { - content: "\e700"; -} - -.icon-shoudongkuangxuan:before { - content: "\e6f9"; -} - -.icon-zanting1:before { - content: "\e6fe"; -} - -.icon-zhongzhi1:before { - content: "\e6ff"; -} - -.icon-shoudong:before { - content: "\e6fa"; -} - -.icon-zidong:before { - content: "\e6fc"; -} - -.icon-zhenduan:before { - content: "\e6f8"; -} - -.icon-Check-Circle-Fill1:before { - content: "\e6f3"; -} - -.icon-Info--Circle-Fill:before { - content: "\e6f4"; -} - -.icon-Close-Circle-Fill:before { - content: "\e6f5"; -} - -.icon-Warning-Circle-Fill:before { - content: "\e6f6"; -} - -.icon-Question-Circle-Fill:before { - content: "\e6f7"; -} - -.icon-zancunjia:before { - content: "\e6f2"; -} - -.icon-Check-Circle-Fill:before { - content: "\e6f1"; -} - -.icon-tupianji:before { - content: "\e6f0"; -} - -.icon-quanping1:before { - content: "\e6ed"; -} - -.icon-yinliang:before { - content: "\e6ee"; -} - -.icon-suoxiao1:before { - content: "\e6ef"; -} - -.icon-home:before { - content: "\e6eb"; -} - -.icon-zuixiaohua:before { - content: "\e6e9"; -} - -.icon-zuidahua:before { - content: "\e6ea"; -} - -.icon-biaozhunhua:before { - content: "\e6e6"; -} - -.icon-julei:before { - content: "\e6e5"; -} - -.icon-bianzu:before { - content: "\e6e7"; -} - -.icon-bianzu3:before { - content: "\e6e8"; -} - -.icon-bianzu7:before { - content: "\e6e3"; -} - -.icon-bianzu2:before { - content: "\e6e4"; -} - -.icon-kapianqiehuan:before { - content: "\e6e2"; -} - -.icon-duobianxing1:before { - content: "\e6e0"; -} - -.icon-fang1:before { - content: "\e6e1"; -} - -.icon-yuan1:before { - content: "\e6df"; -} - -.icon-cejuli:before { - content: "\e6de"; -} - -.icon-wanggekuangxuannor:before { - content: "\e6dc"; -} - -.icon-lujingkuangxuannor:before { - content: "\e6dd"; -} - -.icon-chuansuo:before { - content: "\e6db"; -} - -.icon-bianyuanhezinor:before { - content: "\e6d8"; -} - -.icon-wujiankuhov:before { - content: "\e6d9"; -} - -.icon-caozuorizhinor:before { - content: "\e6da"; -} - -.icon-collect_dot:before { - content: "\e619"; -} - -.icon-chuxiandingweibg:before { - content: "\e6d4"; -} - -.icon-chuxiandingweiicon:before { - content: "\e6d5"; -} - -.icon-shexiangtoudingweibg:before { - content: "\e6d6"; -} - -.icon-shexiangtoudingweiicon:before { - content: "\e6d7"; -} - -.icon-xiafajieguo:before { - content: "\e6d2"; -} - -.icon-daochu1:before { - content: "\e6d3"; -} - -.icon-zuijinchuxian:before { - content: "\e6cc"; -} - -.icon-leijizhuapai:before { - content: "\e6d0"; -} - -.icon-yichangshijian:before { - content: "\e6d1"; -} - -.icon-dingwei:before { - content: "\e6cb"; -} - -.icon-tupian:before { - content: "\e6ad"; -} - -.icon-wenti:before { - content: "\e6ac"; -} - -.icon-lixian1:before { - content: "\e6ab"; -} - -.icon-yichang:before { - content: "\e6a8"; -} - -.icon-zhuixing-xiugaidianwei:before { - content: "\e6a7"; -} - -.icon-wenhao1:before { - content: "\e69e"; -} - -.icon-ditu_dingwei:before { - content: "\e69d"; -} - -.icon-ditu_fangda:before { - content: "\e689"; -} - -.icon-ditu_suoxiao:before { - content: "\e69a"; -} - -.icon-chakanbukongrenwu:before { - content: "\e688"; -} - -.icon-lietu:before { - content: "\e687"; -} - -.icon-zhongzhi:before { - content: "\e67e"; -} - -.icon-xialada:before { - content: "\e67f"; -} - -.icon-zhinengguanlian_xingti:before { - content: "\e67b"; -} - -.icon-zhinengguanlian_renlian:before { - content: "\e67c"; -} - -.icon-xiajiantou:before { - content: "\e75c"; -} - -.icon-zhinengguanlian_xiaojiantou:before { - content: "\e67d"; -} - -.icon-zhinengguanlian_jiantou:before { - content: "\e67a"; -} - -.icon-shangjiantou:before { - content: "\e75d"; -} - -.icon-banbenxinxi:before { - content: "\e679"; -} - -.icon-wenhao:before { - content: "\e61f"; -} - -.icon-bianjirenyuan:before { - content: "\e7e0"; -} - -.icon-tishi2:before { - content: "\e7df"; -} - -.icon-shexiangji2:before { - content: "\e7de"; -} - -.icon-guijizhuizong:before { - content: "\e7dd"; -} - -.icon-jiezhen1:before { - content: "\e7dc"; -} - -.icon-tianjiaguijihuisu:before { - content: "\e7db"; -} - -.icon-tingzhi:before { - content: "\e7cd"; -} - -.icon-baoweiquan:before { - content: "\e7ce"; -} - -.icon-shangchuanshipin:before { - content: "\e7d0"; -} - -.icon-yidong:before { - content: "\e7d1"; -} - -.icon-chuangjianxinbukong1:before { - content: "\e7d2"; -} - -.icon-yichu1:before { - content: "\e7d3"; -} - -.icon-tishi1:before { - content: "\e7d4"; -} - -.icon-VS:before { - content: "\e7d5"; -} - -.icon-quanjuzonglan:before { - content: "\e7d6"; -} - -.icon-chakanfenxirenwu1:before { - content: "\e7d7"; -} - -.icon-xiaoxi:before { - content: "\e7d8"; -} - -.icon-yonghuming:before { - content: "\e7d9"; -} - -.icon-tuichu:before { - content: "\e7da"; -} - -.icon-guijizhuizongnor:before { - content: "\e7cb"; -} - -.icon-guijizhuizong2:before { - content: "\e7cc"; -} - -.icon-bukongrenwu1:before { - content: "\e7b7"; -} - -.icon-shexiangji:before { - content: "\e7b8"; -} - -.icon-yujingditu:before { - content: "\e7ba"; -} - -.icon-lixianfenxi2:before { - content: "\e7bb"; -} - -.icon-yuanguanli1:before { - content: "\e7bc"; -} - -.icon-danganku:before { - content: "\e7bd"; -} - -.icon-huisufenxi2:before { - content: "\e7be"; -} - -.icon-kuneijiansuo:before { - content: "\e7bf"; -} - -.icon-jiegouhuachaxun:before { - content: "\e7c0"; -} - -.icon-bukongrenwu2:before { - content: "\e7c2"; -} - -.icon-yuanguanli2:before { - content: "\e7c3"; -} - -.icon-shexiangji1:before { - content: "\e7c4"; -} - -.icon-kuneijiansuo1:before { - content: "\e7c5"; -} - -.icon-lixianfenxi3:before { - content: "\e7c6"; -} - -.icon-danganku1:before { - content: "\e7c7"; -} - -.icon-yujingditu1:before { - content: "\e7c8"; -} - -.icon-huisufenxi3:before { - content: "\e7c9"; -} - -.icon-jiegouhuachaxunnor:before { - content: "\e7ca"; -} - -.icon-chuangjianxinbukong:before { - content: "\e7b6"; -} - -.icon-kuangxuan:before { - content: "\e77f"; -} - -.icon-gaojishaixuan:before { - content: "\e779"; -} - -.icon-gaojishaixuanshouqi:before { - content: "\e77a"; -} - -.icon-bukongrenwu:before { - content: "\e7b5"; -} - -.icon-riqi:before { - content: "\e74f"; -} - -.icon-shijianqiehuan:before { - content: "\e797"; -} - -.icon-shouquan1:before { - content: "\e7b3"; -} - -.icon-video-play:before { - content: "\e653"; -} - -.icon-shishifenxi:before { - content: "\e7af"; -} - -.icon-chakanfenxirenwu:before { - content: "\e7b0"; -} - -.icon-jiegouhuafenxi:before { - content: "\e7ad"; -} - -.icon-tianjiaguiji2:before { - content: "\e6aa"; -} - -.icon-tianjiajiansuomubiao:before { - content: "\e6b0"; -} - -.icon-add:before { - content: "\e661"; -} - -.icon-didian:before { - content: "\e798"; -} - -.icon-bofanghov:before { - content: "\e79f"; -} - -.icon-bofang3:before { - content: "\e7a0"; -} - -.icon-jinggao:before { - content: "\e788"; -} - -.icon-tishi:before { - content: "\e789"; -} - -.icon-bangzhu:before { - content: "\e78a"; -} - -.icon-guanbi1:before { - content: "\e78b"; -} - -.icon-chenggong:before { - content: "\e78c"; -} - -.icon-qianwang:before { - content: "\e7ac"; -} - -.icon-shouquan:before { - content: "\e7ab"; -} - -.icon-jingweidu:before { - content: "\e7aa"; -} - -.icon-shanchu1:before { - content: "\e74e"; -} - -.icon-daochu:before { - content: "\e782"; -} - -.icon-ziyuanguanli:before { - content: "\e7a4"; -} - -.icon-fuwuqishouquan:before { - content: "\e7a5"; -} - -.icon-xiugaimima:before { - content: "\e7a6"; -} - -.icon-zhanghaoguanli:before { - content: "\e7a7"; -} - -.icon-suanlipeie:before { - content: "\e7a8"; -} - -.icon-VMSpeizhi:before { - content: "\e7a9"; -} - -.icon-tianjia1:before { - content: "\e794"; -} - -.icon-yichu:before { - content: "\e795"; -} - -.icon-lujing:before { - content: "\e6cf"; -} - -.icon-jiankongxinxi:before { - content: "\e6c8"; -} - -.icon-fanwei:before { - content: "\e6c9"; -} - -.icon-anfadidian:before { - content: "\e6ca"; -} - -.icon-gongjuxiang:before { - content: "\e6cd"; -} - -.icon-gongjuxiangguanbi1:before { - content: "\e6ce"; -} - -.icon-jiezhen:before { - content: "\e6c2"; -} - -.icon-huisufenxi1:before { - content: "\e6c6"; -} - -.icon-huisufenxi:before { - content: "\e6c7"; -} - -.icon-tianjiashipinwenjian1:before { - content: "\e6c5"; -} - -.icon-jiazaishibai:before { - content: "\e6c3"; -} - -.icon-shuaxin:before { - content: "\e6c4"; -} - -.icon-quanping:before { - content: "\e6c0"; -} - -.icon-quxiaoquanping:before { - content: "\e6c1"; -} - -.icon-shipinbofang:before { - content: "\e6be"; -} - -.icon-shipinzanting:before { - content: "\e6bf"; -} - -.icon-lixianguiji:before { - content: "\e6bd"; -} - -.icon-lixian:before { - content: "\e6bc"; -} - -.icon-xiaojiaobiao:before { - content: "\e6bb"; -} - -.icon-shangchuan1:before { - content: "\e6ba"; -} - -.icon-tianjiaweijiansuoduixiang:before { - content: "\e6b8"; -} - -.icon-tianjiaweijiansuojilu:before { - content: "\e6b9"; -} - -.icon-lixianfenxi1:before { - content: "\e6b7"; -} - -.icon-kuaisujiansuohov:before { - content: "\e6b5"; -} - -.icon-kuaisujiansuo1:before { - content: "\e6b6"; -} - -.icon-kuaisujiansuo:before { - content: "\e6b4"; -} - -.icon-yuanguanli:before { - content: "\e6b1"; -} - -.icon-shexiangtou:before { - content: "\e6b2"; -} - -.icon-lixianfenxi:before { - content: "\e6b3"; -} - -.icon-filter:before { - content: "\e61a"; -} - -.icon-tianjiaweizhuizongduixiang2:before { - content: "\e6af"; -} - -.icon-tianjiaweizhuizongduixiang1:before { - content: "\e6ae"; -} - -.icon-baocun1:before { - content: "\e6a9"; -} - -.icon-tianjiashipinwenjianjia:before { - content: "\e6a5"; -} - -.icon-tianjiashipinwenjian:before { - content: "\e6a6"; -} - -.icon-ditu:before { - content: "\e6a4"; -} - -.icon-xinjianshexiangtou:before { - content: "\e6a3"; -} - -.icon-lishihuisu:before { - content: "\e6a2"; -} - -.icon-decoyitianjiaweiguiji:before { - content: "\e69f"; -} - -.icon-bofangqiehuan:before { - content: "\e6a0"; -} - -.icon-tianjia:before { - content: "\e6a1"; -} - -.icon-baocun:before { - content: "\e698"; -} - -.icon-gongjuxiangguanbi:before { - content: "\e699"; -} - -.icon-shangchuan:before { - content: "\e69b"; -} - -.icon-gongjuxiang1:before { - content: "\e69c"; -} - -.icon-logo:before { - content: "\e692"; -} - -.icon-setting:before { - content: "\e627"; -} - -.icon-user:before { - content: "\e628"; -} - -.icon-quit:before { - content: "\e629"; -} - -.icon-arrowzhankaimeixuanzhong:before { - content: "\e693"; -} - -.icon-arrowzhankaixuanzhong:before { - content: "\e694"; -} - -.icon-xuanzexuanzhong:before { - content: "\e695"; -} - -.icon-xuanzebanxuan:before { - content: "\e696"; -} - -.icon-xuanzenor:before { - content: "\e697"; -} - -.icon-shaixuanguanbinor:before { - content: "\e691"; -} - -.icon-gengduo:before { - content: "\e68e"; -} - -.icon-youzhankai:before { - content: "\e68f"; -} - -.icon-zuoshouqi:before { - content: "\e690"; -} - -.icon-yuan:before { - content: "\e68a"; -} - -.icon-duobianxing:before { - content: "\e68b"; -} - -.icon-fang:before { - content: "\e68c"; -} - -.icon-ceju:before { - content: "\e68d"; -} - -.icon-shishizhuizong1:before { - content: "\e683"; -} - -.icon-guijihuisu1:before { - content: "\e684"; -} - -.icon-tianjiaguiji:before { - content: "\e685"; -} - -.icon-yichuguiji:before { - content: "\e686"; -} - -.icon-fangda:before { - content: "\e680"; -} - -.icon-suoxiao:before { - content: "\e681"; -} - -.icon-xiazai:before { - content: "\e682"; -} - -.icon-fanhui:before { - content: "\e678"; -} - -.icon-sousuo:before { - content: "\e669"; -} - -.icon-quxiaoxuanzhong:before { - content: "\e66a"; -} - -.icon-piliangxuanzenor:before { - content: "\e66b"; -} - -.icon-kaiqifenxi:before { - content: "\e66c"; -} - -.icon-quxiaofenxi:before { - content: "\e66d"; -} - -.icon-shaixuan:before { - content: "\e66e"; -} - -.icon-dangan:before { - content: "\e66f"; -} - -.icon-bofang:before { - content: "\e670"; -} - -.icon-zanting:before { - content: "\e671"; -} - -.icon-shanchu:before { - content: "\e672"; -} - -.icon-tianjiaweizhuizongduixiang:before { - content: "\e673"; -} - -.icon-chakandatu:before { - content: "\e674"; -} - -.icon-jiansuojilu:before { - content: "\e675"; -} - -.icon-yuzhi:before { - content: "\e676"; -} - -.icon-chakanxiangqing:before { - content: "\e677"; -} - -.icon-guijihuisu:before { - content: "\e65c"; -} - -.icon-dianweipeizhinor:before { - content: "\e65d"; -} - -.icon-yirenyidang:before { - content: "\e65e"; -} - -.icon-tongbanfenxi:before { - content: "\e65f"; -} - -.icon-qiehuanzuo:before { - content: "\e662"; -} - -.icon-qiehuanyou:before { - content: "\e663"; -} - -.icon-tingzhidengdai:before { - content: "\e664"; -} - -.icon-yiguanbi:before { - content: "\e665"; -} - -.icon-danchuangguanbi:before { - content: "\e666"; -} - -.icon-lishijilu:before { - content: "\e64a"; -} - -.icon-xuanzhuan:before { - content: "\e648"; -} - -.icon-qingchu:before { - content: "\e649"; -} - -.icon-dangantianjia:before { - content: "\e63d"; -} - -.icon-bianji:before { - content: "\e63e"; -} - -.icon-fullscreen:before { - content: "\e63b"; -} - -.icon-cancle_fullscreen:before { - content: "\e63c"; -} - -.icon-quanyujiansuo_nor:before { - content: "\e639"; -} - -.icon-guijihuisu_nor:before { - content: "\e63a"; -} - diff --git a/packages/meta/src/iconfont/iconfont.js b/packages/meta/src/iconfont/iconfont.js deleted file mode 100644 index ce21246..0000000 --- a/packages/meta/src/iconfont/iconfont.js +++ /dev/null @@ -1 +0,0 @@ -window._iconfont_svg_string_1739270='',function(h){var a=(a=document.getElementsByTagName("script"))[a.length-1],l=a.getAttribute("data-injectcss"),a=a.getAttribute("data-disable-injectsvg");if(!a){var i,c,o,t,z,v=function(a,l){l.parentNode.insertBefore(a,l)};if(l&&!h.__iconfont__svg__cssinject__){h.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}i=function(){var a,l=document.createElement("div");l.innerHTML=h._iconfont_svg_string_1739270,(l=l.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",l=l,(a=document.body).firstChild?v(l,a.firstChild):a.appendChild(l))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(i,0):(c=function(){document.removeEventListener("DOMContentLoaded",c,!1),i()},document.addEventListener("DOMContentLoaded",c,!1)):document.attachEvent&&(o=i,t=h.document,z=!1,p(),t.onreadystatechange=function(){"complete"==t.readyState&&(t.onreadystatechange=null,m())})}function m(){z||(z=!0,o())}function p(){try{t.documentElement.doScroll("left")}catch(a){return void setTimeout(p,50)}m()}}(window); \ No newline at end of file diff --git a/packages/meta/src/iconfont/iconfont.ttf b/packages/meta/src/iconfont/iconfont.ttf deleted file mode 100644 index 0043e6adb470d27d9eb668a85699dab6ac06590f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105116 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
KHXmy!moP?g6= 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�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 diff --git a/packages/meta/src/iconfont/iconfont.woff2 b/packages/meta/src/iconfont/iconfont.woff2 deleted file mode 100644 index 81733409e71fc4817fe0404afb2dc8294fcd6a6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48900 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 diff --git a/packages/meta/src/iconfont/index.tsx b/packages/meta/src/iconfont/index.tsx deleted file mode 100644 index 12c0509..0000000 --- a/packages/meta/src/iconfont/index.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import React from 'react'; -import classNames from 'classnames'; -import './iconfont.css' - -interface IconFontProps { - styles?: React.CSSProperties; - icon?: string; - size?: number; - color?: string; - title?: string; - className?: string; - onIconClick?: (e: React.MouseEvent) => void; - children?: React.ReactNode; - active?: boolean; - disable?: boolean; -} - -const IconFont: React.FC = (props) => { - const { - title = '', - className = '', - styles = {}, - icon, - size = 14, - onIconClick, - children, - active = false, - color = '', - } = props || {}; - return ( - { - onIconClick && onIconClick(e); - }} - style={{ - ...styles, - cursor: 'pointer', - fontSize: size, - color, - ...(active ? { color: '#09f' } : {}), - }} - className={classNames('iconfont', icon, className)} - > - {children} - - ); -}; -export default IconFont; diff --git a/packages/meta/src/index.tsx b/packages/meta/src/index.tsx index fcf3b8a..50e675c 100644 --- a/packages/meta/src/index.tsx +++ b/packages/meta/src/index.tsx @@ -1,8 +1,9 @@ -export { default as Icon } from './iconfont'; export { default as CompareImage } from './CompareImage' export type { CompareImageProps } from './CompareImage' export { default as BigImagePreview } from './BigImagePreview' export type { ImgViewProps, ImgViewRef } from './BigImagePreview' +export { default as CropperImage } from './cropperImage' +export type { CropperImageProps, CropperImageRefProps } from './cropperImage' export { default as VideoPlayer } from './VideoPlayer' export type { VideoViewProps, VideoViewRef } from './VideoPlayer' export { default as Tabs } from './tabs' diff --git a/packages/meta/src/utils/constants.ts b/packages/meta/src/utils/constants.ts index 48ce79d..2781c76 100644 --- a/packages/meta/src/utils/constants.ts +++ b/packages/meta/src/utils/constants.ts @@ -1,5 +1,3 @@ -import { Empty } from "antd"; - export const CROP_TYPE = { CUSTOM: 'CUSTOM', AUTO: 'AUTO', diff --git a/packages/request/CHANGELOG.md b/packages/request/CHANGELOG.md index 4b073f6..0ff5114 100644 --- a/packages/request/CHANGELOG.md +++ b/packages/request/CHANGELOG.md @@ -1,5 +1,12 @@ # @zhst/request +## 0.9.1 + +### Patch Changes + +- 修改物料库算法编辑新增箭头选择,元组件新增图片标记组件 + - @zhst/func@0.9.2 + ## 0.9.0 ### Minor Changes diff --git a/packages/request/package.json b/packages/request/package.json index b7d23d8..5ff0511 100644 --- a/packages/request/package.json +++ b/packages/request/package.json @@ -1,6 +1,6 @@ { "name": "@zhst/request", - "version": "0.9.0", + "version": "0.9.1", "description": "请求库", "keywords": [ "request", diff --git a/packages/slave/CHANGELOG.md b/packages/slave/CHANGELOG.md index 87f3b2f..639c64d 100644 --- a/packages/slave/CHANGELOG.md +++ b/packages/slave/CHANGELOG.md @@ -1,5 +1,11 @@ # @zhst/slave +## 0.5.1 + +### Patch Changes + +- @zhst/func@0.9.2 + ## 0.5.0 ### Minor Changes diff --git a/packages/slave/package.json b/packages/slave/package.json index 039af69..ea00ef0 100644 --- a/packages/slave/package.json +++ b/packages/slave/package.json @@ -1,6 +1,6 @@ { "name": "@zhst/slave", - "version": "0.5.0", + "version": "0.5.1", "description": "微前端子应用方法库", "keywords": [ "slave",