@labelbee/lb-components 1.8.0-alpha.3 → 1.8.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/pointCloudView/PointCloudContext.js +1 -1
- package/dist/components/pointCloudView/PointCloudListener.js +1 -1
- package/dist/components/pointCloudView/PointCloudTopView.js +1 -1
- package/dist/components/pointCloudView/hooks/useAttribute.js +1 -1
- package/dist/components/pointCloudView/hooks/useConfig.js +1 -1
- package/dist/components/pointCloudView/hooks/useHistory.js +1 -1
- package/dist/components/pointCloudView/hooks/useSingleBox.js +1 -1
- package/dist/components/pointCloudView/hooks/useStatus.js +1 -1
- package/dist/store/annotation/map.js +1 -1
- package/dist/types/components/pointCloudView/PointCloud2DView.d.ts +1 -1
- package/dist/types/components/pointCloudView/PointCloud3DView.d.ts +1 -1
- package/dist/types/components/pointCloudView/PointCloudBackView.d.ts +1 -1
- package/dist/types/components/pointCloudView/PointCloudContext.d.ts +5 -1
- package/dist/types/components/pointCloudView/PointCloudListener.d.ts +1 -1
- package/dist/types/components/pointCloudView/PointCloudSideView.d.ts +1 -1
- package/dist/types/components/pointCloudView/PointCloudTopView.d.ts +1 -1
- package/dist/types/components/pointCloudView/hooks/useSingleBox.d.ts +1 -0
- package/dist/types/components/pointCloudView/hooks/useStatus.d.ts +1 -1
- package/dist/types/store/annotation/map.d.ts +2 -0
- package/dist/types/views/MainView/toolFooter/FooterTips/ToolHotKey/pointCloud/index.d.ts +2 -0
- package/dist/views/MainView/sidebar/PointCloudToolSidebar/index.js +1 -1
- package/dist/views/MainView/toolFooter/FooterTips/ToolHotKey/index.js +1 -1
- package/dist/views/MainView/toolFooter/FooterTips/ToolHotKey/pointCloud/index.js +1 -1
- package/es/components/pointCloudView/PointCloudContext.js +1 -1
- package/es/components/pointCloudView/PointCloudContext.js.map +1 -1
- package/es/components/pointCloudView/PointCloudListener.js +1 -1
- package/es/components/pointCloudView/PointCloudListener.js.map +1 -1
- package/es/components/pointCloudView/PointCloudTopView.js +1 -1
- package/es/components/pointCloudView/PointCloudTopView.js.map +1 -1
- package/es/components/pointCloudView/hooks/useAttribute.js +1 -1
- package/es/components/pointCloudView/hooks/useAttribute.js.map +1 -1
- package/es/components/pointCloudView/hooks/useConfig.js +1 -1
- package/es/components/pointCloudView/hooks/useConfig.js.map +1 -1
- package/es/components/pointCloudView/hooks/useHistory.js +1 -1
- package/es/components/pointCloudView/hooks/useHistory.js.map +1 -1
- package/es/components/pointCloudView/hooks/useSingleBox.js +1 -1
- package/es/components/pointCloudView/hooks/useSingleBox.js.map +1 -1
- package/es/components/pointCloudView/hooks/useStatus.js +1 -1
- package/es/components/pointCloudView/hooks/useStatus.js.map +1 -1
- package/es/store/annotation/map.js +1 -1
- package/es/store/annotation/map.js.map +1 -1
- package/es/views/MainView/sidebar/PointCloudToolSidebar/index.js +1 -1
- package/es/views/MainView/sidebar/PointCloudToolSidebar/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/pointCloud/index.js +1 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/pointCloud/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointCloudListener.js","sources":["../../../src/components/pointCloudView/PointCloudListener.tsx"],"sourcesContent":["import { PointCloudContext } from './PointCloudContext';\nimport { useRotate } from './hooks/useRotate';\nimport { useBoxes } from './hooks/useBoxes';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport React, { useContext, useEffect } from 'react';\nimport { cTool, AttributeUtils, CommonToolUtils } from '@labelbee/lb-annotation';\nimport { message } from 'antd';\nimport { connect } from 'react-redux';\nimport { a2MapStateToProps, IA2MapStateProps } from '@/store/annotation/map';\nimport { useCustomToolInstance } from '@/hooks/annotation';\nimport { useStatus } from './hooks/useStatus';\nimport { jsonParser } from '@/utils';\nimport { usePointCloudViews } from './hooks/usePointCloudViews';\nimport { LabelBeeContext } from '@/store/ctx';\nimport { useHistory } from './hooks/useHistory';\nimport { useAttribute } from './hooks/useAttribute';\nimport { useConfig } from './hooks/useConfig';\nimport { usePolygon } from './hooks/usePolygon';\n\nconst { EPolygonPattern } = cTool;\n\ninterface IProps extends IA2MapStateProps {\n checkMode?: boolean;\n}\n\nconst PointCloudListener: React.FC<IProps> = ({ currentData, config, checkMode }) => {\n const ptCtx = useContext(PointCloudContext);\n const { changeSelectedBoxValid, selectNextBox, selectPrevBox, updateSelectedBox } =\n useSingleBox();\n const { clearAllResult } = useStatus();\n const basicInfo = jsonParser(currentData.result);\n const { copySelectedBoxes, pasteSelectedBoxes, copiedBoxes } = useBoxes();\n const { toolInstanceRef } = useCustomToolInstance({ basicInfo });\n const { updateRotate } = useRotate({ currentData });\n const { updatePointCloudData, topViewSelectedChanged } = usePointCloudViews();\n const { redo, undo, pushHistoryWithList, pushHistoryUnderUpdatePolygon } = useHistory();\n const { syncThreeViewsAttribute } = useAttribute();\n const { syncAllViewsConfig, reRenderTopViewRange } = useConfig();\n const { selectedPolygon } = usePolygon();\n\n const keydownEvents = (lowerCaseKey: string, e: KeyboardEvent) => {\n const { topViewInstance, mainViewInstance } = ptCtx;\n if (!topViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation: TopPointCloudPolygonOperation } = topViewInstance;\n\n switch (lowerCaseKey) {\n case 'q': {\n // Q - anticlockwise\n updateRotate(2);\n break;\n }\n\n case 'e':\n // E - closewise\n updateRotate(-2);\n\n break;\n\n case 'g':\n // G , overturn 180\n updateRotate(180);\n\n break;\n\n case 'u':\n {\n // U , change TopOpereation Pattern\n const newPattern =\n TopPointCloudPolygonOperation.pattern === EPolygonPattern.Normal\n ? EPolygonPattern.Rect\n : EPolygonPattern.Normal;\n TopPointCloudPolygonOperation.setPattern(newPattern);\n const POLYGON_PATTERN = {\n [EPolygonPattern.Normal]: 'Normal Pattern',\n [EPolygonPattern.Rect]: 'Rect Pattern',\n };\n message.success(`Change Pattern to ${POLYGON_PATTERN[newPattern]} successfully`);\n\n // Clear Status\n TopPointCloudPolygonOperation.clearActiveStatus();\n TopPointCloudPolygonOperation.clearDrawingStatus();\n }\n\n break;\n\n // +: Increase points size\n case '+':\n mainViewInstance?.updatePointSize(true);\n break;\n\n // -: Reduce points size\n case '-':\n mainViewInstance?.updatePointSize(false);\n break;\n\n case 'v':\n ptCtx.setPointCloudValid(!ptCtx.valid);\n break;\n\n case 'tab':\n if (e.shiftKey) {\n selectPrevBox();\n break;\n }\n selectNextBox();\n break;\n\n case 'f':\n changeSelectedBoxValid();\n break;\n\n default: {\n if (config.attributeList?.length > 0) {\n const keyCode2Attribute = AttributeUtils.getAttributeByKeycode(\n e.keyCode,\n config.attributeList,\n );\n\n if (keyCode2Attribute !== undefined) {\n toolInstanceRef.current.setDefaultAttribute(keyCode2Attribute);\n }\n }\n return;\n }\n }\n };\n\n const ctrlKeydownEvents = (lowerCaseKey: string, e: KeyboardEvent) => {\n switch (lowerCaseKey) {\n case 'c':\n copySelectedBoxes();\n break;\n case 'v':\n pasteSelectedBoxes();\n break;\n case 'a':\n ptCtx.selectedAllBoxes();\n break;\n case 'z': {\n if (e.shiftKey) {\n redo();\n } else {\n undo();\n }\n break;\n }\n\n default:\n break;\n }\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (!CommonToolUtils.hotkeyFilter(e) || checkMode === true) {\n return;\n }\n\n const lowerCaseKey = e.key.toLocaleLowerCase();\n\n if (e.ctrlKey) {\n ctrlKeydownEvents(lowerCaseKey, e);\n return;\n }\n\n keydownEvents(lowerCaseKey, e);\n };\n\n useEffect(() => {\n const { topViewInstance } = ptCtx;\n if (!topViewInstance) {\n return;\n }\n\n window.addEventListener('keydown', onKeyDown);\n\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [ptCtx, copiedBoxes, config, ptCtx.pointCloudBoxList, ptCtx.polygonList]);\n\n useEffect(() => {\n syncAllViewsConfig(config);\n }, [config]);\n\n useEffect(() => {\n if (config?.radius) {\n reRenderTopViewRange(config?.radius);\n }\n }, [config?.radius]);\n\n // Page switch data initialization\n useEffect(() => {\n updatePointCloudData?.();\n }, [currentData, ptCtx.mainViewInstance]);\n\n // Update the listener of toolInstance.\n useEffect(() => {\n toolInstanceRef.current.exportData = () => {\n return [ptCtx.pointCloudBoxList, { valid: ptCtx.valid }];\n };\n\n toolInstanceRef.current.exportCustomData = () => {\n return {\n resultPolygon: ptCtx.polygonList ?? [],\n };\n };\n\n toolInstanceRef.current.setDefaultAttribute = (newAttribute: string) => {\n syncThreeViewsAttribute(newAttribute);\n const selectBox = ptCtx.selectedPointCloudBox;\n if (selectBox) {\n selectBox.attribute = newAttribute;\n\n const newPointCloudList = updateSelectedBox(selectBox);\n\n if (ptCtx.mainViewInstance) {\n // TODO: Poor performance.\n topViewSelectedChanged(selectBox, newPointCloudList);\n }\n }\n if (selectedPolygon) {\n pushHistoryUnderUpdatePolygon({ ...selectedPolygon, attribute: newAttribute });\n }\n };\n\n toolInstanceRef.current.setSubAttribute = (key: string, value: string) => {\n const selectBox = ptCtx.selectedPointCloudBox;\n if (selectBox) {\n const originSubAttribute = selectBox?.subAttribute ?? {};\n\n selectBox.subAttribute = {\n ...originSubAttribute,\n [key]: value,\n };\n\n updateSelectedBox(selectBox);\n }\n };\n toolInstanceRef.current.clearResult = () => {\n clearAllResult?.();\n };\n\n toolInstanceRef.current.redo = () => {\n redo();\n };\n\n toolInstanceRef.current.undo = () => {\n undo();\n };\n\n toolInstanceRef.current.setValid = (valid: boolean) => {\n toolInstanceRef.current.valid = valid;\n\n // Avoid triggering SetState operations in the reducer phase\n setTimeout(() => {\n ptCtx.setPointCloudValid(valid);\n\n if (valid === false) {\n clearAllResult();\n }\n });\n };\n\n /**\n * TopView forbid all operations.\n * @param forbidOperation\n */\n toolInstanceRef.current.setForbidOperation = (forbidOperation: boolean) => {\n ptCtx.topViewInstance?.pointCloud2dOperation?.setForbidOperation(forbidOperation);\n if (forbidOperation === true) {\n // Clear Selected Status.\n ptCtx.setSelectedIDs(undefined);\n }\n };\n\n toolInstanceRef.current.setShowDefaultCursor = (showDefaultCursor: boolean) => {\n ptCtx.topViewInstance?.pointCloud2dOperation?.setShowDefaultCursor(showDefaultCursor);\n };\n }, [\n ptCtx.pointCloudBoxList,\n ptCtx.selectedID,\n ptCtx.valid,\n ptCtx.polygonList,\n ptCtx.mainViewInstance,\n ]);\n\n useEffect(() => {\n toolInstanceRef.current.history = {\n // Origin Result\n pushHistory: (result: any[]) => {\n // Rewrite\n // TODO, The polygon is out of range.\n pushHistoryWithList({ pointCloudBoxList: result });\n },\n initRecord: () => {},\n };\n }, []);\n\n useEffect(() => {\n const toolInstance = ptCtx.topViewInstance?.pointCloud2dOperation;\n\n if (!toolInstance) {\n return;\n }\n // TopViewOperation Emitter\n const syncAttribute = (newAttribute: string) => {\n syncThreeViewsAttribute(newAttribute);\n };\n\n const messageError = (error: string) => {\n message.error(error);\n };\n const messageInfo = (info: string) => {\n message.info(info);\n };\n\n toolInstance.on('syncAttribute', syncAttribute);\n toolInstance.on('messageError', messageError);\n toolInstance.on('messageInfo', messageInfo);\n\n return () => {\n toolInstance.unbind('syncAttribute', syncAttribute);\n toolInstance.unbind('messageError', messageError);\n toolInstance.unbind('messageInfo', messageInfo);\n };\n }, [ptCtx.topViewInstance]);\n\n return null;\n};\n\nexport default connect(a2MapStateToProps, null, null, { context: LabelBeeContext })(\n PointCloudListener,\n);\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PointCloudListener.js","sources":["../../../src/components/pointCloudView/PointCloudListener.tsx"],"sourcesContent":["import { PointCloudContext } from './PointCloudContext';\nimport { useRotate } from './hooks/useRotate';\nimport { useBoxes } from './hooks/useBoxes';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport React, { useContext, useEffect } from 'react';\nimport { cTool, AttributeUtils, CommonToolUtils, EToolName } from '@labelbee/lb-annotation';\nimport { message } from 'antd';\nimport { connect } from 'react-redux';\nimport { a2MapStateToProps, IA2MapStateProps } from '@/store/annotation/map';\nimport { useCustomToolInstance } from '@/hooks/annotation';\nimport { useStatus } from './hooks/useStatus';\nimport { jsonParser } from '@/utils';\nimport { usePointCloudViews } from './hooks/usePointCloudViews';\nimport { LabelBeeContext } from '@/store/ctx';\nimport { useHistory } from './hooks/useHistory';\nimport { useAttribute } from './hooks/useAttribute';\nimport { useConfig } from './hooks/useConfig';\nimport { usePolygon } from './hooks/usePolygon';\nimport { useTranslation } from 'react-i18next';\n\nconst { EPolygonPattern } = cTool;\n\ninterface IProps extends IA2MapStateProps {\n checkMode?: boolean;\n}\n\nconst PointCloudListener: React.FC<IProps> = ({ currentData, config, checkMode, configString }) => {\n const ptCtx = useContext(PointCloudContext);\n const {\n changeSelectedBoxValid,\n selectNextBox,\n selectPrevBox,\n updateSelectedBox,\n deleteSelectedPointCloudBoxAndPolygon,\n } = useSingleBox();\n const { clearAllResult, updatePointCloudPattern } = useStatus();\n const basicInfo = jsonParser(currentData.result);\n const { copySelectedBoxes, pasteSelectedBoxes, copiedBoxes } = useBoxes();\n const { toolInstanceRef } = useCustomToolInstance({ basicInfo });\n const { updateRotate } = useRotate({ currentData });\n const { updatePointCloudData, topViewSelectedChanged } = usePointCloudViews();\n const { redo, undo, pushHistoryWithList, pushHistoryUnderUpdatePolygon } = useHistory();\n const { syncThreeViewsAttribute } = useAttribute();\n const { syncAllViewsConfig, reRenderTopViewRange } = useConfig();\n const { selectedPolygon } = usePolygon();\n const { t } = useTranslation();\n\n const keydownEvents = (lowerCaseKey: string, e: KeyboardEvent) => {\n const { topViewInstance, mainViewInstance } = ptCtx;\n if (!topViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation: TopPointCloudPolygonOperation } = topViewInstance;\n\n switch (lowerCaseKey) {\n case 'q': {\n // Q - anticlockwise\n updateRotate(2);\n break;\n }\n\n case 'e':\n // E - closewise\n updateRotate(-2);\n\n break;\n\n case 'g':\n // G , overturn 180\n updateRotate(180);\n\n break;\n\n case 'u':\n {\n // U , change TopOpereation Pattern\n const newToolName =\n TopPointCloudPolygonOperation.pattern === EPolygonPattern.Normal\n ? EToolName.Rect\n : EToolName.Polygon;\n updatePointCloudPattern(newToolName);\n\n // Tips\n const POLYGON_PATTERN = {\n [EToolName.Polygon]: t('PolygonPattern'),\n [EToolName.Rect]: t('RectPattern'),\n };\n message.success(t('ChangePatternMsg', { pattern: POLYGON_PATTERN[newToolName] }));\n\n // Clear Status\n TopPointCloudPolygonOperation.clearActiveStatus();\n TopPointCloudPolygonOperation.clearDrawingStatus();\n }\n\n break;\n\n // +: Increase points size\n case '+':\n mainViewInstance?.updatePointSize(true);\n break;\n\n // -: Reduce points size\n case '-':\n mainViewInstance?.updatePointSize(false);\n break;\n\n case 'v':\n ptCtx.setPointCloudValid(!ptCtx.valid);\n break;\n\n case 'tab':\n if (e.shiftKey) {\n selectPrevBox();\n break;\n }\n selectNextBox();\n break;\n\n case 'f':\n changeSelectedBoxValid();\n break;\n\n case 'delete':\n deleteSelectedPointCloudBoxAndPolygon();\n break;\n\n default: {\n if (config.attributeList?.length > 0) {\n const keyCode2Attribute = AttributeUtils.getAttributeByKeycode(\n e.keyCode,\n config.attributeList,\n );\n\n if (keyCode2Attribute !== undefined) {\n toolInstanceRef.current.setDefaultAttribute(keyCode2Attribute);\n }\n }\n return;\n }\n }\n };\n\n const ctrlKeydownEvents = (lowerCaseKey: string, e: KeyboardEvent) => {\n switch (lowerCaseKey) {\n case 'c':\n copySelectedBoxes();\n break;\n case 'v':\n pasteSelectedBoxes();\n break;\n case 'a':\n ptCtx.selectedAllBoxes();\n break;\n case 'z': {\n if (e.shiftKey) {\n redo();\n } else {\n undo();\n }\n break;\n }\n\n default:\n break;\n }\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (!CommonToolUtils.hotkeyFilter(e) || checkMode === true) {\n return;\n }\n\n const lowerCaseKey = e.key.toLocaleLowerCase();\n\n if (e.ctrlKey) {\n ctrlKeydownEvents(lowerCaseKey, e);\n return;\n }\n\n keydownEvents(lowerCaseKey, e);\n };\n\n useEffect(() => {\n const { topViewInstance } = ptCtx;\n if (!topViewInstance) {\n return;\n }\n\n window.addEventListener('keydown', onKeyDown);\n\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [ptCtx, copiedBoxes, config, ptCtx.pointCloudBoxList, ptCtx.polygonList]);\n\n useEffect(() => {\n syncAllViewsConfig(config);\n }, [configString]);\n\n useEffect(() => {\n if (config?.radius) {\n reRenderTopViewRange(config?.radius);\n }\n }, [config?.radius]);\n\n // Page switch data initialization\n useEffect(() => {\n updatePointCloudData?.();\n }, [currentData, ptCtx.mainViewInstance]);\n\n // Update the listener of toolInstance.\n useEffect(() => {\n toolInstanceRef.current.exportData = () => {\n return [ptCtx.pointCloudBoxList, { valid: ptCtx.valid }];\n };\n\n toolInstanceRef.current.exportCustomData = () => {\n return {\n resultPolygon: ptCtx.polygonList ?? [],\n };\n };\n\n toolInstanceRef.current.setDefaultAttribute = (newAttribute: string) => {\n syncThreeViewsAttribute(newAttribute);\n const selectBox = ptCtx.selectedPointCloudBox;\n if (selectBox) {\n selectBox.attribute = newAttribute;\n\n const newPointCloudList = updateSelectedBox(selectBox);\n\n if (ptCtx.mainViewInstance) {\n // TODO: Poor performance.\n topViewSelectedChanged(selectBox, newPointCloudList);\n }\n }\n if (selectedPolygon) {\n pushHistoryUnderUpdatePolygon({ ...selectedPolygon, attribute: newAttribute });\n }\n };\n\n toolInstanceRef.current.setSubAttribute = (key: string, value: string) => {\n const selectBox = ptCtx.selectedPointCloudBox;\n if (selectBox) {\n const originSubAttribute = selectBox?.subAttribute ?? {};\n\n selectBox.subAttribute = {\n ...originSubAttribute,\n [key]: value,\n };\n\n updateSelectedBox(selectBox);\n }\n };\n toolInstanceRef.current.clearResult = () => {\n clearAllResult?.();\n };\n\n toolInstanceRef.current.redo = () => {\n redo();\n };\n\n toolInstanceRef.current.undo = () => {\n undo();\n };\n\n toolInstanceRef.current.setValid = (valid: boolean) => {\n toolInstanceRef.current.valid = valid;\n\n // Avoid triggering SetState operations in the reducer phase\n setTimeout(() => {\n ptCtx.setPointCloudValid(valid);\n\n if (valid === false) {\n clearAllResult();\n }\n });\n };\n\n /**\n * TopView forbid all operations.\n * @param forbidOperation\n */\n toolInstanceRef.current.setForbidOperation = (forbidOperation: boolean) => {\n ptCtx.topViewInstance?.pointCloud2dOperation?.setForbidOperation(forbidOperation);\n if (forbidOperation === true) {\n // Clear Selected Status.\n ptCtx.setSelectedIDs(undefined);\n }\n };\n\n toolInstanceRef.current.setShowDefaultCursor = (showDefaultCursor: boolean) => {\n ptCtx.topViewInstance?.pointCloud2dOperation?.setShowDefaultCursor(showDefaultCursor);\n };\n }, [\n ptCtx.pointCloudBoxList,\n ptCtx.selectedID,\n ptCtx.valid,\n ptCtx.polygonList,\n ptCtx.mainViewInstance,\n ]);\n\n useEffect(() => {\n toolInstanceRef.current.history = {\n // Origin Result\n pushHistory: (result: any[]) => {\n // Rewrite\n // TODO, The polygon is out of range.\n pushHistoryWithList({ pointCloudBoxList: result });\n },\n initRecord: () => {},\n };\n }, []);\n\n useEffect(() => {\n const toolInstance = ptCtx.topViewInstance?.pointCloud2dOperation;\n\n if (!toolInstance) {\n return;\n }\n // TopViewOperation Emitter\n const syncAttribute = (newAttribute: string) => {\n syncThreeViewsAttribute(newAttribute);\n };\n\n const messageError = (error: string) => {\n message.error(error);\n };\n const messageInfo = (info: string) => {\n message.info(info);\n };\n\n toolInstance.on('syncAttribute', syncAttribute);\n toolInstance.on('messageError', messageError);\n toolInstance.on('messageInfo', messageInfo);\n\n return () => {\n toolInstance.unbind('syncAttribute', syncAttribute);\n toolInstance.unbind('messageError', messageError);\n toolInstance.unbind('messageInfo', messageInfo);\n };\n }, [ptCtx.topViewInstance]);\n\n return null;\n};\n\nexport default connect(a2MapStateToProps, null, null, { context: LabelBeeContext })(\n PointCloudListener,\n);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAM,CAAE,eAAoB,CAAA,GAAA,KAAA,CAAA;AAM5B,MAAM,qBAAuC,CAAC,CAAE,WAAa,EAAA,MAAA,EAAQ,WAAW,YAAmB,CAAA,KAAA;AACjG,EAAA,MAAM,QAAQ,UAAW,CAAA,iBAAA,CAAA,CAAA;AACzB,EAAM,MAAA;AAAA,IACJ,sBAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,iBAAA;AAAA,IACA,qCAAA;AAAA,GACE,GAAA,YAAA,EAAA,CAAA;AACJ,EAAM,MAAA,CAAE,gBAAgB,uBAA4B,CAAA,GAAA,SAAA,EAAA,CAAA;AACpD,EAAM,MAAA,SAAA,GAAY,WAAW,WAAY,CAAA,MAAA,CAAA,CAAA;AACzC,EAAM,MAAA,CAAE,iBAAmB,EAAA,kBAAA,EAAoB,WAAgB,CAAA,GAAA,QAAA,EAAA,CAAA;AAC/D,EAAM,MAAA,CAAE,eAAoB,CAAA,GAAA,qBAAA,CAAsB,CAAE,SAAA,CAAA,CAAA,CAAA;AACpD,EAAM,MAAA,CAAE,YAAiB,CAAA,GAAA,SAAA,CAAU,CAAE,WAAA,CAAA,CAAA,CAAA;AACrC,EAAM,MAAA,CAAE,sBAAsB,sBAA2B,CAAA,GAAA,kBAAA,EAAA,CAAA;AACzD,EAAA,MAAM,CAAE,IAAA,EAAM,IAAM,EAAA,mBAAA,EAAqB,6BAAkC,CAAA,GAAA,UAAA,EAAA,CAAA;AAC3E,EAAA,MAAM,CAAE,uBAA4B,CAAA,GAAA,YAAA,EAAA,CAAA;AACpC,EAAM,MAAA,CAAE,oBAAoB,oBAAyB,CAAA,GAAA,SAAA,EAAA,CAAA;AACrD,EAAA,MAAM,CAAE,eAAoB,CAAA,GAAA,UAAA,EAAA,CAAA;AAC5B,EAAA,MAAM,CAAE,CAAM,CAAA,GAAA,cAAA,EAAA,CAAA;AAEd,EAAM,MAAA,aAAA,GAAgB,CAAC,YAAA,EAAsB,CAAqB,KAAA;AA/CpE,IAAA,IAAA,EAAA,CAAA;AAgDI,IAAM,MAAA,CAAE,iBAAiB,gBAAqB,CAAA,GAAA,KAAA,CAAA;AAC9C,IAAA,IAAI,CAAC,eAAiB,EAAA;AACpB,MAAA,OAAA;AAAA,KAAA;AAGF,IAAM,MAAA,CAAE,uBAAuB,6BAAkC,CAAA,GAAA,eAAA,CAAA;AAEjE,IAAQ,QAAA,YAAA;AAAA,MAAA,KACD,GAAK,EAAA;AAER,QAAa,YAAA,CAAA,CAAA,CAAA,CAAA;AACb,QAAA,MAAA;AAAA,OAAA;AAAA,MAGG,KAAA,GAAA;AAEH,QAAa,YAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEb,QAAA,MAAA;AAAA,MAEG,KAAA,GAAA;AAEH,QAAa,YAAA,CAAA,GAAA,CAAA,CAAA;AAEb,QAAA,MAAA;AAAA,MAEG,KAAA,GAAA;AACH,QAAA;AAEE,UAAA,MAAM,cACJ,6BAA8B,CAAA,OAAA,KAAY,gBAAgB,MACtD,GAAA,SAAA,CAAU,OACV,SAAU,CAAA,OAAA,CAAA;AAChB,UAAwB,uBAAA,CAAA,WAAA,CAAA,CAAA;AAGxB,UAAA,MAAM,eAAkB,GAAA;AAAA,YACrB,CAAA,SAAA,CAAU,UAAU,CAAE,CAAA,gBAAA,CAAA;AAAA,YACtB,CAAA,SAAA,CAAU,OAAO,CAAE,CAAA,aAAA,CAAA;AAAA,WAAA,CAAA;AAEtB,UAAA,OAAA,CAAQ,OAAQ,CAAA,CAAA,CAAE,kBAAoB,EAAA,CAAE,SAAS,eAAgB,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAGjE,UAA8B,6BAAA,CAAA,iBAAA,EAAA,CAAA;AAC9B,UAA8B,6BAAA,CAAA,kBAAA,EAAA,CAAA;AAAA,SAAA;AAGhC,QAAA,MAAA;AAAA,MAGG,KAAA,GAAA;AACH,QAAA,gBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAkB,eAAgB,CAAA,IAAA,CAAA,CAAA;AAClC,QAAA,MAAA;AAAA,MAGG,KAAA,GAAA;AACH,QAAA,gBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAkB,eAAgB,CAAA,KAAA,CAAA,CAAA;AAClC,QAAA,MAAA;AAAA,MAEG,KAAA,GAAA;AACH,QAAM,KAAA,CAAA,kBAAA,CAAmB,CAAC,KAAM,CAAA,KAAA,CAAA,CAAA;AAChC,QAAA,MAAA;AAAA,MAEG,KAAA,KAAA;AACH,QAAA,IAAI,EAAE,QAAU,EAAA;AACd,UAAA,aAAA,EAAA,CAAA;AACA,UAAA,MAAA;AAAA,SAAA;AAEF,QAAA,aAAA,EAAA,CAAA;AACA,QAAA,MAAA;AAAA,MAEG,KAAA,GAAA;AACH,QAAA,sBAAA,EAAA,CAAA;AACA,QAAA,MAAA;AAAA,MAEG,KAAA,QAAA;AACH,QAAA,qCAAA,EAAA,CAAA;AACA,QAAA,MAAA;AAAA,MAEO,SAAA;AACP,QAAA,IAAI,CAAO,CAAA,EAAA,GAAA,MAAA,CAAA,aAAA,KAAP,IAAsB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,IAAS,CAAG,EAAA;AACpC,UAAA,MAAM,iBAAoB,GAAA,cAAA,CAAe,qBACvC,CAAA,CAAA,CAAE,SACF,MAAO,CAAA,aAAA,CAAA,CAAA;AAGT,UAAA,IAAI,sBAAsB,KAAW,CAAA,EAAA;AACnC,YAAA,eAAA,CAAgB,QAAQ,mBAAoB,CAAA,iBAAA,CAAA,CAAA;AAAA,WAAA;AAAA,SAAA;AAGhD,QAAA,OAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AAKN,EAAM,MAAA,iBAAA,GAAoB,CAAC,YAAA,EAAsB,CAAqB,KAAA;AACpE,IAAQ,QAAA,YAAA;AAAA,MACD,KAAA,GAAA;AACH,QAAA,iBAAA,EAAA,CAAA;AACA,QAAA,MAAA;AAAA,MACG,KAAA,GAAA;AACH,QAAA,kBAAA,EAAA,CAAA;AACA,QAAA,MAAA;AAAA,MACG,KAAA,GAAA;AACH,QAAM,KAAA,CAAA,gBAAA,EAAA,CAAA;AACN,QAAA,MAAA;AAAA,MAAA,KACG,GAAK,EAAA;AACR,QAAA,IAAI,EAAE,QAAU,EAAA;AACd,UAAA,IAAA,EAAA,CAAA;AAAA,SACK,MAAA;AACL,UAAA,IAAA,EAAA,CAAA;AAAA,SAAA;AAEF,QAAA,MAAA;AAAA,OAAA;AAIA,KAAA;AAAA,GAAA,CAAA;AAIN,EAAM,MAAA,SAAA,GAAY,CAAC,CAAqB,KAAA;AACtC,IAAA,IAAI,CAAC,eAAA,CAAgB,YAAa,CAAA,CAAA,CAAA,IAAM,cAAc,IAAM,EAAA;AAC1D,MAAA,OAAA;AAAA,KAAA;AAGF,IAAM,MAAA,YAAA,GAAe,EAAE,GAAI,CAAA,iBAAA,EAAA,CAAA;AAE3B,IAAA,IAAI,EAAE,OAAS,EAAA;AACb,MAAA,iBAAA,CAAkB,YAAc,EAAA,CAAA,CAAA,CAAA;AAChC,MAAA,OAAA;AAAA,KAAA;AAGF,IAAA,aAAA,CAAc,YAAc,EAAA,CAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAG9B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,CAAE,eAAoB,CAAA,GAAA,KAAA,CAAA;AAC5B,IAAA,IAAI,CAAC,eAAiB,EAAA;AACpB,MAAA,OAAA;AAAA,KAAA;AAGF,IAAA,MAAA,CAAO,iBAAiB,SAAW,EAAA,SAAA,CAAA,CAAA;AAEnC,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,oBAAoB,SAAW,EAAA,SAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAAA,EAEvC,CAAC,KAAO,EAAA,WAAA,EAAa,MAAQ,EAAA,KAAA,CAAM,mBAAmB,KAAM,CAAA,WAAA,CAAA,CAAA,CAAA;AAE/D,EAAA,SAAA,CAAU,MAAM;AACd,IAAmB,kBAAA,CAAA,MAAA,CAAA,CAAA;AAAA,GAAA,EAClB,CAAC,YAAA,CAAA,CAAA,CAAA;AAEJ,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,iCAAQ,MAAQ,EAAA;AAClB,MAAA,oBAAA,CAAqB,MAAQ,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,MAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,EAE9B,CAAC,MAAQ,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,MAAA,CAAA,CAAA,CAAA;AAGZ,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,oBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,oBAAA,EAAA,CAAA;AAAA,GACC,EAAA,CAAC,aAAa,KAAM,CAAA,gBAAA,CAAA,CAAA,CAAA;AAGvB,EAAA,SAAA,CAAU,MAAM;AACd,IAAgB,eAAA,CAAA,OAAA,CAAQ,aAAa,MAAM;AACzC,MAAA,OAAO,CAAC,KAAA,CAAM,iBAAmB,EAAA,CAAE,OAAO,KAAM,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAGlD,IAAgB,eAAA,CAAA,OAAA,CAAQ,mBAAmB,MAAM;AAzNrD,MAAA,IAAA,EAAA,CAAA;AA0NM,MAAO,OAAA;AAAA,QACL,aAAA,EAAe,CAAM,EAAA,GAAA,KAAA,CAAA,WAAA,KAAN,IAAqB,GAAA,EAAA,GAAA,EAAA;AAAA,OAAA,CAAA;AAAA,KAAA,CAAA;AAIxC,IAAgB,eAAA,CAAA,OAAA,CAAQ,mBAAsB,GAAA,CAAC,YAAyB,KAAA;AACtE,MAAwB,uBAAA,CAAA,YAAA,CAAA,CAAA;AACxB,MAAA,MAAM,YAAY,KAAM,CAAA,qBAAA,CAAA;AACxB,MAAA,IAAI,SAAW,EAAA;AACb,QAAA,SAAA,CAAU,SAAY,GAAA,YAAA,CAAA;AAEtB,QAAA,MAAM,oBAAoB,iBAAkB,CAAA,SAAA,CAAA,CAAA;AAE5C,QAAA,IAAI,MAAM,gBAAkB,EAAA;AAE1B,UAAA,sBAAA,CAAuB,SAAW,EAAA,iBAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA;AAGtC,MAAA,IAAI,eAAiB,EAAA;AACnB,QAA8B,6BAAA,CAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAAK,eAAL,CAAA,EAAA,CAAsB,SAAW,EAAA,YAAA,CAAA,CAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAInE,IAAA,eAAA,CAAgB,OAAQ,CAAA,eAAA,GAAkB,CAAC,GAAA,EAAa,KAAkB,KAAA;AAjP9E,MAAA,IAAA,EAAA,CAAA;AAkPM,MAAA,MAAM,YAAY,KAAM,CAAA,qBAAA,CAAA;AACxB,MAAA,IAAI,SAAW,EAAA;AACb,QAAM,MAAA,kBAAA,GAAqB,CAAW,EAAA,GAAA,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,YAAA,KAAX,IAA2B,GAAA,EAAA,GAAA,EAAA,CAAA;AAEtD,QAAU,SAAA,CAAA,YAAA,GAAe,iCACpB,kBADoB,CAAA,EAAA;AAAA,UAAA,CAEtB,GAAM,GAAA,KAAA;AAAA,SAAA,CAAA,CAAA;AAGT,QAAkB,iBAAA,CAAA,SAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAGtB,IAAgB,eAAA,CAAA,OAAA,CAAQ,cAAc,MAAM;AAC1C,MAAA,cAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,cAAA,EAAA,CAAA;AAAA,KAAA,CAAA;AAGF,IAAgB,eAAA,CAAA,OAAA,CAAQ,OAAO,MAAM;AACnC,MAAA,IAAA,EAAA,CAAA;AAAA,KAAA,CAAA;AAGF,IAAgB,eAAA,CAAA,OAAA,CAAQ,OAAO,MAAM;AACnC,MAAA,IAAA,EAAA,CAAA;AAAA,KAAA,CAAA;AAGF,IAAgB,eAAA,CAAA,OAAA,CAAQ,QAAW,GAAA,CAAC,KAAmB,KAAA;AACrD,MAAA,eAAA,CAAgB,QAAQ,KAAQ,GAAA,KAAA,CAAA;AAGhC,MAAA,UAAA,CAAW,MAAM;AACf,QAAA,KAAA,CAAM,kBAAmB,CAAA,KAAA,CAAA,CAAA;AAEzB,QAAA,IAAI,UAAU,KAAO,EAAA;AACnB,UAAA,cAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AASN,IAAgB,eAAA,CAAA,OAAA,CAAQ,kBAAqB,GAAA,CAAC,eAA6B,KAAA;AA3R/E,MAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AA4RM,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,eAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAuB,qBAAvB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAA8C,kBAAmB,CAAA,eAAA,CAAA,CAAA;AACjE,MAAA,IAAI,oBAAoB,IAAM,EAAA;AAE5B,QAAA,KAAA,CAAM,cAAe,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAIzB,IAAgB,eAAA,CAAA,OAAA,CAAQ,oBAAuB,GAAA,CAAC,iBAA+B,KAAA;AAnSnF,MAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAoSM,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,eAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAuB,qBAAvB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAA8C,oBAAqB,CAAA,iBAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAEpE,EAAA;AAAA,IACD,KAAM,CAAA,iBAAA;AAAA,IACN,KAAM,CAAA,UAAA;AAAA,IACN,KAAM,CAAA,KAAA;AAAA,IACN,KAAM,CAAA,WAAA;AAAA,IACN,KAAM,CAAA,gBAAA;AAAA,GAAA,CAAA,CAAA;AAGR,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,eAAA,CAAgB,QAAQ,OAAU,GAAA;AAAA,MAEhC,WAAA,EAAa,CAAC,MAAkB,KAAA;AAG9B,QAAA,mBAAA,CAAoB,CAAE,iBAAmB,EAAA,MAAA,CAAA,CAAA,CAAA;AAAA,OAAA;AAAA,MAE3C,YAAY,MAAM;AAAA,OAAA;AAAA,KAAA,CAAA;AAAA,GAEnB,EAAA,EAAA,CAAA,CAAA;AAEH,EAAA,SAAA,CAAU,MAAM;AA1TlB,IAAA,IAAA,EAAA,CAAA;AA2TI,IAAM,MAAA,YAAA,GAAe,CAAM,EAAA,GAAA,KAAA,CAAA,eAAA,KAAN,IAAuB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,qBAAA,CAAA;AAE5C,IAAA,IAAI,CAAC,YAAc,EAAA;AACjB,MAAA,OAAA;AAAA,KAAA;AAGF,IAAM,MAAA,aAAA,GAAgB,CAAC,YAAyB,KAAA;AAC9C,MAAwB,uBAAA,CAAA,YAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAG1B,IAAM,MAAA,YAAA,GAAe,CAAC,KAAkB,KAAA;AACtC,MAAA,OAAA,CAAQ,KAAM,CAAA,KAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAEhB,IAAM,MAAA,WAAA,GAAc,CAAC,IAAiB,KAAA;AACpC,MAAA,OAAA,CAAQ,IAAK,CAAA,IAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAGf,IAAA,YAAA,CAAa,GAAG,eAAiB,EAAA,aAAA,CAAA,CAAA;AACjC,IAAA,YAAA,CAAa,GAAG,cAAgB,EAAA,YAAA,CAAA,CAAA;AAChC,IAAA,YAAA,CAAa,GAAG,aAAe,EAAA,WAAA,CAAA,CAAA;AAE/B,IAAA,OAAO,MAAM;AACX,MAAA,YAAA,CAAa,OAAO,eAAiB,EAAA,aAAA,CAAA,CAAA;AACrC,MAAA,YAAA,CAAa,OAAO,cAAgB,EAAA,YAAA,CAAA,CAAA;AACpC,MAAA,YAAA,CAAa,OAAO,aAAe,EAAA,WAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAAA,EAEpC,CAAC,KAAM,CAAA,eAAA,CAAA,CAAA,CAAA;AAEV,EAAO,OAAA,IAAA,CAAA;AAAA,CAAA,CAAA;AAGT,2BAAe,QAAQ,iBAAmB,EAAA,IAAA,EAAM,IAAM,EAAA,CAAE,SAAS,eAC/D,CAAA,CAAA,CAAA,kBAAA,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getClassName as
|
|
1
|
+
import{getClassName as g}from"../../utils/dom.js";import{FooterDivider as j}from"../../views/MainView/toolFooter/index.js";import{ZoomController as F}from"../../views/MainView/toolFooter/ZoomController/index.js";import{UpSquareOutlined as M,DownSquareOutlined as W}from"@ant-design/icons";import{PointCloudAnnotation as X,cTool as Y}from"@labelbee/lb-annotation";import{PointCloudUtils as q}from"@labelbee/lb-utils";import s,{useState as S,useRef as H,useLayoutEffect as $,useEffect as y}from"react";import{PointCloudContext as G}from"./PointCloudContext.js";import{useRotate as J}from"./hooks/useRotate.js";import{useSingleBox as A}from"./hooks/useSingleBox.js";import{PointCloudContainer as K}from"./PointCloudLayout.js";import{BoxInfos as Q,PointCloudValidity as ee}from"./PointCloudInfos.js";import{usePolygon as te}from"./hooks/usePolygon.js";import{useZoom as L}from"./hooks/useZoom.js";import{Slider as oe}from"antd";import{a2MapStateToProps as ne}from"../../store/annotation/map.js";import{connect as ie}from"react-redux";import{usePointCloudViews as se}from"./hooks/usePointCloudViews.js";import le from"../../hooks/useSize.js";import{useTranslation as re}from"react-i18next";import{LabelBeeContext as ae}from"../../store/ctx.js";import{jsonParser as ce}from"../../utils/index.js";var de=Object.defineProperty,pe=Object.defineProperties,ue=Object.getOwnPropertyDescriptors,B=Object.getOwnPropertySymbols,me=Object.prototype.hasOwnProperty,fe=Object.prototype.propertyIsEnumerable,k=(e,o,n)=>o in e?de(e,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[o]=n,Ce=(e,o)=>{for(var n in o||(o={}))me.call(o,n)&&k(e,n,o[n]);if(B)for(var n of B(o))fe.call(o,n)&&k(e,n,o[n]);return e},we=(e,o)=>pe(e,ue(o));const{EPolygonPattern:ve}=Y,T=(e,o,n=1)=>{const{width:u,height:m}=o,P={x:e.x+u*n/2,y:e.y+m*n/2},f={x:o.width/2,y:o.height/2};return{offsetX:(f.x-P.x)/n,offsetY:-(f.y-P.y)/n}},Pe=({currentData:e})=>{const{zoom:o,zoomIn:n,zoomOut:u,initialPosition:m}=L(),{selectNextBox:P,selectPrevBox:f}=A(),{updateRotate:d}=J({currentData:e}),t=2,a=()=>{d(-t)},C=()=>{d(t)},V=()=>{d(180)};return s.createElement(s.Fragment,null,s.createElement("span",{onClick:C,className:g("point-cloud","rotate-reserve")}),s.createElement("span",{onClick:a,className:g("point-cloud","rotate")}),s.createElement("span",{onClick:V,className:g("point-cloud","rotate-180")}),s.createElement(j,null),s.createElement(M,{onClick:()=>{f()},className:g("point-cloud","prev")}),s.createElement(W,{onClick:()=>{P()},className:g("point-cloud","next")}),s.createElement(j,null),s.createElement(F,{initialPosition:m,zoomIn:n,zoomOut:u,zoom:o}))},ge=({setZAxisLimit:e,zAxisLimit:o,checkMode:n})=>n?null:s.createElement("div",{style:{position:"absolute",top:128,right:8,height:"50%",zIndex:20}},s.createElement(oe,{vertical:!0,step:.5,max:10,min:.5,defaultValue:o,onAfterChange:u=>{e(u)}})),xe=({currentData:e,imgList:o,stepInfo:n,drawLayerSlot:u,checkMode:m})=>{const[P,f]=S({zoom:1,currentPos:{x:0,y:0}}),d=H(null),t=s.useContext(G),a=le(d),C=ce(n.config),{setZoom:V}=L(),{addPolygon:N,deletePolygon:R}=te(),{deletePointCloudBox:Z,changeValidByID:z}=A(),[O,D]=S(10),{t:U}=re(),x=se();return $(()=>{if(!t.topViewInstance&&d.current&&(e==null?void 0:e.url)&&(e==null?void 0:e.result)){const l={width:d.current.clientWidth,height:d.current.clientHeight},p=new X({container:d.current,size:l,pcdPath:e.url,config:C,checkMode:m});t.setTopViewInstance(p)}},[e]),y(()=>{if(!a||!t.topViewInstance||!t.sideViewInstance)return;const{pointCloud2dOperation:l}=t.topViewInstance;l.singleOn("polygonCreated",(i,r)=>{if(l.pattern===ve.Normal||!(e==null?void 0:e.url)){const w=we(Ce({},i),{pointList:i.pointList.map(c=>q.transferCanvas2World(c,a))});N(w),t.setSelectedIDs(i.id);return}x.topViewAddBox({newPolygon:i,size:a,imgList:o,trackConfigurable:C.trackConfigurable,zoom:r})}),l.singleOn("deletedObject",({id:i})=>{Z(i),R(i)}),l.singleOn("deleteSelectedIDs",()=>{t.setSelectedIDs([])}),l.singleOn("addSelectedIDs",i=>{t.addSelectedID(i)}),l.singleOn("setSelectedIDs",i=>{t.setSelectedIDs(i)}),l.singleOn("updatePolygonByDrag",({newPolygon:i})=>{var r;(r=x.topViewUpdateBox)==null||r.call(x,i,a)});const p=i=>{var r;const w=z(i);w&&t.syncAllViewPointCloudColor(w),t.polygonList.find(c=>c.id===i)&&((r=t.topViewInstance)==null||r.pointCloud2dOperation.setPolygonValidAndRender(i,!0))};return l.on("validUpdate",p),()=>{l.unbind("validUpdate",p)}},[t,a,e,x,t.polygonList]),y(()=>{var l,p;if(!(a==null?void 0:a.width)||!t.topViewInstance)return;const i=(p=(l=C==null?void 0:C.attributeList)==null?void 0:l[0])==null?void 0:p.value;i&&t.topViewInstance.pointCloud2dOperation.setDefaultAttribute(i),t.topViewInstance.initSize(a),t.topViewInstance.updatePolygonList(t.pointCloudBoxList,t.polygonList);const{topViewInstance:{pointCloudInstance:r,pointCloud2dOperation:w}}=t;w.singleOn("renderZoom",(c,v)=>{const{offsetX:I,offsetY:h}=T(v,a,c);if(r.camera.zoom=c,v){const{x:_,y:b,z:E}=r.initCameraPosition;r.camera.position.set(_+h,b-I,E)}r.camera.updateProjectionMatrix(),r.render(),V(c),f({zoom:c,currentPos:v})}),w.singleOn("dragMove",({currentPos:c,zoom:v})=>{const{offsetX:I,offsetY:h}=T(c,a,v);r.camera.zoom=v;const{x:_,y:b,z:E}=r.initCameraPosition;r.camera.position.set(_+h,b-I,E),r.render(),f({zoom:v,currentPos:c})})},[a,t.topViewInstance]),y(()=>{var l,p;(p=(l=t.topViewInstance)==null?void 0:l.pointCloudInstance)==null||p.applyZAxisPoints(O)},[O]),y(()=>{x.topViewSelectedChanged()},[t.selectedIDs]),s.createElement(K,{className:g("point-cloud-container","top-view"),title:U("TopView"),toolbar:s.createElement(Pe,{currentData:e})},s.createElement("div",{style:{position:"relative",flex:1}},s.createElement("div",{style:{width:"100%",height:"100%"},ref:d},u==null?void 0:u(P)),s.createElement(Q,{checkMode:m,config:C}),s.createElement(ge,{checkMode:m,zAxisLimit:O,setZAxisLimit:D}),s.createElement(ee,null)))};var ye=ie(ne,null,null,{context:ae})(xe);export{ye as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointCloudTopView.js","sources":["../../../src/components/pointCloudView/PointCloudTopView.tsx"],"sourcesContent":["/*\n * @Author: Laoluo luozefeng@sensetime.com\n * @Date: 2022-06-22 11:08:31\n * @LastEditors: Laoluo luozefeng@sensetime.com\n */\nimport { getClassName } from '@/utils/dom';\nimport { FooterDivider } from '@/views/MainView/toolFooter';\nimport { ZoomController } from '@/views/MainView/toolFooter/ZoomController';\nimport { DownSquareOutlined, UpSquareOutlined } from '@ant-design/icons';\nimport { cTool, PointCloudAnnotation } from '@labelbee/lb-annotation';\nimport { IPolygonData, PointCloudUtils } from '@labelbee/lb-utils';\nimport React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { PointCloudContext } from './PointCloudContext';\nimport { useRotate } from './hooks/useRotate';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport { PointCloudContainer } from './PointCloudLayout';\nimport { BoxInfos, PointCloudValidity } from './PointCloudInfos';\nimport { usePolygon } from './hooks/usePolygon';\nimport { useZoom } from './hooks/useZoom';\nimport { Slider } from 'antd';\nimport { a2MapStateToProps, IA2MapStateProps, IAnnotationStateProps } from '@/store/annotation/map';\nimport { connect } from 'react-redux';\nimport { usePointCloudViews } from './hooks/usePointCloudViews';\nimport useSize from '@/hooks/useSize';\nimport { useTranslation } from 'react-i18next';\nimport { LabelBeeContext } from '@/store/ctx';\nimport { jsonParser } from '@/utils';\nimport { TDrawLayerSlot } from '@/types/main';\n\nconst { EPolygonPattern } = cTool;\n\n/**\n * Get the offset from canvas2d-coordinate to world coordinate (Top View)\n * @param currentPos\n * @param size\n * @param zoom\n * @returns\n */\nconst TransferCanvas2WorldOffset = (\n currentPos: { x: number; y: number },\n size: { width: number; height: number },\n zoom = 1,\n) => {\n const { width: w, height: h } = size;\n\n const canvasCenterPoint = {\n x: currentPos.x + (w * zoom) / 2,\n y: currentPos.y + (h * zoom) / 2,\n };\n\n const worldCenterPoint = {\n x: size.width / 2,\n y: size.height / 2,\n };\n\n return {\n offsetX: (worldCenterPoint.x - canvasCenterPoint.x) / zoom,\n offsetY: -(worldCenterPoint.y - canvasCenterPoint.y) / zoom,\n };\n};\n\nconst TopViewToolbar = ({ currentData }: IAnnotationStateProps) => {\n const { zoom, zoomIn, zoomOut, initialPosition } = useZoom();\n const { selectNextBox, selectPrevBox } = useSingleBox();\n const { updateRotate } = useRotate({ currentData });\n\n const ratio = 2;\n\n const clockwiseRotate = () => {\n updateRotate(-ratio);\n };\n const anticlockwiseRotate = () => {\n updateRotate(ratio);\n };\n\n const reverseRotate = () => {\n updateRotate(180);\n };\n\n return (\n <>\n <span\n onClick={anticlockwiseRotate}\n className={getClassName('point-cloud', 'rotate-reserve')}\n />\n <span onClick={clockwiseRotate} className={getClassName('point-cloud', 'rotate')} />\n <span onClick={reverseRotate} className={getClassName('point-cloud', 'rotate-180')} />\n <FooterDivider />\n <UpSquareOutlined\n onClick={() => {\n selectPrevBox();\n }}\n className={getClassName('point-cloud', 'prev')}\n />\n <DownSquareOutlined\n onClick={() => {\n selectNextBox();\n }}\n className={getClassName('point-cloud', 'next')}\n />\n <FooterDivider />\n <ZoomController\n initialPosition={initialPosition}\n zoomIn={zoomIn}\n zoomOut={zoomOut}\n zoom={zoom}\n />\n </>\n );\n};\n\n/**\n * Slider for filtering Z-axis points\n */\nconst ZAxisSlider = ({\n setZAxisLimit,\n zAxisLimit,\n checkMode,\n}: {\n setZAxisLimit: (value: number) => void;\n zAxisLimit: number;\n checkMode?: boolean;\n}) => {\n if (checkMode) {\n return null;\n }\n\n return (\n <div style={{ position: 'absolute', top: 128, right: 8, height: '50%', zIndex: 20 }}>\n <Slider\n vertical\n step={0.5}\n max={10}\n min={0.5}\n defaultValue={zAxisLimit}\n onAfterChange={(v: number) => {\n setZAxisLimit(v);\n }}\n />\n </div>\n );\n};\n\ninterface IProps extends IA2MapStateProps {\n drawLayerSlot?: TDrawLayerSlot;\n checkMode?: boolean;\n}\n\nconst PointCloudTopView: React.FC<IProps> = ({\n currentData,\n imgList,\n stepInfo,\n drawLayerSlot,\n checkMode,\n}) => {\n const [annotationPos, setAnnotationPos] = useState({ zoom: 1, currentPos: { x: 0, y: 0 } });\n const ref = useRef<HTMLDivElement>(null);\n const ptCtx = React.useContext(PointCloudContext);\n const size = useSize(ref);\n const config = jsonParser(stepInfo.config);\n const { setZoom } = useZoom();\n\n const { addPolygon, deletePolygon } = usePolygon();\n const { deletePointCloudBox, changeValidByID } = useSingleBox();\n const [zAxisLimit, setZAxisLimit] = useState<number>(10);\n const { t } = useTranslation();\n const pointCloudViews = usePointCloudViews();\n\n useLayoutEffect(() => {\n if (ptCtx.topViewInstance) {\n return;\n }\n\n if (ref.current && currentData?.url && currentData?.result) {\n const size = {\n width: ref.current.clientWidth,\n height: ref.current.clientHeight,\n };\n\n const pointCloudAnnotation = new PointCloudAnnotation({\n container: ref.current,\n size,\n pcdPath: currentData.url,\n config,\n checkMode,\n });\n\n ptCtx.setTopViewInstance(pointCloudAnnotation);\n }\n }, [currentData]);\n\n useEffect(() => {\n if (!size || !ptCtx.topViewInstance || !ptCtx.sideViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation: TopView2dOperation } = ptCtx.topViewInstance;\n\n TopView2dOperation.singleOn('polygonCreated', (polygon: IPolygonData, zoom: number) => {\n if (TopView2dOperation.pattern === EPolygonPattern.Normal || !currentData?.url) {\n /**\n * Notice. The Polygon need to be converted to pointCloud coordinate system for storage.\n */\n const newPolygon = {\n ...polygon,\n pointList: polygon.pointList.map((v) => PointCloudUtils.transferCanvas2World(v, size)),\n };\n\n addPolygon(newPolygon);\n ptCtx.setSelectedIDs(polygon.id);\n return;\n }\n\n pointCloudViews.topViewAddBox({\n newPolygon: polygon,\n size,\n imgList,\n trackConfigurable: config.trackConfigurable,\n zoom\n });\n });\n\n TopView2dOperation.singleOn('deletedObject', ({ id }) => {\n deletePointCloudBox(id);\n deletePolygon(id);\n });\n\n TopView2dOperation.singleOn('deleteSelectedIDs', () => {\n ptCtx.setSelectedIDs([]);\n });\n\n TopView2dOperation.singleOn('addSelectedIDs', (selectedID: string) => {\n ptCtx.addSelectedID(selectedID);\n });\n\n TopView2dOperation.singleOn('setSelectedIDs', (selectedIDs: string[]) => {\n ptCtx.setSelectedIDs(selectedIDs);\n });\n\n TopView2dOperation.singleOn('updatePolygonByDrag', ({ newPolygon }: any) => {\n pointCloudViews.topViewUpdateBox?.(newPolygon, size);\n });\n\n const validUpdate = (id: string) => {\n // UpdateData.\n const newPointCloudList = changeValidByID(id);\n\n // HighLight\n if (newPointCloudList) {\n ptCtx.syncAllViewPointCloudColor(newPointCloudList);\n }\n if (ptCtx.polygonList.find(v => v.id === id)) {\n ptCtx.topViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n }\n\n };\n\n TopView2dOperation.on('validUpdate', validUpdate);\n\n return () => {\n TopView2dOperation.unbind('validUpdate', validUpdate);\n };\n }, [ptCtx, size, currentData, pointCloudViews, ptCtx.polygonList]);\n\n useEffect(() => {\n if (!size?.width || !ptCtx.topViewInstance) {\n return;\n }\n\n // 1. Update Size\n ptCtx.topViewInstance.initSize(size);\n ptCtx.topViewInstance.updatePolygonList(ptCtx.pointCloudBoxList, ptCtx.polygonList);\n\n const {\n topViewInstance: { pointCloudInstance: pointCloud, pointCloud2dOperation: polygonOperation },\n } = ptCtx;\n\n /**\n * Synchronized 3d point cloud view displacement operations\n *\n * Change Orthographic Camera size\n */\n polygonOperation.singleOn('renderZoom', (zoom: number, currentPos: any) => {\n const { offsetX, offsetY } = TransferCanvas2WorldOffset(currentPos, size, zoom);\n pointCloud.camera.zoom = zoom;\n if (currentPos) {\n const { x, y, z } = pointCloud.initCameraPosition;\n pointCloud.camera.position.set(x + offsetY, y - offsetX, z);\n }\n\n pointCloud.camera.updateProjectionMatrix();\n pointCloud.render();\n\n setZoom(zoom);\n setAnnotationPos({ zoom, currentPos });\n });\n\n // Synchronized 3d point cloud view displacement operations\n polygonOperation.singleOn('dragMove', ({ currentPos, zoom }) => {\n const { offsetX, offsetY } = TransferCanvas2WorldOffset(currentPos, size, zoom);\n pointCloud.camera.zoom = zoom;\n const { x, y, z } = pointCloud.initCameraPosition;\n pointCloud.camera.position.set(x + offsetY, y - offsetX, z);\n pointCloud.render();\n setAnnotationPos({ zoom, currentPos });\n });\n }, [size, ptCtx.topViewInstance]);\n\n useEffect(() => {\n ptCtx.topViewInstance?.pointCloudInstance?.applyZAxisPoints(zAxisLimit);\n }, [zAxisLimit]);\n\n useEffect(() => {\n pointCloudViews.topViewSelectedChanged();\n }, [ptCtx.selectedIDs]);\n\n return (\n <PointCloudContainer\n className={getClassName('point-cloud-container', 'top-view')}\n title={t('TopView')}\n toolbar={<TopViewToolbar currentData={currentData} />}\n >\n <div style={{ position: 'relative', flex: 1 }}>\n <div style={{ width: '100%', height: '100%' }} ref={ref}>\n {drawLayerSlot?.(annotationPos)}\n </div>\n\n <BoxInfos checkMode={checkMode} config={config} />\n <ZAxisSlider checkMode={checkMode} zAxisLimit={zAxisLimit} setZAxisLimit={setZAxisLimit} />\n <PointCloudValidity />\n </div>\n </PointCloudContainer>\n );\n};\n\nexport default connect(a2MapStateToProps, null, null, { context: LabelBeeContext })(\n PointCloudTopView,\n);\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PointCloudTopView.js","sources":["../../../src/components/pointCloudView/PointCloudTopView.tsx"],"sourcesContent":["/*\n * @Author: Laoluo luozefeng@sensetime.com\n * @Date: 2022-06-22 11:08:31\n * @LastEditors: Laoluo luozefeng@sensetime.com\n */\nimport { getClassName } from '@/utils/dom';\nimport { FooterDivider } from '@/views/MainView/toolFooter';\nimport { ZoomController } from '@/views/MainView/toolFooter/ZoomController';\nimport { DownSquareOutlined, UpSquareOutlined } from '@ant-design/icons';\nimport { cTool, PointCloudAnnotation } from '@labelbee/lb-annotation';\nimport { IPolygonData, PointCloudUtils } from '@labelbee/lb-utils';\nimport React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { PointCloudContext } from './PointCloudContext';\nimport { useRotate } from './hooks/useRotate';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport { PointCloudContainer } from './PointCloudLayout';\nimport { BoxInfos, PointCloudValidity } from './PointCloudInfos';\nimport { usePolygon } from './hooks/usePolygon';\nimport { useZoom } from './hooks/useZoom';\nimport { Slider } from 'antd';\nimport { a2MapStateToProps, IA2MapStateProps, IAnnotationStateProps } from '@/store/annotation/map';\nimport { connect } from 'react-redux';\nimport { usePointCloudViews } from './hooks/usePointCloudViews';\nimport useSize from '@/hooks/useSize';\nimport { useTranslation } from 'react-i18next';\nimport { LabelBeeContext } from '@/store/ctx';\nimport { jsonParser } from '@/utils';\nimport { TDrawLayerSlot } from '@/types/main';\n\nconst { EPolygonPattern } = cTool;\n\n/**\n * Get the offset from canvas2d-coordinate to world coordinate (Top View)\n * @param currentPos\n * @param size\n * @param zoom\n * @returns\n */\nconst TransferCanvas2WorldOffset = (\n currentPos: { x: number; y: number },\n size: { width: number; height: number },\n zoom = 1,\n) => {\n const { width: w, height: h } = size;\n\n const canvasCenterPoint = {\n x: currentPos.x + (w * zoom) / 2,\n y: currentPos.y + (h * zoom) / 2,\n };\n\n const worldCenterPoint = {\n x: size.width / 2,\n y: size.height / 2,\n };\n\n return {\n offsetX: (worldCenterPoint.x - canvasCenterPoint.x) / zoom,\n offsetY: -(worldCenterPoint.y - canvasCenterPoint.y) / zoom,\n };\n};\n\nconst TopViewToolbar = ({ currentData }: IAnnotationStateProps) => {\n const { zoom, zoomIn, zoomOut, initialPosition } = useZoom();\n const { selectNextBox, selectPrevBox } = useSingleBox();\n const { updateRotate } = useRotate({ currentData });\n\n const ratio = 2;\n\n const clockwiseRotate = () => {\n updateRotate(-ratio);\n };\n const anticlockwiseRotate = () => {\n updateRotate(ratio);\n };\n\n const reverseRotate = () => {\n updateRotate(180);\n };\n\n return (\n <>\n <span\n onClick={anticlockwiseRotate}\n className={getClassName('point-cloud', 'rotate-reserve')}\n />\n <span onClick={clockwiseRotate} className={getClassName('point-cloud', 'rotate')} />\n <span onClick={reverseRotate} className={getClassName('point-cloud', 'rotate-180')} />\n <FooterDivider />\n <UpSquareOutlined\n onClick={() => {\n selectPrevBox();\n }}\n className={getClassName('point-cloud', 'prev')}\n />\n <DownSquareOutlined\n onClick={() => {\n selectNextBox();\n }}\n className={getClassName('point-cloud', 'next')}\n />\n <FooterDivider />\n <ZoomController\n initialPosition={initialPosition}\n zoomIn={zoomIn}\n zoomOut={zoomOut}\n zoom={zoom}\n />\n </>\n );\n};\n\n/**\n * Slider for filtering Z-axis points\n */\nconst ZAxisSlider = ({\n setZAxisLimit,\n zAxisLimit,\n checkMode,\n}: {\n setZAxisLimit: (value: number) => void;\n zAxisLimit: number;\n checkMode?: boolean;\n}) => {\n if (checkMode) {\n return null;\n }\n\n return (\n <div style={{ position: 'absolute', top: 128, right: 8, height: '50%', zIndex: 20 }}>\n <Slider\n vertical\n step={0.5}\n max={10}\n min={0.5}\n defaultValue={zAxisLimit}\n onAfterChange={(v: number) => {\n setZAxisLimit(v);\n }}\n />\n </div>\n );\n};\n\ninterface IProps extends IA2MapStateProps {\n drawLayerSlot?: TDrawLayerSlot;\n checkMode?: boolean;\n}\n\nconst PointCloudTopView: React.FC<IProps> = ({\n currentData,\n imgList,\n stepInfo,\n drawLayerSlot,\n checkMode,\n}) => {\n const [annotationPos, setAnnotationPos] = useState({ zoom: 1, currentPos: { x: 0, y: 0 } });\n const ref = useRef<HTMLDivElement>(null);\n const ptCtx = React.useContext(PointCloudContext);\n const size = useSize(ref);\n const config = jsonParser(stepInfo.config);\n const { setZoom } = useZoom();\n\n const { addPolygon, deletePolygon } = usePolygon();\n const { deletePointCloudBox, changeValidByID } = useSingleBox();\n const [zAxisLimit, setZAxisLimit] = useState<number>(10);\n const { t } = useTranslation();\n const pointCloudViews = usePointCloudViews();\n\n useLayoutEffect(() => {\n if (ptCtx.topViewInstance) {\n return;\n }\n\n if (ref.current && currentData?.url && currentData?.result) {\n const size = {\n width: ref.current.clientWidth,\n height: ref.current.clientHeight,\n };\n\n const pointCloudAnnotation = new PointCloudAnnotation({\n container: ref.current,\n size,\n pcdPath: currentData.url,\n config,\n checkMode,\n });\n\n ptCtx.setTopViewInstance(pointCloudAnnotation);\n }\n }, [currentData]);\n\n useEffect(() => {\n if (!size || !ptCtx.topViewInstance || !ptCtx.sideViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation: TopView2dOperation } = ptCtx.topViewInstance;\n\n TopView2dOperation.singleOn('polygonCreated', (polygon: IPolygonData, zoom: number) => {\n if (TopView2dOperation.pattern === EPolygonPattern.Normal || !currentData?.url) {\n /**\n * Notice. The Polygon need to be converted to pointCloud coordinate system for storage.\n */\n const newPolygon = {\n ...polygon,\n pointList: polygon.pointList.map((v) => PointCloudUtils.transferCanvas2World(v, size)),\n };\n\n addPolygon(newPolygon);\n ptCtx.setSelectedIDs(polygon.id);\n return;\n }\n\n pointCloudViews.topViewAddBox({\n newPolygon: polygon,\n size,\n imgList,\n trackConfigurable: config.trackConfigurable,\n zoom,\n });\n });\n\n TopView2dOperation.singleOn('deletedObject', ({ id }) => {\n deletePointCloudBox(id);\n deletePolygon(id);\n });\n\n TopView2dOperation.singleOn('deleteSelectedIDs', () => {\n ptCtx.setSelectedIDs([]);\n });\n\n TopView2dOperation.singleOn('addSelectedIDs', (selectedID: string) => {\n ptCtx.addSelectedID(selectedID);\n });\n\n TopView2dOperation.singleOn('setSelectedIDs', (selectedIDs: string[]) => {\n ptCtx.setSelectedIDs(selectedIDs);\n });\n\n TopView2dOperation.singleOn('updatePolygonByDrag', ({ newPolygon }: any) => {\n pointCloudViews.topViewUpdateBox?.(newPolygon, size);\n });\n\n const validUpdate = (id: string) => {\n // UpdateData.\n const newPointCloudList = changeValidByID(id);\n\n // HighLight\n if (newPointCloudList) {\n ptCtx.syncAllViewPointCloudColor(newPointCloudList);\n }\n if (ptCtx.polygonList.find((v) => v.id === id)) {\n ptCtx.topViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n }\n };\n\n TopView2dOperation.on('validUpdate', validUpdate);\n\n return () => {\n TopView2dOperation.unbind('validUpdate', validUpdate);\n };\n }, [ptCtx, size, currentData, pointCloudViews, ptCtx.polygonList]);\n\n useEffect(() => {\n if (!size?.width || !ptCtx.topViewInstance) {\n return;\n }\n /**\n * Init Config\n *\n * 1. Update defaultAttribute by first attribute;\n * */\n const defaultAttribute = config?.attributeList?.[0]?.value;\n if (defaultAttribute) {\n ptCtx.topViewInstance.pointCloud2dOperation.setDefaultAttribute(defaultAttribute);\n }\n\n // 1. Update Size\n ptCtx.topViewInstance.initSize(size);\n ptCtx.topViewInstance.updatePolygonList(ptCtx.pointCloudBoxList, ptCtx.polygonList);\n\n const {\n topViewInstance: { pointCloudInstance: pointCloud, pointCloud2dOperation: polygonOperation },\n } = ptCtx;\n\n /**\n * Synchronized 3d point cloud view displacement operations\n *\n * Change Orthographic Camera size\n */\n polygonOperation.singleOn('renderZoom', (zoom: number, currentPos: any) => {\n const { offsetX, offsetY } = TransferCanvas2WorldOffset(currentPos, size, zoom);\n pointCloud.camera.zoom = zoom;\n if (currentPos) {\n const { x, y, z } = pointCloud.initCameraPosition;\n pointCloud.camera.position.set(x + offsetY, y - offsetX, z);\n }\n\n pointCloud.camera.updateProjectionMatrix();\n pointCloud.render();\n\n setZoom(zoom);\n setAnnotationPos({ zoom, currentPos });\n });\n\n // Synchronized 3d point cloud view displacement operations\n polygonOperation.singleOn('dragMove', ({ currentPos, zoom }) => {\n const { offsetX, offsetY } = TransferCanvas2WorldOffset(currentPos, size, zoom);\n pointCloud.camera.zoom = zoom;\n const { x, y, z } = pointCloud.initCameraPosition;\n pointCloud.camera.position.set(x + offsetY, y - offsetX, z);\n pointCloud.render();\n setAnnotationPos({ zoom, currentPos });\n });\n }, [size, ptCtx.topViewInstance]);\n\n useEffect(() => {\n ptCtx.topViewInstance?.pointCloudInstance?.applyZAxisPoints(zAxisLimit);\n }, [zAxisLimit]);\n\n useEffect(() => {\n pointCloudViews.topViewSelectedChanged();\n }, [ptCtx.selectedIDs]);\n\n return (\n <PointCloudContainer\n className={getClassName('point-cloud-container', 'top-view')}\n title={t('TopView')}\n toolbar={<TopViewToolbar currentData={currentData} />}\n >\n <div style={{ position: 'relative', flex: 1 }}>\n <div style={{ width: '100%', height: '100%' }} ref={ref}>\n {drawLayerSlot?.(annotationPos)}\n </div>\n\n <BoxInfos checkMode={checkMode} config={config} />\n <ZAxisSlider checkMode={checkMode} zAxisLimit={zAxisLimit} setZAxisLimit={setZAxisLimit} />\n <PointCloudValidity />\n </div>\n </PointCloudContainer>\n );\n};\n\nexport default connect(a2MapStateToProps, null, null, { context: LabelBeeContext })(\n PointCloudTopView,\n);\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useContext as
|
|
1
|
+
import{useContext as l,useEffect as a}from"react";import{PointCloudContext as p}from"../PointCloudContext.js";const s=()=>{const{topViewInstance:t,sideViewInstance:o,backViewInstance:n,mainViewInstance:i,defaultAttribute:d,setDefaultAttribute:r}=l(p);return a(()=>{if(!(t==null?void 0:t.pointCloud2dOperation))return;const e=()=>{r(t==null?void 0:t.pointCloud2dOperation.defaultAttribute)};return t==null||t.pointCloud2dOperation.on("changeAttributeSidebar",e),()=>{t==null||t.pointCloud2dOperation.unbind("changeAttributeSidebar",e)}},[t==null?void 0:t.pointCloud2dOperation]),{syncThreeViewsAttribute:e=>{[t==null?void 0:t.pointCloud2dOperation,o==null?void 0:o.pointCloud2dOperation,n==null?void 0:n.pointCloud2dOperation].forEach(u=>{u==null||u.setDefaultAttribute(e)})},updateDefaultAttribute:e=>{t==null||t.pointCloud2dOperation.setDefaultAttribute(e)},reRenderPointCloud3DBox:e=>{i==null||i.generateBox(e)},defaultAttribute:d}};export{s as useAttribute};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAttribute.js","sources":["../../../../src/components/pointCloudView/hooks/useAttribute.ts"],"sourcesContent":["import { IPointCloudBox } from '@labelbee/lb-utils';\nimport { useContext, useEffect
|
|
1
|
+
{"version":3,"file":"useAttribute.js","sources":["../../../../src/components/pointCloudView/hooks/useAttribute.ts"],"sourcesContent":["import { IPointCloudBox } from '@labelbee/lb-utils';\nimport { useContext, useEffect } from 'react';\nimport { PointCloudContext } from '../PointCloudContext';\n\nexport const useAttribute = () => {\n const {\n topViewInstance,\n sideViewInstance,\n backViewInstance,\n mainViewInstance,\n defaultAttribute,\n setDefaultAttribute,\n } = useContext(PointCloudContext);\n\n useEffect(() => {\n if (!topViewInstance?.pointCloud2dOperation) {\n return;\n }\n\n const updateDefaultAttribute = () => {\n setDefaultAttribute(topViewInstance?.pointCloud2dOperation.defaultAttribute);\n };\n\n topViewInstance?.pointCloud2dOperation.on('changeAttributeSidebar', updateDefaultAttribute);\n\n return () => {\n topViewInstance?.pointCloud2dOperation.unbind(\n 'changeAttributeSidebar',\n updateDefaultAttribute,\n );\n };\n }, [topViewInstance?.pointCloud2dOperation]);\n\n const syncThreeViewsAttribute = (attribute?: string) => {\n [\n topViewInstance?.pointCloud2dOperation,\n sideViewInstance?.pointCloud2dOperation,\n backViewInstance?.pointCloud2dOperation,\n ].forEach((instance) => {\n instance?.setDefaultAttribute(attribute);\n });\n };\n\n const updateDefaultAttribute = (attribute?: string) => {\n topViewInstance?.pointCloud2dOperation.setDefaultAttribute(attribute);\n };\n\n const reRenderPointCloud3DBox = (newBox: IPointCloudBox) => {\n mainViewInstance?.generateBox(newBox);\n };\n\n return {\n syncThreeViewsAttribute,\n updateDefaultAttribute,\n reRenderPointCloud3DBox,\n defaultAttribute,\n };\n};\n"],"names":[],"mappings":";;;AAIO,MAAM,eAAe,MAAM;AAChC,EAAM,MAAA;AAAA,IACJ,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,mBAAA;AAAA,GAAA,GACE,UAAW,CAAA,iBAAA,CAAA,CAAA;AAEf,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,qDAAkB,qBAAuB,CAAA,EAAA;AAC3C,MAAA,OAAA;AAAA,KAAA;AAGF,IAAA,MAAM,0BAAyB,MAAM;AACnC,MAAA,mBAAA,CAAoB,mDAAiB,qBAAsB,CAAA,gBAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAG7D,IAAiB,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,qBAAA,CAAsB,GAAG,wBAA0B,EAAA,uBAAA,CAAA,CAAA;AAEpE,IAAA,OAAO,MAAM;AACX,MAAiB,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,qBAAA,CAAsB,OACrC,wBACA,EAAA,uBAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAAA,EAGH,CAAC,eAAiB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,qBAAA,CAAA,CAAA,CAAA;AAErB,EAAM,MAAA,uBAAA,GAA0B,CAAC,SAAuB,KAAA;AACtD,IAAA;AAAA,MACE,eAAiB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,qBAAA;AAAA,MACjB,gBAAkB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAA,qBAAA;AAAA,MAClB,gBAAkB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAA,qBAAA;AAAA,KAClB,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AACtB,MAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,mBAAoB,CAAA,SAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAIlC,EAAM,MAAA,sBAAA,GAAyB,CAAC,SAAuB,KAAA;AACrD,IAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,sBAAsB,mBAAoB,CAAA,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAG7D,EAAM,MAAA,uBAAA,GAA0B,CAAC,MAA2B,KAAA;AAC1D,IAAA,gBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAkB,WAAY,CAAA,MAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAGhC,EAAO,OAAA;AAAA,IACL,uBAAA;AAAA,IACA,sBAAA;AAAA,IACA,uBAAA;AAAA,IACA,gBAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{PointCloudContext as r}from"../PointCloudContext.js";import{useContext as
|
|
1
|
+
import{PointCloudContext as r}from"../PointCloudContext.js";import{useContext as s}from"react";const v=()=>{const{topViewInstance:t,sideViewInstance:d,backViewInstance:a,mainViewInstance:i}=s(r);return{syncAllViewsConfig:n=>{[t,d,a].forEach(e=>{var o,l;e==null||e.updateConfig(n);const u=(l=(o=n==null?void 0:n.attributeList)==null?void 0:o[0])==null?void 0:l.value;u&&(e==null||e.pointCloud2dOperation.setDefaultAttribute(u))}),i==null||i.setConfig(n)},reRenderTopViewRange:n=>{var e,o,l;(o=(e=t==null?void 0:t.pointCloudInstance)==null?void 0:e.generateRange)==null||o.call(e,n),(l=t==null?void 0:t.pointCloudInstance)==null||l.render()}}};export{v as useConfig};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useConfig.js","sources":["../../../../src/components/pointCloudView/hooks/useConfig.ts"],"sourcesContent":["import { PointCloudContext } from '../PointCloudContext';\nimport { useContext } from 'react';\nimport { IPointCloudConfig } from '@labelbee/lb-utils';\n\nexport const useConfig = () => {\n const { topViewInstance, sideViewInstance, backViewInstance, mainViewInstance } =\n useContext(PointCloudContext);\n\n const syncAllViewsConfig = (config: IPointCloudConfig) => {\n [topViewInstance, sideViewInstance, backViewInstance].forEach((instance) => {\n instance?.updateConfig(config);\n });\n mainViewInstance?.setConfig(config);\n };\n
|
|
1
|
+
{"version":3,"file":"useConfig.js","sources":["../../../../src/components/pointCloudView/hooks/useConfig.ts"],"sourcesContent":["import { PointCloudContext } from '../PointCloudContext';\nimport { useContext } from 'react';\nimport { IPointCloudConfig } from '@labelbee/lb-utils';\n\nexport const useConfig = () => {\n const { topViewInstance, sideViewInstance, backViewInstance, mainViewInstance } =\n useContext(PointCloudContext);\n\n const syncAllViewsConfig = (config: IPointCloudConfig) => {\n [topViewInstance, sideViewInstance, backViewInstance].forEach((instance) => {\n instance?.updateConfig(config);\n \n /**\n * If update the config, needs to update defaultAttribute.\n */\n const defaultAttribute = config?.attributeList?.[0]?.value;\n if (defaultAttribute) {\n instance?.pointCloud2dOperation.setDefaultAttribute(defaultAttribute);\n }\n });\n mainViewInstance?.setConfig(config);\n };\n\n const reRenderTopViewRange = (radius: number) => {\n topViewInstance?.pointCloudInstance?.generateRange?.(radius);\n topViewInstance?.pointCloudInstance?.render();\n };\n\n return {\n syncAllViewsConfig,\n reRenderTopViewRange,\n };\n};\n"],"names":[],"mappings":";;;AAIO,MAAM,YAAY,MAAM;AAC7B,EAAA,MAAM,CAAE,eAAA,EAAiB,gBAAkB,EAAA,gBAAA,EAAkB,oBAC3D,UAAW,CAAA,iBAAA,CAAA,CAAA;AAEb,EAAM,MAAA,kBAAA,GAAqB,CAAC,MAA8B,KAAA;AACxD,IAAA,CAAC,eAAiB,EAAA,gBAAA,EAAkB,gBAAkB,CAAA,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAThF,MAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAUM,MAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,YAAa,CAAA,MAAA,CAAA,CAAA;AAKvB,MAAA,MAAM,gBAAmB,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,aAAR,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAwB,OAAxB,IAA4B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,CAAA;AACrD,MAAA,IAAI,gBAAkB,EAAA;AACpB,QAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,sBAAsB,mBAAoB,CAAA,gBAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA,CAAA;AAGxD,IAAA,gBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAkB,SAAU,CAAA,MAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAG9B,EAAM,MAAA,oBAAA,GAAuB,CAAC,MAAmB,KAAA;AAvBnD,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAwBI,IAAiB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,kBAAA,KAAjB,IAAqC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAA,KAArC,IAAqD,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,MAAA,CAAA,CAAA;AACrD,IAAA,CAAA,EAAA,GAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,uBAAjB,IAAqC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,EAAA,CAAA;AAAA,GAAA,CAAA;AAGvC,EAAO,OAAA;AAAA,IACL,kBAAA;AAAA,IACA,oBAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useContext as B}from"react";import{PointCloudContext as m}from"../PointCloudContext.js";var w=Object.defineProperty,a=Object.getOwnPropertySymbols,O=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable,C=(i,n,s)=>n in i?w(i,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):i[n]=s,I=(i,n)=>{for(var s in n||(n={}))O.call(n,s)&&C(i,s,n[s]);if(a)for(var s of a(n))H.call(n,s)&&C(i,s,n[s]);return i};const j=()=>{const{history:i,setPointCloudResult:n,setSelectedIDs:s,pointCloudBoxList:r,mainViewInstance:u,topViewInstance:y,polygonList:d,setPolygonList:f,syncAllViewPointCloudColor:P}=B(m),g=({newBoxParams:t,newPolygon:o})=>{const e={pointCloudBoxList:r,polygonList:d};t&&(e.pointCloudBoxList=r.concat(t)),o&&(e.polygonList=d.concat(o)),i.pushHistory(e)},h=t=>{const o={pointCloudBoxList:r,polygonList:d};t.pointCloudBoxList&&(o.pointCloudBoxList=t.pointCloudBoxList),t.polygonList&&(o.polygonList=t.polygonList),i.pushHistory(o)},x=t=>{if(d.find(e=>e.id===t.id)){const e=d.map(c=>c.id===t.id?t:I({},c));i.pushHistory({pointCloudBoxList:r,polygonList:e}),f(e)}},v=({pointCloudBoxList:t,polygonList:o})=>{i.initRecord(
|
|
1
|
+
import{useContext as B}from"react";import{PointCloudContext as m}from"../PointCloudContext.js";var w=Object.defineProperty,a=Object.getOwnPropertySymbols,O=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable,C=(i,n,s)=>n in i?w(i,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):i[n]=s,I=(i,n)=>{for(var s in n||(n={}))O.call(n,s)&&C(i,s,n[s]);if(a)for(var s of a(n))H.call(n,s)&&C(i,s,n[s]);return i};const j=()=>{const{history:i,setPointCloudResult:n,setSelectedIDs:s,pointCloudBoxList:r,mainViewInstance:u,topViewInstance:y,polygonList:d,setPolygonList:f,syncAllViewPointCloudColor:P}=B(m),g=({newBoxParams:t,newPolygon:o})=>{const e={pointCloudBoxList:r,polygonList:d};t&&(e.pointCloudBoxList=r.concat(t)),o&&(e.polygonList=d.concat(o)),i.pushHistory(e)},h=t=>{const o={pointCloudBoxList:r,polygonList:d};t.pointCloudBoxList&&(o.pointCloudBoxList=t.pointCloudBoxList),t.polygonList&&(o.polygonList=t.polygonList),i.pushHistory(o)},x=t=>{if(d.find(e=>e.id===t.id)){const e=d.map(c=>c.id===t.id?t:I({},c));i.pushHistory({pointCloudBoxList:r,polygonList:e}),f(e)}},v=({pointCloudBoxList:t,polygonList:o})=>{i.initRecord({pointCloudBoxList:t,polygonList:o},!0)},L=t=>{if(!t)return;const{pointCloudBoxList:o=[],polygonList:e=[]}=t;if(o){r.length!==o.length&&s();const c=r.filter(l=>o.every(p=>p.id!==l.id)),_=o.filter(l=>r.every(p=>p.id!==l.id));c.forEach(l=>{u==null||u.removeObjectByName(l.id)}),_.forEach(l=>{u==null||u.generateBox(l)}),n(o),P(o)}e&&f(e),y==null||y.updatePolygonList(o!=null?o:[],e!=null?e:[])};return{addHistory:g,pushHistoryWithList:h,initHistory:v,pushHistoryUnderUpdatePolygon:x,redo:()=>{L(i.redo())},undo:()=>{L(i.undo())}}};export{j as useHistory};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHistory.js","sources":["../../../../src/components/pointCloudView/hooks/useHistory.ts"],"sourcesContent":["import { IPointCloudBox, IPointCloudBoxList, IPolygonData } from '@labelbee/lb-utils';\nimport { useContext } from 'react';\nimport { PointCloudContext } from '../PointCloudContext';\n\nexport const useHistory = () => {\n const {\n history,\n setPointCloudResult,\n setSelectedIDs,\n pointCloudBoxList,\n mainViewInstance,\n topViewInstance,\n polygonList,\n setPolygonList,\n syncAllViewPointCloudColor,\n } = useContext(PointCloudContext);\n\n const addHistory = ({\n newBoxParams,\n newPolygon,\n }: {\n newBoxParams?: IPointCloudBox;\n newPolygon?: IPolygonData;\n }) => {\n const historyRecord = {\n pointCloudBoxList,\n polygonList,\n };\n\n if (newBoxParams) {\n historyRecord.pointCloudBoxList = pointCloudBoxList.concat(newBoxParams);\n }\n\n if (newPolygon) {\n historyRecord.polygonList = polygonList.concat(newPolygon);\n }\n\n history.pushHistory(historyRecord);\n };\n\n const pushHistoryWithList = (\n params: Partial<{\n pointCloudBoxList: IPointCloudBoxList;\n polygonList: IPolygonData[];\n }>,\n ) => {\n const historyRecord = {\n pointCloudBoxList,\n polygonList,\n };\n\n if (params.pointCloudBoxList) {\n historyRecord.pointCloudBoxList = params.pointCloudBoxList;\n }\n\n if (params.polygonList) {\n historyRecord.polygonList = params.polygonList;\n }\n\n history.pushHistory(historyRecord);\n };\n\n const pushHistoryUnderUpdatePolygon = (polygon: IPolygonData) => {\n const selectedPolygon = polygonList.find((v) => v.id === polygon.id);\n\n if (selectedPolygon) {\n const newPolygonList = polygonList.map((v) => {\n if (v.id === polygon.id) {\n return polygon;\n }\n return {\n ...v,\n };\n });\n history.pushHistory({\n pointCloudBoxList,\n polygonList: newPolygonList,\n });\n setPolygonList(newPolygonList);\n }\n };\n\n const initHistory = ({\n pointCloudBoxList,\n polygonList,\n }: {\n pointCloudBoxList: IPointCloudBoxList;\n polygonList: IPolygonData[];\n }) => {\n history.initRecord(
|
|
1
|
+
{"version":3,"file":"useHistory.js","sources":["../../../../src/components/pointCloudView/hooks/useHistory.ts"],"sourcesContent":["import { IPointCloudBox, IPointCloudBoxList, IPolygonData } from '@labelbee/lb-utils';\nimport { useContext } from 'react';\nimport { PointCloudContext } from '../PointCloudContext';\n\nexport const useHistory = () => {\n const {\n history,\n setPointCloudResult,\n setSelectedIDs,\n pointCloudBoxList,\n mainViewInstance,\n topViewInstance,\n polygonList,\n setPolygonList,\n syncAllViewPointCloudColor,\n } = useContext(PointCloudContext);\n\n const addHistory = ({\n newBoxParams,\n newPolygon,\n }: {\n newBoxParams?: IPointCloudBox;\n newPolygon?: IPolygonData;\n }) => {\n const historyRecord = {\n pointCloudBoxList,\n polygonList,\n };\n\n if (newBoxParams) {\n historyRecord.pointCloudBoxList = pointCloudBoxList.concat(newBoxParams);\n }\n\n if (newPolygon) {\n historyRecord.polygonList = polygonList.concat(newPolygon);\n }\n\n history.pushHistory(historyRecord);\n };\n\n const pushHistoryWithList = (\n params: Partial<{\n pointCloudBoxList: IPointCloudBoxList;\n polygonList: IPolygonData[];\n }>,\n ) => {\n const historyRecord = {\n pointCloudBoxList,\n polygonList,\n };\n\n if (params.pointCloudBoxList) {\n historyRecord.pointCloudBoxList = params.pointCloudBoxList;\n }\n\n if (params.polygonList) {\n historyRecord.polygonList = params.polygonList;\n }\n\n history.pushHistory(historyRecord);\n };\n\n const pushHistoryUnderUpdatePolygon = (polygon: IPolygonData) => {\n const selectedPolygon = polygonList.find((v) => v.id === polygon.id);\n\n if (selectedPolygon) {\n const newPolygonList = polygonList.map((v) => {\n if (v.id === polygon.id) {\n return polygon;\n }\n return {\n ...v,\n };\n });\n history.pushHistory({\n pointCloudBoxList,\n polygonList: newPolygonList,\n });\n setPolygonList(newPolygonList);\n }\n };\n\n const initHistory = ({\n pointCloudBoxList,\n polygonList,\n }: {\n pointCloudBoxList: IPointCloudBoxList;\n polygonList: IPolygonData[];\n }) => {\n history.initRecord({ pointCloudBoxList, polygonList }, true);\n };\n\n const updatePointCloud = (params?: {\n pointCloudBoxList: IPointCloudBoxList;\n polygonList: IPolygonData[];\n }) => {\n if (!params) {\n return;\n }\n\n const { pointCloudBoxList: newPointCloudBoxList = [], polygonList: newPolygonList = [] } =\n params;\n\n if (newPointCloudBoxList) {\n if (pointCloudBoxList.length !== newPointCloudBoxList.length) {\n setSelectedIDs();\n }\n\n const deletePointCloudList = pointCloudBoxList.filter((v) =>\n newPointCloudBoxList.every((d) => d.id !== v.id),\n );\n const addPointCloudList = newPointCloudBoxList.filter((v) =>\n pointCloudBoxList.every((d) => d.id !== v.id),\n );\n\n // Clear All Data\n deletePointCloudList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n\n // Add Init Box\n addPointCloudList.forEach((v) => {\n mainViewInstance?.generateBox(v);\n });\n\n setPointCloudResult(newPointCloudBoxList);\n syncAllViewPointCloudColor(newPointCloudBoxList);\n }\n\n if (newPolygonList) {\n setPolygonList(newPolygonList);\n }\n\n topViewInstance?.updatePolygonList(newPointCloudBoxList ?? [], newPolygonList ?? []);\n };\n\n const redo = () => {\n updatePointCloud(history.redo());\n };\n\n const undo = () => {\n updatePointCloud(history.undo());\n };\n\n return {\n addHistory,\n pushHistoryWithList,\n initHistory,\n pushHistoryUnderUpdatePolygon,\n redo,\n undo,\n };\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useContext as
|
|
1
|
+
import{useContext as R,useMemo as E,useCallback as c}from"react";import p from"lodash";import{PointCloudContext as H}from"../PointCloudContext.js";import{cAnnotation as T}from"@labelbee/lb-annotation";import{useHistory as M}from"./useHistory.js";import{usePolygon as W}from"./usePolygon.js";var k=Object.defineProperty,q=Object.defineProperties,z=Object.getOwnPropertyDescriptors,m=Object.getOwnPropertySymbols,F=Object.prototype.hasOwnProperty,G=Object.prototype.propertyIsEnumerable,w=(e,n,o)=>n in e?k(e,n,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[n]=o,J=(e,n)=>{for(var o in n||(n={}))F.call(n,o)&&w(e,o,n[o]);if(m)for(var o of m(n))G.call(n,o)&&w(e,o,n[o]);return e},K=(e,n)=>q(e,z(n));const{ESortDirection:B}=T,Q=()=>{const{pointCloudBoxList:e,setPointCloudResult:n,topViewInstance:o,backViewInstance:P,sideViewInstance:f,selectedIDs:O,selectedID:x,mainViewInstance:u,setSelectedIDs:_,syncAllViewPointCloudColor:y,polygonList:I}=R(H),{selectedPolygon:r,updateSelectedPolygon:V,updatePolygonValidByID:b,deletePolygon:D}=W(),{pushHistoryWithList:h}=M(),d=E(()=>{const t=e.findIndex(i=>i.id===x);if(t>-1)return{info:e[t],index:t}},[x,e]),g=c(t=>{if(d==null?void 0:d.info){e.splice(d.index,1,p.merge(d.info,t));const i=p.cloneDeep(e);return n(i),h({pointCloudBoxList:i}),i}return e},[x,e]),S=c((t,i)=>{const l=e.findIndex(s=>s.id===i);if(l>-1){e.splice(l,1,p.merge(e[l],t));const s=p.cloneDeep(e);return n(s),s}return e},[e]),a=c(t=>{o==null||o.pointCloud2dOperation.setPolygonValidAndRender(t,!0),f==null||f.pointCloud2dOperation.setPolygonValidAndRender(t,!0),P==null||P.pointCloud2dOperation.setPolygonValidAndRender(t,!0)},[o,f,P]),L=c(()=>{if(d==null?void 0:d.info){const{id:t,valid:i=!0}=d.info,l=g({valid:!i});y(l),a(t)}r&&(V(K(J({},r),{valid:!r.valid})),o==null||o.pointCloud2dOperation.setPolygonValidAndRender(r.id,!0))},[a,d,r]),j=c(t=>{const i=e.find(l=>l.id===t);if(i){const{id:l,valid:s=!0}=i,N=S({valid:!s},l);return a(l),N}b(t)},[a,e,I]),v=c((t=B.ascend)=>{if(!o||O.length>1)return;const{pointCloud2dOperation:i}=o,l=i.switchToNextPolygon(t);l&&_(l)},[o]),A=()=>{v(B.descend)},C=t=>{const i=e.filter(l=>l.id!==t);n(i),u==null||u.removeObjectByName(t),u==null||u.render(),y(i)};return{selectedBox:d,updateSelectedBox:g,changeSelectedBoxValid:L,changeValidByID:j,selectNextBox:v,selectPrevBox:A,deletePointCloudBox:C,deleteSelectedPointCloudBoxAndPolygon:()=>{d&&(C(d.info.id),o==null||o.pointCloud2dOperation.deletePolygon(d.info.id)),r&&(D(r.id),o==null||o.pointCloud2dOperation.deletePolygon(r.id))}}};export{Q as useSingleBox};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSingleBox.js","sources":["../../../../src/components/pointCloudView/hooks/useSingleBox.ts"],"sourcesContent":["import { IPointCloudBox } from '@labelbee/lb-utils';\nimport { useCallback, useContext, useMemo } from 'react';\nimport _ from 'lodash';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { cAnnotation } from '@labelbee/lb-annotation';\nimport { useHistory } from './useHistory';\nimport { usePolygon } from './usePolygon';\n\nconst { ESortDirection } = cAnnotation;\n\n/** Actions for single selected box */\nexport const useSingleBox = () => {\n const {\n pointCloudBoxList,\n setPointCloudResult,\n topViewInstance,\n backViewInstance,\n sideViewInstance,\n selectedIDs,\n selectedID,\n mainViewInstance,\n setSelectedIDs,\n syncAllViewPointCloudColor,\n polygonList,\n } = useContext(PointCloudContext);\n const { selectedPolygon, updateSelectedPolygon, updatePolygonValidByID } = usePolygon();\n\n const { pushHistoryWithList } = useHistory();\n\n /** Returns { info: selected box, index: selected box index } */\n const selectedBox = useMemo(() => {\n const boxIndex = pointCloudBoxList.findIndex((i: { id: string }) => i.id === selectedID);\n if (boxIndex > -1) {\n return { info: pointCloudBoxList[boxIndex], index: boxIndex };\n }\n }, [selectedID, pointCloudBoxList]);\n\n /** Use Partial<IPointCloudBox> to update selected box */\n const updateSelectedBox = useCallback(\n (params: Partial<IPointCloudBox>) => {\n if (selectedBox?.info) {\n pointCloudBoxList.splice(selectedBox.index, 1, _.merge(selectedBox.info, params));\n const newPointCloudBoxList = _.cloneDeep(pointCloudBoxList);\n setPointCloudResult(newPointCloudBoxList);\n pushHistoryWithList({ pointCloudBoxList: newPointCloudBoxList });\n return newPointCloudBoxList;\n }\n\n return pointCloudBoxList;\n },\n [selectedID, pointCloudBoxList],\n );\n\n /** Use Partial<IPointCloudBox> to update box by ID */\n const updateBoxByID = useCallback(\n (params: Partial<IPointCloudBox>, id: string) => {\n const boxIndex = pointCloudBoxList.findIndex((v) => v.id === id);\n\n if (boxIndex > -1) {\n pointCloudBoxList.splice(boxIndex, 1, _.merge(pointCloudBoxList[boxIndex], params));\n const newPointCloudBoxList = _.cloneDeep(pointCloudBoxList);\n setPointCloudResult(newPointCloudBoxList);\n return newPointCloudBoxList;\n }\n return pointCloudBoxList;\n },\n [pointCloudBoxList],\n );\n\n /**\n * Change all polygonView Valid.\n */\n const changePolygonViewValid = useCallback(\n (id: string) => {\n topViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n sideViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n backViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n },\n [topViewInstance, sideViewInstance, backViewInstance],\n );\n\n /** Toggle selected box‘s validity */\n const changeSelectedBoxValid = useCallback(() => {\n if (selectedBox?.info) {\n const { id, valid = true } = selectedBox.info;\n\n // PointCloud\n const newPointCloudList = updateSelectedBox({ valid: !valid });\n\n // Async\n syncAllViewPointCloudColor(newPointCloudList);\n changePolygonViewValid(id);\n }\n\n if (selectedPolygon) {\n updateSelectedPolygon({ ...selectedPolygon, valid: !selectedPolygon.valid });\n topViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(selectedPolygon.id, true);\n }\n }, [changePolygonViewValid, selectedBox, selectedPolygon]);\n\n const changeValidByID = useCallback(\n (id: string) => {\n const boxInfo = pointCloudBoxList.find((v) => v.id === id);\n\n if (boxInfo) {\n const { id, valid = true } = boxInfo;\n\n // PointCloud\n const newPointCloudBoxList = updateBoxByID({ valid: !valid }, id);\n\n changePolygonViewValid(id);\n\n return newPointCloudBoxList;\n }\n updatePolygonValidByID(id);\n },\n [changePolygonViewValid, pointCloudBoxList, polygonList],\n );\n\n /** PointCloud select next/prev one */\n const switchToNextBox = useCallback(\n (sort = ESortDirection.ascend) => {\n if (!topViewInstance || selectedIDs.length > 1) {\n return;\n }\n\n const { pointCloud2dOperation } = topViewInstance;\n\n const newSelectedIDs = pointCloud2dOperation.switchToNextPolygon(sort);\n if (newSelectedIDs) {\n setSelectedIDs(newSelectedIDs);\n }\n },\n [topViewInstance],\n );\n\n const selectPrevBox = () => {\n switchToNextBox(ESortDirection.descend);\n };\n\n const deletePointCloudBox = (id: string) => {\n const newPointCloudList = pointCloudBoxList.filter((v) => v.id !== id);\n setPointCloudResult(newPointCloudList);\n mainViewInstance?.removeObjectByName(id);\n mainViewInstance?.render();\n syncAllViewPointCloudColor(newPointCloudList);\n };\n\n return {\n selectedBox,\n updateSelectedBox,\n changeSelectedBoxValid,\n changeValidByID,\n selectNextBox: switchToNextBox,\n selectPrevBox,\n deletePointCloudBox,\n };\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useSingleBox.js","sources":["../../../../src/components/pointCloudView/hooks/useSingleBox.ts"],"sourcesContent":["import { IPointCloudBox } from '@labelbee/lb-utils';\nimport { useCallback, useContext, useMemo } from 'react';\nimport _ from 'lodash';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { cAnnotation } from '@labelbee/lb-annotation';\nimport { useHistory } from './useHistory';\nimport { usePolygon } from './usePolygon';\n\nconst { ESortDirection } = cAnnotation;\n\n/** Actions for single selected box */\nexport const useSingleBox = () => {\n const {\n pointCloudBoxList,\n setPointCloudResult,\n topViewInstance,\n backViewInstance,\n sideViewInstance,\n selectedIDs,\n selectedID,\n mainViewInstance,\n setSelectedIDs,\n syncAllViewPointCloudColor,\n polygonList,\n } = useContext(PointCloudContext);\n const { selectedPolygon, updateSelectedPolygon, updatePolygonValidByID, deletePolygon } =\n usePolygon();\n\n const { pushHistoryWithList } = useHistory();\n\n /** Returns { info: selected box, index: selected box index } */\n const selectedBox = useMemo(() => {\n const boxIndex = pointCloudBoxList.findIndex((i: { id: string }) => i.id === selectedID);\n if (boxIndex > -1) {\n return { info: pointCloudBoxList[boxIndex], index: boxIndex };\n }\n }, [selectedID, pointCloudBoxList]);\n\n /** Use Partial<IPointCloudBox> to update selected box */\n const updateSelectedBox = useCallback(\n (params: Partial<IPointCloudBox>) => {\n if (selectedBox?.info) {\n pointCloudBoxList.splice(selectedBox.index, 1, _.merge(selectedBox.info, params));\n const newPointCloudBoxList = _.cloneDeep(pointCloudBoxList);\n setPointCloudResult(newPointCloudBoxList);\n pushHistoryWithList({ pointCloudBoxList: newPointCloudBoxList });\n return newPointCloudBoxList;\n }\n\n return pointCloudBoxList;\n },\n [selectedID, pointCloudBoxList],\n );\n\n /** Use Partial<IPointCloudBox> to update box by ID */\n const updateBoxByID = useCallback(\n (params: Partial<IPointCloudBox>, id: string) => {\n const boxIndex = pointCloudBoxList.findIndex((v) => v.id === id);\n\n if (boxIndex > -1) {\n pointCloudBoxList.splice(boxIndex, 1, _.merge(pointCloudBoxList[boxIndex], params));\n const newPointCloudBoxList = _.cloneDeep(pointCloudBoxList);\n setPointCloudResult(newPointCloudBoxList);\n return newPointCloudBoxList;\n }\n return pointCloudBoxList;\n },\n [pointCloudBoxList],\n );\n\n /**\n * Change all polygonView Valid.\n */\n const changePolygonViewValid = useCallback(\n (id: string) => {\n topViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n sideViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n backViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n },\n [topViewInstance, sideViewInstance, backViewInstance],\n );\n\n /** Toggle selected box‘s validity */\n const changeSelectedBoxValid = useCallback(() => {\n if (selectedBox?.info) {\n const { id, valid = true } = selectedBox.info;\n\n // PointCloud\n const newPointCloudList = updateSelectedBox({ valid: !valid });\n\n // Async\n syncAllViewPointCloudColor(newPointCloudList);\n changePolygonViewValid(id);\n }\n\n if (selectedPolygon) {\n updateSelectedPolygon({ ...selectedPolygon, valid: !selectedPolygon.valid });\n topViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(selectedPolygon.id, true);\n }\n }, [changePolygonViewValid, selectedBox, selectedPolygon]);\n\n const changeValidByID = useCallback(\n (id: string) => {\n const boxInfo = pointCloudBoxList.find((v) => v.id === id);\n\n if (boxInfo) {\n const { id, valid = true } = boxInfo;\n\n // PointCloud\n const newPointCloudBoxList = updateBoxByID({ valid: !valid }, id);\n\n changePolygonViewValid(id);\n\n return newPointCloudBoxList;\n }\n updatePolygonValidByID(id);\n },\n [changePolygonViewValid, pointCloudBoxList, polygonList],\n );\n\n /** PointCloud select next/prev one */\n const switchToNextBox = useCallback(\n (sort = ESortDirection.ascend) => {\n if (!topViewInstance || selectedIDs.length > 1) {\n return;\n }\n\n const { pointCloud2dOperation } = topViewInstance;\n\n const newSelectedIDs = pointCloud2dOperation.switchToNextPolygon(sort);\n if (newSelectedIDs) {\n setSelectedIDs(newSelectedIDs);\n }\n },\n [topViewInstance],\n );\n\n const selectPrevBox = () => {\n switchToNextBox(ESortDirection.descend);\n };\n\n const deletePointCloudBox = (id: string) => {\n const newPointCloudList = pointCloudBoxList.filter((v) => v.id !== id);\n setPointCloudResult(newPointCloudList);\n mainViewInstance?.removeObjectByName(id);\n mainViewInstance?.render();\n syncAllViewPointCloudColor(newPointCloudList);\n };\n\n /**\n * Delete all polygon by hotkey.\n */\n const deleteSelectedPointCloudBoxAndPolygon = () => {\n if (selectedBox) {\n deletePointCloudBox(selectedBox.info.id);\n topViewInstance?.pointCloud2dOperation.deletePolygon(selectedBox.info.id);\n }\n\n if (selectedPolygon) {\n deletePolygon(selectedPolygon.id);\n topViewInstance?.pointCloud2dOperation.deletePolygon(selectedPolygon.id);\n }\n };\n\n return {\n selectedBox,\n updateSelectedBox,\n changeSelectedBoxValid,\n changeValidByID,\n selectNextBox: switchToNextBox,\n selectPrevBox,\n deletePointCloudBox,\n deleteSelectedPointCloudBoxAndPolygon,\n };\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useContext as
|
|
1
|
+
import{useContext as P}from"react";import{PointCloudContext as C}from"../PointCloudContext.js";import{cTool as m}from"@labelbee/lb-annotation";import{useHistory as y}from"./useHistory.js";const{EToolName:n,EPolygonPattern:r}=m,v=()=>{const{topViewInstance:t,mainViewInstance:o,pointCloudBoxList:s,setPointCloudResult:a,setPolygonList:u,pointCloudPattern:c,setPointCloudPattern:i,syncAllViewPointCloudColor:d}=P(C),{pushHistoryWithList:p}=y();return{clearAllResult:()=>{s.forEach(l=>{o==null||o.removeObjectByName(l.id)}),o==null||o.render(),a([]),u([]),t==null||t.pointCloud2dOperation.clearActiveStatus(),t==null||t.pointCloud2dOperation.clearResult(),d([]),p({pointCloudBoxList:[],polygonList:[]})},updatePointCloudPattern:l=>{const e=t==null?void 0:t.pointCloud2dOperation;if(!!e)switch(e.clearActiveStatus(),l){case n.Rect:e.setPattern(r.Rect),i(n.Rect);break;case n.Polygon:e.setPattern(r.Normal),i(n.Polygon);break}},pointCloudPattern:c}};export{v as useStatus};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStatus.js","sources":["../../../../src/components/pointCloudView/hooks/useStatus.ts"],"sourcesContent":["/**\n * @file Update PointCloud Status\n * @createDate 2022-08-26\n * @author Ron <ron.f.luo@gmail.com>\n */\n\nimport { useContext
|
|
1
|
+
{"version":3,"file":"useStatus.js","sources":["../../../../src/components/pointCloudView/hooks/useStatus.ts"],"sourcesContent":["/**\n * @file Update PointCloud Status\n * @createDate 2022-08-26\n * @author Ron <ron.f.luo@gmail.com>\n */\n\nimport { useContext } from 'react';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { cTool } from '@labelbee/lb-annotation';\nimport { useHistory } from './useHistory';\n\nconst { EToolName, EPolygonPattern } = cTool;\n\nexport const useStatus = () => {\n const {\n topViewInstance,\n mainViewInstance,\n pointCloudBoxList,\n setPointCloudResult,\n setPolygonList,\n pointCloudPattern,\n setPointCloudPattern,\n syncAllViewPointCloudColor\n } = useContext(PointCloudContext);\n const { pushHistoryWithList } = useHistory();\n\n // Clear All PointView Data\n const clearAllResult = () => {\n pointCloudBoxList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n mainViewInstance?.render();\n\n setPointCloudResult([]);\n setPolygonList([]);\n\n topViewInstance?.pointCloud2dOperation.clearActiveStatus();\n topViewInstance?.pointCloud2dOperation.clearResult();\n \n syncAllViewPointCloudColor([]);\n\n // Add History\n pushHistoryWithList({ pointCloudBoxList: [], polygonList: [] });\n };\n\n const updatePointCloudPattern = (toolName: any) => {\n const polygon2dOperation = topViewInstance?.pointCloud2dOperation;\n if (!polygon2dOperation) {\n return;\n }\n\n polygon2dOperation.clearActiveStatus();\n\n switch (toolName) {\n case EToolName.Rect:\n polygon2dOperation.setPattern(EPolygonPattern.Rect);\n setPointCloudPattern(EToolName.Rect);\n\n break;\n case EToolName.Polygon:\n polygon2dOperation.setPattern(EPolygonPattern.Normal);\n setPointCloudPattern(EToolName.Polygon);\n break;\n }\n };\n\n return {\n clearAllResult,\n updatePointCloudPattern,\n pointCloudPattern,\n };\n};\n"],"names":[],"mappings":";;;;;AAWA,MAAM,CAAE,WAAW,eAAoB,CAAA,GAAA,KAAA,CAAA;AAEhC,MAAM,YAAY,MAAM;AAC7B,EAAM,MAAA;AAAA,IACJ,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,iBAAA;AAAA,IACA,mBAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,GAAA,GACE,UAAW,CAAA,iBAAA,CAAA,CAAA;AACf,EAAA,MAAM,CAAE,mBAAwB,CAAA,GAAA,UAAA,EAAA,CAAA;AAGhC,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAkB,iBAAA,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AAC/B,MAAA,gBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAkB,mBAAmB,CAAE,CAAA,EAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAEzC,IAAkB,gBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAA,MAAA,EAAA,CAAA;AAElB,IAAoB,mBAAA,CAAA,EAAA,CAAA,CAAA;AACpB,IAAe,cAAA,CAAA,EAAA,CAAA,CAAA;AAEf,IAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,qBAAsB,CAAA,iBAAA,EAAA,CAAA;AACvC,IAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,qBAAsB,CAAA,WAAA,EAAA,CAAA;AAEvC,IAA2B,0BAAA,CAAA,EAAA,CAAA,CAAA;AAG3B,IAAoB,mBAAA,CAAA,CAAE,iBAAmB,EAAA,EAAA,EAAI,WAAa,EAAA,EAAA,CAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAG5D,EAAM,MAAA,uBAAA,GAA0B,CAAC,QAAkB,KAAA;AACjD,IAAA,MAAM,qBAAqB,eAAiB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,qBAAA,CAAA;AAC5C,IAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,MAAA,OAAA;AAAA,KAAA;AAGF,IAAmB,kBAAA,CAAA,iBAAA,EAAA,CAAA;AAEnB,IAAQ,QAAA,QAAA;AAAA,MAAA,KACD,SAAU,CAAA,IAAA;AACb,QAAA,kBAAA,CAAmB,WAAW,eAAgB,CAAA,IAAA,CAAA,CAAA;AAC9C,QAAA,oBAAA,CAAqB,SAAU,CAAA,IAAA,CAAA,CAAA;AAE/B,QAAA,MAAA;AAAA,MAAA,KACG,SAAU,CAAA,OAAA;AACb,QAAA,kBAAA,CAAmB,WAAW,eAAgB,CAAA,MAAA,CAAA,CAAA;AAC9C,QAAA,oBAAA,CAAqB,SAAU,CAAA,OAAA,CAAA,CAAA;AAC/B,QAAA,MAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AAIN,EAAO,OAAA;AAAA,IACL,cAAA;AAAA,IACA,uBAAA;AAAA,IACA,iBAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import a from"../../utils/StepUtils.js";import{jsonParser as p}from"../../utils/index.js";const c=t=>{var o,i,r;const{annotation:{imgList:s,imgIndex:l}}=t,e=(o=s[l])!=null?o:{},n=a.getCurrentStepInfo((i=t.annotation)==null?void 0:i.step,(r=t.annotation)==null?void 0:r.stepList);return{currentData:e,imgList:s,stepInfo:n,config:p(n==null?void 0:n.config),configString:n==null?void 0:n.config}};export{c as a2MapStateToProps};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.js","sources":["../../../src/store/annotation/map.ts"],"sourcesContent":["/**\n * @file MapStateToProps set\n * @createdate 2022-07-19\n * @author Ron <ron.f.luo@gmail.com>\n */\nimport { AppState } from '../index';\nimport { IFileItem } from '@/types/data';\nimport StepUtils from '@/utils/StepUtils';\nimport { IStepInfo } from '@/types/step';\nimport { jsonParser } from '@/utils';\n\nexport const aMapStateToProps = (state: AppState) => {\n const {\n annotation: { imgList, imgIndex },\n } = state;\n const currentData = imgList[imgIndex] ?? {};\n\n return {\n currentData,\n };\n};\n\nexport interface IAnnotationStateProps {\n currentData: IFileItem;\n}\n\nexport interface IA2MapStateProps extends IAnnotationStateProps {\n imgList: IFileItem[];\n stepInfo: IStepInfo;\n config: any;\n}\n\nexport const a2MapStateToProps = (state: AppState) => {\n const {\n annotation: { imgList, imgIndex },\n } = state;\n const currentData = imgList[imgIndex] ?? {};\n const stepInfo = StepUtils.getCurrentStepInfo(state.annotation?.step, state.annotation?.stepList);\n\n return {\n currentData,\n imgList,\n stepInfo,\n config: jsonParser(stepInfo?.config),\n };\n};\n"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"map.js","sources":["../../../src/store/annotation/map.ts"],"sourcesContent":["/**\n * @file MapStateToProps set\n * @createdate 2022-07-19\n * @author Ron <ron.f.luo@gmail.com>\n */\nimport { AppState } from '../index';\nimport { IFileItem } from '@/types/data';\nimport StepUtils from '@/utils/StepUtils';\nimport { IStepInfo } from '@/types/step';\nimport { jsonParser } from '@/utils';\n\nexport const aMapStateToProps = (state: AppState) => {\n const {\n annotation: { imgList, imgIndex },\n } = state;\n const currentData = imgList[imgIndex] ?? {};\n\n return {\n currentData,\n };\n};\n\nexport interface IAnnotationStateProps {\n currentData: IFileItem;\n}\n\nexport interface IA2MapStateProps extends IAnnotationStateProps {\n imgList: IFileItem[];\n stepInfo: IStepInfo;\n config: any;\n configString: string; // Easy for users to listener.\n}\n\nexport const a2MapStateToProps = (state: AppState) => {\n const {\n annotation: { imgList, imgIndex },\n } = state;\n const currentData = imgList[imgIndex] ?? {};\n const stepInfo = StepUtils.getCurrentStepInfo(state.annotation?.step, state.annotation?.stepList);\n\n return {\n currentData,\n imgList,\n stepInfo,\n config: jsonParser(stepInfo?.config),\n configString: stepInfo?.config,\n };\n};\n"],"names":[],"mappings":";;;AAiCa,MAAA,iBAAA,GAAoB,CAAC,KAAoB,KAAA;AAjCtD,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAkCE,EAAM,MAAA;AAAA,IACJ,UAAA,EAAY,CAAE,OAAS,EAAA,QAAA,CAAA;AAAA,GACrB,GAAA,KAAA,CAAA;AACJ,EAAM,MAAA,WAAA,GAAc,CAAQ,EAAA,GAAA,OAAA,CAAA,QAAA,CAAA,KAAR,IAAqB,GAAA,EAAA,GAAA,EAAA,CAAA;AACzC,EAAM,MAAA,QAAA,GAAW,UAAU,kBAAmB,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,eAAN,IAAkB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,EAAM,CAAM,EAAA,GAAA,KAAA,CAAA,UAAA,KAAN,IAAkB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAA,CAAA,CAAA;AAExF,EAAO,OAAA;AAAA,IACL,WAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA,EAAQ,WAAW,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,MAAA,CAAA;AAAA,IAC7B,cAAc,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,MAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e,{useContext as
|
|
1
|
+
import e,{useContext as I,useState as C,useEffect as B}from"react";import{EditFilled as w}from"@ant-design/icons";import{ToolIcons as L}from"../ToolIcons.js";import{cTool as j}from"@labelbee/lb-annotation";import{PointCloudContext as b}from"../../../../components/pointCloudView/PointCloudContext.js";import{Divider as E,Tag as _,Input as A,Select as T,message as v}from"antd";import F from"../../../../utils/StepUtils.js";import{connect as V}from"react-redux";import{jsonParser as N}from"../../../../utils/index.js";import{useStatus as U}from"../../../../components/pointCloudView/hooks/useStatus.js";import{useSingleBox as h}from"../../../../components/pointCloudView/hooks/useSingleBox.js";import{useTranslation as k}from"react-i18next";import{LabelBeeContext as M}from"../../../../store/ctx.js";import z from"./components/batchUpdateModal/index.js";import{PointCloudUtils as W}from"@labelbee/lb-utils";import P from"../../../../components/attributeList/index.js";import{useAttribute as O}from"../../../../components/pointCloudView/hooks/useAttribute.js";const R=({imgList:n,imgIndex:u})=>{const c=I(b),[a,m]=C([]),{t:i}=k();B(()=>{const r=n;let o=new Map;m(W.getAllPointCloudResult({imgList:r,extraBoxList:f,ignoreIndexList:[u]}).filter(l=>!l.trackID||o.get(l.trackID)?!1:(o.set(l.trackID,!0),!0)).sort((l,s)=>{var d,t;const x=(d=l==null?void 0:l.trackID)!=null?d:0,g=(t=s==null?void 0:s.trackID)!=null?t:0;return x-g}).map(l=>{var s;return(s=l==null?void 0:l.trackID)!=null?s:0}))},[c.pointCloudBoxList,n]);const{pointCloudBoxList:f}=c;return e.createElement("div",{style:{padding:24,borderBottom:"1px solid #eee"}},e.createElement("div",{style:{marginBottom:16}},i("AllTrackIDs")),e.createElement("div",null,a.map(r=>e.createElement(_,{color:"#F3F4FF",key:r,style:{color:"#666",marginBottom:8}},r))))},$=()=>{const[n,u]=C(!1),{pointCloudBoxList:c}=I(b),{selectedBox:a,updateSelectedBox:m}=h(),[i,f]=C(""),{t:r}=k(),o=a==null?void 0:a.info.trackID,l=d=>!!c.find(x=>x.trackID===d&&x.id!==(a==null?void 0:a.info.id)),s=(d=!1)=>{const t=parseInt(i,10);if(d&&u(!1),isNaN(t)){v.error(r("PositiveIntegerCheck"));return}if(i.indexOf(".")>-1){v.error(r("NotAllowDecimalPointsInTrackID"));return}if(l(t)){v.error(r("DuplicateTrackIDsExist"));return}if(!(t>0)){v.error(r("PositiveIntegerCheck"));return}m({trackID:t})};return B(()=>{u(!1)},[o]),e.createElement("div",{style:{padding:24}},e.createElement("div",{style:{marginBottom:16,display:"flex",justifyContent:"space-between",alignItems:"center"}},e.createElement("span",null,r("CurrentBoxTrackIDs")),o&&e.createElement(z,{id:o})),e.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"}},n&&o?e.createElement(A,{defaultValue:o,onChange:d=>{f(d.target.value)},disabled:!o,size:"small",onBlur:()=>{s()},onPressEnter:()=>{s(!0)}}):e.createElement("span",null,o),e.createElement(w,{style:{color:"#999",marginLeft:16,cursor:typeof o!="undefined"?"pointer":"not-allowed"},onClick:()=>{o&&u(!n)}})))},q=({attributeList:n,subAttributeList:u,toolInstance:c})=>{const{selectedBox:a}=h(),m=I(b),{t:i}=k(),{defaultAttribute:f}=O(),r={fontWeight:500,fontSize:14,margin:"12px 0 8px 20px"},o={margin:"12px 20px 8px",fontSize:14,fontWeight:500,wordWrap:"break-word"},l=t=>{c.setDefaultAttribute(t)},s=(t,x)=>{c.setSubAttribute(t,x)},d=n.map(t=>({label:t.key,value:t.value,color:t==null?void 0:t.color}));return e.createElement("div",null,e.createElement("div",{style:r},i("Attribute")),e.createElement(P,{list:d,forbidDefault:!0,selectedAttribute:f!=null?f:"",attributeChanged:t=>l(t)}),e.createElement(E,{style:{margin:0}}),a&&e.createElement(e.Fragment,null,u.map(t=>{var x,g,y,D,S;return(t==null?void 0:t.subSelected)&&e.createElement("div",{style:{marginTop:12},key:t.value},e.createElement("div",{style:o},i("SubAttribute"),"-",t.key),((x=t.subSelected)==null?void 0:x.length)<5?e.createElement(P,{list:t.subSelected.map(p=>({label:p.key,value:p.value})),selectedAttribute:(y=(g=m.selectedPointCloudBox)==null?void 0:g.subAttribute)==null?void 0:y[t.value],num:"-",forbidColor:!0,forbidDefault:!0,attributeChanged:p=>s(t.value,p),style:{marginBottom:12}}):e.createElement(T,{style:{margin:"0px 21px 17px 16px",width:"87%"},value:(S=(D=m.selectedPointCloudBox)==null?void 0:D.subAttribute)==null?void 0:S[t.value],placeholder:i("PleaseSelect"),onChange:p=>s(t.value,p),allowClear:!0},t.subSelected.map(p=>e.createElement(T.Option,{key:p.value,value:p.value},p.key))),e.createElement(E,{style:{margin:0}}))})))},G=({stepInfo:n,toolInstance:u,imgList:c,imgIndex:a})=>{var m,i;const{updatePointCloudPattern:f,pointCloudPattern:r}=U(),o=N(n.config),l=(m=o==null?void 0:o.attributeList)!=null?m:[],s=(o==null?void 0:o.secondaryAttributeConfigurable)===!0?(i=o==null?void 0:o.inputList)!=null?i:[]:[];return e.createElement(e.Fragment,null,e.createElement(L,{toolName:j.EPointCloudName.PointCloud,selectedToolName:r,onChange:d=>f==null?void 0:f(d)}),(o==null?void 0:o.trackConfigurable)===!0&&e.createElement(e.Fragment,null,e.createElement(R,{imgList:c,imgIndex:a}),e.createElement($,null),e.createElement(E,{style:{margin:0}})),e.createElement(q,{toolInstance:u,attributeList:l,subAttributeList:s}))},H=n=>{var u,c,a;const m=F.getCurrentStepInfo((u=n.annotation)==null?void 0:u.step,(c=n.annotation)==null?void 0:c.stepList),i=(a=n.annotation)==null?void 0:a.toolInstance;return{stepInfo:m,toolInstance:i,imgList:n.annotation.imgList,imgIndex:n.annotation.imgIndex}};var J=V(H,null,null,{context:M})(G);export{J as default};
|