@labelbee/lb-components 1.2.3 → 1.5.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +203 -0
- package/dist/App.js +1 -1
- package/dist/assets/annotation/toolHotKeyIcon/icon_back_kj.svg.js +1 -0
- package/dist/assets/annotation/toolHotKeyIcon/icon_forward_kj.svg.js +1 -0
- package/dist/assets/annotation/toolHotKeyIcon/icon_playPause.svg.js +1 -0
- package/dist/assets/annotation/toolHotKeyIcon/icon_polygonMerge_kj.svg.js +1 -0
- package/dist/assets/annotation/toolHotKeyIcon/icon_segment.svg.js +1 -0
- package/dist/assets/annotation/toolHotKeyIcon/icon_speed_kj.svg.js +1 -0
- package/dist/assets/annotation/video/icon_keyboard_h.svg.js +1 -0
- package/dist/components/fileException/FileError.js +1 -0
- package/dist/components/fileException/FileInvalid.js +1 -0
- package/dist/components/fileException/index.js +1 -0
- package/dist/components/videoAnnotate/index.js +1 -0
- package/dist/components/videoPlayer/TagToolInstanceAdaptor.js +1 -0
- package/dist/components/videoPlayer/TagToolInstanceAdaptorI18nProvider.js +1 -0
- package/dist/components/videoPlayer/VideoTagLayer.js +1 -0
- package/dist/components/videoPlayer/components/controller/index.js +1 -0
- package/dist/components/videoPlayer/index.js +1 -0
- package/dist/components/videoPlayer/utils.js +1 -0
- package/dist/index.css +950 -651
- package/dist/index.css.map +1 -0
- package/dist/index.js +1 -1
- package/dist/store/Actions.js +1 -1
- package/dist/store/annotation/actionCreators.js +1 -1
- package/dist/store/annotation/reducer.js +1 -1
- package/dist/types/App.d.ts +28 -7
- package/dist/types/components/annotationStepPopover/index.d.ts +0 -1
- package/dist/types/components/checkboxList/index.d.ts +0 -1
- package/dist/types/components/colorTag/index.d.ts +0 -1
- package/dist/types/components/{ImageError/index.d.ts → fileException/FileError.d.ts} +5 -4
- package/dist/types/components/fileException/FileInvalid.d.ts +12 -0
- package/dist/types/components/fileException/index.d.ts +17 -0
- package/dist/types/components/videoAnnotate/index.d.ts +15 -0
- package/dist/types/components/videoPlayer/TagToolInstanceAdaptor.d.ts +90 -0
- package/dist/types/components/videoPlayer/TagToolInstanceAdaptorI18nProvider.d.ts +8 -0
- package/dist/types/components/videoPlayer/VideoTagLayer.d.ts +12 -0
- package/dist/types/components/videoPlayer/components/controller/index.d.ts +2 -0
- package/dist/types/components/videoPlayer/index.d.ts +73 -0
- package/dist/types/components/videoPlayer/types.d.ts +8 -0
- package/dist/types/components/videoPlayer/utils.d.ts +36 -0
- package/dist/types/index.d.ts +6 -4
- package/dist/types/store/Actions.d.ts +5 -0
- package/dist/types/store/annotation/actionCreators.d.ts +20 -8
- package/dist/types/store/annotation/reducer.d.ts +2 -2
- package/dist/types/store/annotation/types.d.ts +30 -2
- package/dist/types/utils/PageOperator.d.ts +1 -1
- package/dist/types/utils/StepUtils.d.ts +7 -0
- package/dist/types/utils/TextUtils.d.ts +1 -1
- package/dist/types/utils/dom.d.ts +6 -0
- package/dist/types/views/MainView/annotationOperation/index.d.ts +5 -9
- package/dist/types/views/MainView/annotationTips/index.d.ts +5 -0
- package/dist/types/views/MainView/index.d.ts +9 -3
- package/dist/types/views/MainView/sidebar/AnnotationText/index.d.ts +3 -1
- package/dist/types/views/MainView/sidebar/ClearIcon/index.d.ts +0 -1
- package/dist/types/views/MainView/sidebar/GeneralOperation/index.d.ts +3 -1
- package/dist/types/views/MainView/sidebar/ImgAttributeInfo/index.d.ts +0 -1
- package/dist/types/views/MainView/sidebar/SwitchAttributeList/index.d.ts +3 -1
- package/dist/types/views/MainView/sidebar/TagSidebar/index.d.ts +3 -1
- package/dist/types/views/MainView/sidebar/TextAreaFormat/index.d.ts +0 -1
- package/dist/types/views/MainView/sidebar/TextToolSidebar/index.d.ts +3 -1
- package/dist/types/views/MainView/sidebar/ToolStyle/index.d.ts +0 -1
- package/dist/types/views/MainView/sidebar/index.d.ts +3 -1
- package/dist/types/views/MainView/toolFooter/FooterTips/ToolHotKey/common/index.d.ts +23 -0
- package/dist/types/views/MainView/toolFooter/FooterTips/ToolHotKey/index.d.ts +2 -7
- package/dist/types/views/MainView/toolFooter/FooterTips/ToolHotKey/polygon/index.d.ts +7 -1
- package/dist/types/views/MainView/toolFooter/FooterTips/ToolHotKey/videoTag/index.d.ts +3 -0
- package/dist/types/views/MainView/toolFooter/HiddenTips/index.d.ts +0 -1
- package/dist/types/views/MainView/toolFooter/PageNumber/index.d.ts +0 -1
- package/dist/types/views/MainView/toolFooter/Pagination.d.ts +12 -0
- package/dist/types/views/MainView/toolFooter/ZoomController/ZoomLevel/index.d.ts +3 -1
- package/dist/types/views/MainView/toolFooter/ZoomController/index.d.ts +3 -1
- package/dist/types/views/MainView/toolFooter/index.d.ts +6 -2
- package/dist/types/views/MainView/toolHeader/ExportData/index.d.ts +3 -1
- package/dist/types/views/MainView/toolHeader/StepSwitch/index.d.ts +3 -1
- package/dist/types/views/MainView/toolHeader/index.d.ts +8 -4
- package/dist/utils/StepUtils.js +1 -1
- package/dist/utils/TextUtils.js +1 -1
- package/dist/utils/dom.js +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/views/MainView/annotationOperation/index.js +1 -1
- package/dist/views/MainView/annotationTips/index.js +1 -0
- package/dist/views/MainView/index.js +1 -1
- package/dist/views/MainView/sidebar/GeneralOperation/index.js +1 -1
- package/dist/views/MainView/sidebar/TagSidebar/index.js +1 -1
- package/dist/views/MainView/sidebar/index.js +1 -1
- package/dist/views/MainView/toolFooter/FooterTips/ToolHotKey/common/index.js +1 -1
- package/dist/views/MainView/toolFooter/FooterTips/ToolHotKey/index.js +1 -1
- package/dist/views/MainView/toolFooter/FooterTips/ToolHotKey/polygon/index.js +1 -1
- package/dist/views/MainView/toolFooter/FooterTips/ToolHotKey/videoTag/index.js +1 -0
- package/dist/views/MainView/toolFooter/FooterTips/index.js +1 -1
- package/dist/views/MainView/toolFooter/Pagination.js +1 -0
- package/dist/views/MainView/toolFooter/index.js +1 -1
- package/dist/views/MainView/toolHeader/headerOption/index.js +1 -1
- package/dist/views/MainView/toolHeader/index.js +1 -1
- package/es/App.js +1 -1
- package/es/App.js.map +1 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_back_kj.svg.js +1 -0
- package/es/assets/annotation/toolHotKeyIcon/icon_back_kj.svg.js.map +1 -0
- package/es/assets/annotation/toolHotKeyIcon/icon_forward_kj.svg.js +1 -0
- package/es/assets/annotation/toolHotKeyIcon/icon_forward_kj.svg.js.map +1 -0
- package/es/assets/annotation/toolHotKeyIcon/icon_playPause.svg.js +1 -0
- package/es/assets/annotation/toolHotKeyIcon/icon_playPause.svg.js.map +1 -0
- package/es/assets/annotation/toolHotKeyIcon/icon_polygonMerge_kj.svg.js +1 -0
- package/es/assets/annotation/toolHotKeyIcon/icon_polygonMerge_kj.svg.js.map +1 -0
- package/es/assets/annotation/toolHotKeyIcon/icon_segment.svg.js +1 -0
- package/es/assets/annotation/toolHotKeyIcon/icon_segment.svg.js.map +1 -0
- package/es/assets/annotation/toolHotKeyIcon/icon_speed_kj.svg.js +1 -0
- package/es/assets/annotation/toolHotKeyIcon/icon_speed_kj.svg.js.map +1 -0
- package/es/assets/annotation/video/icon_keyboard_h.svg.js +1 -0
- package/es/assets/annotation/video/icon_keyboard_h.svg.js.map +1 -0
- package/es/components/AnnotationView/index.js.map +1 -1
- package/es/components/ImageError/index.js +53 -1
- package/es/components/ImageError/index.js.map +1 -1
- package/es/components/annotationStepPopover/index.js.map +1 -1
- package/es/components/attributeList/index.js.map +1 -1
- package/es/components/checkboxList/index.js.map +1 -1
- package/es/components/colorTag/index.js.map +1 -1
- package/es/components/customAntd/IconWithText/index.js.map +1 -1
- package/es/components/customResizeHook/index.js.map +1 -1
- package/es/components/fileException/FileError.js +1 -0
- package/es/components/fileException/FileError.js.map +1 -0
- package/es/components/fileException/FileInvalid.js +1 -0
- package/es/components/fileException/FileInvalid.js.map +1 -0
- package/es/components/fileException/index.js +1 -0
- package/es/components/fileException/index.js.map +1 -0
- package/es/components/videoAnnotate/index.js +1 -0
- package/es/components/videoAnnotate/index.js.map +1 -0
- package/es/components/videoPlayer/TagToolInstanceAdaptor.js +1 -0
- package/es/components/videoPlayer/TagToolInstanceAdaptor.js.map +1 -0
- package/es/components/videoPlayer/TagToolInstanceAdaptorI18nProvider.js +1 -0
- package/es/components/videoPlayer/TagToolInstanceAdaptorI18nProvider.js.map +1 -0
- package/es/components/videoPlayer/VideoTagLayer.js +1 -0
- package/es/components/videoPlayer/VideoTagLayer.js.map +1 -0
- package/es/components/videoPlayer/components/controller/index.js +1 -0
- package/es/components/videoPlayer/components/controller/index.js.map +1 -0
- package/es/components/videoPlayer/index.js +1 -0
- package/es/components/videoPlayer/index.js.map +1 -0
- package/es/components/videoPlayer/utils.js +1 -0
- package/es/components/videoPlayer/utils.js.map +1 -0
- package/es/configureStore.js.map +1 -1
- package/es/constant/index.js.map +1 -1
- package/es/constant/styleString.js.map +1 -1
- package/es/data/Style.js.map +1 -1
- package/es/data/enums/AnnotationSize.js.map +1 -1
- package/es/data/enums/ToolType.js.map +1 -1
- package/es/hooks/useRafState.js.map +1 -1
- package/es/hooks/useSafeSate.js.map +1 -1
- package/es/hooks/useSize.js.map +1 -1
- package/es/hooks/useUnmountedRef.js.map +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/store/Actions.js +1 -1
- package/es/store/Actions.js.map +1 -1
- package/es/store/annotation/actionCreators.js +1 -1
- package/es/store/annotation/actionCreators.js.map +1 -1
- package/es/store/annotation/reducer.js +1 -1
- package/es/store/annotation/reducer.js.map +1 -1
- package/es/store/imgAttribute/actionCreators.js.map +1 -1
- package/es/store/imgAttribute/reducer.js.map +1 -1
- package/es/store/index.js.map +1 -1
- package/es/store/toolStyle/actionCreators.js.map +1 -1
- package/es/store/toolStyle/reducer.js.map +1 -1
- package/es/utils/AnnotationDataUtils.js.map +1 -1
- package/es/utils/ConfigUtils.js.map +1 -1
- package/es/utils/PageOperator.js.map +1 -1
- package/es/utils/StepUtils.js +1 -1
- package/es/utils/StepUtils.js.map +1 -1
- package/es/utils/TextUtils.js +1 -1
- package/es/utils/TextUtils.js.map +1 -1
- package/es/utils/ToolStyleUtils.js.map +1 -1
- package/es/utils/data.js.map +1 -1
- package/es/utils/dom.js +1 -1
- package/es/utils/dom.js.map +1 -1
- package/es/utils/index.js +1 -1
- package/es/utils/index.js.map +1 -1
- package/es/views/MainView/annotationOperation/index.js +1 -1
- package/es/views/MainView/annotationOperation/index.js.map +1 -1
- package/es/views/MainView/annotationTips/index.js +1 -0
- package/es/views/MainView/annotationTips/index.js.map +1 -0
- package/es/views/MainView/index.js +1 -1
- package/es/views/MainView/index.js.map +1 -1
- package/es/views/MainView/sidebar/AnnotationText/index.js.map +1 -1
- package/es/views/MainView/sidebar/ClearIcon/index.js.map +1 -1
- package/es/views/MainView/sidebar/GeneralOperation/index.js +1 -1
- package/es/views/MainView/sidebar/GeneralOperation/index.js.map +1 -1
- package/es/views/MainView/sidebar/ImgAttributeInfo/index.js.map +1 -1
- package/es/views/MainView/sidebar/SwitchAttributeList/index.js.map +1 -1
- package/es/views/MainView/sidebar/TagSidebar/index.js +1 -1
- package/es/views/MainView/sidebar/TagSidebar/index.js.map +1 -1
- package/es/views/MainView/sidebar/TextAreaFormat/index.js.map +1 -1
- package/es/views/MainView/sidebar/TextToolSidebar/index.js.map +1 -1
- package/es/views/MainView/sidebar/ToolStyle/index.js.map +1 -1
- package/es/views/MainView/sidebar/index.js +1 -1
- package/es/views/MainView/sidebar/index.js.map +1 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/common/index.js +1 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/common/index.js.map +1 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/index.js +1 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/index.js.map +1 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/line/index.js.map +1 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/point/index.js.map +1 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/polygon/index.js +1 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/polygon/index.js.map +1 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/rectToolShortCutTable/index.js.map +1 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/tag/index.js.map +1 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/text/index.js.map +1 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/videoTag/index.js +1 -0
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/videoTag/index.js.map +1 -0
- package/es/views/MainView/toolFooter/FooterTips/index.js +1 -1
- package/es/views/MainView/toolFooter/FooterTips/index.js.map +1 -1
- package/es/views/MainView/toolFooter/HiddenTips/index.js.map +1 -1
- package/es/views/MainView/toolFooter/PageNumber/index.js.map +1 -1
- package/es/views/MainView/toolFooter/Pagination.js +1 -0
- package/es/views/MainView/toolFooter/Pagination.js.map +1 -0
- package/es/views/MainView/toolFooter/ZoomController/ZoomLevel/index.js.map +1 -1
- package/es/views/MainView/toolFooter/ZoomController/index.js.map +1 -1
- package/es/views/MainView/toolFooter/index.js +1 -1
- package/es/views/MainView/toolFooter/index.js.map +1 -1
- package/es/views/MainView/toolHeader/ExportData/index.js.map +1 -1
- package/es/views/MainView/toolHeader/StepSwitch/index.js.map +1 -1
- package/es/views/MainView/toolHeader/headerOption/index.js +1 -1
- package/es/views/MainView/toolHeader/headerOption/index.js.map +1 -1
- package/es/views/MainView/toolHeader/index.js +1 -1
- package/es/views/MainView/toolHeader/index.js.map +1 -1
- package/package.json +12 -10
- package/dist/components/ImageError/index.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/views/MainView/annotationOperation/index.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/views/MainView/annotationOperation/index.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { message } from 'antd/es';\nimport { AppState } from 'src/store';\nimport { connect } from 'react-redux';\nimport { ImgAttributeState } from 'src/store/imgAttribute/types';\nimport _ from 'lodash';\nimport { store } from '@/index';\n\nimport useSize from '@/hooks/useSize';\nimport { InitToolStyleConfig } from '@/store/toolStyle/actionCreators';\nimport { AnnotationEngine, ImgUtils } from '@labelbee/lb-annotation';\nimport FileError from '@/components/fileException/FileError';\nimport { i18n } from '@labelbee/lb-utils';\nimport { AppProps } from '@/App';\n\ninterface IProps extends AppState, AppProps {\n imgAttribute: ImgAttributeState;\n imgIndex: number;\n annotationEngine: AnnotationEngine;\n loading: boolean;\n}\n\nconst AnnotationOperation: React.FC<IProps> = (props: IProps) => {\n const [, forceRender] = useState<number>(0);\n\n const {\n imgAttribute,\n toolStyle,\n toolInstance,\n annotationEngine,\n imgList,\n imgIndex,\n dataInjectionAtCreation,\n renderEnhance,\n } = props;\n const annotationRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n // const windowSize = useContext(viewportContext);\n // const canvasSize = getFormatSize(windowSize);\n const size = useSize(annotationRef);\n\n useEffect(() => {\n store.dispatch(InitToolStyleConfig());\n }, []);\n\n useEffect(() => {\n if (!annotationEngine) {\n return;\n }\n\n // 更改 toolInstance 内部国际化语言\n switch (i18n.language) {\n case 'cn':\n case 'en':\n annotationEngine.setLang(i18n.language);\n break;\n default: {\n //\n break;\n }\n }\n annotationEngine?.setDataInjectionAtCreation(dataInjectionAtCreation);\n annotationEngine?.setRenderEnhance(renderEnhance);\n }, [annotationEngine, dataInjectionAtCreation, renderEnhance]);\n\n useEffect(() => {\n if (toolInstance) {\n toolInstance.singleOn('messageError', (error: string) => {\n message.error(error);\n });\n\n toolInstance.singleOn('messageInfo', (info: string) => {\n message.info(info);\n });\n\n toolInstance.singleOn('changeAnnotationShow', () => {\n forceRender((s) => s + 1);\n });\n }\n }, [toolInstance]);\n\n useEffect(() => {\n if (toolInstance) {\n toolInstance.setImgAttribute(imgAttribute);\n }\n }, [imgAttribute]);\n\n /** 样式同步 */\n useEffect(() => {\n if (toolInstance) {\n toolInstance.setStyle(toolStyle);\n }\n if (annotationEngine) {\n annotationEngine.setStyle(toolStyle);\n }\n }, [toolStyle]);\n\n /** 窗口大小监听 */\n useEffect(() => {\n if (toolInstance?.setSize) {\n toolInstance.setSize(size);\n }\n\n if (annotationEngine) {\n annotationEngine.setSize(size);\n }\n }, [size]);\n\n /**\n * 重新加载图片,避免网络问题导致的图片无法加载\n * @returns\n */\n const reloadImg = () => {\n const imgInfo = imgList?.[imgIndex];\n if (!imgInfo?.url) {\n return;\n }\n\n ImgUtils.load(imgInfo.url).then((imgNode) => {\n annotationEngine.setImgNode(imgNode as HTMLImageElement);\n });\n };\n\n return (\n <div ref={annotationRef} className='annotationOperation'>\n <div className='canvas' ref={containerRef} style={size} id='toolContainer' />\n {toolInstance?.isImgError === true && (\n <FileError\n {...size}\n reloadImage={reloadImg}\n backgroundColor='#e2e2e2'\n ignoreOffsetY={true}\n />\n )}\n </div>\n );\n};\n\nconst mapStateToProps = (state: AppState) => {\n const annotationState = _.pickBy(state.annotation, (v, k) =>\n [\n 'imgList',\n 'imgIndex',\n 'stepList',\n 'step',\n 'toolInstance',\n 'annotationEngine',\n 'loading',\n ].includes(k),\n );\n return {\n imgAttribute: state.imgAttribute,\n toolStyle: state.toolStyle,\n ...annotationState,\n };\n};\n\nexport default connect(mapStateToProps)(AnnotationOperation);\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import e from"react";import{Tooltip as a}from"antd";import{prefix as n}from"../../../constant/index.js";const r=({tips:t})=>t?e.createElement("div",{className:`${n}-tips`},e.createElement("div",{className:""},e.createElement(a,{placement:"bottomRight",title:t},e.createElement("span",{className:""},t)))):null;export{r as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/views/MainView/annotationTips/index.tsx"],"sourcesContent":["/*\n * Annotation Tips Showing\n * @Author: Laoluo luozefeng@sensetime.com\n * @Date: 2022-05-11 17:15:30\n * @LastEditors: Laoluo luozefeng@sensetime.com\n * @LastEditTime: 2022-05-12 19:34:32\n */\nimport React from 'react';\nimport { Tooltip } from 'antd';\nimport { prefix } from '@/constant';\n\ninterface IProps {\n tips: string;\n}\n\nconst AnnotationTips = ({ tips }: IProps) => {\n if (!tips) {\n return null;\n }\n\n return (\n <div className={`${prefix}-tips`}>\n <div className=''>\n <Tooltip placement='bottomRight' title={tips}>\n <span className=''>{tips}</span>\n </Tooltip>\n </div>\n </div>\n );\n};\n\nexport default AnnotationTips;\n"],"names":[],"mappings":";;;;AAeM,MAAA,cAAA,GAAiB,CAAC,CAAE,IAAmB,CAAA,KAAA;AAC3C,EAAA,IAAI,CAAC,IAAM,EAAA;AACT,IAAO,OAAA,IAAA,CAAA;AAAA,GAAA;AAGT,EAAA,2CACG,KAAD,EAAA;AAAA,IAAK,WAAW,CAAG,EAAA,MAAA,CAAA,KAAA,CAAA;AAAA,GAAA,sCAChB,KAAD,EAAA;AAAA,IAAK,SAAU,EAAA,EAAA;AAAA,GAAA,sCACZ,OAAD,EAAA;AAAA,IAAS,SAAU,EAAA,aAAA;AAAA,IAAc,KAAO,EAAA,IAAA;AAAA,GAAA,sCACrC,MAAD,EAAA;AAAA,IAAM,SAAU,EAAA,EAAA;AAAA,GAAI,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import{ViewportProvider as f}from"../../components/customResizeHook/index.js";import{prefix as v}from"../../constant/index.js";import{Spin as _}from"antd";import{Layout as c}from"antd/es";import n from"react";import E from"./annotationOperation/index.js";import y from"./annotationTips/index.js";import g from"./sidebar/index.js";import h from"./toolFooter/index.js";import x from"./toolHeader/index.js";import{getStepConfig as j}from"../../store/annotation/reducer.js";import{cTool as O}from"@labelbee/lb-annotation";import T from"../../components/videoAnnotate/index.js";import{connect as b}from"react-redux";var w=Object.defineProperty,s=Object.getOwnPropertySymbols,N=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable,u=(e,t,o)=>t in e?w(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,l=(e,t)=>{for(var o in t||(t={}))N.call(t,o)&&u(e,o,t[o]);if(s)for(var o of s(t))P.call(t,o)&&u(e,o,t[o]);return e};const{EVideoToolName:S}=O,{Sider:V,Content:p}=c,i=`${v}-layout`,A=e=>{var t;return n.createElement(n.Fragment,null,e.showTips===!0&&n.createElement(y,{tips:e.path}),n.createElement(E,l({},e)),n.createElement(h,{style:(t=e.style)==null?void 0:t.footer,mode:e.mode,footer:e==null?void 0:e.footer}))},$=e=>{var t;const{stepList:o,step:r}=e,m=(t=j(o,r))==null?void 0:t.tool;return Object.values(S).includes(m)?n.createElement(T,l({},e)):n.createElement(A,l({},e))},I=e=>{var t,o,r;return n.createElement(f,null,n.createElement(_,{spinning:e.loading},n.createElement(c,{className:`${i} ${e.className}`,style:(t=e.style)==null?void 0:t.layout},n.createElement("header",{className:`${i}__header`,style:(o=e.style)==null?void 0:o.header},n.createElement(x,{header:e==null?void 0:e.header,headerName:e.headerName,goBack:e.goBack,exportData:e.exportData})),n.createElement(c,null,e==null?void 0:e.leftSider,n.createElement(p,{className:`${i}__content`},n.createElement($,l({},e))),n.createElement(V,{className:`${i}__side`,width:"auto",style:(r=e.style)==null?void 0:r.sider},n.createElement(g,{sider:e==null?void 0:e.sider}))))))},C=({annotation:e})=>{var t,o,r;const{imgList:m,loading:d}=e,a=(t=m[e.imgIndex])!=null?t:{};return{path:(r=(o=a==null?void 0:a.url)!=null?o:a==null?void 0:a.path)!=null?r:"",loading:d}};var F=b(C)(I);export{F as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/views/MainView/index.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/views/MainView/index.tsx"],"sourcesContent":["import { AppProps } from '@/App';\nimport { ViewportProvider } from '@/components/customResizeHook';\nimport { prefix } from '@/constant';\nimport { Spin } from 'antd';\nimport { Layout } from 'antd/es';\nimport _ from 'lodash';\nimport React from 'react';\nimport AnnotationOperation from './annotationOperation';\nimport AnnotationTips from './annotationTips';\nimport Sidebar from './sidebar';\nimport ToolFooter from './toolFooter';\nimport ToolHeader from './toolHeader';\nimport { getStepConfig } from '@/store/annotation/reducer';\nimport { cTool } from '@labelbee/lb-annotation';\n\nimport VideoAnnotate from '@/components/videoAnnotate';\nimport { AppState } from '@/store';\nimport { connect } from 'react-redux';\n\nconst { EVideoToolName } = cTool;\n\ninterface IProps {\n path: string;\n loading: boolean;\n}\n\nconst { Sider, Content } = Layout;\n\nconst layoutCls = `${prefix}-layout`;\n\nconst ImageAnnotate: React.FC<AppProps & IProps> = (props) => {\n return (\n <>\n {props.showTips === true && <AnnotationTips tips={props.path} />}\n <AnnotationOperation {...props} />\n <ToolFooter style={props.style?.footer} mode={props.mode} footer={props?.footer} />\n </>\n );\n};\n\nconst AnnotatedArea: React.FC<AppProps & IProps> = (props) => {\n const { stepList, step } = props;\n const currentToolName = getStepConfig(stepList, step)?.tool;\n const isVideoTool = Object.values(EVideoToolName).includes(currentToolName);\n if (isVideoTool) {\n return <VideoAnnotate {...props} />;\n }\n\n return <ImageAnnotate {...props} />;\n};\n\nconst MainView: React.FC<AppProps & IProps> = (props) => {\n return (\n <ViewportProvider>\n <Spin spinning={props.loading}>\n <Layout className={`${layoutCls} ${props.className}`} style={props.style?.layout}>\n <header className={`${layoutCls}__header`} style={props.style?.header}>\n <ToolHeader\n header={props?.header}\n headerName={props.headerName}\n goBack={props.goBack}\n exportData={props.exportData}\n />\n </header>\n <Layout>\n {props?.leftSider}\n <Content className={`${layoutCls}__content`}>\n <AnnotatedArea {...props} />\n </Content>\n <Sider className={`${layoutCls}__side`} width='auto' style={props.style?.sider}>\n <Sidebar sider={props?.sider} />\n </Sider>\n </Layout>\n </Layout>\n </Spin>\n </ViewportProvider>\n );\n};\n\nconst mapStateToProps = ({ annotation }: AppState) => {\n const { imgList, loading } = annotation;\n const imgInfo = imgList[annotation.imgIndex] ?? {};\n return {\n path: imgInfo?.url ?? imgInfo?.path ?? '', // 将当前路径的数据注入\n loading,\n };\n};\n\nexport default connect(mapStateToProps)(MainView);\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/AnnotationText/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { message } from 'antd/es';\nimport TextAreaFormat from '@/views/MainView/sidebar/TextAreaFormat';\nimport { TextUtils } from '@/utils/TextUtils';\nimport { AppState } from '@/store';\nimport { GraphToolInstance } from '@/store/annotation/types';\nimport { connect } from 'react-redux';\n\ninterface IProps {\n toolInstance: GraphToolInstance;\n}\n\nconst AnnotationText: React.FC<IProps> = ({ toolInstance }) => {\n const [, forceRender] = useState<number>(0);\n useEffect(() => {\n if (toolInstance) {\n toolInstance.singleOn('selectedChange', () => {\n forceRender((s) => s + 1);\n });\n toolInstance.singleOn('updateTextAttribute', () => {\n // 文本属性的更新\n\n forceRender((s) => s + 1);\n });\n\n toolInstance.singleOn('messageError', (error: string) => {\n message.error(error);\n });\n }\n }, [toolInstance]);\n\n if (!toolInstance) {\n return null;\n }\n\n const { config } = toolInstance;\n\n return (\n <div>\n {toolInstance?.config?.textConfigurable && toolInstance.selectedID && (\n <TextAreaFormat\n onChange={toolInstance.textChange}\n textValue={toolInstance.selectedText}\n checkString={TextUtils.checkString(config?.textCheckType, config?.customFormat)}\n textCheckType={config.textCheckType}\n />\n )}\n </div>\n );\n};\n\nfunction mapStateToProps(state: AppState) {\n return { toolInstance: state.annotation.toolInstance };\n}\n\nexport default connect(mapStateToProps)(AnnotationText);\n"],"names":[],"mappings":";;;;;;AAYA,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/AnnotationText/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { message } from 'antd/es';\nimport TextAreaFormat from '@/views/MainView/sidebar/TextAreaFormat';\nimport { TextUtils } from '@/utils/TextUtils';\nimport { AppState } from '@/store';\nimport { GraphToolInstance } from '@/store/annotation/types';\nimport { connect } from 'react-redux';\n\ninterface IProps {\n toolInstance: GraphToolInstance;\n}\n\nconst AnnotationText: React.FC<IProps> = ({ toolInstance }) => {\n const [, forceRender] = useState<number>(0);\n useEffect(() => {\n if (toolInstance) {\n toolInstance.singleOn('selectedChange', () => {\n forceRender((s) => s + 1);\n });\n toolInstance.singleOn('updateTextAttribute', () => {\n // 文本属性的更新\n\n forceRender((s) => s + 1);\n });\n\n toolInstance.singleOn('messageError', (error: string) => {\n message.error(error);\n });\n }\n }, [toolInstance]);\n\n if (!toolInstance) {\n return null;\n }\n\n const { config } = toolInstance;\n\n return (\n <div>\n {toolInstance?.config?.textConfigurable && toolInstance.selectedID && (\n <TextAreaFormat\n onChange={toolInstance.textChange}\n textValue={toolInstance.selectedText}\n checkString={TextUtils.checkString(config?.textCheckType, config?.customFormat)}\n textCheckType={config.textCheckType}\n />\n )}\n </div>\n );\n};\n\nfunction mapStateToProps(state: AppState) {\n return { toolInstance: state.annotation.toolInstance };\n}\n\nexport default connect(mapStateToProps)(AnnotationText);\n"],"names":[],"mappings":";;;;;;AAYA,MAAM,cAAA,GAAmC,CAAC,CAAE,YAAmB,CAAA,KAAA;AAZ/D,EAAA,IAAA,EAAA,CAAA;AAaE,EAAM,MAAA,GAAG,WAAA,CAAA,GAAe,QAAiB,CAAA,CAAA,CAAA,CAAA;AACzC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAc,EAAA;AAChB,MAAa,YAAA,CAAA,QAAA,CAAS,kBAAkB,MAAM;AAC5C,QAAY,WAAA,CAAA,CAAC,MAAM,CAAI,GAAA,CAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA;AAEzB,MAAa,YAAA,CAAA,QAAA,CAAS,uBAAuB,MAAM;AAGjD,QAAY,WAAA,CAAA,CAAC,MAAM,CAAI,GAAA,CAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA;AAGzB,MAAa,YAAA,CAAA,QAAA,CAAS,cAAgB,EAAA,CAAC,KAAkB,KAAA;AACvD,QAAA,OAAA,CAAQ,KAAM,CAAA,KAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,EAGjB,CAAC,YAAA,CAAA,CAAA,CAAA;AAEJ,EAAA,IAAI,CAAC,YAAc,EAAA;AACjB,IAAO,OAAA,IAAA,CAAA;AAAA,GAAA;AAGT,EAAA,MAAM,CAAE,MAAW,CAAA,GAAA,YAAA,CAAA;AAEnB,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA,IAAA,EACG,CAAc,CAAA,EAAA,GAAA,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAA,MAAA,KAAd,mBAAsB,gBAAoB,KAAA,YAAA,CAAa,UACtD,oBAAA,KAAA,CAAA,aAAA,CAAC,cAAD,EAAA;AAAA,IACE,UAAU,YAAa,CAAA,UAAA;AAAA,IACvB,WAAW,YAAa,CAAA,YAAA;AAAA,IACxB,WAAa,EAAA,SAAA,CAAU,WAAY,CAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,eAAe,MAAQ,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,YAAA,CAAA;AAAA,IAClE,eAAe,MAAO,CAAA,aAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAOhC,SAAA,eAAA,CAAyB,KAAiB,EAAA;AACxC,EAAO,OAAA,CAAE,YAAc,EAAA,KAAA,CAAM,UAAW,CAAA,YAAA,CAAA,CAAA;AAAA,CAAA;AAG1C,uBAAe,QAAQ,eAAiB,CAAA,CAAA,cAAA,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/ClearIcon/index.tsx"],"sourcesContent":["import { Tooltip } from 'antd/es';\nimport React, { useState } from 'react';\n\n// 图片调整的刷子\nimport clearSmall from '@/assets/annotation/common/icon_clearSmall.svg';\n// import clearSmallA from '@//assets/annotation/common/icon_clearSmall_a.svg';\nimport { InitImgAttribute } from '@/store/imgAttribute/actionCreators';\nimport { store } from '@/index';\nimport clearSmallA from '@//assets/annotation/common/icon_clearSmall_a.svg';\nimport { useTranslation } from 'react-i18next';\n\nconst clearIcon = () => {\n const [hoverDelete, setHoverDelete] = useState(false);\n\n const clearAttribute = () => {\n store.dispatch(InitImgAttribute());\n };\n const { t } = useTranslation();\n\n return (\n <Tooltip placement='bottom' title={t('RestoreImageAttributes')}>\n <img\n onMouseEnter={() => setHoverDelete(true)}\n onMouseLeave={() => setHoverDelete(false)}\n style={{ marginLeft: 6 }}\n src={hoverDelete ? clearSmallA : clearSmall}\n onClick={(e) => {\n e.stopPropagation();\n clearAttribute();\n }}\n />\n </Tooltip>\n );\n};\n\nexport default clearIcon;\n"],"names":["clearSmallA","clearSmall"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/ClearIcon/index.tsx"],"sourcesContent":["import { Tooltip } from 'antd/es';\nimport React, { useState } from 'react';\n\n// 图片调整的刷子\nimport clearSmall from '@/assets/annotation/common/icon_clearSmall.svg';\n// import clearSmallA from '@//assets/annotation/common/icon_clearSmall_a.svg';\nimport { InitImgAttribute } from '@/store/imgAttribute/actionCreators';\nimport { store } from '@/index';\nimport clearSmallA from '@//assets/annotation/common/icon_clearSmall_a.svg';\nimport { useTranslation } from 'react-i18next';\n\nconst clearIcon = () => {\n const [hoverDelete, setHoverDelete] = useState(false);\n\n const clearAttribute = () => {\n store.dispatch(InitImgAttribute());\n };\n const { t } = useTranslation();\n\n return (\n <Tooltip placement='bottom' title={t('RestoreImageAttributes')}>\n <img\n onMouseEnter={() => setHoverDelete(true)}\n onMouseLeave={() => setHoverDelete(false)}\n style={{ marginLeft: 6 }}\n src={hoverDelete ? clearSmallA : clearSmall}\n onClick={(e) => {\n e.stopPropagation();\n clearAttribute();\n }}\n />\n </Tooltip>\n );\n};\n\nexport default clearIcon;\n"],"names":["clearSmallA","clearSmall"],"mappings":";;;;;;;;AAWA,MAAM,YAAY,MAAM;AACtB,EAAM,MAAA,CAAC,WAAa,EAAA,cAAA,CAAA,GAAkB,QAAS,CAAA,KAAA,CAAA,CAAA;AAE/C,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,KAAA,CAAM,QAAS,CAAA,gBAAA,EAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAEjB,EAAA,MAAM,CAAE,CAAM,CAAA,GAAA,cAAA,EAAA,CAAA;AAEd,EAAA,2CACG,OAAD,EAAA;AAAA,IAAS,SAAU,EAAA,QAAA;AAAA,IAAS,OAAO,CAAE,CAAA,wBAAA,CAAA;AAAA,GAAA,sCAClC,KAAD,EAAA;AAAA,IACE,YAAA,EAAc,MAAM,cAAe,CAAA,IAAA,CAAA;AAAA,IACnC,YAAA,EAAc,MAAM,cAAe,CAAA,KAAA,CAAA;AAAA,IACnC,KAAA,EAAO,CAAE,UAAY,EAAA,CAAA,CAAA;AAAA,IACrB,GAAA,EAAK,cAAcA,GAAc,GAAAC,KAAA;AAAA,IACjC,OAAA,EAAS,CAAC,CAAM,KAAA;AACd,MAAE,CAAA,CAAA,eAAA,EAAA,CAAA;AACF,MAAA,cAAA,EAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import n,{useState as
|
|
1
|
+
import n,{useState as g}from"react";import{Col as d,Popconfirm as f}from"antd/es";import y from"../../../../assets/annotation/common/icon_clear.svg.js";import h from"../../../../assets/annotation/common/icon_clear_a.svg.js";import S from"../../../../assets/annotation/common/icon_invalid.svg.js";import _ from"../../../../assets/annotation/common/icon_invalid_a.svg.js";import{StopOutlined as m}from"@ant-design/icons";import{store as k}from"../../../../index.js";import{connect as C}from"react-redux";import E from"../../../../utils/StepUtils.js";import{jsonParser as O}from"../../../../utils/index.js";import{CopyBackWordResult as j}from"../../../../store/annotation/actionCreators.js";import{useTranslation as x}from"react-i18next";var P=Object.defineProperty,c=Object.getOwnPropertySymbols,w=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable,p=(e,t,r)=>t in e?P(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,N=(e,t)=>{for(var r in t||(t={}))w.call(t,r)&&p(e,r,t[r]);if(c)for(var r of c(t))L.call(t,r)&&p(e,r,t[r]);return e};const T=(e,t,r)=>n.createElement("div",{key:t},`${r("ConfirmTo")}${e.slice(0)}\uFF1F`),$=e=>typeof e=="string"?n.createElement("img",{width:23,height:25,src:e}):e,b=({toolInstance:e,stepInfo:t})=>{const[r,i]=g(null),{t:a}=x(),s=[{name:a("ClearLabel"),key:"sureClear",imgSvg:y,hoverSvg:h,onClick:()=>{e==null||e.clearResult()}}],l=O(t==null?void 0:t.config);if((t==null?void 0:t.dataSourceStep)===0){const o={height:"25px",lineHeight:"25px",display:"flex",justifyContent:"center",alignItems:"center"};s.push({name:a(e.valid===!0?"SetAsInvalid":"SetAsValid"),key:"sureQuestion",imgSvg:n.createElement(m,{style:o}),hoverSvg:n.createElement(m,{style:N({color:"#666fff"},o)}),onClick:()=>{e.setValid(!e.valid)}})}(l==null?void 0:l.copyBackwardResult)&&s.unshift({name:a("CopyThePrevious"),key:"sureCopy",imgSvg:S,hoverSvg:_,onClick:()=>{k.dispatch(j())}});const u=Math.floor(24/s.length);return n.createElement("div",{className:"generalOperation"},s.map((o,v)=>n.createElement(d,{span:u,key:v},n.createElement("div",{key:o.key,className:"item",onMouseEnter:()=>{i(o.key)},onMouseLeave:()=>{i(null)}},n.createElement(f,{title:o.key.startsWith("sure")?T(o.name,o.key,a):o.name,disabled:!o.key.startsWith("sure"),placement:"topRight",okText:a("Confirm"),cancelText:a("Cancel"),onConfirm:o.onClick},n.createElement("div",{className:"icon"},$(o.key===r?o.hoverSvg:o.imgSvg)),n.createElement("div",{className:"toolName",style:{color:o.key===r?"#666fff":""}},o.name))))))},R=e=>{var t,r;const i=E.getCurrentStepInfo((t=e.annotation)==null?void 0:t.step,(r=e.annotation)==null?void 0:r.stepList);return{toolInstance:e.annotation.toolInstance,stepInfo:i,imgList:e.annotation.imgList,imgIndex:e.annotation.imgIndex}};var I=C(R)(b);export{I as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/GeneralOperation/index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Col, Popconfirm } from 'antd/es';\nimport clearResultSvg from '@/assets/annotation/common/icon_clear.svg';\nimport clearResultASvg from '@/assets/annotation/common/icon_clear_a.svg';\nimport copyBackStepSvg from '@/assets/annotation/common/icon_invalid.svg';\nimport copyBackStepASvg from '@/assets/annotation/common/icon_invalid_a.svg';\nimport { StopOutlined } from '@ant-design/icons';\nimport { store } from '@/index';\n\nimport { AppState } from '@/store';\nimport { connect } from 'react-redux';\nimport { ToolInstance } from '@/store/annotation/types';\nimport StepUtils from '@/utils/StepUtils';\nimport { IStepInfo } from '@/types/step';\nimport { jsonParser } from '@/utils';\nimport { AnnotationFileList } from '@/types/data';\nimport { CopyBackWordResult } from '@/store/annotation/actionCreators';\nimport { useTranslation } from 'react-i18next';\n\nconst makeSure = (info: string, key: string, t: any) => {\n return <div key={key}>{`${t('ConfirmTo')}${info.slice(0)}?`}</div>;\n};\n\nconst renderImg = (info: Element | string) => {\n if (typeof info === 'string') {\n return <img width={23} height={25} src={info} />;\n }\n return info;\n};\n\ninterface IProps {\n toolInstance: ToolInstance;\n stepInfo: IStepInfo;\n imgList: AnnotationFileList;\n imgIndex: number;\n}\n\nconst
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/GeneralOperation/index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Col, Popconfirm } from 'antd/es';\nimport clearResultSvg from '@/assets/annotation/common/icon_clear.svg';\nimport clearResultASvg from '@/assets/annotation/common/icon_clear_a.svg';\nimport copyBackStepSvg from '@/assets/annotation/common/icon_invalid.svg';\nimport copyBackStepASvg from '@/assets/annotation/common/icon_invalid_a.svg';\nimport { StopOutlined } from '@ant-design/icons';\nimport { store } from '@/index';\n\nimport { AppState } from '@/store';\nimport { connect } from 'react-redux';\nimport { ToolInstance } from '@/store/annotation/types';\nimport StepUtils from '@/utils/StepUtils';\nimport { IStepInfo } from '@/types/step';\nimport { jsonParser } from '@/utils';\nimport { AnnotationFileList } from '@/types/data';\nimport { CopyBackWordResult } from '@/store/annotation/actionCreators';\nimport { useTranslation } from 'react-i18next';\n\nconst makeSure = (info: string, key: string, t: any) => {\n return <div key={key}>{`${t('ConfirmTo')}${info.slice(0)}?`}</div>;\n};\n\nconst renderImg = (info: Element | string) => {\n if (typeof info === 'string') {\n return <img width={23} height={25} src={info} />;\n }\n return info;\n};\n\ninterface IProps {\n toolInstance: ToolInstance;\n stepInfo: IStepInfo;\n imgList: AnnotationFileList;\n imgIndex: number;\n}\n\nconst GeneralOperation: React.FC<IProps> = ({ toolInstance, stepInfo }) => {\n const [isHover, setHover] = useState<string | null>(null);\n const { t } = useTranslation();\n const allOperation = [\n {\n name: t('ClearLabel'),\n key: 'sureClear',\n imgSvg: clearResultSvg,\n hoverSvg: clearResultASvg,\n onClick: () => {\n toolInstance?.clearResult();\n },\n },\n ];\n\n const config = jsonParser(stepInfo?.config);\n if (stepInfo?.dataSourceStep === 0) {\n const iconStyle = {\n height: '25px',\n lineHeight: '25px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n };\n allOperation.push({\n name: t(toolInstance.valid === true ? 'SetAsInvalid' : 'SetAsValid'),\n key: 'sureQuestion',\n imgSvg: <StopOutlined style={iconStyle} />,\n hoverSvg: <StopOutlined style={{ color: '#666fff', ...iconStyle }} />,\n onClick: () => {\n toolInstance.setValid(!toolInstance.valid);\n },\n });\n }\n\n if (config?.copyBackwardResult) {\n allOperation.unshift({\n name: t('CopyThePrevious'),\n key: 'sureCopy',\n imgSvg: copyBackStepSvg,\n hoverSvg: copyBackStepASvg,\n onClick: () => {\n store.dispatch(CopyBackWordResult());\n },\n });\n }\n\n const annotationLength = Math.floor(24 / allOperation.length);\n\n return (\n <div className='generalOperation'>\n {allOperation.map((info, index) => (\n <Col span={annotationLength} key={index}>\n <div\n key={info.key}\n className='item'\n onMouseEnter={() => {\n setHover(info.key);\n }}\n onMouseLeave={() => {\n setHover(null);\n }}\n >\n <Popconfirm\n title={info.key.startsWith('sure') ? makeSure(info.name, info.key, t) : info.name}\n disabled={!info.key.startsWith('sure')}\n placement='topRight'\n okText={t('Confirm')}\n cancelText={t('Cancel')}\n onConfirm={info.onClick}\n >\n <div className='icon'>\n {renderImg(info.key === isHover ? info.hoverSvg : info.imgSvg)}\n </div>\n <div className='toolName' style={{ color: info.key === isHover ? '#666fff' : '' }}>\n {info.name}\n </div>\n </Popconfirm>\n </div>\n </Col>\n ))}\n </div>\n );\n};\n\nconst mapStateToProps = (state: AppState) => {\n const stepInfo = StepUtils.getCurrentStepInfo(state.annotation?.step, state.annotation?.stepList);\n\n return {\n toolInstance: state.annotation.toolInstance,\n stepInfo,\n imgList: state.annotation.imgList,\n imgIndex: state.annotation.imgIndex,\n };\n};\n\nexport default connect(mapStateToProps)(GeneralOperation);\n"],"names":["clearResultSvg","clearResultASvg","copyBackStepSvg","copyBackStepASvg"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/ImgAttributeInfo/index.tsx"],"sourcesContent":["import { Col, Row, Slider, Switch, Input } from 'antd/es';\nimport { connect } from 'react-redux';\nimport { throttle } from 'lodash';\nimport React, { useEffect } from 'react';\nimport { ImgAttributeState } from '@/store/imgAttribute/types';\nimport ImgAttribute from '@/store/imgAttribute/actionCreators';\nimport { store } from '@/index';\n\nimport saturationSvg from '@/assets/annotation/image/saturation.svg';\nimport contrastSvg from '@/assets/annotation/image/contrast.svg';\nimport brightnessSvg from '@/assets/annotation/image/brightness.svg';\nimport ZoomUpSvg from '@/assets/attributeIcon/zoomUp.svg';\nimport originalPic from '@/assets/annotation/image/icon_yuantu.svg';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n imgAttribute: ImgAttributeState;\n}\n\nconst ImgAttributeInfo = (props: IProps) => {\n const {\n imgAttribute: { contrast, saturation, brightness, zoomRatio, isOriginalSize },\n } = props;\n\n const { t } = useTranslation();\n\n const imgAttributeChange = throttle(\n (payload: Partial<ImgAttributeState>) => {\n store.dispatch(ImgAttribute.UpdateImgAttribute(payload as ImgAttributeState));\n },\n 60,\n { trailing: true },\n );\n\n const imgAttributeInfo = [\n {\n name: 'Saturation',\n min: -100,\n max: 500,\n step: 2,\n onChange: (v: number) => imgAttributeChange({ saturation: v }),\n value: saturation,\n svg: saturationSvg,\n },\n {\n name: 'Contrast',\n min: -100,\n max: 300,\n step: 2,\n onChange: (v: number) => imgAttributeChange({ contrast: v }),\n value: contrast,\n svg: contrastSvg,\n },\n {\n name: 'Exposure',\n min: -100,\n max: 400,\n step: 2,\n onChange: (v: number) => imgAttributeChange({ brightness: v }),\n value: brightness,\n svg: brightnessSvg,\n },\n {\n name: 'ScreenRatio',\n min: 0.1,\n max: 10,\n step: 0.1,\n onChange: (v: number) => imgAttributeChange({ zoomRatio: v }),\n value: zoomRatio,\n svg: ZoomUpSvg,\n },\n ];\n\n useEffect(() => {\n return () => {\n store.dispatch(ImgAttribute.InitImgAttribute());\n };\n }, []);\n\n return (\n <div>\n {imgAttributeInfo.map((info: any, index: number) => (\n <div className='imgAttributeController' key={`option_${index}`}>\n <Row className='tools' style={{ padding: '0px 0' }}>\n <Col span={24}>\n <span className='singleTool'>\n <img width={12} height={12} src={info.svg} />\n <span className='toolName'>{t(info.name)}</span>\n </span>\n </Col>\n </Row>\n <Row>\n <Col span={20}>\n <Slider\n min={info.min}\n max={info.max}\n step={info.step}\n value={info.value}\n onChange={info.onChange}\n trackStyle={{ background: '#666fff' }}\n />\n </Col>\n <Col span={4}>\n <Input\n value={info.value}\n disabled\n style={{\n fontSize: 12,\n marginBottom: 23,\n padding: '0px 2px',\n textAlign: 'center',\n }}\n />\n </Col>\n </Row>\n </div>\n ))}\n <div className='imgAttributeController'>\n <Row className='tools' style={{ padding: '10px 0' }}>\n <Col span={18}>\n <span className='singleTool'>\n <img src={originalPic} width={16} style={{ marginTop: '-2px' }} />\n <span className='toolName'>{t('OriginalScale')}</span>\n </span>\n </Col>\n <Col>\n <Switch\n checked={isOriginalSize}\n onChange={(v: boolean) => imgAttributeChange({ isOriginalSize: v })}\n />\n </Col>\n </Row>\n </div>\n </div>\n );\n};\n\nfunction mapStateToProps({ imgAttribute }: any) {\n return { imgAttribute };\n}\n\nexport default connect(mapStateToProps)(ImgAttributeInfo);\n"],"names":["saturationSvg","contrastSvg","brightnessSvg","ZoomUpSvg","originalPic"],"mappings":";;;;;;;;;;;;;AAmBA,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/ImgAttributeInfo/index.tsx"],"sourcesContent":["import { Col, Row, Slider, Switch, Input } from 'antd/es';\nimport { connect } from 'react-redux';\nimport { throttle } from 'lodash';\nimport React, { useEffect } from 'react';\nimport { ImgAttributeState } from '@/store/imgAttribute/types';\nimport ImgAttribute from '@/store/imgAttribute/actionCreators';\nimport { store } from '@/index';\n\nimport saturationSvg from '@/assets/annotation/image/saturation.svg';\nimport contrastSvg from '@/assets/annotation/image/contrast.svg';\nimport brightnessSvg from '@/assets/annotation/image/brightness.svg';\nimport ZoomUpSvg from '@/assets/attributeIcon/zoomUp.svg';\nimport originalPic from '@/assets/annotation/image/icon_yuantu.svg';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n imgAttribute: ImgAttributeState;\n}\n\nconst ImgAttributeInfo = (props: IProps) => {\n const {\n imgAttribute: { contrast, saturation, brightness, zoomRatio, isOriginalSize },\n } = props;\n\n const { t } = useTranslation();\n\n const imgAttributeChange = throttle(\n (payload: Partial<ImgAttributeState>) => {\n store.dispatch(ImgAttribute.UpdateImgAttribute(payload as ImgAttributeState));\n },\n 60,\n { trailing: true },\n );\n\n const imgAttributeInfo = [\n {\n name: 'Saturation',\n min: -100,\n max: 500,\n step: 2,\n onChange: (v: number) => imgAttributeChange({ saturation: v }),\n value: saturation,\n svg: saturationSvg,\n },\n {\n name: 'Contrast',\n min: -100,\n max: 300,\n step: 2,\n onChange: (v: number) => imgAttributeChange({ contrast: v }),\n value: contrast,\n svg: contrastSvg,\n },\n {\n name: 'Exposure',\n min: -100,\n max: 400,\n step: 2,\n onChange: (v: number) => imgAttributeChange({ brightness: v }),\n value: brightness,\n svg: brightnessSvg,\n },\n {\n name: 'ScreenRatio',\n min: 0.1,\n max: 10,\n step: 0.1,\n onChange: (v: number) => imgAttributeChange({ zoomRatio: v }),\n value: zoomRatio,\n svg: ZoomUpSvg,\n },\n ];\n\n useEffect(() => {\n return () => {\n store.dispatch(ImgAttribute.InitImgAttribute());\n };\n }, []);\n\n return (\n <div>\n {imgAttributeInfo.map((info: any, index: number) => (\n <div className='imgAttributeController' key={`option_${index}`}>\n <Row className='tools' style={{ padding: '0px 0' }}>\n <Col span={24}>\n <span className='singleTool'>\n <img width={12} height={12} src={info.svg} />\n <span className='toolName'>{t(info.name)}</span>\n </span>\n </Col>\n </Row>\n <Row>\n <Col span={20}>\n <Slider\n min={info.min}\n max={info.max}\n step={info.step}\n value={info.value}\n onChange={info.onChange}\n trackStyle={{ background: '#666fff' }}\n />\n </Col>\n <Col span={4}>\n <Input\n value={info.value}\n disabled\n style={{\n fontSize: 12,\n marginBottom: 23,\n padding: '0px 2px',\n textAlign: 'center',\n }}\n />\n </Col>\n </Row>\n </div>\n ))}\n <div className='imgAttributeController'>\n <Row className='tools' style={{ padding: '10px 0' }}>\n <Col span={18}>\n <span className='singleTool'>\n <img src={originalPic} width={16} style={{ marginTop: '-2px' }} />\n <span className='toolName'>{t('OriginalScale')}</span>\n </span>\n </Col>\n <Col>\n <Switch\n checked={isOriginalSize}\n onChange={(v: boolean) => imgAttributeChange({ isOriginalSize: v })}\n />\n </Col>\n </Row>\n </div>\n </div>\n );\n};\n\nfunction mapStateToProps({ imgAttribute }: any) {\n return { imgAttribute };\n}\n\nexport default connect(mapStateToProps)(ImgAttributeInfo);\n"],"names":["saturationSvg","contrastSvg","brightnessSvg","ZoomUpSvg","originalPic"],"mappings":";;;;;;;;;;;;;AAmBA,MAAM,gBAAA,GAAmB,CAAC,KAAkB,KAAA;AAC1C,EAAM,MAAA;AAAA,IACJ,YAAc,EAAA,CAAE,QAAU,EAAA,UAAA,EAAY,YAAY,SAAW,EAAA,cAAA,CAAA;AAAA,GAC3D,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,CAAE,CAAM,CAAA,GAAA,cAAA,EAAA,CAAA;AAEd,EAAM,MAAA,kBAAA,GAAqB,QACzB,CAAA,CAAC,OAAwC,KAAA;AACvC,IAAM,KAAA,CAAA,QAAA,CAAS,aAAa,kBAAmB,CAAA,OAAA,CAAA,CAAA,CAAA;AAAA,GAEjD,EAAA,EAAA,EACA,CAAE,QAAU,EAAA,IAAA,CAAA,CAAA,CAAA;AAGd,EAAA,MAAM,gBAAmB,GAAA;AAAA,IACvB;AAAA,MACE,IAAM,EAAA,YAAA;AAAA,MACN,GAAK,EAAA,CAAA,GAAA;AAAA,MACL,GAAK,EAAA,GAAA;AAAA,MACL,IAAM,EAAA,CAAA;AAAA,MACN,QAAU,EAAA,CAAC,CAAc,KAAA,kBAAA,CAAmB,CAAE,UAAY,EAAA,CAAA,CAAA,CAAA;AAAA,MAC1D,KAAO,EAAA,UAAA;AAAA,MACP,GAAK,EAAAA,KAAA;AAAA,KAAA;AAAA,IAEP;AAAA,MACE,IAAM,EAAA,UAAA;AAAA,MACN,GAAK,EAAA,CAAA,GAAA;AAAA,MACL,GAAK,EAAA,GAAA;AAAA,MACL,IAAM,EAAA,CAAA;AAAA,MACN,QAAU,EAAA,CAAC,CAAc,KAAA,kBAAA,CAAmB,CAAE,QAAU,EAAA,CAAA,CAAA,CAAA;AAAA,MACxD,KAAO,EAAA,QAAA;AAAA,MACP,GAAK,EAAAC,KAAA;AAAA,KAAA;AAAA,IAEP;AAAA,MACE,IAAM,EAAA,UAAA;AAAA,MACN,GAAK,EAAA,CAAA,GAAA;AAAA,MACL,GAAK,EAAA,GAAA;AAAA,MACL,IAAM,EAAA,CAAA;AAAA,MACN,QAAU,EAAA,CAAC,CAAc,KAAA,kBAAA,CAAmB,CAAE,UAAY,EAAA,CAAA,CAAA,CAAA;AAAA,MAC1D,KAAO,EAAA,UAAA;AAAA,MACP,GAAK,EAAAC,KAAA;AAAA,KAAA;AAAA,IAEP;AAAA,MACE,IAAM,EAAA,aAAA;AAAA,MACN,GAAK,EAAA,GAAA;AAAA,MACL,GAAK,EAAA,EAAA;AAAA,MACL,IAAM,EAAA,GAAA;AAAA,MACN,QAAU,EAAA,CAAC,CAAc,KAAA,kBAAA,CAAmB,CAAE,SAAW,EAAA,CAAA,CAAA,CAAA;AAAA,MACzD,KAAO,EAAA,SAAA;AAAA,MACP,GAAK,EAAAC,KAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AAIT,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAO,MAAM;AACX,MAAA,KAAA,CAAM,SAAS,YAAa,CAAA,gBAAA,EAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAE7B,EAAA,EAAA,CAAA,CAAA;AAEH,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,OAAD,IACG,EAAA,gBAAA,CAAiB,IAAI,CAAC,IAAA,EAAW,KAChC,qBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA;AAAA,IAAK,SAAU,EAAA,wBAAA;AAAA,IAAyB,KAAK,CAAU,OAAA,EAAA,KAAA,CAAA,CAAA;AAAA,GAAA,sCACpD,GAAD,EAAA;AAAA,IAAK,SAAU,EAAA,OAAA;AAAA,IAAQ,KAAA,EAAO,CAAE,OAAS,EAAA,OAAA,CAAA;AAAA,GAAA,sCACtC,GAAD,EAAA;AAAA,IAAK,IAAM,EAAA,EAAA;AAAA,GAAA,sCACR,MAAD,EAAA;AAAA,IAAM,SAAU,EAAA,YAAA;AAAA,GAAA,sCACb,KAAD,EAAA;AAAA,IAAK,KAAO,EAAA,EAAA;AAAA,IAAI,MAAQ,EAAA,EAAA;AAAA,IAAI,KAAK,IAAK,CAAA,GAAA;AAAA,GAAA,CAAA,sCACrC,MAAD,EAAA;AAAA,IAAM,SAAU,EAAA,UAAA;AAAA,GAAA,EAAY,EAAE,IAAK,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,sCAIxC,GAAD,EAAA,IAAA,sCACG,GAAD,EAAA;AAAA,IAAK,IAAM,EAAA,EAAA;AAAA,GAAA,sCACR,MAAD,EAAA;AAAA,IACE,KAAK,IAAK,CAAA,GAAA;AAAA,IACV,KAAK,IAAK,CAAA,GAAA;AAAA,IACV,MAAM,IAAK,CAAA,IAAA;AAAA,IACX,OAAO,IAAK,CAAA,KAAA;AAAA,IACZ,UAAU,IAAK,CAAA,QAAA;AAAA,IACf,UAAA,EAAY,CAAE,UAAY,EAAA,SAAA,CAAA;AAAA,GAAA,CAAA,CAAA,sCAG7B,GAAD,EAAA;AAAA,IAAK,IAAM,EAAA,CAAA;AAAA,GAAA,sCACR,KAAD,EAAA;AAAA,IACE,OAAO,IAAK,CAAA,KAAA;AAAA,IACZ,QAAQ,EAAA,IAAA;AAAA,IACR,KAAO,EAAA;AAAA,MACL,QAAU,EAAA,EAAA;AAAA,MACV,YAAc,EAAA,EAAA;AAAA,MACd,OAAS,EAAA,SAAA;AAAA,MACT,SAAW,EAAA,QAAA;AAAA,KAAA;AAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,sCAOtB,KAAD,EAAA;AAAA,IAAK,SAAU,EAAA,wBAAA;AAAA,GAAA,sCACZ,GAAD,EAAA;AAAA,IAAK,SAAU,EAAA,OAAA;AAAA,IAAQ,KAAA,EAAO,CAAE,OAAS,EAAA,QAAA,CAAA;AAAA,GAAA,sCACtC,GAAD,EAAA;AAAA,IAAK,IAAM,EAAA,EAAA;AAAA,GAAA,sCACR,MAAD,EAAA;AAAA,IAAM,SAAU,EAAA,YAAA;AAAA,GAAA,sCACb,KAAD,EAAA;AAAA,IAAK,GAAK,EAAAC,GAAA;AAAA,IAAa,KAAO,EAAA,EAAA;AAAA,IAAI,KAAA,EAAO,CAAE,SAAW,EAAA,MAAA,CAAA;AAAA,GAAA,CAAA,sCACrD,MAAD,EAAA;AAAA,IAAM,SAAU,EAAA,UAAA;AAAA,GAAA,EAAY,EAAE,eAGlC,CAAA,CAAA,CAAA,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,GAAD,EAAA,IAAA,sCACG,MAAD,EAAA;AAAA,IACE,OAAS,EAAA,cAAA;AAAA,IACT,QAAU,EAAA,CAAC,CAAe,KAAA,kBAAA,CAAmB,CAAE,cAAgB,EAAA,CAAA,CAAA,CAAA;AAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAS7E,SAAA,eAAA,CAAyB,CAAE,YAAqB,CAAA,EAAA;AAC9C,EAAA,OAAO,CAAE,YAAA,CAAA,CAAA;AAAA,CAAA;AAGX,yBAAe,QAAQ,eAAiB,CAAA,CAAA,gBAAA,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/SwitchAttributeList/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport { connect } from 'react-redux';\nimport { AppState } from 'src/store';\nimport { GraphToolInstance } from 'src/store/annotation/types';\nimport AttributeList from '@/components/attributeList';\nimport StepUtils from '@/utils/StepUtils';\nimport { IStepInfo } from '@/types/step';\nimport { jsonParser } from '@/utils';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n toolInstance: GraphToolInstance;\n stepInfo: IStepInfo;\n}\n\nconst SwitchAttributeList: React.FC<IProps> = (props) => {\n const [_, forceRender] = useState(0);\n const listRef = useRef<HTMLElement>(null);\n const { toolInstance } = props;\n const { t } = useTranslation();\n\n useEffect(() => {\n if (toolInstance) {\n toolInstance.singleOn('changeAttributeSidebar', (index: number) => {\n forceRender((s) => s + 1);\n\n if (!listRef.current) {\n return;\n }\n\n listRef.current.children[index]?.scrollIntoView({ block: 'center' });\n });\n }\n return () => {\n toolInstance.unbindAll('changeAttributeSidebar');\n };\n }, [toolInstance, listRef]);\n\n if (!props.stepInfo) {\n return null;\n }\n\n const config = jsonParser(props.stepInfo.config);\n if (config.attributeConfigurable !== true) {\n return null;\n }\n\n if (toolInstance?.config.attributeConfigurable === true && toolInstance?.config?.attributeList) {\n const list = toolInstance.config.attributeList.map((i: any) => ({\n label: i.key,\n value: i.value,\n }));\n list.unshift({ label: t('NoAttribute'), value: '' });\n const attributeChanged = (v: string) => {\n toolInstance.setDefaultAttribute(v);\n forceRender((s) => s + 1);\n };\n\n return (\n <div>\n <AttributeList\n list={list}\n attributeChanged={attributeChanged}\n selectedAttribute={toolInstance?.defaultAttribute ?? ''}\n ref={listRef}\n />\n </div>\n );\n }\n\n return null;\n};\n\nconst mapStateToProps = (state: AppState) => {\n const stepInfo = StepUtils.getCurrentStepInfo(state.annotation?.step, state.annotation?.stepList);\n\n return {\n toolInstance: state.annotation.toolInstance,\n stepInfo,\n };\n};\n\nexport default connect(mapStateToProps)(SwitchAttributeList);\n"],"names":[],"mappings":";;;;;;;AAeA,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/SwitchAttributeList/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport { connect } from 'react-redux';\nimport { AppState } from 'src/store';\nimport { GraphToolInstance } from 'src/store/annotation/types';\nimport AttributeList from '@/components/attributeList';\nimport StepUtils from '@/utils/StepUtils';\nimport { IStepInfo } from '@/types/step';\nimport { jsonParser } from '@/utils';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n toolInstance: GraphToolInstance;\n stepInfo: IStepInfo;\n}\n\nconst SwitchAttributeList: React.FC<IProps> = (props) => {\n const [_, forceRender] = useState(0);\n const listRef = useRef<HTMLElement>(null);\n const { toolInstance } = props;\n const { t } = useTranslation();\n\n useEffect(() => {\n if (toolInstance) {\n toolInstance.singleOn('changeAttributeSidebar', (index: number) => {\n forceRender((s) => s + 1);\n\n if (!listRef.current) {\n return;\n }\n\n listRef.current.children[index]?.scrollIntoView({ block: 'center' });\n });\n }\n return () => {\n toolInstance.unbindAll('changeAttributeSidebar');\n };\n }, [toolInstance, listRef]);\n\n if (!props.stepInfo) {\n return null;\n }\n\n const config = jsonParser(props.stepInfo.config);\n if (config.attributeConfigurable !== true) {\n return null;\n }\n\n if (toolInstance?.config.attributeConfigurable === true && toolInstance?.config?.attributeList) {\n const list = toolInstance.config.attributeList.map((i: any) => ({\n label: i.key,\n value: i.value,\n }));\n list.unshift({ label: t('NoAttribute'), value: '' });\n const attributeChanged = (v: string) => {\n toolInstance.setDefaultAttribute(v);\n forceRender((s) => s + 1);\n };\n\n return (\n <div>\n <AttributeList\n list={list}\n attributeChanged={attributeChanged}\n selectedAttribute={toolInstance?.defaultAttribute ?? ''}\n ref={listRef}\n />\n </div>\n );\n }\n\n return null;\n};\n\nconst mapStateToProps = (state: AppState) => {\n const stepInfo = StepUtils.getCurrentStepInfo(state.annotation?.step, state.annotation?.stepList);\n\n return {\n toolInstance: state.annotation.toolInstance,\n stepInfo,\n };\n};\n\nexport default connect(mapStateToProps)(SwitchAttributeList);\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import B from"../../../../components/attributeList/index.js";import M from"../../../../components/checkboxList/index.js";import{CaretRightOutlined as P}from"@ant-design/icons";import{Collapse as T,Tooltip as H,Badge as F}from"antd/es";import{cloneDeep as U}from"lodash";import n,{useState as p,useRef as q,useEffect as v,useCallback as z}from"react";import G from"../../../../assets/annotation/common/icon_clearSmall.svg.js";import J from"../../../../assets/annotation/common/icon_clearSmall_a.svg.js";import{TagUtils as Q}from"@labelbee/lb-annotation";import{connect as V}from"react-redux";import{useTranslation as W}from"react-i18next";const{Panel:X}=T,$=({isActive:a})=>n.createElement(P,{rotate:a?90:0}),Y=({toolInstance:a,imgIndex:N})=>{const[o,g]=p([]),i=q(null),[,j]=p(0),[w,f]=p(-1),{t:b}=W();v(()=>{a&&(g(a.config.inputList.map(e=>e.value)),a.singleOn("render",()=>{j(e=>e+1)}))},[a]),v(()=>{if(a&&(a.singleOn("expend",O),a.labelSelectedList.length===1)){let e=0;for(let l=0;l<a.labelSelectedList[0];l++)e+=46,s[l]&&o[l]!==""&&s[l].subSelected.forEach(r=>{e+=40});i.current&&(i.current.children[0].scrollTop=e)}}),v(()=>{i.current&&(i.current.children[0].scrollTop=0)},[N]);const O=()=>{var e;const l=a.labelSelectedList[0],r=(e=s.filter((t,m)=>m===l)[0])==null?void 0:e.value;h(l,r,!0)},h=z((e,l,r)=>{const t=U(o);t[e]===""||r===!0?t[e]=l:t[e]="",g(t)},[o]);if(!a)return null;const{labelSelectedList:c,config:{inputList:s},currentTagResult:u,setLabel:E}=a,A=e=>c.length>0&&c[0]===e?n.createElement("span",{className:"keyDownIconActive"},e+1):n.createElement("span",{className:"keyDownIcon"},e+1),y=(e,l=-1)=>e?e.map((r,t)=>{var m,L,k,_,C;if(r.subSelected){const R=Q.judgeResultIsInInputList(r.value,(m=u==null?void 0:u.result)==null?void 0:m[r.value],s);return n.createElement(T,{bordered:!1,expandIcon:$,key:`collapse_${t}_${l+1}`,onChange:()=>h(t,r.value),activeKey:[o[t]]},n.createElement(X,{header:n.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"}},n.createElement("span",null,r.key,n.createElement(H,{placement:"bottom",title:b("ClearThisOption")},n.createElement("img",{style:{marginLeft:5,cursor:"pointer"},onClick:K=>{K.stopPropagation(),a.clearResult(!0,r.value)},src:w===t||R?J:G,onMouseEnter:()=>{f(t)},onMouseLeave:()=>{f(-1)}})),R&&o[t]===""&&n.createElement(F,{color:"#87d068"})),(s==null?void 0:s.length)>1&&A(t)),key:r.value},n.createElement("div",{className:"level",style:{backgroundColor:c.length>0&&c[0]===t?"rgba(158, 158, 158, 0.18)":""}},y(r.subSelected,t))))}const d=(s==null?void 0:s[l])?s==null?void 0:s[l].value:0,S=((_=(k=(L=u==null?void 0:u.result)==null?void 0:L[d])==null?void 0:k.split(";"))==null?void 0:_.indexOf(r.value))>-1?r.value:"";return((C=s==null?void 0:s[l])==null?void 0:C.isMulti)===!0?n.createElement("div",{className:"singleBar",key:`${d}_${l}_${t}`},n.createElement(M,{attributeChanged:()=>E(l,t),selectedAttribute:[S],list:[{value:r.value,label:r.key}],num:t+1})):n.createElement("div",{className:"singleBar",key:`${d}_${l}_${t}`},n.createElement(B,{forbidColor:!0,attributeChanged:()=>E(l,t),selectedAttribute:S,list:[{value:r.value,label:r.key}],num:t+1}))}):null,D=window.innerHeight-61-80;return n.createElement("div",{className:"tagOperationMenu",ref:i},(s==null?void 0:s.length)===0?n.createElement("div",{style:{padding:20,textAlign:"center"}},b("NoConfiguration")):n.createElement("div",{className:"main",style:{height:D}},y(s)))};function Z(a){return{toolInstance:a.annotation.toolInstance,imgIndex:a.annotation.imgIndex}}var x=V(Z)(Y);export{x as default,$ as expandIconFuc};
|
|
1
|
+
import B from"../../../../components/attributeList/index.js";import M from"../../../../components/checkboxList/index.js";import{CaretRightOutlined as P}from"@ant-design/icons";import{Collapse as T,Tooltip as H,Badge as F}from"antd/es";import{cloneDeep as U}from"lodash";import n,{useState as p,useRef as q,useEffect as v,useCallback as z}from"react";import G from"../../../../assets/annotation/common/icon_clearSmall.svg.js";import J from"../../../../assets/annotation/common/icon_clearSmall_a.svg.js";import{TagUtils as Q}from"@labelbee/lb-annotation";import{connect as V}from"react-redux";import{useTranslation as W}from"react-i18next";const{Panel:X}=T,$=({isActive:a})=>n.createElement(P,{rotate:a?90:0}),Y=({toolInstance:a,imgIndex:N})=>{const[o,g]=p([]),i=q(null),[,j]=p(0),[w,f]=p(-1),{t:b}=W();v(()=>{a&&(g(a.config.inputList.map(e=>e.value)),a.singleOn("render",()=>{j(e=>e+1)}))},[a]),v(()=>{if(a&&(a.singleOn("expend",O),a.labelSelectedList.length===1)){let e=0;for(let l=0;l<a.labelSelectedList[0];l++)e+=46,s[l]&&o[l]!==""&&s[l].subSelected.forEach(r=>{e+=40});i.current&&(i.current.children[0].scrollTop=e)}}),v(()=>{i.current&&(i.current.children[0].scrollTop=0)},[N]);const O=()=>{var e;const l=a.labelSelectedList[0],r=(e=s.filter((t,m)=>m===l)[0])==null?void 0:e.value;h(l,r,!0)},h=z((e,l,r)=>{const t=U(o);t[e]===""||r===!0?t[e]=l:t[e]="",g(t)},[o]);if(!a)return null;const{labelSelectedList:c,config:{inputList:s},currentTagResult:u,setLabel:E}=a,A=e=>c.length>0&&c[0]===e?n.createElement("span",{className:"keyDownIconActive"},e+1):n.createElement("span",{className:"keyDownIcon"},e+1),y=(e,l=-1)=>e?e.map((r,t)=>{var m,L,k,_,C;if(r.subSelected){const R=Q.judgeResultIsInInputList(r.value,(m=u==null?void 0:u.result)==null?void 0:m[r.value],s);return n.createElement(T,{bordered:!1,expandIcon:$,key:`collapse_${t}_${l+1}`,onChange:()=>h(t,r.value),activeKey:[o[t]]},n.createElement(X,{header:n.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",flex:1}},n.createElement("span",null,r.key,n.createElement(H,{placement:"bottom",title:b("ClearThisOption")},n.createElement("img",{style:{marginLeft:5,cursor:"pointer"},onClick:K=>{K.stopPropagation(),a.clearResult(!0,r.value)},src:w===t||R?J:G,onMouseEnter:()=>{f(t)},onMouseLeave:()=>{f(-1)}})),R&&o[t]===""&&n.createElement(F,{color:"#87d068"})),(s==null?void 0:s.length)>1&&A(t)),key:r.value},n.createElement("div",{className:"level",style:{backgroundColor:c.length>0&&c[0]===t?"rgba(158, 158, 158, 0.18)":""}},y(r.subSelected,t))))}const d=(s==null?void 0:s[l])?s==null?void 0:s[l].value:0,S=((_=(k=(L=u==null?void 0:u.result)==null?void 0:L[d])==null?void 0:k.split(";"))==null?void 0:_.indexOf(r.value))>-1?r.value:"";return((C=s==null?void 0:s[l])==null?void 0:C.isMulti)===!0?n.createElement("div",{className:"singleBar",key:`${d}_${l}_${t}`},n.createElement(M,{attributeChanged:()=>E(l,t),selectedAttribute:[S],list:[{value:r.value,label:r.key}],num:t+1})):n.createElement("div",{className:"singleBar",key:`${d}_${l}_${t}`},n.createElement(B,{forbidColor:!0,attributeChanged:()=>E(l,t),selectedAttribute:S,list:[{value:r.value,label:r.key}],num:t+1}))}):null,D=window.innerHeight-61-80;return n.createElement("div",{className:"tagOperationMenu",ref:i},(s==null?void 0:s.length)===0?n.createElement("div",{style:{padding:20,textAlign:"center"}},b("NoConfiguration")):n.createElement("div",{className:"main",style:{height:D}},y(s)))};function Z(a){return{toolInstance:a.annotation.toolInstance,imgIndex:a.annotation.imgIndex}}var x=V(Z)(Y);export{x as default,$ as expandIconFuc};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/TagSidebar/index.tsx"],"sourcesContent":["import RadioList from '@/components/attributeList';\nimport CheckBoxList from '@/components/checkboxList';\nimport { CaretRightOutlined } from '@ant-design/icons';\nimport { Badge, Collapse, Tooltip } from 'antd/es';\nimport { cloneDeep } from 'lodash';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport clearSmall from '@/assets/annotation/common/icon_clearSmall.svg';\nimport clearSmallA from '@/assets/annotation/common/icon_clearSmall_a.svg';\nimport { TagOperation, TagUtils } from '@labelbee/lb-annotation';\nimport { connect } from 'react-redux';\nimport { AppState } from '@/store';\nimport { IInputList } from '@/types/main';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n imgIndex: number;\n toolInstance: TagOperation;\n}\n\nconst { Panel } = Collapse;\n\nexport const expandIconFuc = ({ isActive }: any) => (\n <CaretRightOutlined rotate={isActive ? 90 : 0} />\n);\n\nconst TagSidebar: React.FC<IProps> = ({ toolInstance, imgIndex }) => {\n const [expandKeyList, setExpandKeyList] = useState<string[]>([]);\n\n const sidebarRef = useRef<HTMLDivElement>(null);\n const [, forceRender] = useState<number>(0);\n const [hoverDeleteIndex, setHoverDeleteIndex] = useState(-1);\n const { t } = useTranslation();\n\n useEffect(() => {\n if (toolInstance) {\n // 用于配置的初始化\n setExpandKeyList(toolInstance.config.inputList.map((v: IInputList) => v.value));\n\n // 进行实时渲染\n toolInstance.singleOn('render', () => {\n forceRender((s) => s + 1);\n });\n }\n }, [toolInstance]);\n\n useEffect(() => {\n if (toolInstance) {\n // 该写法会不断的重复绑定,后续写法上可以更改(如果将 singleOn 改为 on 会有很大问题)\n toolInstance.singleOn('expend', expendRender);\n\n if (toolInstance.labelSelectedList.length === 1) {\n let height = 0;\n for (let i = 0; i < toolInstance.labelSelectedList[0]; i++) {\n height += 46;\n inputList[i] &&\n expandKeyList[i] !== '' &&\n inputList[i].subSelected.forEach((i: any) => {\n height += 40;\n });\n }\n if (sidebarRef.current) {\n sidebarRef.current.children[0].scrollTop = height;\n }\n }\n }\n });\n\n useEffect(() => {\n // 翻页侧边栏跳到最上\n if (sidebarRef.current) {\n sidebarRef.current.children[0].scrollTop = 0;\n }\n }, [imgIndex]);\n\n const expendRender = () => {\n const index = toolInstance.labelSelectedList[0];\n const value = inputList.filter((v: IInputList, i: number) => i === index)[0]?.value;\n setExpendKeyList(index, value, true);\n };\n\n const setExpendKeyList = useCallback(\n (index: number, value: string, expend?: boolean) => {\n const newKeyList = cloneDeep(expandKeyList);\n if (newKeyList[index] === '' || expend === true) {\n newKeyList[index] = value;\n } else {\n newKeyList[index] = '';\n }\n setExpandKeyList(newKeyList);\n },\n [expandKeyList],\n );\n\n if (!toolInstance) return null;\n\n const {\n labelSelectedList,\n config: { inputList },\n currentTagResult,\n setLabel,\n } = toolInstance;\n\n const selectedButton = (index: number) => {\n if (labelSelectedList.length > 0 && labelSelectedList[0] === index) {\n return <span className='keyDownIconActive'>{index + 1}</span>;\n }\n return <span className='keyDownIcon'>{index + 1}</span>;\n };\n\n // basicIndex 到底是那一层\n const labelPanel = (labelInfoSet: IInputList[], basicIndex = -1) => {\n if (!labelInfoSet) {\n return null;\n }\n\n return labelInfoSet.map((info: IInputList, index: number) => {\n if (info.subSelected) {\n // 判断是否有数据\n const isResult = TagUtils.judgeResultIsInInputList(\n info.value,\n currentTagResult?.result?.[info.value],\n inputList,\n );\n\n return (\n <Collapse\n bordered={false}\n expandIcon={expandIconFuc}\n key={`collapse_${index}_${basicIndex + 1}`}\n onChange={() => setExpendKeyList(index, info.value)}\n activeKey={[expandKeyList[index]]}\n >\n <Panel\n header={\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <span>\n {info.key}\n <Tooltip placement='bottom' title={t('ClearThisOption')}>\n <img\n style={{ marginLeft: 5, cursor: 'pointer' }}\n onClick={(e) => {\n e.stopPropagation();\n toolInstance.clearResult(true, info.value);\n }}\n src={hoverDeleteIndex === index || isResult ? clearSmallA : clearSmall}\n onMouseEnter={() => {\n setHoverDeleteIndex(index);\n }}\n onMouseLeave={() => {\n setHoverDeleteIndex(-1);\n }}\n />\n </Tooltip>\n {isResult && expandKeyList[index] === '' && <Badge color='#87d068' />}\n </span>\n\n {inputList?.length > 1 && selectedButton(index)}\n </div>\n }\n key={info.value}\n >\n <div\n className='level'\n style={{\n backgroundColor:\n labelSelectedList.length > 0 && labelSelectedList[0] === index\n ? 'rgba(158, 158, 158, 0.18)'\n : '',\n }}\n >\n {labelPanel(info.subSelected, index)}\n </div>\n </Panel>\n </Collapse>\n );\n }\n const key = inputList?.[basicIndex] ? inputList?.[basicIndex].value : 0;\n const selectedAttribute =\n currentTagResult?.result?.[key]?.split(';')?.indexOf(info.value) > -1 ? info.value : '';\n\n if (inputList?.[basicIndex]?.isMulti === true) {\n return (\n <div className='singleBar' key={`${key}_${basicIndex}_${index}`}>\n <CheckBoxList\n attributeChanged={() => setLabel(basicIndex, index)}\n selectedAttribute={[selectedAttribute]}\n list={[{ value: info.value, label: info.key }]}\n num={index + 1}\n />\n </div>\n );\n }\n return (\n <div className='singleBar' key={`${key}_${basicIndex}_${index}`}>\n <RadioList\n forbidColor\n attributeChanged={() => setLabel(basicIndex, index)}\n selectedAttribute={selectedAttribute}\n list={[{ value: info.value, label: info.key }]}\n num={index + 1}\n />\n </div>\n );\n });\n };\n const height = window.innerHeight - 61 - 80;\n\n return (\n <div className='tagOperationMenu' ref={sidebarRef}>\n {inputList?.length === 0 ? (\n <div style={{ padding: 20, textAlign: 'center' }}>{t('NoConfiguration')}</div>\n ) : (\n <div className='main' style={{ height }}>\n {labelPanel(inputList)}\n </div>\n )}\n </div>\n );\n};\n\nfunction mapStateToProps(state: AppState) {\n return { toolInstance: state.annotation.toolInstance, imgIndex: state.annotation.imgIndex };\n}\n\nexport default connect(mapStateToProps)(TagSidebar);\n"],"names":["clearSmallA","clearSmall","CheckBoxList","RadioList"],"mappings":";;;;;;;;;;;;AAmBA,MAAM,CAAE,SAAU;MAEL,gBAAgB,CAAC,CAAE,kDAC7B,oBAAD;AAAA,EAAoB,QAAQ,WAAW,KAAK;AAAA;AAG9C,MAAM,aAA+B,CAAC,CAAE,cAAc,cAAe;AACnE,QAAM,CAAC,eAAe,oBAAoB,SAAmB;AAE7D,QAAM,aAAa,OAAuB;AAC1C,QAAM,GAAG,eAAe,SAAiB;AACzC,QAAM,CAAC,kBAAkB,uBAAuB,SAAS;AACzD,QAAM,CAAE,KAAM;AAEd,YAAU,MAAM;AACd,QAAI,cAAc;AAEhB,uBAAiB,aAAa,OAAO,UAAU,IAAI,CAAC,MAAkB,EAAE;AAGxE,mBAAa,SAAS,UAAU,MAAM;AACpC,oBAAY,CAAC,MAAM,IAAI;AAAA;AAAA;AAAA,KAG1B,CAAC;AAEJ,YAAU,MAAM;AACd,QAAI,cAAc;AAEhB,mBAAa,SAAS,UAAU;AAEhC,UAAI,aAAa,kBAAkB,WAAW,GAAG;AAC/C,YAAI,UAAS;AACb,iBAAS,IAAI,GAAG,IAAI,aAAa,kBAAkB,IAAI,KAAK;AAC1D,qBAAU;AACV,oBAAU,MACR,cAAc,OAAO,MACrB,UAAU,GAAG,YAAY,QAAQ,CAAC,OAAW;AAC3C,uBAAU;AAAA;AAAA;AAGhB,YAAI,WAAW,SAAS;AACtB,qBAAW,QAAQ,SAAS,GAAG,YAAY;AAAA;AAAA;AAAA;AAAA;AAMnD,YAAU,MAAM;AAEd,QAAI,WAAW,SAAS;AACtB,iBAAW,QAAQ,SAAS,GAAG,YAAY;AAAA;AAAA,KAE5C,CAAC;AAEJ,QAAM,eAAe,MAAM;AA1E7B;AA2EI,UAAM,QAAQ,aAAa,kBAAkB;AAC7C,UAAM,QAAQ,gBAAU,OAAO,CAAC,GAAe,MAAc,MAAM,OAAO,OAA5D,mBAAgE;AAC9E,qBAAiB,OAAO,OAAO;AAAA;AAGjC,QAAM,mBAAmB,YACvB,CAAC,OAAe,OAAe,WAAqB;AAClD,UAAM,aAAa,UAAU;AAC7B,QAAI,WAAW,WAAW,MAAM,WAAW,MAAM;AAC/C,iBAAW,SAAS;AAAA,WACf;AACL,iBAAW,SAAS;AAAA;AAEtB,qBAAiB;AAAA,KAEnB,CAAC;AAGH,MAAI,CAAC;AAAc,WAAO;AAE1B,QAAM;AAAA,IACJ;AAAA,IACA,QAAQ,CAAE;AAAA,IACV;AAAA,IACA;AAAA,MACE;AAEJ,QAAM,iBAAiB,CAAC,UAAkB;AACxC,QAAI,kBAAkB,SAAS,KAAK,kBAAkB,OAAO,OAAO;AAClE,iDAAQ,QAAD;AAAA,QAAM,WAAU;AAAA,SAAqB,QAAQ;AAAA;AAEtD,+CAAQ,QAAD;AAAA,MAAM,WAAU;AAAA,OAAe,QAAQ;AAAA;AAIhD,QAAM,aAAa,CAAC,cAA4B,aAAa,OAAO;AAClE,QAAI,CAAC,cAAc;AACjB,aAAO;AAAA;AAGT,WAAO,aAAa,IAAI,CAAC,MAAkB,UAAkB;AAnHjE;AAoHM,UAAI,KAAK,aAAa;AAEpB,cAAM,WAAW,SAAS,yBACxB,KAAK,OACL,2DAAkB,WAAlB,mBAA2B,KAAK,QAChC;AAGF,mDACG,UAAD;AAAA,UACE,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,KAAK,YAAY,SAAS,aAAa;AAAA,UACvC,UAAU,MAAM,iBAAiB,OAAO,KAAK;AAAA,UAC7C,WAAW,CAAC,cAAc;AAAA,+CAEzB,OAAD;AAAA,UACE,4CACG,OAAD;AAAA,YACE,OAAO;AAAA,cACL,SAAS;AAAA,cACT,gBAAgB;AAAA,cAChB,YAAY;AAAA;AAAA,iDAGb,QAAD,MACG,KAAK,yCACL,SAAD;AAAA,YAAS,WAAU;AAAA,YAAS,OAAO,EAAE;AAAA,iDAClC,OAAD;AAAA,YACE,OAAO,CAAE,YAAY,GAAG,QAAQ;AAAA,YAChC,SAAS,CAAC,MAAM;AACd,gBAAE;AACF,2BAAa,YAAY,MAAM,KAAK;AAAA;AAAA,YAEtC,KAAK,qBAAqB,SAAS,WAAWA,MAAcC;AAAA,YAC5D,cAAc,MAAM;AAClB,kCAAoB;AAAA;AAAA,YAEtB,cAAc,MAAM;AAClB,kCAAoB;AAAA;AAAA,eAIzB,YAAY,cAAc,WAAW,0CAAO,OAAD;AAAA,YAAO,OAAM;AAAA,eAG1D,wCAAW,UAAS,KAAK,eAAe;AAAA,UAG7C,KAAK,KAAK;AAAA,+CAET,OAAD;AAAA,UACE,WAAU;AAAA,UACV,OAAO;AAAA,YACL,iBACE,kBAAkB,SAAS,KAAK,kBAAkB,OAAO,QACrD,8BACA;AAAA;AAAA,WAGP,WAAW,KAAK,aAAa;AAAA;AAMxC,YAAM,MAAM,wCAAY,eAAc,uCAAY,YAAY,QAAQ;AACtE,YAAM,oBACJ,wEAAkB,WAAlB,mBAA2B,SAA3B,mBAAiC,MAAM,SAAvC,mBAA6C,QAAQ,KAAK,UAAS,KAAK,KAAK,QAAQ;AAEvF,UAAI,8CAAY,gBAAZ,mBAAyB,aAAY,MAAM;AAC7C,mDACG,OAAD;AAAA,UAAK,WAAU;AAAA,UAAY,KAAK,GAAG,OAAO,cAAc;AAAA,+CACrDC,cAAD;AAAA,UACE,kBAAkB,MAAM,SAAS,YAAY;AAAA,UAC7C,mBAAmB,CAAC;AAAA,UACpB,MAAM,CAAC,CAAE,OAAO,KAAK,OAAO,OAAO,KAAK;AAAA,UACxC,KAAK,QAAQ;AAAA;AAAA;AAKrB,iDACG,OAAD;AAAA,QAAK,WAAU;AAAA,QAAY,KAAK,GAAG,OAAO,cAAc;AAAA,6CACrDC,eAAD;AAAA,QACE,aAAW;AAAA,QACX,kBAAkB,MAAM,SAAS,YAAY;AAAA,QAC7C;AAAA,QACA,MAAM,CAAC,CAAE,OAAO,KAAK,OAAO,OAAO,KAAK;AAAA,QACxC,KAAK,QAAQ;AAAA;AAAA;AAAA;AAMvB,QAAM,SAAS,OAAO,cAAc,KAAK;AAEzC,6CACG,OAAD;AAAA,IAAK,WAAU;AAAA,IAAmB,KAAK;AAAA,KACpC,wCAAW,YAAW,wCACpB,OAAD;AAAA,IAAK,OAAO,CAAE,SAAS,IAAI,WAAW;AAAA,KAAa,EAAE,0DAEpD,OAAD;AAAA,IAAK,WAAU;AAAA,IAAO,OAAO,CAAE;AAAA,KAC5B,WAAW;AAAA;AAOtB,yBAAyB,OAAiB;AACxC,SAAO,CAAE,cAAc,MAAM,WAAW,cAAc,UAAU,MAAM,WAAW;AAAA;AAGnF,mBAAe,QAAQ,iBAAiB;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/TagSidebar/index.tsx"],"sourcesContent":["import RadioList from '@/components/attributeList';\nimport CheckBoxList from '@/components/checkboxList';\nimport { CaretRightOutlined } from '@ant-design/icons';\nimport { Badge, Collapse, Tooltip } from 'antd/es';\nimport { cloneDeep } from 'lodash';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport clearSmall from '@/assets/annotation/common/icon_clearSmall.svg';\nimport clearSmallA from '@/assets/annotation/common/icon_clearSmall_a.svg';\nimport { TagOperation, TagUtils } from '@labelbee/lb-annotation';\nimport { connect } from 'react-redux';\nimport { AppState } from '@/store';\nimport { IInputList } from '@/types/main';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n imgIndex: number;\n toolInstance: TagOperation;\n}\n\nconst { Panel } = Collapse;\n\nexport const expandIconFuc = ({ isActive }: any) => (\n <CaretRightOutlined rotate={isActive ? 90 : 0} />\n);\n\nconst TagSidebar: React.FC<IProps> = ({ toolInstance, imgIndex }) => {\n const [expandKeyList, setExpandKeyList] = useState<string[]>([]);\n\n const sidebarRef = useRef<HTMLDivElement>(null);\n const [, forceRender] = useState<number>(0);\n const [hoverDeleteIndex, setHoverDeleteIndex] = useState(-1);\n const { t } = useTranslation();\n\n useEffect(() => {\n if (toolInstance) {\n // 用于配置的初始化\n setExpandKeyList(toolInstance.config.inputList.map((v: IInputList) => v.value));\n\n // 进行实时渲染\n toolInstance.singleOn('render', () => {\n forceRender((s) => s + 1);\n });\n }\n }, [toolInstance]);\n\n useEffect(() => {\n if (toolInstance) {\n // 该写法会不断的重复绑定,后续写法上可以更改(如果将 singleOn 改为 on 会有很大问题)\n toolInstance.singleOn('expend', expendRender);\n\n if (toolInstance.labelSelectedList.length === 1) {\n let height = 0;\n for (let i = 0; i < toolInstance.labelSelectedList[0]; i++) {\n height += 46;\n inputList[i] &&\n expandKeyList[i] !== '' &&\n inputList[i].subSelected.forEach((i: any) => {\n height += 40;\n });\n }\n if (sidebarRef.current) {\n sidebarRef.current.children[0].scrollTop = height;\n }\n }\n }\n });\n\n useEffect(() => {\n // 翻页侧边栏跳到最上\n if (sidebarRef.current) {\n sidebarRef.current.children[0].scrollTop = 0;\n }\n }, [imgIndex]);\n\n const expendRender = () => {\n const index = toolInstance.labelSelectedList[0];\n const value = inputList.filter((v: IInputList, i: number) => i === index)[0]?.value;\n setExpendKeyList(index, value, true);\n };\n\n const setExpendKeyList = useCallback(\n (index: number, value: string, expend?: boolean) => {\n const newKeyList = cloneDeep(expandKeyList);\n if (newKeyList[index] === '' || expend === true) {\n newKeyList[index] = value;\n } else {\n newKeyList[index] = '';\n }\n setExpandKeyList(newKeyList);\n },\n [expandKeyList],\n );\n\n if (!toolInstance) return null;\n\n const {\n labelSelectedList,\n config: { inputList },\n currentTagResult,\n setLabel,\n } = toolInstance;\n\n const selectedButton = (index: number) => {\n if (labelSelectedList.length > 0 && labelSelectedList[0] === index) {\n return <span className='keyDownIconActive'>{index + 1}</span>;\n }\n return <span className='keyDownIcon'>{index + 1}</span>;\n };\n\n // basicIndex 到底是那一层\n const labelPanel = (labelInfoSet: IInputList[], basicIndex = -1) => {\n if (!labelInfoSet) {\n return null;\n }\n\n return labelInfoSet.map((info: IInputList, index: number) => {\n if (info.subSelected) {\n // 判断是否有数据\n const isResult = TagUtils.judgeResultIsInInputList(\n info.value,\n currentTagResult?.result?.[info.value],\n inputList,\n );\n\n return (\n <Collapse\n bordered={false}\n expandIcon={expandIconFuc}\n key={`collapse_${index}_${basicIndex + 1}`}\n onChange={() => setExpendKeyList(index, info.value)}\n activeKey={[expandKeyList[index]]}\n >\n <Panel\n header={\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n flex: 1,\n }}\n >\n <span>\n {info.key}\n <Tooltip placement='bottom' title={t('ClearThisOption')}>\n <img\n style={{ marginLeft: 5, cursor: 'pointer' }}\n onClick={(e) => {\n e.stopPropagation();\n toolInstance.clearResult(true, info.value);\n }}\n src={hoverDeleteIndex === index || isResult ? clearSmallA : clearSmall}\n onMouseEnter={() => {\n setHoverDeleteIndex(index);\n }}\n onMouseLeave={() => {\n setHoverDeleteIndex(-1);\n }}\n />\n </Tooltip>\n {isResult && expandKeyList[index] === '' && <Badge color='#87d068' />}\n </span>\n\n {inputList?.length > 1 && selectedButton(index)}\n </div>\n }\n key={info.value}\n >\n <div\n className='level'\n style={{\n backgroundColor:\n labelSelectedList.length > 0 && labelSelectedList[0] === index\n ? 'rgba(158, 158, 158, 0.18)'\n : '',\n }}\n >\n {labelPanel(info.subSelected, index)}\n </div>\n </Panel>\n </Collapse>\n );\n }\n const key = inputList?.[basicIndex] ? inputList?.[basicIndex].value : 0;\n const selectedAttribute =\n currentTagResult?.result?.[key]?.split(';')?.indexOf(info.value) > -1 ? info.value : '';\n\n if (inputList?.[basicIndex]?.isMulti === true) {\n return (\n <div className='singleBar' key={`${key}_${basicIndex}_${index}`}>\n <CheckBoxList\n attributeChanged={() => setLabel(basicIndex, index)}\n selectedAttribute={[selectedAttribute]}\n list={[{ value: info.value, label: info.key }]}\n num={index + 1}\n />\n </div>\n );\n }\n return (\n <div className='singleBar' key={`${key}_${basicIndex}_${index}`}>\n <RadioList\n forbidColor\n attributeChanged={() => setLabel(basicIndex, index)}\n selectedAttribute={selectedAttribute}\n list={[{ value: info.value, label: info.key }]}\n num={index + 1}\n />\n </div>\n );\n });\n };\n const height = window.innerHeight - 61 - 80;\n\n return (\n <div className='tagOperationMenu' ref={sidebarRef}>\n {inputList?.length === 0 ? (\n <div style={{ padding: 20, textAlign: 'center' }}>{t('NoConfiguration')}</div>\n ) : (\n <div className='main' style={{ height }}>\n {labelPanel(inputList)}\n </div>\n )}\n </div>\n );\n};\n\nfunction mapStateToProps(state: AppState) {\n return { toolInstance: state.annotation.toolInstance, imgIndex: state.annotation.imgIndex };\n}\n\nexport default connect(mapStateToProps)(TagSidebar);\n"],"names":["clearSmallA","clearSmall","CheckBoxList","RadioList"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/TextAreaFormat/index.tsx"],"sourcesContent":["import { TEXT_ATTRIBUTE_MAX_LENGTH } from '@/data/enums/ToolType';\nimport { TextUtils } from '@/utils/TextUtils';\nimport { Input, message, Tooltip } from 'antd/es';\nimport React, { FocusEvent, useEffect, useState } from 'react';\nimport IconClearSmallA from '@/assets/annotation/common/icon_clearSmall_a.svg';\nimport IconClearSmall from '@/assets/annotation/common/icon_clearSmall.svg';\nimport { classnames } from '@/utils';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n onChange: (value: string, isSubmit?: boolean) => void;\n textValue: string | undefined;\n checkString: string;\n textCheckType: number;\n}\n\nconst TextAreaFormat = (props: IProps) => {\n const { t } = useTranslation();\n\n const { onChange, textValue, checkString, textCheckType } = props;\n const [textLength, setTextLength] = useState<number>(0);\n const [error, setError] = useState<boolean>(false);\n const [onFocus, setOnFocus] = useState<boolean>(false);\n const [hoverDelete, setHoverDelete] = useState<boolean>(false);\n\n const clearIcon = (\n <a>\n <Tooltip placement='bottom' title={t('EmptyTextInput')}>\n <img\n onMouseEnter={() => setHoverDelete(true)}\n onMouseLeave={() => setHoverDelete(false)}\n style={{ marginLeft: 6 }}\n src={hoverDelete ? IconClearSmallA : IconClearSmall}\n onClick={(e) => {\n e.stopPropagation();\n onChange('');\n }}\n />\n </Tooltip>\n </a>\n );\n\n const keyDown = (e: React.KeyboardEvent) => {\n e.stopPropagation();\n };\n\n useEffect(() => {\n if (textValue) {\n setTextLength(textValue.length);\n }\n }, []);\n\n useEffect(() => {\n if (textValue === undefined || textValue === '') {\n setError(false);\n } else {\n try {\n textValue && setError(!new RegExp(checkString).test(textValue));\n } catch (error) {\n setError(true);\n message.destroy();\n message.error(t('RegularExpIncorrectly'));\n }\n }\n setTextLength(textValue?.length ?? 0);\n }, [textValue]);\n\n const checkText = (e: FocusEvent<HTMLTextAreaElement>) => {\n if (error) {\n onChange('');\n message.error(TextUtils.getErrorNotice(textCheckType));\n return true;\n }\n onChange(e.target.value, true); // 失焦的时候直接进行数据的提交\n };\n\n return (\n <div className='textInputContainer'>\n <div className='label'>\n {t('TextInput')}\n {clearIcon}\n </div>\n <div\n className={classnames({\n textareaContainer: true,\n focus: onFocus,\n })}\n >\n <div\n className={classnames({\n toolTextAreaBox: true,\n toolTextAreaBoxFocus: onFocus,\n })}\n >\n <Input.TextArea\n style={{ resize: 'none', height: 120, wordBreak: 'break-all' }}\n maxLength={TEXT_ATTRIBUTE_MAX_LENGTH}\n onKeyDownCapture={(e) => {\n e.stopPropagation();\n }}\n onKeyUpCapture={(e) => {\n e.stopPropagation();\n }}\n onChange={(e) => {\n onChange(e.target.value);\n setTextLength(e.target.value.length);\n }}\n onFocus={(e) => setOnFocus(true)}\n onBlur={(e) => {\n checkText(e);\n setOnFocus(false);\n }}\n value={textValue}\n onKeyDown={keyDown}\n className={error ? 'warning' : ''}\n />\n <div className='textAreaFooter'>\n <span className='wordCount'>\n <span className={textLength > TEXT_ATTRIBUTE_MAX_LENGTH || error ? 'warning' : ''}>\n {textLength}\n </span>\n /<span>{TEXT_ATTRIBUTE_MAX_LENGTH}</span>\n </span>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default TextAreaFormat;\n"],"names":["IconClearSmallA","IconClearSmall"],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/TextAreaFormat/index.tsx"],"sourcesContent":["import { TEXT_ATTRIBUTE_MAX_LENGTH } from '@/data/enums/ToolType';\nimport { TextUtils } from '@/utils/TextUtils';\nimport { Input, message, Tooltip } from 'antd/es';\nimport React, { FocusEvent, useEffect, useState } from 'react';\nimport IconClearSmallA from '@/assets/annotation/common/icon_clearSmall_a.svg';\nimport IconClearSmall from '@/assets/annotation/common/icon_clearSmall.svg';\nimport { classnames } from '@/utils';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n onChange: (value: string, isSubmit?: boolean) => void;\n textValue: string | undefined;\n checkString: string;\n textCheckType: number;\n}\n\nconst TextAreaFormat = (props: IProps) => {\n const { t } = useTranslation();\n\n const { onChange, textValue, checkString, textCheckType } = props;\n const [textLength, setTextLength] = useState<number>(0);\n const [error, setError] = useState<boolean>(false);\n const [onFocus, setOnFocus] = useState<boolean>(false);\n const [hoverDelete, setHoverDelete] = useState<boolean>(false);\n\n const clearIcon = (\n <a>\n <Tooltip placement='bottom' title={t('EmptyTextInput')}>\n <img\n onMouseEnter={() => setHoverDelete(true)}\n onMouseLeave={() => setHoverDelete(false)}\n style={{ marginLeft: 6 }}\n src={hoverDelete ? IconClearSmallA : IconClearSmall}\n onClick={(e) => {\n e.stopPropagation();\n onChange('');\n }}\n />\n </Tooltip>\n </a>\n );\n\n const keyDown = (e: React.KeyboardEvent) => {\n e.stopPropagation();\n };\n\n useEffect(() => {\n if (textValue) {\n setTextLength(textValue.length);\n }\n }, []);\n\n useEffect(() => {\n if (textValue === undefined || textValue === '') {\n setError(false);\n } else {\n try {\n textValue && setError(!new RegExp(checkString).test(textValue));\n } catch (error) {\n setError(true);\n message.destroy();\n message.error(t('RegularExpIncorrectly'));\n }\n }\n setTextLength(textValue?.length ?? 0);\n }, [textValue]);\n\n const checkText = (e: FocusEvent<HTMLTextAreaElement>) => {\n if (error) {\n onChange('');\n message.error(TextUtils.getErrorNotice(textCheckType));\n return true;\n }\n onChange(e.target.value, true); // 失焦的时候直接进行数据的提交\n };\n\n return (\n <div className='textInputContainer'>\n <div className='label'>\n {t('TextInput')}\n {clearIcon}\n </div>\n <div\n className={classnames({\n textareaContainer: true,\n focus: onFocus,\n })}\n >\n <div\n className={classnames({\n toolTextAreaBox: true,\n toolTextAreaBoxFocus: onFocus,\n })}\n >\n <Input.TextArea\n style={{ resize: 'none', height: 120, wordBreak: 'break-all' }}\n maxLength={TEXT_ATTRIBUTE_MAX_LENGTH}\n onKeyDownCapture={(e) => {\n e.stopPropagation();\n }}\n onKeyUpCapture={(e) => {\n e.stopPropagation();\n }}\n onChange={(e) => {\n onChange(e.target.value);\n setTextLength(e.target.value.length);\n }}\n onFocus={(e) => setOnFocus(true)}\n onBlur={(e) => {\n checkText(e);\n setOnFocus(false);\n }}\n value={textValue}\n onKeyDown={keyDown}\n className={error ? 'warning' : ''}\n />\n <div className='textAreaFooter'>\n <span className='wordCount'>\n <span className={textLength > TEXT_ATTRIBUTE_MAX_LENGTH || error ? 'warning' : ''}>\n {textLength}\n </span>\n /<span>{TEXT_ATTRIBUTE_MAX_LENGTH}</span>\n </span>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default TextAreaFormat;\n"],"names":["IconClearSmallA","IconClearSmall"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/TextToolSidebar/index.tsx"],"sourcesContent":["import React, { useEffect, useState, useRef, FocusEvent } from 'react';\nimport { connect } from 'react-redux';\nimport { AppState } from '@/store';\nimport { cloneDeep } from 'lodash';\nimport { classnames } from '@/utils';\nimport { Input } from 'antd/es';\nimport { cKeyCode } from '@labelbee/lb-annotation';\nimport { PageForward } from '@/store/annotation/actionCreators';\nimport { ConfigUtils } from '@/utils/ConfigUtils';\nimport { IStepInfo } from '@/types/step';\nimport TextToolOperation from '@labelbee/lb-annotation/dist/types/core/toolOperation/TextToolOperation';\nimport { useTranslation } from 'react-i18next';\n\nconst EKeyCode = cKeyCode.default;\n\nconst syntheticEventStopPagination = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n e.stopPropagation();\n e.nativeEvent.stopPropagation();\n e.nativeEvent.stopImmediatePropagation();\n};\n\ninterface ITextareaWithFooterProps {\n textareaProps?: any;\n footer?: any;\n}\n\nexport const TextareaWithFooter = (props: ITextareaWithFooterProps) => {\n const { textareaProps, footer } = props;\n\n return (\n <>\n <Input.TextArea\n bordered={false}\n rows={6}\n onKeyDown={syntheticEventStopPagination}\n onKeyUp={syntheticEventStopPagination}\n {...textareaProps}\n />\n <div\n className={classnames({\n textAreaLength: true,\n })}\n >\n {footer}\n </div>\n </>\n );\n};\n\ninterface IProps {\n dispatch: Function;\n toolInstance: TextToolOperation;\n imgIndex: number;\n triggerEventAfterIndexChanged: boolean;\n step: number;\n stepList: IStepInfo[];\n basicResultList: any[];\n}\n\ninterface IConfigListItem {\n label: string;\n key: string;\n required: boolean;\n default: string;\n maxLength: number;\n}\n\nexport const SingleTextInput = (props: any) => {\n const ref = useRef(null);\n const [textAreaFocus, setTextAreaFocus] = useState(false);\n const [invalid, setInvalid] = useState(false);\n const { t } = useTranslation();\n\n const { disabled, config, result, updateText, index, switchToNextTextarea, hasMultiple, onNext } =\n props;\n const { maxLength } = config;\n\n const value = result ? result[config.key] : '';\n const textLength = value?.length ?? 0;\n\n const updateTextWithKey = (newVal: string) => {\n if (updateText) {\n updateText(newVal, config.key);\n if (config.required) {\n setInvalid(!newVal);\n }\n }\n };\n\n const tabToSwitchEnabled = hasMultiple && switchToNextTextarea;\n\n const textareaProps = {\n id: `textInput-${index}`,\n ref,\n disabled,\n value,\n maxLength,\n autoSize: { minRows: 2, maxRows: 6 },\n onChange: (e: FocusEvent<HTMLTextAreaElement>) => {\n const value = e.target.value;\n updateTextWithKey(value);\n },\n onFocus: () => {\n setTextAreaFocus(true);\n },\n onBlur: (e: FocusEvent<HTMLTextAreaElement>) => {\n setTextAreaFocus(false);\n if (config.required) {\n setInvalid(!e.target.value);\n }\n },\n style: {\n resize: 'none',\n wordBreak: 'break-all',\n },\n onKeyDownCapture: (e: React.KeyboardEvent) => {\n if (e.ctrlKey && e.keyCode === EKeyCode.Enter) {\n if (onNext) {\n onNext();\n }\n e.preventDefault();\n }\n\n if (e.keyCode === EKeyCode.Tab && tabToSwitchEnabled) {\n e.preventDefault();\n e.nativeEvent.stopImmediatePropagation();\n switchToNextTextarea(index);\n }\n\n e.nativeEvent.stopPropagation();\n },\n };\n\n const TextareaFooter = (\n <div className='textAreaFooter'>\n <div className='hotkeyTip'>\n {tabToSwitchEnabled && <span>{`[${t('Switch')}]Tab`}</span>}\n <span>{`[${t('TurnPage')}]Ctrl+Enter`}</span>\n </div>\n <div className='wordCount'>\n <span className={textLength >= maxLength ? 'warning' : ''}>{textLength}</span>/\n <span>{maxLength}</span>\n </div>\n </div>\n );\n\n useEffect(() => {\n if (disabled) {\n setTextAreaFocus(false);\n }\n }, [disabled]);\n\n return (\n <div className='textField'>\n <div className='label'>\n <span className={classnames({ required: config.required })}>{config.label}</span>\n <i\n className={classnames({ clearText: true, disabled: disabled })}\n onClick={() => {\n if (disabled) {\n return;\n }\n updateTextWithKey('');\n }}\n />\n </div>\n <div\n className={classnames({\n disabled,\n 'textarea-outline': true,\n 'ant-input-focused': textAreaFocus,\n textareaContainer: true,\n focus: textAreaFocus,\n invalid: invalid,\n })}\n >\n <TextareaWithFooter footer={TextareaFooter} textareaProps={textareaProps} />\n </div>\n </div>\n );\n};\n\nconst TextToolSidebar: React.FC<IProps> = ({\n toolInstance,\n imgIndex,\n dispatch,\n triggerEventAfterIndexChanged,\n step,\n stepList,\n basicResultList,\n}) => {\n const [configList, setConfigList] = useState<IConfigListItem[]>([]);\n const [focusIndex, setFocusIndex] = useState(0);\n const [, forceRender] = useState(0);\n\n const switchToNextTextarea = (currentIndex: number) => {\n const nextIndex = (currentIndex + 1) % configList.length;\n textareaFocus(nextIndex);\n };\n\n const textareaFocus = (index: number) => {\n setTimeout(() => {\n const textarea = document.getElementById(`textInput-${index}`) as HTMLTextAreaElement;\n if (textarea) {\n setFocusIndex(index);\n textarea.focus();\n textarea.select();\n textarea.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n });\n };\n\n useEffect(() => {\n if (toolInstance) {\n setConfigList(cloneDeep(toolInstance.config.configList));\n toolInstance.singleOn('valueUpdated', () => {\n forceRender((s) => s + 1);\n });\n }\n }, [toolInstance]);\n\n const updateText = (v: string, k: string) => {\n toolInstance.updateTextValue(k, v);\n };\n\n useEffect(() => {\n if (imgIndex > -1 && triggerEventAfterIndexChanged) {\n textareaFocus(0);\n }\n }, [imgIndex]);\n\n const result = toolInstance.textList[0]?.value ?? {};\n\n const onNext = () => {\n dispatch(PageForward(true));\n };\n\n const stepConfig = ConfigUtils.getStepConfig(stepList, step);\n const disabled = stepConfig.dataSourceStep > 0 && basicResultList.length === 0;\n\n return (\n <div className='textToolOperationMenu'>\n {configList.map((i, index) => (\n <SingleTextInput\n config={i}\n key={i.key}\n index={index}\n result={result}\n updateText={updateText}\n switchToNextTextarea={switchToNextTextarea}\n hasMultiple={configList.length > 1}\n focus={focusIndex === index}\n onNext={onNext}\n disabled={disabled}\n />\n ))}\n </div>\n );\n};\n\nfunction mapStateToProps(state: AppState) {\n return {\n toolInstance: state.annotation.toolInstance,\n imgIndex: state.annotation.imgIndex,\n step: state.annotation.step,\n basicResultList: state.annotation.basicResultList,\n stepList: state.annotation.stepList,\n triggerEventAfterIndexChanged: state.annotation.triggerEventAfterIndexChanged,\n };\n}\n\nexport default connect(mapStateToProps)(TextToolSidebar);\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/TextToolSidebar/index.tsx"],"sourcesContent":["import React, { useEffect, useState, useRef, FocusEvent } from 'react';\nimport { connect } from 'react-redux';\nimport { AppState } from '@/store';\nimport { cloneDeep } from 'lodash';\nimport { classnames } from '@/utils';\nimport { Input } from 'antd/es';\nimport { cKeyCode } from '@labelbee/lb-annotation';\nimport { PageForward } from '@/store/annotation/actionCreators';\nimport { ConfigUtils } from '@/utils/ConfigUtils';\nimport { IStepInfo } from '@/types/step';\nimport TextToolOperation from '@labelbee/lb-annotation/dist/types/core/toolOperation/TextToolOperation';\nimport { useTranslation } from 'react-i18next';\n\nconst EKeyCode = cKeyCode.default;\n\nconst syntheticEventStopPagination = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n e.stopPropagation();\n e.nativeEvent.stopPropagation();\n e.nativeEvent.stopImmediatePropagation();\n};\n\ninterface ITextareaWithFooterProps {\n textareaProps?: any;\n footer?: any;\n}\n\nexport const TextareaWithFooter = (props: ITextareaWithFooterProps) => {\n const { textareaProps, footer } = props;\n\n return (\n <>\n <Input.TextArea\n bordered={false}\n rows={6}\n onKeyDown={syntheticEventStopPagination}\n onKeyUp={syntheticEventStopPagination}\n {...textareaProps}\n />\n <div\n className={classnames({\n textAreaLength: true,\n })}\n >\n {footer}\n </div>\n </>\n );\n};\n\ninterface IProps {\n dispatch: Function;\n toolInstance: TextToolOperation;\n imgIndex: number;\n triggerEventAfterIndexChanged: boolean;\n step: number;\n stepList: IStepInfo[];\n basicResultList: any[];\n}\n\ninterface IConfigListItem {\n label: string;\n key: string;\n required: boolean;\n default: string;\n maxLength: number;\n}\n\nexport const SingleTextInput = (props: any) => {\n const ref = useRef(null);\n const [textAreaFocus, setTextAreaFocus] = useState(false);\n const [invalid, setInvalid] = useState(false);\n const { t } = useTranslation();\n\n const { disabled, config, result, updateText, index, switchToNextTextarea, hasMultiple, onNext } =\n props;\n const { maxLength } = config;\n\n const value = result ? result[config.key] : '';\n const textLength = value?.length ?? 0;\n\n const updateTextWithKey = (newVal: string) => {\n if (updateText) {\n updateText(newVal, config.key);\n if (config.required) {\n setInvalid(!newVal);\n }\n }\n };\n\n const tabToSwitchEnabled = hasMultiple && switchToNextTextarea;\n\n const textareaProps = {\n id: `textInput-${index}`,\n ref,\n disabled,\n value,\n maxLength,\n autoSize: { minRows: 2, maxRows: 6 },\n onChange: (e: FocusEvent<HTMLTextAreaElement>) => {\n const value = e.target.value;\n updateTextWithKey(value);\n },\n onFocus: () => {\n setTextAreaFocus(true);\n },\n onBlur: (e: FocusEvent<HTMLTextAreaElement>) => {\n setTextAreaFocus(false);\n if (config.required) {\n setInvalid(!e.target.value);\n }\n },\n style: {\n resize: 'none',\n wordBreak: 'break-all',\n },\n onKeyDownCapture: (e: React.KeyboardEvent) => {\n if (e.ctrlKey && e.keyCode === EKeyCode.Enter) {\n if (onNext) {\n onNext();\n }\n e.preventDefault();\n }\n\n if (e.keyCode === EKeyCode.Tab && tabToSwitchEnabled) {\n e.preventDefault();\n e.nativeEvent.stopImmediatePropagation();\n switchToNextTextarea(index);\n }\n\n e.nativeEvent.stopPropagation();\n },\n };\n\n const TextareaFooter = (\n <div className='textAreaFooter'>\n <div className='hotkeyTip'>\n {tabToSwitchEnabled && <span>{`[${t('Switch')}]Tab`}</span>}\n <span>{`[${t('TurnPage')}]Ctrl+Enter`}</span>\n </div>\n <div className='wordCount'>\n <span className={textLength >= maxLength ? 'warning' : ''}>{textLength}</span>/\n <span>{maxLength}</span>\n </div>\n </div>\n );\n\n useEffect(() => {\n if (disabled) {\n setTextAreaFocus(false);\n }\n }, [disabled]);\n\n return (\n <div className='textField'>\n <div className='label'>\n <span className={classnames({ required: config.required })}>{config.label}</span>\n <i\n className={classnames({ clearText: true, disabled: disabled })}\n onClick={() => {\n if (disabled) {\n return;\n }\n updateTextWithKey('');\n }}\n />\n </div>\n <div\n className={classnames({\n disabled,\n 'textarea-outline': true,\n 'ant-input-focused': textAreaFocus,\n textareaContainer: true,\n focus: textAreaFocus,\n invalid: invalid,\n })}\n >\n <TextareaWithFooter footer={TextareaFooter} textareaProps={textareaProps} />\n </div>\n </div>\n );\n};\n\nconst TextToolSidebar: React.FC<IProps> = ({\n toolInstance,\n imgIndex,\n dispatch,\n triggerEventAfterIndexChanged,\n step,\n stepList,\n basicResultList,\n}) => {\n const [configList, setConfigList] = useState<IConfigListItem[]>([]);\n const [focusIndex, setFocusIndex] = useState(0);\n const [, forceRender] = useState(0);\n\n const switchToNextTextarea = (currentIndex: number) => {\n const nextIndex = (currentIndex + 1) % configList.length;\n textareaFocus(nextIndex);\n };\n\n const textareaFocus = (index: number) => {\n setTimeout(() => {\n const textarea = document.getElementById(`textInput-${index}`) as HTMLTextAreaElement;\n if (textarea) {\n setFocusIndex(index);\n textarea.focus();\n textarea.select();\n textarea.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n });\n };\n\n useEffect(() => {\n if (toolInstance) {\n setConfigList(cloneDeep(toolInstance.config.configList));\n toolInstance.singleOn('valueUpdated', () => {\n forceRender((s) => s + 1);\n });\n }\n }, [toolInstance]);\n\n const updateText = (v: string, k: string) => {\n toolInstance.updateTextValue(k, v);\n };\n\n useEffect(() => {\n if (imgIndex > -1 && triggerEventAfterIndexChanged) {\n textareaFocus(0);\n }\n }, [imgIndex]);\n\n const result = toolInstance.textList[0]?.value ?? {};\n\n const onNext = () => {\n dispatch(PageForward(true));\n };\n\n const stepConfig = ConfigUtils.getStepConfig(stepList, step);\n const disabled = stepConfig.dataSourceStep > 0 && basicResultList.length === 0;\n\n return (\n <div className='textToolOperationMenu'>\n {configList.map((i, index) => (\n <SingleTextInput\n config={i}\n key={i.key}\n index={index}\n result={result}\n updateText={updateText}\n switchToNextTextarea={switchToNextTextarea}\n hasMultiple={configList.length > 1}\n focus={focusIndex === index}\n onNext={onNext}\n disabled={disabled}\n />\n ))}\n </div>\n );\n};\n\nfunction mapStateToProps(state: AppState) {\n return {\n toolInstance: state.annotation.toolInstance,\n imgIndex: state.annotation.imgIndex,\n step: state.annotation.step,\n basicResultList: state.annotation.basicResultList,\n stepList: state.annotation.stepList,\n triggerEventAfterIndexChanged: state.annotation.triggerEventAfterIndexChanged,\n };\n}\n\nexport default connect(mapStateToProps)(TextToolSidebar);\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/ToolStyle/index.tsx"],"sourcesContent":["import { Slider } from 'antd/es';\nimport React from 'react';\nimport widthSvg from '@/assets/toolStyle/icon_border.svg';\nimport colorSvg from '@/assets/toolStyle/icon_borderColor.svg';\nimport borderOpacitySvg from '@/assets/toolStyle/icon_opacityStroke.svg';\nimport fillOpacitySvg from '@/assets/toolStyle/icon_opacityFill.svg';\n\nimport { connect } from 'react-redux';\nimport { UpdateToolStyleConfig } from '@/store/toolStyle/actionCreators';\nimport { store } from '@/index';\nimport { AppState } from '@/store';\nimport { ToolStyleState } from '@/store/toolStyle/types';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n toolStyle: ToolStyleState;\n config: string;\n}\ntype ToolStyleKey = keyof ToolStyleState;\n\nconst getMarks = (type: string, t: any) => {\n const lineMarks = [\n { step: 1, value: '1' },\n { step: 2, value: '2' },\n { step: 3, value: '3' },\n { step: 4, value: '4' },\n { step: 5, value: '5' },\n ];\n const colorMarks = [\n { step: 1, value: 'Blue' },\n { step: 3, value: 'Cyan' },\n { step: 5, value: 'Green' },\n { step: 7, value: 'Yellow' },\n { step: 9, value: 'Pink' },\n ];\n const borderOpacityMarks = [\n { step: 1, value: '0.2' },\n { step: 3, value: '0.4' },\n { step: 5, value: '0.6' },\n { step: 7, value: '0.8' },\n { step: 9, value: '1.0' },\n ];\n\n const fillOpacityMarks = [\n { step: 1, value: '0' },\n { step: 3, value: '0.2' },\n { step: 5, value: '0.4' },\n { step: 7, value: '0.6' },\n { step: 9, value: '0.8' },\n ];\n let list: Array<{ step: number; value: string }> = [];\n const marks: {\n [a: number]: {\n style: {};\n label: any;\n };\n } = {};\n switch (type) {\n case 'width':\n list = lineMarks;\n break;\n case 'color':\n list = colorMarks;\n break;\n case 'borderOpacity':\n list = borderOpacityMarks;\n break;\n case 'fillOpacity':\n list = fillOpacityMarks;\n break;\n }\n list.forEach(({ step, value }) => {\n marks[step] = {\n style: { color: '#999999', fontSize: '12px' },\n label: <span>{t(value)}</span>,\n };\n });\n return marks;\n};\n\nconst getTitle = (title: string) => {\n switch (title) {\n case 'width':\n return 'BorderThickness';\n case 'color':\n return 'Color';\n case 'borderOpacity':\n return 'BorderOpacity';\n case 'fillOpacity':\n return 'FillOpacity';\n default:\n return '';\n }\n};\nconst getImage = (title: string) => {\n switch (title) {\n case 'width':\n return widthSvg;\n case 'color':\n return colorSvg;\n case 'borderOpacity':\n return borderOpacitySvg;\n case 'fillOpacity':\n return fillOpacitySvg;\n }\n};\nconst getDefaultValue = (value: string) => {\n switch (value) {\n case 'width':\n return 2;\n case 'color':\n return 1;\n case 'borderOpacity':\n return 9;\n case 'fillOpacity':\n return 9;\n }\n};\n\n/**\n * 判断使用那种样式 (slider的step中间为选中和step为选中)\n * @param info TToolStyleConfig\n */\nconst getStyleType = (info: string): boolean => ['width'].includes(info);\n\nconst ToolStyle = (props: IProps) => {\n const { toolStyle } = props;\n const { width, color, borderOpacity, fillOpacity } = toolStyle;\n const styleConfig = {\n width,\n color,\n borderOpacity,\n fillOpacity,\n };\n const { t } = useTranslation();\n\n // TODO - 样式标准的定义\n const annotationConfig: any = props.config;\n\n const changeToolStyle = (obj: { [key: string]: number }) => {\n store.dispatch(UpdateToolStyleConfig(obj));\n };\n\n return (\n <div className='toolStyle'>\n {Object.entries(styleConfig).map((item: any[]) => {\n const key: ToolStyleKey = item[0];\n // 判断是否需要 color 的使用,现在暂时默认不需要\n if (annotationConfig?.attributeConfigurable === true && key === 'color') {\n return null;\n }\n return (\n <div id={`style-${key}`} className='styleSlider' key={key}>\n <span className='title'>\n <img src={getImage(key)} className='icon' />\n {t(getTitle(key))}\n </span>\n <span className='slider'>\n <Slider\n tipFormatter={null}\n max={getStyleType(key) ? 5 : 10}\n min={getStyleType(key) ? 1 : 0}\n step={getStyleType(key) ? 1 : null}\n value={(toolStyle[key] ?? getDefaultValue(key)) as number}\n marks={getMarks(key, t)}\n onChange={(e: any) => changeToolStyle({ [key]: e })}\n />\n </span>\n </div>\n );\n })}\n </div>\n );\n};\nconst mapStateToProps = ({ toolStyle, annotation }: AppState) => ({\n toolStyle,\n config: annotation.toolInstance.config,\n});\nexport default connect(mapStateToProps)(ToolStyle);\n"],"names":["widthSvg","colorSvg","borderOpacitySvg","fillOpacitySvg"],"mappings":";;;;;;;;;;;AAoBA,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/ToolStyle/index.tsx"],"sourcesContent":["import { Slider } from 'antd/es';\nimport React from 'react';\nimport widthSvg from '@/assets/toolStyle/icon_border.svg';\nimport colorSvg from '@/assets/toolStyle/icon_borderColor.svg';\nimport borderOpacitySvg from '@/assets/toolStyle/icon_opacityStroke.svg';\nimport fillOpacitySvg from '@/assets/toolStyle/icon_opacityFill.svg';\n\nimport { connect } from 'react-redux';\nimport { UpdateToolStyleConfig } from '@/store/toolStyle/actionCreators';\nimport { store } from '@/index';\nimport { AppState } from '@/store';\nimport { ToolStyleState } from '@/store/toolStyle/types';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n toolStyle: ToolStyleState;\n config: string;\n}\ntype ToolStyleKey = keyof ToolStyleState;\n\nconst getMarks = (type: string, t: any) => {\n const lineMarks = [\n { step: 1, value: '1' },\n { step: 2, value: '2' },\n { step: 3, value: '3' },\n { step: 4, value: '4' },\n { step: 5, value: '5' },\n ];\n const colorMarks = [\n { step: 1, value: 'Blue' },\n { step: 3, value: 'Cyan' },\n { step: 5, value: 'Green' },\n { step: 7, value: 'Yellow' },\n { step: 9, value: 'Pink' },\n ];\n const borderOpacityMarks = [\n { step: 1, value: '0.2' },\n { step: 3, value: '0.4' },\n { step: 5, value: '0.6' },\n { step: 7, value: '0.8' },\n { step: 9, value: '1.0' },\n ];\n\n const fillOpacityMarks = [\n { step: 1, value: '0' },\n { step: 3, value: '0.2' },\n { step: 5, value: '0.4' },\n { step: 7, value: '0.6' },\n { step: 9, value: '0.8' },\n ];\n let list: Array<{ step: number; value: string }> = [];\n const marks: {\n [a: number]: {\n style: {};\n label: any;\n };\n } = {};\n switch (type) {\n case 'width':\n list = lineMarks;\n break;\n case 'color':\n list = colorMarks;\n break;\n case 'borderOpacity':\n list = borderOpacityMarks;\n break;\n case 'fillOpacity':\n list = fillOpacityMarks;\n break;\n }\n list.forEach(({ step, value }) => {\n marks[step] = {\n style: { color: '#999999', fontSize: '12px' },\n label: <span>{t(value)}</span>,\n };\n });\n return marks;\n};\n\nconst getTitle = (title: string) => {\n switch (title) {\n case 'width':\n return 'BorderThickness';\n case 'color':\n return 'Color';\n case 'borderOpacity':\n return 'BorderOpacity';\n case 'fillOpacity':\n return 'FillOpacity';\n default:\n return '';\n }\n};\nconst getImage = (title: string) => {\n switch (title) {\n case 'width':\n return widthSvg;\n case 'color':\n return colorSvg;\n case 'borderOpacity':\n return borderOpacitySvg;\n case 'fillOpacity':\n return fillOpacitySvg;\n }\n};\nconst getDefaultValue = (value: string) => {\n switch (value) {\n case 'width':\n return 2;\n case 'color':\n return 1;\n case 'borderOpacity':\n return 9;\n case 'fillOpacity':\n return 9;\n }\n};\n\n/**\n * 判断使用那种样式 (slider的step中间为选中和step为选中)\n * @param info TToolStyleConfig\n */\nconst getStyleType = (info: string): boolean => ['width'].includes(info);\n\nconst ToolStyle = (props: IProps) => {\n const { toolStyle } = props;\n const { width, color, borderOpacity, fillOpacity } = toolStyle;\n const styleConfig = {\n width,\n color,\n borderOpacity,\n fillOpacity,\n };\n const { t } = useTranslation();\n\n // TODO - 样式标准的定义\n const annotationConfig: any = props.config;\n\n const changeToolStyle = (obj: { [key: string]: number }) => {\n store.dispatch(UpdateToolStyleConfig(obj));\n };\n\n return (\n <div className='toolStyle'>\n {Object.entries(styleConfig).map((item: any[]) => {\n const key: ToolStyleKey = item[0];\n // 判断是否需要 color 的使用,现在暂时默认不需要\n if (annotationConfig?.attributeConfigurable === true && key === 'color') {\n return null;\n }\n return (\n <div id={`style-${key}`} className='styleSlider' key={key}>\n <span className='title'>\n <img src={getImage(key)} className='icon' />\n {t(getTitle(key))}\n </span>\n <span className='slider'>\n <Slider\n tipFormatter={null}\n max={getStyleType(key) ? 5 : 10}\n min={getStyleType(key) ? 1 : 0}\n step={getStyleType(key) ? 1 : null}\n value={(toolStyle[key] ?? getDefaultValue(key)) as number}\n marks={getMarks(key, t)}\n onChange={(e: any) => changeToolStyle({ [key]: e })}\n />\n </span>\n </div>\n );\n })}\n </div>\n );\n};\nconst mapStateToProps = ({ toolStyle, annotation }: AppState) => ({\n toolStyle,\n config: annotation.toolInstance.config,\n});\nexport default connect(mapStateToProps)(ToolStyle);\n"],"names":["widthSvg","colorSvg","borderOpacitySvg","fillOpacitySvg"],"mappings":"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"}
|