@labelbee/lb-components 1.2.3-alpha.4 → 1.2.3-alpha.5
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/customResizeHook/index.js +1 -1
- package/dist/constant/index.js +1 -1
- package/dist/hooks/useRafState.js +1 -1
- package/dist/store/annotation/actionCreators.js +1 -1
- package/dist/store/annotation/reducer.js +1 -1
- package/dist/types/constant/index.d.ts +0 -4
- package/dist/views/MainView/sidebar/TagSidebar/index.js +1 -1
- package/dist/views/MainView/sidebar/TextToolSidebar/index.js +1 -1
- package/dist/views/MainView/toolHeader/index.js +1 -1
- package/es/components/customResizeHook/index.js +1 -1
- package/es/components/customResizeHook/index.js.map +1 -1
- package/es/constant/index.js +1 -1
- package/es/constant/index.js.map +1 -1
- package/es/hooks/useRafState.js +1 -1
- package/es/hooks/useRafState.js.map +1 -1
- package/es/store/annotation/actionCreators.js +1 -1
- package/es/store/annotation/actionCreators.js.map +1 -1
- package/es/store/annotation/reducer.js +1 -1
- package/es/store/annotation/reducer.js.map +1 -1
- package/es/utils/ToolStyleUtils.js.map +1 -1
- package/es/views/MainView/sidebar/TagSidebar/index.js +1 -1
- package/es/views/MainView/sidebar/TagSidebar/index.js.map +1 -1
- package/es/views/MainView/sidebar/TextToolSidebar/index.js +1 -1
- package/es/views/MainView/sidebar/TextToolSidebar/index.js.map +1 -1
- package/es/views/MainView/toolHeader/index.js +1 -1
- package/es/views/MainView/toolHeader/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var AnnotationSize=require("../../data/enums/AnnotationSize.js"),lbAnnotation=require("@labelbee/lb-annotation"),React=require("react"),reactRedux=require("react-redux"),actionCreators=require("../../store/annotation/actionCreators.js")
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var AnnotationSize=require("../../data/enums/AnnotationSize.js"),lbAnnotation=require("@labelbee/lb-annotation"),React=require("react"),reactRedux=require("react-redux"),actionCreators=require("../../store/annotation/actionCreators.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React);const EKeyCode=lbAnnotation.cKeyCode.default,viewportContext=React__default.default.createContext({width:window.innerWidth,height:window.innerHeight}),ViewportProviderComponent=e=>{const{children:a,dispatch:o}=e,[n]=React.useState(window.innerWidth),[i]=React.useState(window.innerHeight),r=t=>{!lbAnnotation.toolUtils.hotkeyFilter(t)||(t.keyCode===EKeyCode.A&&o(actionCreators.PageBackward()),t.keyCode===EKeyCode.D&&o(actionCreators.PageForward()),t.keyCode===EKeyCode.R&&o(actionCreators.UpdateRotate()))};React.useEffect(()=>(window.addEventListener("keydown",r),()=>{window.removeEventListener("keydown",r)}),[]);const d=React.useMemo(()=>({width:n,height:i}),[n,i]);return React__default.default.createElement(viewportContext.Provider,{value:d},a)},ViewportProvider=reactRedux.connect(e=>({annotation:e.annotation}))(ViewportProviderComponent),getFormatSize=(e,a=!1,o=!1)=>{const{width:n,height:i}=e,r=AnnotationSize.headerHeight+AnnotationSize.footerHeight,d=o?40+r+40:r,t=a?AnnotationSize.editStepWidth+AnnotationSize.sidebarWidth:AnnotationSize.sidebarWidth;return{width:n-t,height:i-d}};exports.ViewportProvider=ViewportProvider,exports.ViewportProviderComponent=ViewportProviderComponent,exports.getFormatSize=getFormatSize,exports.viewportContext=viewportContext;
|
package/dist/constant/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.EStepType=void 0,function(o){o[o.Check=0]="Check",o[o.ANNOTATION=1]="ANNOTATION",o[o.QUALITY_INSPECTION=2]="QUALITY_INSPECTION",o[o.PRE_ANNOTATION=3]="PRE_ANNOTATION",o[o.MANUAL_CORRECTION=4]="MANUAL_CORRECTION"}(exports.EStepType||(exports.EStepType={})),exports.ESubmitType=void 0,function(o){o[o.Backward=1]="Backward",o[o.Forward=2]="Forward",o[o.Jump=3]="Jump",o[o.Quit=4]="Quit",o[o.Export=5]="Export",o[o.StepChanged=6]="StepChanged",o[o.Save=7]="Save"}(exports.ESubmitType||(exports.ESubmitType={}));const prefix="bee",componentCls=`${prefix}-component
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.EStepType=void 0,function(o){o[o.Check=0]="Check",o[o.ANNOTATION=1]="ANNOTATION",o[o.QUALITY_INSPECTION=2]="QUALITY_INSPECTION",o[o.PRE_ANNOTATION=3]="PRE_ANNOTATION",o[o.MANUAL_CORRECTION=4]="MANUAL_CORRECTION"}(exports.EStepType||(exports.EStepType={})),exports.ESubmitType=void 0,function(o){o[o.Backward=1]="Backward",o[o.Forward=2]="Forward",o[o.Jump=3]="Jump",o[o.Quit=4]="Quit",o[o.Export=5]="Export",o[o.StepChanged=6]="StepChanged",o[o.Save=7]="Save"}(exports.ESubmitType||(exports.ESubmitType={}));const prefix="bee",componentCls=`${prefix}-component`;exports.componentCls=componentCls,exports.prefix=prefix;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var React=require("react");const useRafState=t=>{const e=React.useRef(0),[r
|
|
1
|
+
"use strict";var React=require("react");const useRafState=t=>{const e=React.useRef(0),[a,r]=React.useState(t),n=React.useCallback(c=>{cancelAnimationFrame(e.current),e.current=requestAnimationFrame(()=>{r(c)})},[]);return React.useEffect(()=>()=>cancelAnimationFrame(e.current),[]),[a,n]};module.exports=useRafState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var Actions=require("../Actions.js"),reducer=require("./reducer.js"),index=require("../../constant/index.js"),AnnotationSize=require("../../data/enums/AnnotationSize.js"),PageOperator=require("../../utils/PageOperator.js"),index$1=require("../../utils/index.js");const dispatchTasks=(e,t)=>t.map(n=>e(n)),getSubmitByPageOperation=e=>e===AnnotationSize.EPageTurningOperation.Forward?index.ESubmitType.Forward:e===AnnotationSize.EPageTurningOperation.Backward?index.ESubmitType.Backward:e===AnnotationSize.EPageTurningOperation.Jump?index.ESubmitType.Jump:index.ESubmitType.Forward,getBasicIndex=(e,t)=>{var n,a;const{imgList:o,imgIndex:T}=e,{dataSourceStep:s}=reducer.getStepConfig(e.stepList,e.step);return((a=(n=index$1.jsonParser(o[T-1].result)[`step_${s}`])==null?void 0:n.result)==null?void 0:a.length)-1||t};function UpdateImgList(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_IMG_LIST,payload:{imgList:e}}}function SetTaskConfig({stepList:e,step:t}){return{type:Actions.ANNOTATION_ACTIONS.SET_TASK_CONFIG,payload:{stepList:e,step:t}}}function UpdateOnSubmit(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_ON_SUBMIT,payload:{onSubmit:e}}}function UpdateOnSave(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_ON_SAVE,payload:{onSave:e}}}function UpdateGetFileData(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_GET_FILE_DATA,payload:{getFileData:e}}}function UpdateRotate(){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_ROTATE}}function CopyBackWordResult(){return{type:Actions.ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT}}function InitTaskData({onSubmit:e,onSave:t,getFileData:n,imgList:a,step:o,stepList:T,initialIndex:s}){const r=[];return e&&r.push(UpdateOnSubmit(e)),t&&r.push(UpdateOnSave(t)),n&&r.push(UpdateGetFileData(n)),r.push(UpdateImgList(a)),r.push(SetTaskConfig({stepList:T,step:o})),r.push({type:Actions.ANNOTATION_ACTIONS.CALC_STEP_PROGRESS}),r.push({type:Actions.ANNOTATION_ACTIONS.INIT_TOOL}),r.push(reducer.LoadImageAndFileData(s)),i=>dispatchTasks(i,r)}const ToNextStep=e=>(t,n)=>{const{
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var Actions=require("../Actions.js"),reducer=require("./reducer.js"),index=require("../../constant/index.js"),AnnotationSize=require("../../data/enums/AnnotationSize.js"),PageOperator=require("../../utils/PageOperator.js"),index$1=require("../../utils/index.js");const dispatchTasks=(e,t)=>t.map(n=>e(n)),getSubmitByPageOperation=e=>e===AnnotationSize.EPageTurningOperation.Forward?index.ESubmitType.Forward:e===AnnotationSize.EPageTurningOperation.Backward?index.ESubmitType.Backward:e===AnnotationSize.EPageTurningOperation.Jump?index.ESubmitType.Jump:index.ESubmitType.Forward,getBasicIndex=(e,t)=>{var n,a;const{imgList:o,imgIndex:T}=e,{dataSourceStep:s}=reducer.getStepConfig(e.stepList,e.step);return((a=(n=index$1.jsonParser(o[T-1].result)[`step_${s}`])==null?void 0:n.result)==null?void 0:a.length)-1||t};function UpdateImgList(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_IMG_LIST,payload:{imgList:e}}}function SetTaskConfig({stepList:e,step:t}){return{type:Actions.ANNOTATION_ACTIONS.SET_TASK_CONFIG,payload:{stepList:e,step:t}}}function UpdateOnSubmit(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_ON_SUBMIT,payload:{onSubmit:e}}}function UpdateOnSave(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_ON_SAVE,payload:{onSave:e}}}function UpdateGetFileData(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_GET_FILE_DATA,payload:{getFileData:e}}}function UpdateRotate(){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_ROTATE}}function CopyBackWordResult(){return{type:Actions.ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT}}function InitTaskData({onSubmit:e,onSave:t,getFileData:n,imgList:a,step:o,stepList:T,initialIndex:s}){const r=[];return e&&r.push(UpdateOnSubmit(e)),t&&r.push(UpdateOnSave(t)),n&&r.push(UpdateGetFileData(n)),r.push(UpdateImgList(a)),r.push(SetTaskConfig({stepList:T,step:o})),r.push({type:Actions.ANNOTATION_ACTIONS.CALC_STEP_PROGRESS}),r.push({type:Actions.ANNOTATION_ACTIONS.INIT_TOOL}),r.push(reducer.LoadImageAndFileData(s)),i=>dispatchTasks(i,r)}const getNextStep=(e,t)=>{var n;const a=t==null?void 0:t.findIndex(o=>(o==null?void 0:o.step)===e);return(n=t[a+1])==null?void 0:n.step},ToNextStep=e=>(t,n)=>{const{annotation:a}=n(),{step:o,stepList:T}=a,s=getNextStep(o,T);return[t(UpdateProcessingStep(s,e))]},UpdateProcessingStep=(e,t)=>(n,a)=>{var o,T,s;const r=(s=(T=(o=a())==null?void 0:o.annotation)==null?void 0:T.imgIndex)!=null?s:0;return[n({type:Actions.ANNOTATION_ACTIONS.SUBMIT_RESULT}),n({type:Actions.ANNOTATION_ACTIONS.SUBMIT_FILE_DATA,payload:{submitType:index.ESubmitType.StepChanged}}),n({type:Actions.ANNOTATION_ACTIONS.SET_STEP,payload:{toStep:e}}),n({type:Actions.ANNOTATION_ACTIONS.CALC_STEP_PROGRESS}),n(reducer.LoadImageAndFileData(t!=null?t:r,0))]},ToSubmitFileData=e=>t=>[t({type:Actions.ANNOTATION_ACTIONS.SUBMIT_RESULT}),t({type:Actions.ANNOTATION_ACTIONS.SUBMIT_FILE_DATA,payload:{submitType:e}})],SubmitAndChangeFileIndex=(e,t,n,a)=>[e(ToSubmitFileData(n)),e(reducer.LoadImageAndFileData(t,a))],ChangeBasicIndex=(e,t)=>[e({type:Actions.ANNOTATION_ACTIONS.SUBMIT_RESULT}),e({type:Actions.ANNOTATION_ACTIONS.SET_BASIC_INDEX,payload:{basicIndex:t}})],ChangeTriggerEventAfterIndexChanged=(e,t)=>{e({type:Actions.ANNOTATION_ACTIONS.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED,payload:{triggerEventAfterIndexChanged:t}})},PageBackward=(e=!1)=>(t,n)=>DispatcherTurning(t,n,AnnotationSize.EPageTurningOperation.Backward,e),PageForward=(e=!1)=>(t,n)=>DispatcherTurning(t,n,AnnotationSize.EPageTurningOperation.Forward,e),PageJump=(e,t=!1)=>(n,a)=>{if(e!==a().imgIndex)return DispatcherTurning(n,a,AnnotationSize.EPageTurningOperation.Jump,t,e)},DispatcherTurning=(e,t,n,a=!1,o)=>{const T=t().annotation,{fileIndexChanged:s,fileIndex:r,basicIndexChanged:i,basicIndex:p}=PageOperator.getNextPageInfo(n,T,o),u=getSubmitByPageOperation(n);if(ChangeTriggerEventAfterIndexChanged(e,a),s){const A=u===index.ESubmitType.Backward?getBasicIndex(T,p):p;return SubmitAndChangeFileIndex(e,r,u,A)}return i?ChangeBasicIndex(e,p):e(ToSubmitFileData(u))},ChangeSave=e=>{e(ToSubmitFileData(index.ESubmitType.Save)),e({type:Actions.ANNOTATION_ACTIONS.SAVE_RESULT})},SetAnnotationLoading=(e,t)=>{e({type:Actions.ANNOTATION_ACTIONS.SET_LOADING,payload:{loading:t}})};exports.ChangeSave=ChangeSave,exports.CopyBackWordResult=CopyBackWordResult,exports.DispatcherTurning=DispatcherTurning,exports.InitTaskData=InitTaskData,exports.PageBackward=PageBackward,exports.PageForward=PageForward,exports.PageJump=PageJump,exports.SetAnnotationLoading=SetAnnotationLoading,exports.SetTaskConfig=SetTaskConfig,exports.ToNextStep=ToNextStep,exports.ToSubmitFileData=ToSubmitFileData,exports.UpdateGetFileData=UpdateGetFileData,exports.UpdateImgList=UpdateImgList,exports.UpdateOnSave=UpdateOnSave,exports.UpdateOnSubmit=UpdateOnSubmit,exports.UpdateProcessingStep=UpdateProcessingStep,exports.UpdateRotate=UpdateRotate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var Actions=require("../Actions.js"),_=require("lodash"),data=require("../../utils/data.js"),index=require("../../utils/index.js"),StepUtils=require("../../utils/StepUtils.js"),AnnotationDataUtils=require("../../utils/AnnotationDataUtils.js"),ConfigUtils=require("../../utils/ConfigUtils.js"),styleString=require("../../constant/styleString.js"),index$1=require("../../components/customResizeHook/index.js"),lbAnnotation=require("@labelbee/lb-annotation"),es=require("antd/es"),actionCreators=require("./actionCreators.js")
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var Actions=require("../Actions.js"),_=require("lodash"),data=require("../../utils/data.js"),index=require("../../utils/index.js"),StepUtils=require("../../utils/StepUtils.js"),AnnotationDataUtils=require("../../utils/AnnotationDataUtils.js"),ConfigUtils=require("../../utils/ConfigUtils.js"),styleString=require("../../constant/styleString.js"),index$1=require("../../components/customResizeHook/index.js"),lbAnnotation=require("@labelbee/lb-annotation"),es=require("antd/es"),actionCreators=require("./actionCreators.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var ___default=_interopDefaultLegacy(_),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,o)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,__spreadValues=(e,t)=>{for(var o in t||(t={}))__hasOwnProp.call(t,o)&&__defNormalProp(e,o,t[o]);if(__getOwnPropSymbols)for(var o of __getOwnPropSymbols(t))__propIsEnum.call(t,o)&&__defNormalProp(e,o,t[o]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__async=(e,t,o)=>new Promise((T,c)=>{var p=l=>{try{N(o.next(l))}catch(E){c(E)}},g=l=>{try{N(o.throw(l))}catch(E){c(E)}},N=l=>l.done?T(l.value):Promise.resolve(l.value).then(p,g);N((o=o.apply(e,t)).next())});const getStepConfig=(e,t)=>e.find(o=>o.step===t),initialState={annotationEngine:null,toolInstance:null,imgList:[],config:"{}",imgIndex:-1,basicIndex:0,imgPageSize:1,step:1,stepList:[],imgNode:new Image,basicResultList:[],resultList:[],stepProgress:0,loading:!1,triggerEventAfterIndexChanged:!1},getTotalPage=e=>{const{imgList:t,imgPageSize:o}=e;return Math.ceil(t.length/o)},calcStepProgress=(e,t)=>e.reduce((o,T)=>{const c=T.result;return index.jsonParser(c)[`step_${t}`]?o+1:o},0)/e.length,updateToolInstance=(e,t)=>{const{step:o,stepList:T}=e,c=StepUtils.getCurrentStepInfo(o,T),p=ConfigUtils.ConfigUtils.jsonParser(c.config),g=document.getElementById("toolContainer");if(!g)throw"Not exist dom named id-toolContainer";const N=index$1.getFormatSize({width:window.innerWidth,height:window.innerHeight}),l=new lbAnnotation.AnnotationEngine({container:g,toolName:c.tool,size:N,imgNode:t,config:p,style:JSON.parse(styleString)});return{toolInstance:l.toolInstance,annotationEngine:l}},LoadImageAndFileData=(e,t)=>(o,T)=>__async(void 0,null,function*(){const{getFileData:c,imgList:p,toolInstance:g}=T().annotation;if(actionCreators.SetAnnotationLoading(o,!0),c){const l=yield c(p[e],e);o({type:Actions.ANNOTATION_ACTIONS.SET_FILE_DATA,payload:{fileData:l,index:e}})}const{url:N}=p[e];return lbAnnotation.ImgUtils.load(N).then(l=>{actionCreators.SetAnnotationLoading(o,!1),o({type:Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA,payload:{imgNode:l,nextIndex:e,nextBasicIndex:t}})}).catch(()=>{actionCreators.SetAnnotationLoading(o,!1),g.setErrorImg(),o({type:Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA,payload:{nextIndex:e,nextBasicIndex:t}})})}),annotationReducer=(e=initialState,t)=>{var o,T,c,p,g,N,l,E,h,b,x,F,j,w,U;switch(t.type){case Actions.ANNOTATION_ACTIONS.UPDATE_TOOL_INSTANCE:return __spreadProps(__spreadValues({},e),{toolInstance:t.payload.toolInstance});case Actions.ANNOTATION_ACTIONS.UPDATE_IMG_LIST:return __spreadProps(__spreadValues({},e),{imgList:t.payload.imgList});case Actions.ANNOTATION_ACTIONS.CALC_STEP_PROGRESS:{const{imgList:n,step:s}=e,r=calcStepProgress(n,s);return __spreadProps(__spreadValues({},e),{stepProgress:r})}case Actions.ANNOTATION_ACTIONS.SUBMIT_FILE_DATA:{const{imgList:n,imgIndex:s,step:r,stepList:i,toolInstance:a,onSubmit:u,resultList:A}=e;if(!a)return e;const I=((o=n[s])==null?void 0:o.result)||"",[,d]=a.exportData(),O=data.composeResultWithBasicImgInfo(I,d),m=data.composeResult(O,{step:r,stepList:i},{rect:A});n[s].result=AnnotationDataUtils.dataCorrection(m,I,r,i),u&&u([n[s]],(T=t.payload)==null?void 0:T.submitType,s);const f=calcStepProgress(n,r);return __spreadProps(__spreadValues({},e),{stepProgress:f,imgList:n})}case Actions.ANNOTATION_ACTIONS.SAVE_RESULT:{const{imgList:n,imgIndex:s,onSave:r}=e;return r==null||r(n[s],s,n),__spreadValues({},e)}case Actions.ANNOTATION_ACTIONS.SUBMIT_RESULT:{const{imgList:n,basicIndex:s,resultList:r,annotationEngine:i,basicResultList:a}=e;if(!i)return e;const[u]=i.toolInstance.exportData();let A=u;if((a==null?void 0:a.length)>0){const I=(c=a[s])==null?void 0:c.id,d=u.map(O=>__spreadProps(__spreadValues({},O),{sourceID:I}));A=___default.default.cloneDeep(r).filter(O=>O.sourceID!==I),A.push(...d)}return __spreadProps(__spreadValues({},e),{resultList:A,imgList:n})}case Actions.ANNOTATION_ACTIONS.SET_BASIC_INDEX:{const{toolInstance:n,step:s,imgList:r,imgIndex:i,stepList:a,annotationEngine:u,resultList:A,basicResultList:I}=e;if(!n||!u)return e;const d=t.payload.basicIndex,O=(p=I[d])==null?void 0:p.id,m=index.jsonParser((g=r[i])==null?void 0:g.result),f=(A||[]).filter(P=>P.sourceID===O),L=getStepConfig(a,s),{dataSourceStep:C,tool:R}=L,D=getStepConfig(a,C);let S=[];return C&&R&&(S=(N=m[`step_${C}`])==null?void 0:N.result,(S==null?void 0:S.length)>0?(u.setBasicInfo(D.tool,S[d]),u.launchOperation()):(u.setBasicInfo(D.tool),u.forbidOperation(),es.message.info("\u5F53\u524D\u6587\u4EF6\u4E0D\u5B58\u5728\u4F9D\u8D56\u6570\u636E"))),n.setResult(f),n.history.initRecord(f,!0),__spreadProps(__spreadValues({},e),{basicIndex:d})}case Actions.ANNOTATION_ACTIONS.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED:{const{triggerEventAfterIndexChanged:n}=t.payload;return __spreadProps(__spreadValues({},e),{triggerEventAfterIndexChanged:!!n})}case Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA:{const{imgList:n,step:s,toolInstance:r,annotationEngine:i,stepList:a}=e;if(!r||!i)return e;const u=StepUtils.getCurrentStepInfo(s,a),{nextIndex:A,imgNode:I,nextBasicIndex:d,imgError:O}=t.payload,m=d!=null?d:0,f=index.jsonParser((l=n[A])==null?void 0:l.result),L=f[`step_${s}`],C=!L,R={rotate:(E=f.rotate)!=null?E:0,valid:(h=f.valid)!=null?h:!0};I&&O!==!0&&i.setImgNode(I,R);const D=getStepConfig(a,s),{dataSourceStep:S,tool:P}=D,B=getStepConfig(a,S),q=S&&P,v=(x=(b=f[`step_${S}`])==null?void 0:b.result)!=null?x:[],y=AnnotationDataUtils.getInitialResultList(L==null?void 0:L.result,r,D,v,C);if(i.launchOperation(),q&&((v==null?void 0:v.length)>0?i.setBasicInfo(B.tool,v[m]):(i.setBasicInfo(B.tool),i.forbidOperation(),es.message.info("\u5F53\u524D\u6587\u4EF6\u4E0D\u5B58\u5728\u4F9D\u8D56\u6570\u636E"))),u.tool!=="check"){const G=(j=(F=v[m])==null?void 0:F.id)!=null?j:"",z=q?y.filter(M=>lbAnnotation.CommonToolUtils.isSameSourceID(M.sourceID,G)):y;r.setResult(z),r.history.initRecord(y,!0)}return __spreadProps(__spreadValues({},e),{imgIndex:A,basicIndex:m,basicResultList:v,resultList:y})}case Actions.ANNOTATION_ACTIONS.UPDATE_ANNOTATION_CONFIG:return __spreadProps(__spreadValues({},e),{config:(w=t.payload.config)!=null?w:"{}"});case Actions.ANNOTATION_ACTIONS.SET_TASK_CONFIG:{const{stepList:n,step:s}=t.payload;return __spreadProps(__spreadValues({},e),{stepList:n,step:s})}case Actions.ANNOTATION_ACTIONS.INIT_TOOL:{const{imgNode:n}=e,{toolInstance:s,annotationEngine:r}=updateToolInstance(e,n);return __spreadProps(__spreadValues({},e),{toolInstance:s,annotationEngine:r})}case Actions.ANNOTATION_ACTIONS.UPDATE_ON_SUBMIT:return __spreadProps(__spreadValues({},e),{onSubmit:t.payload.onSubmit});case Actions.ANNOTATION_ACTIONS.UPDATE_ON_SAVE:return __spreadProps(__spreadValues({},e),{onSave:t.payload.onSave});case Actions.ANNOTATION_ACTIONS.UPDATE_GET_FILE_DATA:return __spreadProps(__spreadValues({},e),{getFileData:t.payload.getFileData});case Actions.ANNOTATION_ACTIONS.SET_FILE_DATA:{const{fileData:n,index:s}=t.payload,{imgList:r}=e;return r[s]=__spreadValues(__spreadValues({},r[s]),n),__spreadProps(__spreadValues({},e),{imgList:r})}case Actions.ANNOTATION_ACTIONS.UPDATE_ROTATE:{const{toolInstance:n}=e;return n==null||n.updateRotate(),e}case Actions.ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT:{const{toolInstance:n,imgIndex:s,imgList:r,step:i}=e;if(!n)return e;if(s===0||s>=r.length)return console.error("\u65E0\u6CD5\u590D\u5236\u8FB9\u754C\u5916\u7684\u5185\u5BB9"),e;const a=r[s-1].result;if(!a)return e;const u=AnnotationDataUtils.copyResultChange(a,i,(U=r[s].result)!=null?U:"");r[s].result=u;const I=index.jsonParser(u)[`step_${i}`],d=(I==null?void 0:I.result)||[];return n.setResult(d),n.history.pushHistory(d),__spreadProps(__spreadValues({},e),{imgList:[...r]})}case Actions.ANNOTATION_ACTIONS.SET_STEP:{const{stepList:n,annotationEngine:s}=e,{toStep:r}=t.payload;if(!s)return e;const i=getStepConfig(n,r);return s.setToolName(i.tool,i.config),__spreadProps(__spreadValues({},e),{step:r,toolInstance:s.toolInstance})}case Actions.ANNOTATION_ACTIONS.SET_LOADING:{const{loading:n}=t.payload;return __spreadProps(__spreadValues({},e),{loading:!!n})}default:return e}};exports.LoadImageAndFileData=LoadImageAndFileData,exports.annotationReducer=annotationReducer,exports.getStepConfig=getStepConfig,exports.getTotalPage=getTotalPage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var index$1=require("../../../../components/attributeList/index.js"),index=require("../../../../components/checkboxList/index.js"),icons=require("@ant-design/icons"),es=require("antd/es"),_=require("lodash"),React=require("react"),icon_clearSmall=require("../../../../assets/annotation/common/icon_clearSmall.svg.js"),icon_clearSmall_a=require("../../../../assets/annotation/common/icon_clearSmall_a.svg.js"),lbAnnotation=require("@labelbee/lb-annotation"),reactRedux=require("react-redux"),reactI18next=require("react-i18next")
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var index$1=require("../../../../components/attributeList/index.js"),index=require("../../../../components/checkboxList/index.js"),icons=require("@ant-design/icons"),es=require("antd/es"),_=require("lodash"),React=require("react"),icon_clearSmall=require("../../../../assets/annotation/common/icon_clearSmall.svg.js"),icon_clearSmall_a=require("../../../../assets/annotation/common/icon_clearSmall_a.svg.js"),lbAnnotation=require("@labelbee/lb-annotation"),reactRedux=require("react-redux"),reactI18next=require("react-i18next");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React);const{Panel}=es.Collapse,expandIconFuc=({isActive:e})=>React__default.default.createElement(icons.CaretRightOutlined,{rotate:e?90:0}),TagSidebar=({toolInstance:e,imgIndex:C})=>{const[u,v]=React.useState([]),s=React.useRef(null),[,R]=React.useState(0),[q,m]=React.useState(-1),{t:f}=reactI18next.useTranslation();React.useEffect(()=>{e&&(v(e.config.inputList.map(t=>t.value)),e.singleOn("render",()=>{R(t=>t+1)}))},[e]),React.useEffect(()=>{if(e&&(e.singleOn("expend",T),e.labelSelectedList.length===1)){let t=0;for(let a=0;a<e.labelSelectedList[0];a++)t+=46,n[a]&&u[a]!==""&&n[a].subSelected.forEach(r=>{t+=40});s.current&&(s.current.children[0].scrollTop=t)}}),React.useEffect(()=>{s.current&&(s.current.children[0].scrollTop=0)},[C]);const T=()=>{var t;const a=e.labelSelectedList[0],r=(t=n.filter((l,o)=>o===a)[0])==null?void 0:t.value;p(a,r,!0)},p=React.useCallback((t,a,r)=>{const l=_.cloneDeep(u);l[t]===""||r===!0?l[t]=a:l[t]="",v(l)},[u]);if(!e)return null;const{labelSelectedList:c,config:{inputList:n},currentTagResult:i,setLabel:g}=e,j=t=>c.length>0&&c[0]===t?React__default.default.createElement("span",{className:"keyDownIconActive"},t+1):React__default.default.createElement("span",{className:"keyDownIcon"},t+1),b=(t,a=-1)=>t?t.map((r,l)=>{var o,y,E,h,L;if(r.subSelected){const k=lbAnnotation.TagUtils.judgeResultIsInInputList(r.value,(o=i==null?void 0:i.result)==null?void 0:o[r.value],n);return React__default.default.createElement(es.Collapse,{bordered:!1,expandIcon:expandIconFuc,key:`collapse_${l}_${a+1}`,onChange:()=>p(l,r.value),activeKey:[u[l]]},React__default.default.createElement(Panel,{header:React__default.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"}},React__default.default.createElement("span",null,r.key,React__default.default.createElement(es.Tooltip,{placement:"bottom",title:f("ClearThisOption")},React__default.default.createElement("img",{style:{marginLeft:5,cursor:"pointer"},onClick:O=>{O.stopPropagation(),e.clearResult(!0,r.value)},src:q===l||k?icon_clearSmall_a:icon_clearSmall,onMouseEnter:()=>{m(l)},onMouseLeave:()=>{m(-1)}})),k&&u[l]===""&&React__default.default.createElement(es.Badge,{color:"#87d068"})),(n==null?void 0:n.length)>1&&j(l)),key:r.value},React__default.default.createElement("div",{className:"level",style:{backgroundColor:c.length>0&&c[0]===l?"rgba(158, 158, 158, 0.18)":""}},b(r.subSelected,l))))}const d=(n==null?void 0:n[a])?n==null?void 0:n[a].value:0,S=((h=(E=(y=i==null?void 0:i.result)==null?void 0:y[d])==null?void 0:E.split(";"))==null?void 0:h.indexOf(r.value))>-1?r.value:"";return((L=n==null?void 0:n[a])==null?void 0:L.isMulti)===!0?React__default.default.createElement("div",{className:"singleBar",key:`${d}_${a}_${l}`},React__default.default.createElement(index,{attributeChanged:()=>g(a,l),selectedAttribute:[S],list:[{value:r.value,label:r.key}],num:l+1})):React__default.default.createElement("div",{className:"singleBar",key:`${d}_${a}_${l}`},React__default.default.createElement(index$1.default,{forbidColor:!0,attributeChanged:()=>g(a,l),selectedAttribute:S,list:[{value:r.value,label:r.key}],num:l+1}))}):null,N=window.innerHeight-61-80;return React__default.default.createElement("div",{className:"tagOperationMenu",ref:s},(n==null?void 0:n.length)===0?React__default.default.createElement("div",{style:{padding:20,textAlign:"center"}},f("NoConfiguration")):React__default.default.createElement("div",{className:"main",style:{height:N}},b(n)))};function mapStateToProps(e){return{toolInstance:e.annotation.toolInstance,imgIndex:e.annotation.imgIndex}}var TagSidebar$1=reactRedux.connect(mapStateToProps)(TagSidebar);exports.default=TagSidebar$1,exports.expandIconFuc=expandIconFuc;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var React=require("react"),reactRedux=require("react-redux"),_=require("lodash"),index=require("../../../../utils/index.js"),es=require("antd/es"),lbAnnotation=require("@labelbee/lb-annotation"),actionCreators=require("../../../../store/annotation/actionCreators.js"),ConfigUtils=require("../../../../utils/ConfigUtils.js"),reactI18next=require("react-i18next");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,a)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,__spreadValues=(e,t)=>{for(var a in t||(t={}))__hasOwnProp.call(t,a)&&__defNormalProp(e,a,t[a]);if(__getOwnPropSymbols)for(var a of __getOwnPropSymbols(t))__propIsEnum.call(t,a)&&__defNormalProp(e,a,t[a]);return e};const EKeyCode=lbAnnotation.cKeyCode.default,syntheticEventStopPagination=e=>{e.stopPropagation(),e.nativeEvent.stopPropagation(),e.nativeEvent.stopImmediatePropagation()},TextareaWithFooter=e=>{const{textareaProps:t,footer:a}=e;return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(es.Input.TextArea,__spreadValues({bordered:!1,rows:6,onKeyDown:syntheticEventStopPagination,onKeyUp:syntheticEventStopPagination},t)),React__default.default.createElement("div",{className:index.classnames({textAreaLength:!0})},a))},SingleTextInput=e=>{var t;const a=React.useRef(null),[p,i]=React.useState(!1),[y,m]=React.useState(!1),{t:u}=reactI18next.useTranslation(),{disabled:l,config:s,result:x,updateText:v,index:g,switchToNextTextarea:E,hasMultiple:b,onNext:c}=e,{maxLength:d}=s,f=x?x[s.key]:"",T=(t=f==null?void 0:f.length)!=null?t:0,C=n=>{v&&(v(n,s.key),s.required&&m(!n))},h=b&&E,r={id:`textInput-${g}`,ref:a,disabled:l,value:f,maxLength:d,autoSize:{minRows:2,maxRows:6},onChange:n=>{const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var React=require("react"),reactRedux=require("react-redux"),_=require("lodash"),index=require("../../../../utils/index.js"),es=require("antd/es"),lbAnnotation=require("@labelbee/lb-annotation"),actionCreators=require("../../../../store/annotation/actionCreators.js"),ConfigUtils=require("../../../../utils/ConfigUtils.js"),reactI18next=require("react-i18next");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,a)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,__spreadValues=(e,t)=>{for(var a in t||(t={}))__hasOwnProp.call(t,a)&&__defNormalProp(e,a,t[a]);if(__getOwnPropSymbols)for(var a of __getOwnPropSymbols(t))__propIsEnum.call(t,a)&&__defNormalProp(e,a,t[a]);return e};const EKeyCode=lbAnnotation.cKeyCode.default,syntheticEventStopPagination=e=>{e.stopPropagation(),e.nativeEvent.stopPropagation(),e.nativeEvent.stopImmediatePropagation()},TextareaWithFooter=e=>{const{textareaProps:t,footer:a}=e;return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(es.Input.TextArea,__spreadValues({bordered:!1,rows:6,onKeyDown:syntheticEventStopPagination,onKeyUp:syntheticEventStopPagination},t)),React__default.default.createElement("div",{className:index.classnames({textAreaLength:!0})},a))},SingleTextInput=e=>{var t;const a=React.useRef(null),[p,i]=React.useState(!1),[y,m]=React.useState(!1),{t:u}=reactI18next.useTranslation(),{disabled:l,config:s,result:x,updateText:v,index:g,switchToNextTextarea:E,hasMultiple:b,onNext:c}=e,{maxLength:d}=s,f=x?x[s.key]:"",T=(t=f==null?void 0:f.length)!=null?t:0,C=n=>{v&&(v(n,s.key),s.required&&m(!n))},h=b&&E,r={id:`textInput-${g}`,ref:a,disabled:l,value:f,maxLength:d,autoSize:{minRows:2,maxRows:6},onChange:n=>{const P=n.target.value;C(P)},onFocus:()=>{i(!0)},onBlur:n=>{i(!1),s.required&&m(!n.target.value)},style:{resize:"none",wordBreak:"break-all"},onKeyDownCapture:n=>{n.ctrlKey&&n.keyCode===EKeyCode.Enter&&(c&&c(),n.preventDefault()),n.keyCode===EKeyCode.Tab&&h&&(n.preventDefault(),n.nativeEvent.stopImmediatePropagation(),E(g)),n.nativeEvent.stopPropagation()}},o=React__default.default.createElement("div",{className:"textAreaFooter"},React__default.default.createElement("div",{className:"hotkeyTip"},h&&React__default.default.createElement("span",null,`[${u("Switch")}]Tab`),React__default.default.createElement("span",null,`[${u("TurnPage")}]Ctrl+Enter`)),React__default.default.createElement("div",{className:"wordCount"},React__default.default.createElement("span",{className:T>=d?"warning":""},T),"/",React__default.default.createElement("span",null,d)));return React.useEffect(()=>{l&&i(!1)},[l]),React__default.default.createElement("div",{className:"textField"},React__default.default.createElement("div",{className:"label"},React__default.default.createElement("span",{className:index.classnames({required:s.required})},s.label),React__default.default.createElement("i",{className:index.classnames({clearText:!0,disabled:l}),onClick:()=>{l||C("")}})),React__default.default.createElement("div",{className:index.classnames({disabled:l,"textarea-outline":!0,"ant-input-focused":p,textareaContainer:!0,focus:p,invalid:y})},React__default.default.createElement(TextareaWithFooter,{footer:o,textareaProps:r})))},TextToolSidebar=({toolInstance:e,imgIndex:t,dispatch:a,triggerEventAfterIndexChanged:p,step:i,stepList:y,basicResultList:m})=>{var u,l;const[s,x]=React.useState([]),[v,g]=React.useState(0),[,E]=React.useState(0),b=r=>{const o=(r+1)%s.length;c(o)},c=r=>{setTimeout(()=>{const o=document.getElementById(`textInput-${r}`);o&&(g(r),o.focus(),o.select(),o.scrollIntoView({behavior:"smooth",block:"center"}))})};React.useEffect(()=>{e&&(x(_.cloneDeep(e.config.configList)),e.singleOn("valueUpdated",()=>{E(r=>r+1)}))},[e]);const d=(r,o)=>{e.updateTextValue(o,r)};React.useEffect(()=>{t>-1&&p&&c(0)},[t]);const f=(l=(u=e.textList[0])==null?void 0:u.value)!=null?l:{},T=()=>{a(actionCreators.PageForward(!0))},h=ConfigUtils.ConfigUtils.getStepConfig(y,i).dataSourceStep>0&&m.length===0;return React__default.default.createElement("div",{className:"textToolOperationMenu"},s.map((r,o)=>React__default.default.createElement(SingleTextInput,{config:r,key:r.key,index:o,result:f,updateText:d,switchToNextTextarea:b,hasMultiple:s.length>1,focus:v===o,onNext:T,disabled:h})))};function mapStateToProps(e){return{toolInstance:e.annotation.toolInstance,imgIndex:e.annotation.imgIndex,step:e.annotation.step,basicResultList:e.annotation.basicResultList,stepList:e.annotation.stepList,triggerEventAfterIndexChanged:e.annotation.triggerEventAfterIndexChanged}}var TextToolSidebar$1=reactRedux.connect(mapStateToProps)(TextToolSidebar);exports.SingleTextInput=SingleTextInput,exports.TextareaWithFooter=TextareaWithFooter,exports.default=TextToolSidebar$1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var React=require("react"),icons=require("@ant-design/icons"),reactRedux=require("react-redux"),index$4=require("../../../index.js"),classNames=require("classnames"),index=require("../../../constant/index.js"),index$3=require("./ExportData/index.js"),index$2=require("./headerOption/index.js"),es=require("antd/es"),actionCreators=require("../../../store/annotation/actionCreators.js"),index$1=require("./StepSwitch/index.js"),lbUtils=require("@labelbee/lb-utils"),reactI18next=require("react-i18next"),useSize=require("../../../hooks/useSize.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),classNames__default=_interopDefaultLegacy(classNames);const NextButton=({disabled:e})=>{const{t}=reactI18next.useTranslation();return React__default.default.createElement(es.Button,{type:"primary",style:{marginLeft:10},onClick:()=>{index$4.store.dispatch(actionCreators.ToNextStep(0))},disabled:e},t("NextStep"))},NextStep=({step:e,stepProgress:t,stepList:
|
|
1
|
+
"use strict";var React=require("react"),icons=require("@ant-design/icons"),reactRedux=require("react-redux"),index$4=require("../../../index.js"),classNames=require("classnames"),index=require("../../../constant/index.js"),index$3=require("./ExportData/index.js"),index$2=require("./headerOption/index.js"),es=require("antd/es"),actionCreators=require("../../../store/annotation/actionCreators.js"),index$1=require("./StepSwitch/index.js"),lbUtils=require("@labelbee/lb-utils"),reactI18next=require("react-i18next"),useSize=require("../../../hooks/useSize.js"),_=require("lodash");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),classNames__default=_interopDefaultLegacy(classNames);const NextButton=({disabled:e})=>{const{t}=reactI18next.useTranslation();return React__default.default.createElement(es.Button,{type:"primary",style:{marginLeft:10},onClick:()=>{index$4.store.dispatch(actionCreators.ToNextStep(0))},disabled:e},t("NextStep"))},NextStep=({step:e,stepProgress:t,stepList:n})=>{var r;const{t:i}=reactI18next.useTranslation(),o=(r=_.last(n))==null?void 0:r.step;if(n.length<2||e===o)return null;const a=t<1;return a?React__default.default.createElement(es.Tooltip,{title:i("StepNotFinishedNotify")},React__default.default.createElement("span",null,React__default.default.createElement(NextButton,{disabled:a}))):React__default.default.createElement(NextButton,{disabled:a})},ToolHeader=({goBack:e,exportData:t,headerName:n,imgList:r,stepProgress:i,stepInfo:o,stepList:a,step:p,annotationEngine:m})=>{var s;const v=reactRedux.useDispatch(),[,x]=React.useReducer(l=>l+1,0),c=React.useRef(null),u=useSize(c),E=React__default.default.createElement(index$3,{exportData:t}),g=()=>{v(actionCreators.ToSubmitFileData(index.ESubmitType.Quit)),e&&e(r)},d=l=>{lbUtils.i18n.changeLanguage(l),m.setLang(l),x()},f=lbUtils.i18n.language,h=(s=u==null?void 0:u.width)!=null?s:window.innerWidth;return React__default.default.createElement("div",{className:classNames__default.default(`${index.prefix}-header`),ref:c},React__default.default.createElement("div",{className:`${index.prefix}-header__title`},React__default.default.createElement(icons.LeftOutlined,{className:`${index.prefix}-header__icon`,onClick:g}),n?React__default.default.createElement("span",{className:`${index.prefix}-header__name`},n):"",a.length>1&&React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(index$1,{stepProgress:i}),React__default.default.createElement(NextStep,{step:p,stepProgress:i,stepList:a})),E,React__default.default.createElement("div",{id:"operationNode",className:`${index.prefix}-header__operationNode`,style:{left:h/2-174/2}},React__default.default.createElement(index$2,{stepInfo:o})),React__default.default.createElement("div",{className:`${index.prefix}-header__titlePlacement`}),React__default.default.createElement("div",{className:`${index.prefix}-header__lang`},React__default.default.createElement("span",{className:`${index.prefix}-langCN ${f==="cn"?"active":""}`,onClick:()=>d("cn")},"\u4E2D\u6587")," / ",React__default.default.createElement("span",{className:`${index.prefix}-langEN ${f==="en"?"active":""}`,onClick:()=>d("en")},"En"))))},mapStateToProps=e=>{var t;return{imgList:e.annotation.imgList,annotationEngine:e.annotation.annotationEngine,stepProgress:e.annotation.stepProgress,toolName:(t=e.annotation.stepList[e.annotation.step-1])==null?void 0:t.tool,stepList:e.annotation.stepList,stepInfo:e.annotation.stepList[e.annotation.step-1],step:e.annotation.step}};var ToolHeader$1=reactRedux.connect(mapStateToProps)(ToolHeader);module.exports=ToolHeader$1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{editStepWidth as
|
|
1
|
+
import{editStepWidth as f,sidebarWidth as s,headerHeight as p,footerHeight as g}from"../../data/enums/AnnotationSize.js";import{cKeyCode as u,toolUtils as y}from"@labelbee/lb-annotation";import c,{useState as w,useEffect as C,useMemo as k}from"react";import{connect as v}from"react-redux";import{PageBackward as H,PageForward as E,UpdateRotate as P}from"../../store/annotation/actionCreators.js";const h=u.default,l=c.createContext({width:window.innerWidth,height:window.innerHeight}),m=t=>{const{children:d,dispatch:o}=t,[i]=w(window.innerWidth),[r]=w(window.innerHeight),n=e=>{!y.hotkeyFilter(e)||(e.keyCode===h.A&&o(H()),e.keyCode===h.D&&o(E()),e.keyCode===h.R&&o(P()))};C(()=>(window.addEventListener("keydown",n),()=>{window.removeEventListener("keydown",n)}),[]);const a=k(()=>({width:i,height:r}),[i,r]);return c.createElement(l.Provider,{value:a},d)},W=v(t=>({annotation:t.annotation}))(m),b=(t,d=!1,o=!1)=>{const{width:i,height:r}=t,n=p+g,a=o?40+n+40:n,e=d?f+s:s;return{width:i-e,height:r-a}};export{W as ViewportProvider,m as ViewportProviderComponent,b as getFormatSize,l as viewportContext};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/customResizeHook/index.tsx"],"sourcesContent":["import {\n editStepWidth,\n footerHeight,\n headerHeight,\n sidebarWidth,\n} from '@/data/enums/AnnotationSize';\nimport { cKeyCode, toolUtils } from '@labelbee/lb-annotation';\n\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { AppState } from '@/store';\nimport { UpdateRotate, PageBackward, PageForward } from '@/store/annotation/actionCreators';\nimport { ISize } from '@/types/main';\
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/customResizeHook/index.tsx"],"sourcesContent":["import {\n editStepWidth,\n footerHeight,\n headerHeight,\n sidebarWidth,\n} from '@/data/enums/AnnotationSize';\nimport { cKeyCode, toolUtils } from '@labelbee/lb-annotation';\n\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { AppState } from '@/store';\nimport { UpdateRotate, PageBackward, PageForward } from '@/store/annotation/actionCreators';\nimport { ISize } from '@/types/main';\n\nconst EKeyCode = cKeyCode.default;\n\nexport const viewportContext = React.createContext<{\n width: number;\n height: number;\n}>({\n width: window.innerWidth,\n height: window.innerHeight,\n});\n\nexport const ViewportProviderComponent = (props: any) => {\n const { children, dispatch } = props;\n const [width] = useState(window.innerWidth);\n const [height] = useState(window.innerHeight);\n\n const keydown = (e: KeyboardEvent) => {\n if (!toolUtils.hotkeyFilter(e)) {\n return;\n }\n if (e.keyCode === EKeyCode.A) {\n dispatch(PageBackward());\n }\n\n if (e.keyCode === EKeyCode.D) {\n dispatch(PageForward());\n }\n if (e.keyCode === EKeyCode.R) {\n dispatch(UpdateRotate());\n }\n };\n\n useEffect(() => {\n window.addEventListener('keydown', keydown);\n\n return () => {\n window.removeEventListener('keydown', keydown);\n };\n }, []);\n\n const size = useMemo(() => ({ width, height }), [width, height]);\n\n return <viewportContext.Provider value={size}>{children}</viewportContext.Provider>;\n};\n\nexport const ViewportProvider = connect((state: AppState) => ({\n annotation: state.annotation,\n}))(ViewportProviderComponent);\n\nexport const useViewport = () => {\n const { width, height } = useContext(viewportContext);\n return { width, height };\n};\n\n/**\n * 获取当前 canvas 的大小\n * @param isEdit 是否为编辑模式\n * @param isTips 是否有 tips\n */\nexport const useCanvasViewPort = (isEdit = false, isTips = false) => {\n const { width, height } = useContext(viewportContext);\n const otherHeight = headerHeight + footerHeight;\n const placeholderHeight = isTips ? 40 + otherHeight + 40 : otherHeight;\n const placeholderWidth = isEdit ? editStepWidth + sidebarWidth : sidebarWidth;\n\n return {\n width: width - placeholderWidth,\n height: height - placeholderHeight,\n };\n};\n\n/**\n * 解析当前 windowSize 下的 canvasSize\n * @param size\n * @param isEdit\n * @param isTips\n */\nexport const getFormatSize = (windowSize: ISize, isEdit = false, isTips = false) => {\n const { width, height } = windowSize;\n const otherHeight = headerHeight + footerHeight;\n const placeholderHeight = isTips ? 40 + otherHeight + 40 : otherHeight;\n const placeholderWidth = isEdit ? editStepWidth + sidebarWidth : sidebarWidth;\n\n return {\n width: width - placeholderWidth,\n height: height - placeholderHeight,\n };\n};\n"],"names":[],"mappings":";;;;;;AAcA,MAAM,WAAW,SAAS;MAEb,kBAAkB,MAAM,cAGlC;AAAA,EACD,OAAO,OAAO;AAAA,EACd,QAAQ,OAAO;AAAA;MAGJ,4BAA4B,CAAC,UAAe;AACvD,QAAM,CAAE,UAAU,YAAa;AAC/B,QAAM,CAAC,SAAS,SAAS,OAAO;AAChC,QAAM,CAAC,UAAU,SAAS,OAAO;AAEjC,QAAM,UAAU,CAAC,MAAqB;AACpC,QAAI,CAAC,UAAU,aAAa,IAAI;AAC9B;AAAA;AAEF,QAAI,EAAE,YAAY,SAAS,GAAG;AAC5B,eAAS;AAAA;AAGX,QAAI,EAAE,YAAY,SAAS,GAAG;AAC5B,eAAS;AAAA;AAEX,QAAI,EAAE,YAAY,SAAS,GAAG;AAC5B,eAAS;AAAA;AAAA;AAIb,YAAU,MAAM;AACd,WAAO,iBAAiB,WAAW;AAEnC,WAAO,MAAM;AACX,aAAO,oBAAoB,WAAW;AAAA;AAAA,KAEvC;AAEH,QAAM,OAAO,QAAQ,QAAS,OAAO,UAAW,CAAC,OAAO;AAExD,6CAAQ,gBAAgB,UAAjB;AAAA,IAA0B,OAAO;AAAA,KAAO;AAAA;MAGpC,mBAAmB,QAAQ,CAAC;AAAqB,EAC5D,YAAY,MAAM;AAAA,IAChB;MA8BS,gBAAgB,CAAC,YAAmB,SAAS,OAAO,SAAS,UAAU;AAClF,QAAM,CAAE,OAAO,UAAW;AAC1B,QAAM,cAAc,eAAe;AACnC,QAAM,oBAAoB,SAAS,KAAK,cAAc,KAAK;AAC3D,QAAM,mBAAmB,SAAS,gBAAgB,eAAe;AAEjE,SAAO;AAAA,IACL,OAAO,QAAQ;AAAA,IACf,QAAQ,SAAS;AAAA;AAAA;;;;"}
|
package/es/constant/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var A;(function(N){N[N.Check=0]="Check",N[N.ANNOTATION=1]="ANNOTATION",N[N.QUALITY_INSPECTION=2]="QUALITY_INSPECTION",N[N.PRE_ANNOTATION=3]="PRE_ANNOTATION",N[N.MANUAL_CORRECTION=4]="MANUAL_CORRECTION"})(A||(A={}));var
|
|
1
|
+
var A;(function(N){N[N.Check=0]="Check",N[N.ANNOTATION=1]="ANNOTATION",N[N.QUALITY_INSPECTION=2]="QUALITY_INSPECTION",N[N.PRE_ANNOTATION=3]="PRE_ANNOTATION",N[N.MANUAL_CORRECTION=4]="MANUAL_CORRECTION"})(A||(A={}));var O;(function(N){N[N.Backward=1]="Backward",N[N.Forward=2]="Forward",N[N.Jump=3]="Jump",N[N.Quit=4]="Quit",N[N.Export=5]="Export",N[N.StepChanged=6]="StepChanged",N[N.Save=7]="Save"})(O||(O={}));const o="bee",a=`${o}-component`;export{A as EStepType,O as ESubmitType,a as componentCls,o as prefix};
|
package/es/constant/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/constant/index.tsx"],"sourcesContent":["export enum EStepType {\n Check = 0, // 查看模式\n ANNOTATION = 1, // 正常标注\n QUALITY_INSPECTION, // 标注质检\n PRE_ANNOTATION, // 预标注\n MANUAL_CORRECTION, // 人工修正\n}\n\nexport enum ESubmitType {\n Backward = 1, // 向前翻页\n Forward = 2, // 向后翻页\n Jump = 3, // 分页器的跳页翻页\n Quit = 4, // 左上角后退触发\n Export = 5, // 数据导出时\n StepChanged = 6, // 切换步骤\n Save = 7, // 点击保存\n}\n// css 命名前缀\nexport const prefix = 'bee';\nexport const componentCls = `${prefix}-component`;\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/constant/index.tsx"],"sourcesContent":["export enum EStepType {\n Check = 0, // 查看模式\n ANNOTATION = 1, // 正常标注\n QUALITY_INSPECTION, // 标注质检\n PRE_ANNOTATION, // 预标注\n MANUAL_CORRECTION, // 人工修正\n}\n\nexport enum ESubmitType {\n Backward = 1, // 向前翻页\n Forward = 2, // 向后翻页\n Jump = 3, // 分页器的跳页翻页\n Quit = 4, // 左上角后退触发\n Export = 5, // 数据导出时\n StepChanged = 6, // 切换步骤\n Save = 7, // 点击保存\n}\n// css 命名前缀\nexport const prefix = 'bee';\nexport const componentCls = `${prefix}-component`;\n"],"names":[],"mappings":"IAAY;AAAL,UAAK,YAAL;AACL,mCAAQ,KAAR;AACA,wCAAa,KAAb;AACA;AACA;AACA;AAAA,GALU;IAQA;AAAL,UAAK,cAAL;AACL,0CAAW,KAAX;AACA,yCAAU,KAAV;AACA,sCAAO,KAAP;AACA,sCAAO,KAAP;AACA,wCAAS,KAAT;AACA,6CAAc,KAAd;AACA,sCAAO,KAAP;AAAA,GAPU;MAUC,SAAS;MACT,eAAe,GAAG;;;;"}
|
package/es/hooks/useRafState.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useRef as s,useState as u,useCallback as o,useEffect as
|
|
1
|
+
import{useRef as s,useState as u,useCallback as o,useEffect as m}from"react";const f=t=>{const e=s(0),[a,r]=u(t),n=o(c=>{cancelAnimationFrame(e.current),e.current=requestAnimationFrame(()=>{r(c)})},[]);return m(()=>()=>cancelAnimationFrame(e.current),[]),[a,n]};export{f as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRafState.js","sources":["../../src/hooks/useRafState.ts"],"sourcesContent":["import type { Dispatch, SetStateAction } from 'react';\nimport { useCallback, useRef, useState, useEffect } from 'react';\n\nconst useRafState = <S>(initialState: S | (() => S)): [S, Dispatch<SetStateAction<S>>] => {\n const frame = useRef(0);\n const [state, setState] = useState(initialState);\n\n const setRafState = useCallback((value: S | ((prevState: S) => S)) => {\n
|
|
1
|
+
{"version":3,"file":"useRafState.js","sources":["../../src/hooks/useRafState.ts"],"sourcesContent":["import type { Dispatch, SetStateAction } from 'react';\nimport { useCallback, useRef, useState, useEffect } from 'react';\n\nconst useRafState = <S>(initialState: S | (() => S)): [S, Dispatch<SetStateAction<S>>] => {\n const frame = useRef(0);\n const [state, setState] = useState(initialState);\n\n const setRafState = useCallback((value: S | ((prevState: S) => S)) => {\n cancelAnimationFrame(frame.current);\n\n frame.current = requestAnimationFrame(() => {\n setState(value);\n });\n }, []);\n\n useEffect(() => {\n return () => cancelAnimationFrame(frame.current);\n }, [])\n\n return [state, setRafState];\n};\n\nexport default useRafState;"],"names":[],"mappings":";;MAGM,cAAc,CAAI,iBAAkE;AACxF,QAAM,QAAQ,OAAO;AACrB,QAAM,CAAC,OAAO,YAAY,SAAS;AAEnC,QAAM,cAAc,YAAY,CAAC,UAAqC;AACpE,yBAAqB,MAAM;AAE3B,UAAM,UAAU,sBAAsB,MAAM;AAC1C,eAAS;AAAA;AAAA,KAEV;AAEH,YAAU,MAAM;AACd,WAAO,MAAM,qBAAqB,MAAM;AAAA,KACvC;AAEH,SAAO,CAAC,OAAO;AAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ANNOTATION_ACTIONS as a}from"../Actions.js";import{LoadImageAndFileData as
|
|
1
|
+
import{ANNOTATION_ACTIONS as a}from"../Actions.js";import{LoadImageAndFileData as I,getStepConfig as U}from"./reducer.js";import{ESubmitType as i}from"../../constant/index.js";import{EPageTurningOperation as d}from"../../data/enums/AnnotationSize.js";import C from"../../utils/PageOperator.js";import{jsonParser as P}from"../../utils/index.js";const R=(t,e)=>e.map(n=>t(n)),B=t=>t===d.Forward?i.Forward:t===d.Backward?i.Backward:t===d.Jump?i.Jump:i.Forward,D=(t,e)=>{var n,r;const{imgList:s,imgIndex:u}=t,{dataSourceStep:p}=U(t.stepList,t.step);return((r=(n=P(s[u-1].result)[`step_${p}`])==null?void 0:n.result)==null?void 0:r.length)-1||e};function E(t){return{type:a.UPDATE_IMG_LIST,payload:{imgList:t}}}function y({stepList:t,step:e}){return{type:a.SET_TASK_CONFIG,payload:{stepList:t,step:e}}}function f(t){return{type:a.UPDATE_ON_SUBMIT,payload:{onSubmit:t}}}function A(t){return{type:a.UPDATE_ON_SAVE,payload:{onSave:t}}}function m(t){return{type:a.UPDATE_GET_FILE_DATA,payload:{getFileData:t}}}function L(){return{type:a.UPDATE_ROTATE}}function N(){return{type:a.COPY_BACKWARD_RESULT}}function O({onSubmit:t,onSave:e,getFileData:n,imgList:r,step:s,stepList:u,initialIndex:p}){const o=[];return t&&o.push(f(t)),e&&o.push(A(e)),n&&o.push(m(n)),o.push(E(r)),o.push(y({stepList:u,step:s})),o.push({type:a.CALC_STEP_PROGRESS}),o.push({type:a.INIT_TOOL}),o.push(I(p)),c=>R(c,o)}const b=(t,e)=>{var n;const r=e==null?void 0:e.findIndex(s=>(s==null?void 0:s.step)===t);return(n=e[r+1])==null?void 0:n.step},v=t=>(e,n)=>{const{annotation:r}=n(),{step:s,stepList:u}=r,p=b(s,u);return[e(g(p,t))]},g=(t,e)=>(n,r)=>{var s,u,p;const o=(p=(u=(s=r())==null?void 0:s.annotation)==null?void 0:u.imgIndex)!=null?p:0;return[n({type:a.SUBMIT_RESULT}),n({type:a.SUBMIT_FILE_DATA,payload:{submitType:i.StepChanged}}),n({type:a.SET_STEP,payload:{toStep:t}}),n({type:a.CALC_STEP_PROGRESS}),n(I(e!=null?e:o,0))]},T=t=>e=>[e({type:a.SUBMIT_RESULT}),e({type:a.SUBMIT_FILE_DATA,payload:{submitType:t}})],F=(t,e,n,r)=>[t(T(n)),t(I(e,r))],k=(t,e)=>[t({type:a.SUBMIT_RESULT}),t({type:a.SET_BASIC_INDEX,payload:{basicIndex:e}})],w=(t,e)=>{t({type:a.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED,payload:{triggerEventAfterIndexChanged:e}})},G=(t=!1)=>(e,n)=>l(e,n,d.Backward,t),h=(t=!1)=>(e,n)=>l(e,n,d.Forward,t),j=(t,e=!1)=>(n,r)=>{if(t!==r().imgIndex)return l(n,r,d.Jump,e,t)},l=(t,e,n,r=!1,s)=>{const u=e().annotation,{fileIndexChanged:p,fileIndex:o,basicIndexChanged:c,basicIndex:S}=C.getNextPageInfo(n,u,s),_=B(n);if(w(t,r),p){const x=_===i.Backward?D(u,S):S;return F(t,o,_,x)}return c?k(t,S):t(T(_))},M=t=>{t(T(i.Save)),t({type:a.SAVE_RESULT})},J=(t,e)=>{t({type:a.SET_LOADING,payload:{loading:e}})};export{M as ChangeSave,N as CopyBackWordResult,l as DispatcherTurning,O as InitTaskData,G as PageBackward,h as PageForward,j as PageJump,J as SetAnnotationLoading,y as SetTaskConfig,v as ToNextStep,T as ToSubmitFileData,m as UpdateGetFileData,E as UpdateImgList,A as UpdateOnSave,f as UpdateOnSubmit,g as UpdateProcessingStep,L as UpdateRotate};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actionCreators.js","sources":["../../../src/store/annotation/actionCreators.ts"],"sourcesContent":["import { ANNOTATION_ACTIONS } from '@/store/Actions';\nimport { IStepInfo } from '@/types/step';\nimport { GetFileData, IFileItem, OnSave, OnSubmit } from '@/types/data';\nimport { AnnotationActionTypes, ToolInstance } from './types';\nimport { LoadImageAndFileData, getStepConfig } from './reducer';\nimport { ESubmitType } from '@/constant';\nimport { EPageTurningOperation } from '@/data/enums/AnnotationSize';\nimport PageOperator from '@/utils/PageOperator';\nimport { jsonParser } from '@/utils';\n\nconst dispatchTasks = (dispatch: any, tasks: any[]) => tasks.map((task) => dispatch(task));\n\n/**\n * @param {pageTurningOperation} pageTurningOperation 翻页操作\n * @returns {ESubmitType} 提数据交类型\n */\nconst getSubmitByPageOperation = (pageTurningOperation: EPageTurningOperation) => {\n if (pageTurningOperation === EPageTurningOperation.Forward) {\n return ESubmitType.Forward;\n }\n\n if (pageTurningOperation === EPageTurningOperation.Backward) {\n return ESubmitType.Backward;\n }\n\n if (pageTurningOperation === EPageTurningOperation.Jump) {\n return ESubmitType.Jump;\n }\n\n return ESubmitType.Forward;\n};\n\nconst getBasicIndex = (annotationStore: any, basicIndex: number) => {\n const {imgList, imgIndex} = annotationStore;\n const { dataSourceStep } = getStepConfig(annotationStore.stepList, annotationStore.step);\n let backwardResult = jsonParser(imgList[imgIndex - 1].result)\n const index = backwardResult[`step_${dataSourceStep}`]?.result?.length - 1\n return index || basicIndex\n}\n\nexport function UpdateToolInstance(toolInstance: ToolInstance): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_TOOL_INSTANCE,\n payload: {\n toolInstance,\n },\n };\n}\n\nexport function UpdateImgList(imgList: IFileItem[]): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_IMG_LIST,\n payload: {\n imgList,\n },\n };\n}\n\nexport function UpdateAnnotationConfig(config: string): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ANNOTATION_CONFIG,\n payload: {\n config,\n },\n };\n}\n\nexport function SetTaskConfig({\n stepList,\n step,\n}: {\n stepList: IStepInfo[];\n step: number;\n}): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.SET_TASK_CONFIG,\n payload: {\n stepList,\n step,\n },\n };\n}\n\nexport function UpdateOnSubmit(onSubmit: OnSubmit): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ON_SUBMIT,\n payload: {\n onSubmit,\n },\n };\n}\n\nexport function UpdateOnSave(onSave: OnSave): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ON_SAVE,\n payload: {\n onSave,\n },\n };\n}\n\nexport function UpdateGetFileData(getFileData: GetFileData): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_GET_FILE_DATA,\n payload: {\n getFileData,\n },\n };\n}\n\nexport function UpdateRotate(): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ROTATE,\n };\n}\n\nexport function CopyBackWordResult(): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT,\n };\n}\n\n/**\n * 初始化任务数据\n * @param param0\n */\nexport function InitTaskData({\n onSubmit,\n onSave,\n getFileData,\n imgList,\n step,\n stepList,\n initialIndex,\n}: any): any {\n const tasks: any[] = [];\n\n if (onSubmit) {\n tasks.push(UpdateOnSubmit(onSubmit));\n }\n if (onSave) {\n tasks.push(UpdateOnSave(onSave));\n }\n\n if (getFileData) {\n tasks.push(UpdateGetFileData(getFileData));\n }\n\n tasks.push(UpdateImgList(imgList));\n tasks.push(SetTaskConfig({ stepList, step }));\n tasks.push({\n type: ANNOTATION_ACTIONS.CALC_STEP_PROGRESS,\n });\n tasks.push({\n type: ANNOTATION_ACTIONS.INIT_TOOL,\n });\n\n tasks.push(LoadImageAndFileData(initialIndex));\n\n return (dispatch: any) => dispatchTasks(dispatch, tasks);\n}\n\n/** 切换到下一步 */\nexport const ToNextStep = (pageNumber?: number) => (dispatch: any, getState: any) => {\n const { step } = getState().annotation;\n return [dispatch(UpdateProcessingStep(step + 1, pageNumber))];\n};\n\n/**\n * 更新当前操作的步骤\n * @param {number} toStep\n */\nexport const UpdateProcessingStep = (toStep: number, index?: number) => (dispatch: any, state: any) => {\n const imgIndex = state()?.annotation?.imgIndex ?? 0;\n return [\n dispatch({ type: ANNOTATION_ACTIONS.SUBMIT_RESULT }),\n dispatch({\n type: ANNOTATION_ACTIONS.SUBMIT_FILE_DATA,\n payload: { submitType: ESubmitType.StepChanged },\n }),\n // ToSubmitFileData(ESubmitType.StepChanged),\n dispatch({ type: ANNOTATION_ACTIONS.SET_STEP, payload: { toStep } }),\n dispatch({ type: ANNOTATION_ACTIONS.CALC_STEP_PROGRESS }),\n // 切换步骤保持图片位置\n dispatch(LoadImageAndFileData(index ?? imgIndex, 0)),\n ];\n};\n\n/**\n * 提交当前的文件数据\n * @param submitType\n */\nexport const ToSubmitFileData = (submitType: ESubmitType) => (dispatch: any) =>\n [\n dispatch({ type: ANNOTATION_ACTIONS.SUBMIT_RESULT }),\n dispatch({ type: ANNOTATION_ACTIONS.SUBMIT_FILE_DATA, payload: { submitType } }),\n ];\n\n/**\n * 提交数据并且切换标注文件\n * @param dispatch\n * @param nextIndex\n * @param submitType\n * @param nextBasicIndex\n */\nconst SubmitAndChangeFileIndex = (\n dispatch: any,\n nextIndex: number,\n submitType: ESubmitType,\n nextBasicIndex?: number,\n) => [\n dispatch(ToSubmitFileData(submitType)),\n dispatch(LoadImageAndFileData(nextIndex, nextBasicIndex)),\n];\n\nconst ChangeBasicIndex = (dispatch: any, nextBasicIndex: number) => [\n dispatch({ type: ANNOTATION_ACTIONS.SUBMIT_RESULT }),\n dispatch({ type: ANNOTATION_ACTIONS.SET_BASIC_INDEX, payload: { basicIndex: nextBasicIndex } }),\n];\n\nconst ChangeTriggerEventAfterIndexChanged = (\n dispatch: any,\n triggerEventAfterIndexChanged: boolean,\n) => {\n dispatch({\n type: ANNOTATION_ACTIONS.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED,\n payload: {\n triggerEventAfterIndexChanged,\n },\n });\n};\n\n/** 向前翻页 */\nexport const PageBackward =\n (triggerEventAfterIndexChanged = false) =>\n (dispatch: any, getState: any) => {\n return DispatcherTurning(\n dispatch,\n getState,\n EPageTurningOperation.Backward,\n triggerEventAfterIndexChanged,\n );\n };\n\n/** 向后翻页 */\nexport const PageForward =\n (triggerEventAfterIndexChanged = false) =>\n (dispatch: any, getState: any) => {\n return DispatcherTurning(\n dispatch,\n getState,\n EPageTurningOperation.Forward,\n triggerEventAfterIndexChanged,\n );\n };\n\n/**\n * 跳到指定文件索引\n * @param toIndex\n */\nexport const PageJump =\n (toIndex: number, triggerEventAfterIndexChanged = false) =>\n (dispatch: any, getState: any) => {\n if (toIndex === getState().imgIndex) {\n return;\n }\n\n return DispatcherTurning(\n dispatch,\n getState,\n EPageTurningOperation.Jump,\n triggerEventAfterIndexChanged,\n toIndex,\n );\n };\n\n/**\n * 判断翻页还是切换依赖数据\n * @param dispatch\n * @param getState\n * @param pageTurningOperation\n * @param toIndex\n */\nexport const DispatcherTurning = (\n dispatch: any,\n getState: any,\n pageTurningOperation: EPageTurningOperation,\n triggerEventAfterIndexChanged = false,\n toIndex?: number,\n) => {\n const annotationStore = getState().annotation;\n const { fileIndexChanged, fileIndex, basicIndexChanged, basicIndex } =\n PageOperator.getNextPageInfo(pageTurningOperation, annotationStore, toIndex);\n\n const submitType: ESubmitType = getSubmitByPageOperation(pageTurningOperation);\n\n ChangeTriggerEventAfterIndexChanged(dispatch, triggerEventAfterIndexChanged);\n\n if (fileIndexChanged) {\n const index = submitType === ESubmitType.Backward ? getBasicIndex(annotationStore, basicIndex) : basicIndex;\n return SubmitAndChangeFileIndex(dispatch, fileIndex, submitType, index);\n }\n\n if (basicIndexChanged) {\n return ChangeBasicIndex(dispatch, basicIndex);\n }\n\n return dispatch(ToSubmitFileData(submitType));\n};\n\n/**\n * 保存当前页数据\n * */\nexport const ChangeSave = (dispatch: Function) => {\n dispatch(ToSubmitFileData(ESubmitType.Save));\n dispatch({ type: ANNOTATION_ACTIONS.SAVE_RESULT });\n};\n\nexport const SetAnnotationLoading = (dispatch: Function, loading: boolean) => {\n dispatch({\n type: ANNOTATION_ACTIONS.SET_LOADING,\n payload: {\n loading,\n },\n });\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"actionCreators.js","sources":["../../../src/store/annotation/actionCreators.ts"],"sourcesContent":["import { ANNOTATION_ACTIONS } from '@/store/Actions';\nimport { IStepInfo } from '@/types/step';\nimport { GetFileData, IFileItem, OnSave, OnSubmit } from '@/types/data';\nimport { AnnotationActionTypes, ToolInstance } from './types';\nimport { LoadImageAndFileData, getStepConfig } from './reducer';\nimport { ESubmitType } from '@/constant';\nimport { EPageTurningOperation } from '@/data/enums/AnnotationSize';\nimport PageOperator from '@/utils/PageOperator';\nimport { jsonParser } from '@/utils';\n\nconst dispatchTasks = (dispatch: any, tasks: any[]) => tasks.map((task) => dispatch(task));\n\n/**\n * @param {pageTurningOperation} pageTurningOperation 翻页操作\n * @returns {ESubmitType} 提数据交类型\n */\nconst getSubmitByPageOperation = (pageTurningOperation: EPageTurningOperation) => {\n if (pageTurningOperation === EPageTurningOperation.Forward) {\n return ESubmitType.Forward;\n }\n\n if (pageTurningOperation === EPageTurningOperation.Backward) {\n return ESubmitType.Backward;\n }\n\n if (pageTurningOperation === EPageTurningOperation.Jump) {\n return ESubmitType.Jump;\n }\n\n return ESubmitType.Forward;\n};\n\nconst getBasicIndex = (annotationStore: any, basicIndex: number) => {\n const {imgList, imgIndex} = annotationStore;\n const { dataSourceStep } = getStepConfig(annotationStore.stepList, annotationStore.step);\n let backwardResult = jsonParser(imgList[imgIndex - 1].result)\n const index = backwardResult[`step_${dataSourceStep}`]?.result?.length - 1\n return index || basicIndex\n}\n\nexport function UpdateToolInstance(toolInstance: ToolInstance): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_TOOL_INSTANCE,\n payload: {\n toolInstance,\n },\n };\n}\n\nexport function UpdateImgList(imgList: IFileItem[]): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_IMG_LIST,\n payload: {\n imgList,\n },\n };\n}\n\nexport function UpdateAnnotationConfig(config: string): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ANNOTATION_CONFIG,\n payload: {\n config,\n },\n };\n}\n\nexport function SetTaskConfig({\n stepList,\n step,\n}: {\n stepList: IStepInfo[];\n step: number;\n}): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.SET_TASK_CONFIG,\n payload: {\n stepList,\n step,\n },\n };\n}\n\nexport function UpdateOnSubmit(onSubmit: OnSubmit): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ON_SUBMIT,\n payload: {\n onSubmit,\n },\n };\n}\n\nexport function UpdateOnSave(onSave: OnSave): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ON_SAVE,\n payload: {\n onSave,\n },\n };\n}\n\nexport function UpdateGetFileData(getFileData: GetFileData): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_GET_FILE_DATA,\n payload: {\n getFileData,\n },\n };\n}\n\nexport function UpdateRotate(): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ROTATE,\n };\n}\n\nexport function CopyBackWordResult(): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT,\n };\n}\n\n/**\n * 初始化任务数据\n * @param param0\n */\nexport function InitTaskData({\n onSubmit,\n onSave,\n getFileData,\n imgList,\n step,\n stepList,\n initialIndex,\n}: any): any {\n const tasks: any[] = [];\n\n if (onSubmit) {\n tasks.push(UpdateOnSubmit(onSubmit));\n }\n if (onSave) {\n tasks.push(UpdateOnSave(onSave));\n }\n\n if (getFileData) {\n tasks.push(UpdateGetFileData(getFileData));\n }\n\n tasks.push(UpdateImgList(imgList));\n tasks.push(SetTaskConfig({ stepList, step }));\n tasks.push({\n type: ANNOTATION_ACTIONS.CALC_STEP_PROGRESS,\n });\n tasks.push({\n type: ANNOTATION_ACTIONS.INIT_TOOL,\n });\n\n tasks.push(LoadImageAndFileData(initialIndex));\n\n return (dispatch: any) => dispatchTasks(dispatch, tasks);\n}\n\n/** 获取下一步的step */\nconst getNextStep = (step: number, stepList: any) => {\n const currentStepIndex = stepList?.findIndex((element: any) => element?.step === step);\n return stepList[currentStepIndex + 1]?.step;\n};\n\n/** 切换到下一步 */\nexport const ToNextStep = (pageNumber?: number) => (dispatch: any, getState: any) => {\n const { annotation } = getState();\n const { step, stepList } = annotation;\n const nextStep = getNextStep(step, stepList);\n return [dispatch(UpdateProcessingStep(nextStep, pageNumber))];\n};\n\n/**\n * 更新当前操作的步骤\n * @param {number} toStep\n */\nexport const UpdateProcessingStep = (toStep: number, index?: number) => (dispatch: any, state: any) => {\n const imgIndex = state()?.annotation?.imgIndex ?? 0;\n return [\n dispatch({ type: ANNOTATION_ACTIONS.SUBMIT_RESULT }),\n dispatch({\n type: ANNOTATION_ACTIONS.SUBMIT_FILE_DATA,\n payload: { submitType: ESubmitType.StepChanged },\n }),\n // ToSubmitFileData(ESubmitType.StepChanged),\n dispatch({ type: ANNOTATION_ACTIONS.SET_STEP, payload: { toStep } }),\n dispatch({ type: ANNOTATION_ACTIONS.CALC_STEP_PROGRESS }),\n // 切换步骤保持图片位置\n dispatch(LoadImageAndFileData(index ?? imgIndex, 0)),\n ];\n};\n\n/**\n * 提交当前的文件数据\n * @param submitType\n */\nexport const ToSubmitFileData = (submitType: ESubmitType) => (dispatch: any) =>\n [\n dispatch({ type: ANNOTATION_ACTIONS.SUBMIT_RESULT }),\n dispatch({ type: ANNOTATION_ACTIONS.SUBMIT_FILE_DATA, payload: { submitType } }),\n ];\n\n/**\n * 提交数据并且切换标注文件\n * @param dispatch\n * @param nextIndex\n * @param submitType\n * @param nextBasicIndex\n */\nconst SubmitAndChangeFileIndex = (\n dispatch: any,\n nextIndex: number,\n submitType: ESubmitType,\n nextBasicIndex?: number,\n) => [\n dispatch(ToSubmitFileData(submitType)),\n dispatch(LoadImageAndFileData(nextIndex, nextBasicIndex)),\n];\n\nconst ChangeBasicIndex = (dispatch: any, nextBasicIndex: number) => [\n dispatch({ type: ANNOTATION_ACTIONS.SUBMIT_RESULT }),\n dispatch({ type: ANNOTATION_ACTIONS.SET_BASIC_INDEX, payload: { basicIndex: nextBasicIndex } }),\n];\n\nconst ChangeTriggerEventAfterIndexChanged = (\n dispatch: any,\n triggerEventAfterIndexChanged: boolean,\n) => {\n dispatch({\n type: ANNOTATION_ACTIONS.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED,\n payload: {\n triggerEventAfterIndexChanged,\n },\n });\n};\n\n/** 向前翻页 */\nexport const PageBackward =\n (triggerEventAfterIndexChanged = false) =>\n (dispatch: any, getState: any) => {\n return DispatcherTurning(\n dispatch,\n getState,\n EPageTurningOperation.Backward,\n triggerEventAfterIndexChanged,\n );\n };\n\n/** 向后翻页 */\nexport const PageForward =\n (triggerEventAfterIndexChanged = false) =>\n (dispatch: any, getState: any) => {\n return DispatcherTurning(\n dispatch,\n getState,\n EPageTurningOperation.Forward,\n triggerEventAfterIndexChanged,\n );\n };\n\n/**\n * 跳到指定文件索引\n * @param toIndex\n */\nexport const PageJump =\n (toIndex: number, triggerEventAfterIndexChanged = false) =>\n (dispatch: any, getState: any) => {\n if (toIndex === getState().imgIndex) {\n return;\n }\n\n return DispatcherTurning(\n dispatch,\n getState,\n EPageTurningOperation.Jump,\n triggerEventAfterIndexChanged,\n toIndex,\n );\n };\n\n/**\n * 判断翻页还是切换依赖数据\n * @param dispatch\n * @param getState\n * @param pageTurningOperation\n * @param toIndex\n */\nexport const DispatcherTurning = (\n dispatch: any,\n getState: any,\n pageTurningOperation: EPageTurningOperation,\n triggerEventAfterIndexChanged = false,\n toIndex?: number,\n) => {\n const annotationStore = getState().annotation;\n const { fileIndexChanged, fileIndex, basicIndexChanged, basicIndex } =\n PageOperator.getNextPageInfo(pageTurningOperation, annotationStore, toIndex);\n\n const submitType: ESubmitType = getSubmitByPageOperation(pageTurningOperation);\n\n ChangeTriggerEventAfterIndexChanged(dispatch, triggerEventAfterIndexChanged);\n\n if (fileIndexChanged) {\n const index = submitType === ESubmitType.Backward ? getBasicIndex(annotationStore, basicIndex) : basicIndex;\n return SubmitAndChangeFileIndex(dispatch, fileIndex, submitType, index);\n }\n\n if (basicIndexChanged) {\n return ChangeBasicIndex(dispatch, basicIndex);\n }\n\n return dispatch(ToSubmitFileData(submitType));\n};\n\n/**\n * 保存当前页数据\n * */\nexport const ChangeSave = (dispatch: Function) => {\n dispatch(ToSubmitFileData(ESubmitType.Save));\n dispatch({ type: ANNOTATION_ACTIONS.SAVE_RESULT });\n};\n\nexport const SetAnnotationLoading = (dispatch: Function, loading: boolean) => {\n dispatch({\n type: ANNOTATION_ACTIONS.SET_LOADING,\n payload: {\n loading,\n },\n });\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ANNOTATION_ACTIONS as
|
|
1
|
+
import{ANNOTATION_ACTIONS as i}from"../Actions.js";import tt from"lodash";import{composeResultWithBasicImgInfo as et,composeResult as nt}from"../../utils/data.js";import{jsonParser as N}from"../../utils/index.js";import k from"../../utils/StepUtils.js";import B from"../../utils/AnnotationDataUtils.js";import{ConfigUtils as ot}from"../../utils/ConfigUtils.js";import st from"../../constant/styleString.js";import{getFormatSize as rt}from"../../components/customResizeHook/index.js";import{CommonToolUtils as it,AnnotationEngine as lt,ImgUtils as ut}from"@labelbee/lb-annotation";import{message as K}from"antd/es";import{SetAnnotationLoading as U}from"./actionCreators.js";var at=Object.defineProperty,ct=Object.defineProperties,pt=Object.getOwnPropertyDescriptors,X=Object.getOwnPropertySymbols,dt=Object.prototype.hasOwnProperty,gt=Object.prototype.propertyIsEnumerable,J=(t,e,o)=>e in t?at(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,l=(t,e)=>{for(var o in e||(e={}))dt.call(e,o)&&J(t,o,e[o]);if(X)for(var o of X(e))gt.call(e,o)&&J(t,o,e[o]);return t},a=(t,e)=>ct(t,pt(e)),ft=(t,e,o)=>new Promise((I,g)=>{var E=c=>{try{S(o.next(c))}catch(y){g(y)}},D=c=>{try{S(o.throw(c))}catch(y){g(y)}},S=c=>c.done?I(c.value):Promise.resolve(c.value).then(E,D);S((o=o.apply(t,e)).next())});const O=(t,e)=>t.find(o=>o.step===e),mt={annotationEngine:null,toolInstance:null,imgList:[],config:"{}",imgIndex:-1,basicIndex:0,imgPageSize:1,step:1,stepList:[],imgNode:new Image,basicResultList:[],resultList:[],stepProgress:0,loading:!1,triggerEventAfterIndexChanged:!1},_t=t=>{const{imgList:e,imgPageSize:o}=t;return Math.ceil(e.length/o)},Y=(t,e)=>t.reduce((o,I)=>{const g=I.result;return N(g)[`step_${e}`]?o+1:o},0)/t.length,It=(t,e)=>{const{step:o,stepList:I}=t,g=k.getCurrentStepInfo(o,I),E=ot.jsonParser(g.config),D=document.getElementById("toolContainer");if(!D)throw"Not exist dom named id-toolContainer";const S=rt({width:window.innerWidth,height:window.innerHeight}),c=new lt({container:D,toolName:g.tool,size:S,imgNode:e,config:E,style:JSON.parse(st)});return{toolInstance:c.toolInstance,annotationEngine:c}},Et=(t,e)=>(o,I)=>ft(void 0,null,function*(){const{getFileData:g,imgList:E,toolInstance:D}=I().annotation;if(U(o,!0),g){const c=yield g(E[t],t);o({type:i.SET_FILE_DATA,payload:{fileData:c,index:t}})}const{url:S}=E[t];return ut.load(S).then(c=>{U(o,!1),o({type:i.LOAD_FILE_DATA,payload:{imgNode:c,nextIndex:t,nextBasicIndex:e}})}).catch(()=>{U(o,!1),D.setErrorImg(),o({type:i.LOAD_FILE_DATA,payload:{nextIndex:t,nextBasicIndex:e}})})}),St=(t=mt,e)=>{var o,I,g,E,D,S,c,y,j,x,G,z,M,$,H;switch(e.type){case i.UPDATE_TOOL_INSTANCE:return a(l({},t),{toolInstance:e.payload.toolInstance});case i.UPDATE_IMG_LIST:return a(l({},t),{imgList:e.payload.imgList});case i.CALC_STEP_PROGRESS:{const{imgList:n,step:s}=t,r=Y(n,s);return a(l({},t),{stepProgress:r})}case i.SUBMIT_FILE_DATA:{const{imgList:n,imgIndex:s,step:r,stepList:u,toolInstance:p,onSubmit:d,resultList:_}=t;if(!p)return t;const f=((o=n[s])==null?void 0:o.result)||"",[,m]=p.exportData(),L=et(f,m),v=nt(L,{step:r,stepList:u},{rect:_});n[s].result=B.dataCorrection(v,f,r,u),d&&d([n[s]],(I=e.payload)==null?void 0:I.submitType,s);const T=Y(n,r);return a(l({},t),{stepProgress:T,imgList:n})}case i.SAVE_RESULT:{const{imgList:n,imgIndex:s,onSave:r}=t;return r==null||r(n[s],s,n),l({},t)}case i.SUBMIT_RESULT:{const{imgList:n,basicIndex:s,resultList:r,annotationEngine:u,basicResultList:p}=t;if(!u)return t;const[d]=u.toolInstance.exportData();let _=d;if((p==null?void 0:p.length)>0){const f=(g=p[s])==null?void 0:g.id,m=d.map(L=>a(l({},L),{sourceID:f}));_=tt.cloneDeep(r).filter(L=>L.sourceID!==f),_.push(...m)}return a(l({},t),{resultList:_,imgList:n})}case i.SET_BASIC_INDEX:{const{toolInstance:n,step:s,imgList:r,imgIndex:u,stepList:p,annotationEngine:d,resultList:_,basicResultList:f}=t;if(!n||!d)return t;const m=e.payload.basicIndex,L=(E=f[m])==null?void 0:E.id,v=N((D=r[u])==null?void 0:D.result),T=(_||[]).filter(w=>w.sourceID===L),h=O(p,s),{dataSourceStep:P,tool:F}=h,C=O(p,P);let A=[];return P&&F&&(A=(S=v[`step_${P}`])==null?void 0:S.result,(A==null?void 0:A.length)>0?(d.setBasicInfo(C.tool,A[m]),d.launchOperation()):(d.setBasicInfo(C.tool),d.forbidOperation(),K.info("\u5F53\u524D\u6587\u4EF6\u4E0D\u5B58\u5728\u4F9D\u8D56\u6570\u636E"))),n.setResult(T),n.history.initRecord(T,!0),a(l({},t),{basicIndex:m})}case i.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED:{const{triggerEventAfterIndexChanged:n}=e.payload;return a(l({},t),{triggerEventAfterIndexChanged:!!n})}case i.LOAD_FILE_DATA:{const{imgList:n,step:s,toolInstance:r,annotationEngine:u,stepList:p}=t;if(!r||!u)return t;const d=k.getCurrentStepInfo(s,p),{nextIndex:_,imgNode:f,nextBasicIndex:m,imgError:L}=e.payload,v=m!=null?m:0,T=N((c=n[_])==null?void 0:c.result),h=T[`step_${s}`],P=!h,F={rotate:(y=T.rotate)!=null?y:0,valid:(j=T.valid)!=null?j:!0};f&&L!==!0&&u.setImgNode(f,F);const C=O(p,s),{dataSourceStep:A,tool:w}=C,V=O(p,A),W=A&&w,R=(G=(x=T[`step_${A}`])==null?void 0:x.result)!=null?G:[],b=B.getInitialResultList(h==null?void 0:h.result,r,C,R,P);if(u.launchOperation(),W&&((R==null?void 0:R.length)>0?u.setBasicInfo(V.tool,R[v]):(u.setBasicInfo(V.tool),u.forbidOperation(),K.info("\u5F53\u524D\u6587\u4EF6\u4E0D\u5B58\u5728\u4F9D\u8D56\u6570\u636E"))),d.tool!=="check"){const q=(M=(z=R[v])==null?void 0:z.id)!=null?M:"",Q=W?b.filter(Z=>it.isSameSourceID(Z.sourceID,q)):b;r.setResult(Q),r.history.initRecord(b,!0)}return a(l({},t),{imgIndex:_,basicIndex:v,basicResultList:R,resultList:b})}case i.UPDATE_ANNOTATION_CONFIG:return a(l({},t),{config:($=e.payload.config)!=null?$:"{}"});case i.SET_TASK_CONFIG:{const{stepList:n,step:s}=e.payload;return a(l({},t),{stepList:n,step:s})}case i.INIT_TOOL:{const{imgNode:n}=t,{toolInstance:s,annotationEngine:r}=It(t,n);return a(l({},t),{toolInstance:s,annotationEngine:r})}case i.UPDATE_ON_SUBMIT:return a(l({},t),{onSubmit:e.payload.onSubmit});case i.UPDATE_ON_SAVE:return a(l({},t),{onSave:e.payload.onSave});case i.UPDATE_GET_FILE_DATA:return a(l({},t),{getFileData:e.payload.getFileData});case i.SET_FILE_DATA:{const{fileData:n,index:s}=e.payload,{imgList:r}=t;return r[s]=l(l({},r[s]),n),a(l({},t),{imgList:r})}case i.UPDATE_ROTATE:{const{toolInstance:n}=t;return n==null||n.updateRotate(),t}case i.COPY_BACKWARD_RESULT:{const{toolInstance:n,imgIndex:s,imgList:r,step:u}=t;if(!n)return t;if(s===0||s>=r.length)return console.error("\u65E0\u6CD5\u590D\u5236\u8FB9\u754C\u5916\u7684\u5185\u5BB9"),t;const p=r[s-1].result;if(!p)return t;const d=B.copyResultChange(p,u,(H=r[s].result)!=null?H:"");r[s].result=d;const f=N(d)[`step_${u}`],m=(f==null?void 0:f.result)||[];return n.setResult(m),n.history.pushHistory(m),a(l({},t),{imgList:[...r]})}case i.SET_STEP:{const{stepList:n,annotationEngine:s}=t,{toStep:r}=e.payload;if(!s)return t;const u=O(n,r);return s.setToolName(u.tool,u.config),a(l({},t),{step:r,toolInstance:s.toolInstance})}case i.SET_LOADING:{const{loading:n}=e.payload;return a(l({},t),{loading:!!n})}default:return t}};export{Et as LoadImageAndFileData,St as annotationReducer,O as getStepConfig,_t as getTotalPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.js","sources":["../../../src/store/annotation/reducer.ts"],"sourcesContent":["import { ANNOTATION_ACTIONS } from '@/store/Actions';\nimport _ from 'lodash';\nimport { composeResultWithBasicImgInfo, composeResult } from '@/utils/data';\nimport { jsonParser } from '@/utils';\nimport StepUtils from '@/utils/StepUtils';\nimport AnnotationDataUtils from '@/utils/AnnotationDataUtils';\nimport { ConfigUtils } from '@/utils/ConfigUtils';\nimport styleString from '@/constant/styleString';\nimport { getFormatSize } from '@/components/customResizeHook';\nimport { AnnotationEngine, CommonToolUtils, ImgUtils } from '@labelbee/lb-annotation';\nimport { AnnotationState, AnnotationActionTypes } from './types';\nimport { message } from 'antd/es';\nimport { SetAnnotationLoading } from './actionCreators';\nimport { DEFAULT_CANVAS_SIZE } from '@/constant';\n\nexport const getStepConfig = (stepList: any[], step: number) =>\n stepList.find((i) => i.step === step);\n\nconst initialState: AnnotationState = {\n annotationEngine: null,\n toolInstance: null,\n imgList: [],\n config: '{}',\n imgIndex: -1,\n basicIndex: 0,\n imgPageSize: 1,\n step: 1,\n stepList: [],\n imgNode: new Image(),\n basicResultList: [],\n resultList: [],\n stepProgress: 0,\n loading: false,\n triggerEventAfterIndexChanged: false,\n};\n\n/**\n * 获取当前文件列表的总页数\n * @param state\n */\nexport const getTotalPage = (state: AnnotationState) => {\n const { imgList, imgPageSize } = state;\n return Math.ceil(imgList.length / imgPageSize);\n};\n\nconst calcStepProgress = (fileList: any[], step: number) =>\n fileList.reduce((pre, i) => {\n const resultStr = i.result;\n const resultObject = jsonParser(resultStr);\n if (resultObject[`step_${step}`]) {\n return pre + 1;\n }\n return pre;\n }, 0) / fileList.length;\n\nconst updateToolInstance = (annotation: AnnotationState, imgNode: HTMLImageElement) => {\n const { step, stepList } = annotation;\n const stepConfig = StepUtils.getCurrentStepInfo(step, stepList);\n const config = ConfigUtils.jsonParser(stepConfig.config);\n\n const container = document.getElementById('toolContainer');\n\n if (!container) {\n throw `Not exist dom named id-toolContainer`;\n }\n\n const canvasSize = getFormatSize({\n width: window ? window?.innerWidth ?? DEFAULT_CANVAS_SIZE.width : 0,\n height: window ? window?.innerHeight ?? DEFAULT_CANVAS_SIZE.height : 0,\n });\n const annotationEngine = new AnnotationEngine({\n container,\n toolName: stepConfig.tool,\n size: canvasSize,\n imgNode,\n config,\n style: JSON.parse(styleString),\n });\n\n return { toolInstance: annotationEngine.toolInstance, annotationEngine };\n};\n\n/**\n * 初始化imgNode并加载数据\n * @param nextIndex\n * @param nextBasicIndex\n */\nexport const LoadImageAndFileData =\n (nextIndex: number, nextBasicIndex?: number) => async (dispatch: any, getState: any) => {\n const { getFileData, imgList, toolInstance } = getState().annotation;\n SetAnnotationLoading(dispatch, true);\n\n /** 支持外部传入获取文件接口 */\n if (getFileData) {\n const fileData = await getFileData(imgList[nextIndex], nextIndex);\n dispatch({\n type: ANNOTATION_ACTIONS.SET_FILE_DATA,\n payload: {\n fileData,\n index: nextIndex,\n },\n });\n }\n\n const { url } = imgList[nextIndex];\n\n return ImgUtils.load(url)\n .then((imgNode) => {\n SetAnnotationLoading(dispatch, false);\n\n dispatch({\n type: ANNOTATION_ACTIONS.LOAD_FILE_DATA,\n payload: {\n imgNode,\n nextIndex,\n nextBasicIndex,\n },\n });\n })\n .catch(() => {\n SetAnnotationLoading(dispatch, false);\n toolInstance.setErrorImg();\n dispatch({\n type: ANNOTATION_ACTIONS.LOAD_FILE_DATA,\n payload: {\n nextIndex,\n nextBasicIndex,\n },\n });\n });\n };\n\nexport const annotationReducer = (\n state = initialState,\n action: AnnotationActionTypes,\n): AnnotationState => {\n switch (action.type) {\n case ANNOTATION_ACTIONS.UPDATE_TOOL_INSTANCE: {\n return {\n ...state,\n toolInstance: action.payload.toolInstance,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_IMG_LIST: {\n return {\n ...state,\n imgList: action.payload.imgList,\n };\n }\n\n case ANNOTATION_ACTIONS.CALC_STEP_PROGRESS: {\n const { imgList, step } = state;\n\n const stepProgress = calcStepProgress(imgList, step);\n\n return {\n ...state,\n stepProgress,\n };\n }\n\n case ANNOTATION_ACTIONS.SUBMIT_FILE_DATA: {\n const { imgList, imgIndex, step, stepList, toolInstance, onSubmit, resultList } = state;\n if (!toolInstance) {\n return state;\n }\n\n const oldResultString = imgList[imgIndex]?.result || '';\n const [, basicImgInfo] = toolInstance.exportData();\n\n const resultWithBasicInfo = composeResultWithBasicImgInfo(oldResultString, basicImgInfo);\n const newResultString = composeResult(\n resultWithBasicInfo,\n { step, stepList },\n { rect: resultList },\n );\n\n imgList[imgIndex].result = AnnotationDataUtils.dataCorrection(\n newResultString,\n oldResultString,\n step,\n stepList,\n );\n\n if (onSubmit) {\n onSubmit([imgList[imgIndex]], action.payload?.submitType, imgIndex);\n }\n\n const stepProgress = calcStepProgress(imgList, step);\n return {\n ...state,\n stepProgress,\n imgList,\n };\n }\n\n case ANNOTATION_ACTIONS.SAVE_RESULT: {\n const { imgList, imgIndex, onSave } = state;\n onSave?.(imgList[imgIndex], imgIndex, imgList);\n return {\n ...state,\n };\n }\n\n case ANNOTATION_ACTIONS.SUBMIT_RESULT: {\n const { imgList, basicIndex, resultList, annotationEngine, basicResultList } = state;\n if (!annotationEngine) {\n return state;\n }\n\n const [exportResult] = annotationEngine.toolInstance.exportData();\n\n let previousResultList = exportResult;\n\n if (basicResultList?.length > 0) {\n const sourceID = basicResultList[basicIndex]?.id;\n const newResultData = exportResult.map((i: any) => ({ ...i, sourceID }));\n previousResultList = _.cloneDeep(resultList).filter((i: any) => i.sourceID !== sourceID);\n previousResultList.push(...newResultData);\n }\n\n return {\n ...state,\n resultList: previousResultList,\n imgList,\n };\n }\n\n case ANNOTATION_ACTIONS.SET_BASIC_INDEX: {\n const {\n toolInstance,\n step,\n imgList,\n imgIndex,\n stepList,\n annotationEngine,\n resultList,\n basicResultList,\n } = state;\n\n if (!toolInstance || !annotationEngine) {\n return state;\n }\n\n const nextBasicIndex = action.payload.basicIndex;\n const sourceID = basicResultList[nextBasicIndex]?.id;\n\n const fileResult = jsonParser(imgList[imgIndex]?.result);\n const result = (resultList || []).filter((i) => i.sourceID === sourceID);\n\n const stepConfig = getStepConfig(stepList, step);\n\n const { dataSourceStep, tool } = stepConfig;\n const dependStepConfig = getStepConfig(stepList, dataSourceStep);\n let stepBasicResultList = [];\n\n if (dataSourceStep && tool) {\n stepBasicResultList = fileResult[`step_${dataSourceStep}`]?.result;\n\n if (stepBasicResultList?.length > 0) {\n annotationEngine.setBasicInfo(dependStepConfig.tool, stepBasicResultList[nextBasicIndex]);\n annotationEngine.launchOperation();\n } else {\n annotationEngine.setBasicInfo(dependStepConfig.tool);\n annotationEngine.forbidOperation();\n message.info('当前文件不存在依赖数据');\n }\n }\n\n toolInstance.setResult(result);\n toolInstance.history.initRecord(result, true);\n\n return {\n ...state,\n basicIndex: nextBasicIndex,\n };\n }\n\n case ANNOTATION_ACTIONS.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED: {\n const { triggerEventAfterIndexChanged } = action.payload;\n return {\n ...state,\n triggerEventAfterIndexChanged: !!triggerEventAfterIndexChanged,\n };\n }\n\n case ANNOTATION_ACTIONS.LOAD_FILE_DATA: {\n const { imgList, step, toolInstance, annotationEngine, stepList } = state;\n if (!toolInstance || !annotationEngine) {\n return state;\n }\n\n const currentStepInfo = StepUtils.getCurrentStepInfo(step, stepList);\n\n const { nextIndex, imgNode, nextBasicIndex, imgError } = action.payload;\n const basicIndex = nextBasicIndex ?? 0;\n\n const fileResult = jsonParser(imgList[nextIndex]?.result);\n\n const stepResult = fileResult[`step_${step}`];\n\n const isInitData = !stepResult; // 是否为初始化数据\n\n const basicImgInfo = {\n rotate: fileResult.rotate ?? 0,\n valid: fileResult.valid ?? true,\n };\n\n if (imgNode && imgError !== true) {\n annotationEngine.setImgNode(imgNode, basicImgInfo);\n }\n\n const stepConfig = getStepConfig(stepList, step);\n\n const { dataSourceStep, tool } = stepConfig;\n const dependStepConfig = getStepConfig(stepList, dataSourceStep);\n const hasDataSourceStep = dataSourceStep && tool;\n const stepBasicResultList = fileResult[`step_${dataSourceStep}`]?.result ?? [];\n\n const result = AnnotationDataUtils.getInitialResultList(\n stepResult?.result,\n toolInstance,\n stepConfig,\n stepBasicResultList,\n isInitData,\n );\n\n annotationEngine.launchOperation();\n\n if (hasDataSourceStep) {\n if (stepBasicResultList?.length > 0) {\n annotationEngine.setBasicInfo(dependStepConfig.tool, stepBasicResultList[basicIndex]);\n } else {\n // TODO: 禁用绘制交互,有无依赖之间的操作切换\n annotationEngine.setBasicInfo(dependStepConfig.tool);\n annotationEngine.forbidOperation();\n message.info('当前文件不存在依赖数据');\n }\n }\n\n // TODO,非查看模式才允许添加数据\n if (currentStepInfo.tool !== 'check') {\n const sourceID = stepBasicResultList[basicIndex]?.id ?? '';\n const resultForBasicIndex = hasDataSourceStep\n ? result.filter((i: { sourceID: string | number }) =>\n CommonToolUtils.isSameSourceID(i.sourceID, sourceID),\n )\n : result;\n toolInstance.setResult(resultForBasicIndex);\n toolInstance.history.initRecord(result, true);\n }\n\n return {\n ...state,\n imgIndex: nextIndex,\n basicIndex,\n basicResultList: stepBasicResultList,\n resultList: result,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ANNOTATION_CONFIG: {\n return {\n ...state,\n config: action.payload.config ?? '{}',\n };\n }\n\n case ANNOTATION_ACTIONS.SET_TASK_CONFIG: {\n const { stepList, step } = action.payload;\n return {\n ...state,\n stepList,\n step,\n };\n }\n\n case ANNOTATION_ACTIONS.INIT_TOOL: {\n const { imgNode } = state;\n const { toolInstance, annotationEngine } = updateToolInstance(state, imgNode);\n return {\n ...state,\n toolInstance,\n annotationEngine,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ON_SUBMIT: {\n return {\n ...state,\n onSubmit: action.payload.onSubmit,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ON_SAVE: {\n return {\n ...state,\n onSave: action.payload.onSave,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_GET_FILE_DATA: {\n return {\n ...state,\n getFileData: action.payload.getFileData,\n };\n }\n\n case ANNOTATION_ACTIONS.SET_FILE_DATA: {\n const { fileData, index } = action.payload;\n const { imgList } = state;\n imgList[index] = { ...imgList[index], ...fileData };\n\n return {\n ...state,\n imgList,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ROTATE: {\n const { toolInstance } = state;\n toolInstance?.updateRotate();\n\n return state;\n }\n\n case ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT: {\n const { toolInstance, imgIndex, imgList, step } = state;\n if (!toolInstance) {\n return state;\n }\n\n if (imgIndex === 0 || imgIndex >= imgList.length) {\n console.error('无法复制边界外的内容');\n return state;\n }\n const backwardResult = imgList[imgIndex - 1].result;\n if (!backwardResult) {\n return state;\n }\n\n const newResult = AnnotationDataUtils.copyResultChange(\n backwardResult,\n step,\n imgList[imgIndex].result ?? '',\n );\n imgList[imgIndex].result = newResult;\n\n // 更新当前的结果\n const fileResult = jsonParser(newResult);\n const stepResult = fileResult[`step_${step}`];\n const result = stepResult?.result || [];\n\n toolInstance.setResult(result);\n toolInstance.history.pushHistory(result);\n\n return {\n ...state,\n imgList: [...imgList],\n };\n }\n\n case ANNOTATION_ACTIONS.SET_STEP: {\n const { stepList, annotationEngine } = state;\n const { toStep } = action.payload;\n\n if (!annotationEngine) {\n return state;\n }\n\n if (toStep <= stepList.length) {\n const stepConfig = getStepConfig(stepList, toStep);\n annotationEngine.setToolName(stepConfig.tool, stepConfig.config);\n\n return {\n ...state,\n step: toStep,\n toolInstance: annotationEngine.toolInstance,\n };\n }\n break;\n }\n\n case ANNOTATION_ACTIONS.SET_LOADING: {\n const { loading } = action.payload;\n\n return {\n ...state,\n loading: !!loading,\n };\n }\n\n // eslint-disable-next-line no-fallthrough\n default:\n return state;\n }\n\n return state;\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reducer.js","sources":["../../../src/store/annotation/reducer.ts"],"sourcesContent":["import { ANNOTATION_ACTIONS } from '@/store/Actions';\nimport _ from 'lodash';\nimport { composeResultWithBasicImgInfo, composeResult } from '@/utils/data';\nimport { jsonParser } from '@/utils';\nimport StepUtils from '@/utils/StepUtils';\nimport AnnotationDataUtils from '@/utils/AnnotationDataUtils';\nimport { ConfigUtils } from '@/utils/ConfigUtils';\nimport styleString from '@/constant/styleString';\nimport { getFormatSize } from '@/components/customResizeHook';\nimport { AnnotationEngine, CommonToolUtils, ImgUtils } from '@labelbee/lb-annotation';\nimport { AnnotationState, AnnotationActionTypes } from './types';\nimport { message } from 'antd/es';\nimport { SetAnnotationLoading } from './actionCreators';\n\nexport const getStepConfig = (stepList: any[], step: number) =>\n stepList.find((i) => i.step === step);\n\nconst initialState: AnnotationState = {\n annotationEngine: null,\n toolInstance: null,\n imgList: [],\n config: '{}',\n imgIndex: -1,\n basicIndex: 0,\n imgPageSize: 1,\n step: 1,\n stepList: [],\n imgNode: new Image(),\n basicResultList: [],\n resultList: [],\n stepProgress: 0,\n loading: false,\n triggerEventAfterIndexChanged: false,\n};\n\n/**\n * 获取当前文件列表的总页数\n * @param state\n */\nexport const getTotalPage = (state: AnnotationState) => {\n const { imgList, imgPageSize } = state;\n return Math.ceil(imgList.length / imgPageSize);\n};\n\nconst calcStepProgress = (fileList: any[], step: number) =>\n fileList.reduce((pre, i) => {\n const resultStr = i.result;\n const resultObject = jsonParser(resultStr);\n if (resultObject[`step_${step}`]) {\n return pre + 1;\n }\n return pre;\n }, 0) / fileList.length;\n\nconst updateToolInstance = (annotation: AnnotationState, imgNode: HTMLImageElement) => {\n const { step, stepList } = annotation;\n const stepConfig = StepUtils.getCurrentStepInfo(step, stepList);\n const config = ConfigUtils.jsonParser(stepConfig.config);\n\n const container = document.getElementById('toolContainer');\n\n if (!container) {\n throw `Not exist dom named id-toolContainer`;\n }\n\n const canvasSize = getFormatSize({ width: window.innerWidth, height: window.innerHeight });\n const annotationEngine = new AnnotationEngine({\n container,\n toolName: stepConfig.tool,\n size: canvasSize,\n imgNode,\n config,\n style: JSON.parse(styleString),\n });\n\n return { toolInstance: annotationEngine.toolInstance, annotationEngine };\n};\n\n/**\n * 初始化imgNode并加载数据\n * @param nextIndex\n * @param nextBasicIndex\n */\nexport const LoadImageAndFileData =\n (nextIndex: number, nextBasicIndex?: number) => async (dispatch: any, getState: any) => {\n const { getFileData, imgList, toolInstance } = getState().annotation;\n SetAnnotationLoading(dispatch, true);\n\n /** 支持外部传入获取文件接口 */\n if (getFileData) {\n const fileData = await getFileData(imgList[nextIndex], nextIndex);\n dispatch({\n type: ANNOTATION_ACTIONS.SET_FILE_DATA,\n payload: {\n fileData,\n index: nextIndex,\n },\n });\n }\n\n const { url } = imgList[nextIndex];\n\n return ImgUtils.load(url)\n .then((imgNode) => {\n SetAnnotationLoading(dispatch, false);\n\n dispatch({\n type: ANNOTATION_ACTIONS.LOAD_FILE_DATA,\n payload: {\n imgNode,\n nextIndex,\n nextBasicIndex,\n },\n });\n })\n .catch(() => {\n SetAnnotationLoading(dispatch, false);\n toolInstance.setErrorImg();\n dispatch({\n type: ANNOTATION_ACTIONS.LOAD_FILE_DATA,\n payload: {\n nextIndex,\n nextBasicIndex,\n },\n });\n });\n };\n\nexport const annotationReducer = (\n state = initialState,\n action: AnnotationActionTypes,\n): AnnotationState => {\n switch (action.type) {\n case ANNOTATION_ACTIONS.UPDATE_TOOL_INSTANCE: {\n return {\n ...state,\n toolInstance: action.payload.toolInstance,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_IMG_LIST: {\n return {\n ...state,\n imgList: action.payload.imgList,\n };\n }\n\n case ANNOTATION_ACTIONS.CALC_STEP_PROGRESS: {\n const { imgList, step } = state;\n\n const stepProgress = calcStepProgress(imgList, step);\n\n return {\n ...state,\n stepProgress,\n };\n }\n\n case ANNOTATION_ACTIONS.SUBMIT_FILE_DATA: {\n const { imgList, imgIndex, step, stepList, toolInstance, onSubmit, resultList } = state;\n if (!toolInstance) {\n return state;\n }\n\n const oldResultString = imgList[imgIndex]?.result || '';\n const [, basicImgInfo] = toolInstance.exportData();\n\n const resultWithBasicInfo = composeResultWithBasicImgInfo(oldResultString, basicImgInfo);\n const newResultString = composeResult(\n resultWithBasicInfo,\n { step, stepList },\n { rect: resultList },\n );\n\n imgList[imgIndex].result = AnnotationDataUtils.dataCorrection(\n newResultString,\n oldResultString,\n step,\n stepList,\n );\n\n if (onSubmit) {\n onSubmit([imgList[imgIndex]], action.payload?.submitType, imgIndex);\n }\n\n const stepProgress = calcStepProgress(imgList, step);\n return {\n ...state,\n stepProgress,\n imgList,\n };\n }\n\n case ANNOTATION_ACTIONS.SAVE_RESULT: {\n const { imgList, imgIndex, onSave } = state;\n onSave?.(imgList[imgIndex], imgIndex, imgList);\n return {\n ...state,\n };\n }\n\n case ANNOTATION_ACTIONS.SUBMIT_RESULT: {\n const { imgList, basicIndex, resultList, annotationEngine, basicResultList } = state;\n if (!annotationEngine) {\n return state;\n }\n\n const [exportResult] = annotationEngine.toolInstance.exportData();\n\n let previousResultList = exportResult;\n\n if (basicResultList?.length > 0) {\n const sourceID = basicResultList[basicIndex]?.id;\n const newResultData = exportResult.map((i: any) => ({ ...i, sourceID }));\n previousResultList = _.cloneDeep(resultList).filter((i: any) => i.sourceID !== sourceID);\n previousResultList.push(...newResultData);\n }\n\n return {\n ...state,\n resultList: previousResultList,\n imgList,\n };\n }\n\n case ANNOTATION_ACTIONS.SET_BASIC_INDEX: {\n const {\n toolInstance,\n step,\n imgList,\n imgIndex,\n stepList,\n annotationEngine,\n resultList,\n basicResultList,\n } = state;\n\n if (!toolInstance || !annotationEngine) {\n return state;\n }\n\n const nextBasicIndex = action.payload.basicIndex;\n const sourceID = basicResultList[nextBasicIndex]?.id;\n\n const fileResult = jsonParser(imgList[imgIndex]?.result);\n const result = (resultList || []).filter((i) => i.sourceID === sourceID);\n\n const stepConfig = getStepConfig(stepList, step);\n\n const { dataSourceStep, tool } = stepConfig;\n const dependStepConfig = getStepConfig(stepList, dataSourceStep);\n let stepBasicResultList = [];\n\n if (dataSourceStep && tool) {\n stepBasicResultList = fileResult[`step_${dataSourceStep}`]?.result;\n\n if (stepBasicResultList?.length > 0) {\n annotationEngine.setBasicInfo(dependStepConfig.tool, stepBasicResultList[nextBasicIndex]);\n annotationEngine.launchOperation();\n } else {\n annotationEngine.setBasicInfo(dependStepConfig.tool);\n annotationEngine.forbidOperation();\n message.info('当前文件不存在依赖数据');\n }\n }\n\n toolInstance.setResult(result);\n toolInstance.history.initRecord(result, true);\n\n return {\n ...state,\n basicIndex: nextBasicIndex,\n };\n }\n\n case ANNOTATION_ACTIONS.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED: {\n const { triggerEventAfterIndexChanged } = action.payload;\n return {\n ...state,\n triggerEventAfterIndexChanged: !!triggerEventAfterIndexChanged,\n };\n }\n\n case ANNOTATION_ACTIONS.LOAD_FILE_DATA: {\n const { imgList, step, toolInstance, annotationEngine, stepList } = state;\n if (!toolInstance || !annotationEngine) {\n return state;\n }\n\n const currentStepInfo = StepUtils.getCurrentStepInfo(step, stepList);\n\n const { nextIndex, imgNode, nextBasicIndex, imgError } = action.payload;\n const basicIndex = nextBasicIndex ?? 0;\n\n const fileResult = jsonParser(imgList[nextIndex]?.result);\n\n const stepResult = fileResult[`step_${step}`];\n\n const isInitData = !stepResult; // 是否为初始化数据\n\n const basicImgInfo = {\n rotate: fileResult.rotate ?? 0,\n valid: fileResult.valid ?? true,\n };\n\n if (imgNode && imgError !== true) {\n annotationEngine.setImgNode(imgNode, basicImgInfo);\n }\n\n const stepConfig = getStepConfig(stepList, step);\n\n const { dataSourceStep, tool } = stepConfig;\n const dependStepConfig = getStepConfig(stepList, dataSourceStep);\n const hasDataSourceStep = dataSourceStep && tool;\n const stepBasicResultList = fileResult[`step_${dataSourceStep}`]?.result ?? [];\n\n const result = AnnotationDataUtils.getInitialResultList(\n stepResult?.result,\n toolInstance,\n stepConfig,\n stepBasicResultList,\n isInitData,\n );\n\n annotationEngine.launchOperation();\n\n if (hasDataSourceStep) {\n if (stepBasicResultList?.length > 0) {\n annotationEngine.setBasicInfo(dependStepConfig.tool, stepBasicResultList[basicIndex]);\n } else {\n // TODO: 禁用绘制交互,有无依赖之间的操作切换\n annotationEngine.setBasicInfo(dependStepConfig.tool);\n annotationEngine.forbidOperation();\n message.info('当前文件不存在依赖数据');\n }\n }\n\n // TODO,非查看模式才允许添加数据\n if (currentStepInfo.tool !== 'check') {\n const sourceID = stepBasicResultList[basicIndex]?.id ?? '';\n const resultForBasicIndex = hasDataSourceStep\n ? result.filter((i: { sourceID: string | number }) =>\n CommonToolUtils.isSameSourceID(i.sourceID, sourceID),\n )\n : result;\n toolInstance.setResult(resultForBasicIndex);\n toolInstance.history.initRecord(result, true);\n }\n\n return {\n ...state,\n imgIndex: nextIndex,\n basicIndex,\n basicResultList: stepBasicResultList,\n resultList: result,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ANNOTATION_CONFIG: {\n return {\n ...state,\n config: action.payload.config ?? '{}',\n };\n }\n\n case ANNOTATION_ACTIONS.SET_TASK_CONFIG: {\n const { stepList, step } = action.payload;\n return {\n ...state,\n stepList,\n step,\n };\n }\n\n case ANNOTATION_ACTIONS.INIT_TOOL: {\n const { imgNode } = state;\n const { toolInstance, annotationEngine } = updateToolInstance(state, imgNode);\n return {\n ...state,\n toolInstance,\n annotationEngine,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ON_SUBMIT: {\n return {\n ...state,\n onSubmit: action.payload.onSubmit,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ON_SAVE: {\n return {\n ...state,\n onSave: action.payload.onSave,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_GET_FILE_DATA: {\n return {\n ...state,\n getFileData: action.payload.getFileData,\n };\n }\n\n case ANNOTATION_ACTIONS.SET_FILE_DATA: {\n const { fileData, index } = action.payload;\n const { imgList } = state;\n imgList[index] = { ...imgList[index], ...fileData };\n\n return {\n ...state,\n imgList,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ROTATE: {\n const { toolInstance } = state;\n toolInstance?.updateRotate();\n\n return state;\n }\n\n case ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT: {\n const { toolInstance, imgIndex, imgList, step } = state;\n if (!toolInstance) {\n return state;\n }\n\n if (imgIndex === 0 || imgIndex >= imgList.length) {\n console.error('无法复制边界外的内容');\n return state;\n }\n const backwardResult = imgList[imgIndex - 1].result;\n if (!backwardResult) {\n return state;\n }\n\n const newResult = AnnotationDataUtils.copyResultChange(\n backwardResult,\n step,\n imgList[imgIndex].result ?? '',\n );\n imgList[imgIndex].result = newResult;\n\n // 更新当前的结果\n const fileResult = jsonParser(newResult);\n const stepResult = fileResult[`step_${step}`];\n const result = stepResult?.result || [];\n\n toolInstance.setResult(result);\n toolInstance.history.pushHistory(result);\n\n return {\n ...state,\n imgList: [...imgList],\n };\n }\n\n case ANNOTATION_ACTIONS.SET_STEP: {\n const { stepList, annotationEngine } = state;\n const { toStep } = action.payload;\n\n if (!annotationEngine) {\n return state;\n }\n\n const stepConfig = getStepConfig(stepList, toStep);\n annotationEngine.setToolName(stepConfig.tool, stepConfig.config);\n\n return {\n ...state,\n step: toStep,\n toolInstance: annotationEngine.toolInstance,\n };\n break;\n }\n\n case ANNOTATION_ACTIONS.SET_LOADING: {\n const { loading } = action.payload;\n\n return {\n ...state,\n loading: !!loading,\n };\n }\n\n // eslint-disable-next-line no-fallthrough\n default:\n return state;\n }\n\n return state;\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolStyleUtils.js","sources":["../../src/utils/ToolStyleUtils.ts"],"sourcesContent":["import {\n CHANGE_COLOR,\n DEFAULT_COLOR,\n COLORS_ARRAY,\n NULL_COLOR,\n BORDER_OPACITY_LEVEL,\n FILL_OPACITY_LEVEL,\n} from '@/data/Style';\nimport _ from 'lodash';\n\nconst FILL_OPACITY = 0.8;\n\nexport class ToolStyleUtils {\n public static changeOpacity: { [a: number]: number } = {\n 1: 0.2,\n 3: 0.4,\n 5: 0.6,\n 7: 0.8,\n 9: 1.0,\n };\n\n public static colorSplit(color: string, opacity: number) {\n return color\n .split(' ')\n .join('')\n .replace(/,[0-9]+([.]{1}[0-9]+){0,1}\\)/, `,${opacity.toFixed(2)})`);\n }\n\n public static computeOpacity(opacity: number, color: string) {\n const s
|
|
1
|
+
{"version":3,"file":"ToolStyleUtils.js","sources":["../../src/utils/ToolStyleUtils.ts"],"sourcesContent":["import {\n CHANGE_COLOR,\n DEFAULT_COLOR,\n COLORS_ARRAY,\n NULL_COLOR,\n BORDER_OPACITY_LEVEL,\n FILL_OPACITY_LEVEL,\n} from '@/data/Style';\nimport _ from 'lodash';\n\nconst FILL_OPACITY = 0.8;\n\nexport class ToolStyleUtils {\n public static changeOpacity: { [a: number]: number } = {\n 1: 0.2,\n 3: 0.4,\n 5: 0.6,\n 7: 0.8,\n 9: 1.0,\n };\n\n public static colorSplit(color: string, opacity: number) {\n return color\n .split(' ')\n .join('')\n .replace(/,[0-9]+([.]{1}[0-9]+){0,1}\\)/, `,${opacity.toFixed(2)})`);\n }\n\n public static computeOpacity(opacity: number, color: string) {\n const s =\n color\n .split(' ')\n .join('')\n .match(/,[0-9]+([.]{1}[0-9]+){0,1}\\)/)?.[0] || '';\n let firstOpacity = s.match(/[0-9]+([.]{1}[0-9]+){0,1}/)?.[0];\n return opacity * Number(firstOpacity);\n }\n\n public static getToolColors(borderOpacityParam = 9, fillOpacityParam = 9) {\n const colorSplit = ToolStyleUtils.colorSplit;\n const computeOpacity = ToolStyleUtils.computeOpacity;\n\n const toolColor = _.cloneDeep(CHANGE_COLOR);\n const borderOpacity = BORDER_OPACITY_LEVEL[borderOpacityParam];\n const fillOpacity = FILL_OPACITY_LEVEL[fillOpacityParam];\n\n Object.keys(CHANGE_COLOR).forEach((color: any) => {\n const showColor = _.cloneDeep(DEFAULT_COLOR);\n showColor.valid.stroke = colorSplit(\n CHANGE_COLOR[color].valid,\n computeOpacity(borderOpacity, CHANGE_COLOR[color].valid),\n );\n showColor.valid.fill = colorSplit(\n CHANGE_COLOR[color].valid,\n computeOpacity(fillOpacity, CHANGE_COLOR[color].valid) * FILL_OPACITY,\n );\n showColor.validSelected.stroke = colorSplit(\n CHANGE_COLOR[color].select.stroke,\n computeOpacity(borderOpacity, CHANGE_COLOR[color].select.stroke),\n );\n showColor.validSelected.fill = colorSplit(\n CHANGE_COLOR[color].select.fill,\n computeOpacity(fillOpacity, CHANGE_COLOR[color].select.fill) * FILL_OPACITY,\n );\n showColor.validHover.stroke = colorSplit(\n CHANGE_COLOR[color].hover,\n computeOpacity(borderOpacity, CHANGE_COLOR[color].hover),\n );\n showColor.validHover.fill = colorSplit(\n CHANGE_COLOR[color].hover,\n computeOpacity(fillOpacity, CHANGE_COLOR[color].hover) * FILL_OPACITY,\n );\n\n // 无效的比例是一样的\n showColor.invalid.stroke = colorSplit(\n showColor.invalid.stroke,\n computeOpacity(borderOpacity, showColor.invalid.stroke),\n );\n showColor.invalid.fill = colorSplit(\n showColor.invalid.stroke,\n computeOpacity(fillOpacity, showColor.invalid.stroke) * FILL_OPACITY,\n );\n showColor.invalidSelected.stroke = colorSplit(\n showColor.invalidSelected.stroke,\n computeOpacity(borderOpacity, showColor.invalidSelected.stroke),\n );\n showColor.invalidSelected.fill = colorSplit(\n showColor.invalidSelected.fill,\n computeOpacity(fillOpacity, showColor.invalidSelected.fill) * FILL_OPACITY,\n );\n showColor.invalidHover.stroke = colorSplit(\n showColor.invalidHover.stroke,\n computeOpacity(borderOpacity, showColor.invalidHover.fill),\n );\n showColor.invalidHover.fill = colorSplit(\n showColor.invalidHover.fill,\n computeOpacity(fillOpacity, showColor.invalidHover.fill) * FILL_OPACITY,\n );\n toolColor[color] = showColor;\n });\n return toolColor;\n }\n\n public static getAttributeColors(borderOpacityParam = 9, fillOpacityParam = 9) {\n const colorSplit = ToolStyleUtils.colorSplit;\n const computeOpacity = ToolStyleUtils.computeOpacity;\n const borderOpacity = BORDER_OPACITY_LEVEL[borderOpacityParam];\n const fillOpacity = FILL_OPACITY_LEVEL[fillOpacityParam];\n\n let AttributeColorList: string[] = _.cloneDeep(COLORS_ARRAY);\n AttributeColorList.unshift(NULL_COLOR);\n AttributeColorList = AttributeColorList.map((item) => {\n const showColor = JSON.parse(JSON.stringify(DEFAULT_COLOR));\n showColor.valid.stroke = colorSplit(item, computeOpacity(borderOpacity, item));\n showColor.valid.fill = colorSplit(\n item,\n computeOpacity(fillOpacity, item) * FILL_OPACITY * 0.5,\n );\n showColor.validSelected.stroke = colorSplit(item, computeOpacity(borderOpacity, item));\n showColor.validSelected.fill = colorSplit(\n item,\n computeOpacity(fillOpacity, item) * FILL_OPACITY,\n );\n showColor.validHover.stroke = colorSplit(item, computeOpacity(borderOpacity, item));\n showColor.validHover.fill = colorSplit(\n item,\n computeOpacity(fillOpacity, item) * FILL_OPACITY,\n );\n showColor.invalid.stroke = colorSplit(\n showColor.invalid.stroke,\n computeOpacity(borderOpacity, item),\n );\n showColor.invalid.fill = colorSplit(\n showColor.invalid.fill,\n computeOpacity(fillOpacity, item) * FILL_OPACITY * 0.5,\n );\n showColor.invalidSelected.stroke = colorSplit(\n showColor.invalidSelected.stroke,\n computeOpacity(borderOpacity, item),\n );\n showColor.invalidSelected.fill = colorSplit(\n showColor.invalidSelected.fill,\n computeOpacity(fillOpacity, item) * FILL_OPACITY,\n );\n showColor.invalidHover.stroke = colorSplit(\n showColor.invalidHover.stroke,\n computeOpacity(borderOpacity, item),\n );\n showColor.invalidHover.fill = colorSplit(\n showColor.invalidHover.fill,\n computeOpacity(fillOpacity, item) * FILL_OPACITY,\n );\n return showColor;\n });\n return AttributeColorList;\n }\n\n public static getDefaultToolLineColors() {\n const toolColor: any = {};\n Object.keys(CHANGE_COLOR).forEach((color: any) => {\n toolColor[color] = CHANGE_COLOR[color].line;\n });\n return toolColor;\n }\n\n public static initByOpacity(borderOpacity: number, fillOpacity: number) {\n return {\n toolColor: this.getToolColors(borderOpacity, fillOpacity),\n attributeColor: this.getAttributeColors(borderOpacity, fillOpacity),\n };\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import B from"../../../../components/attributeList/index.js";import M from"../../../../components/checkboxList/index.js";import{CaretRightOutlined as P}from"@ant-design/icons";import{Collapse as T,Tooltip as H,Badge as F}from"antd/es";import{cloneDeep as U}from"lodash";import n,{useState as p,useRef as q,useEffect as v,useCallback as z}from"react";import G from"../../../../assets/annotation/common/icon_clearSmall.svg.js";import J from"../../../../assets/annotation/common/icon_clearSmall_a.svg.js";import{TagUtils as Q}from"@labelbee/lb-annotation";import{connect as V}from"react-redux";import{useTranslation as W}from"react-i18next";const{Panel:X}=T,$=({isActive:a})=>n.createElement(P,{rotate:a?90:0}),Y=({toolInstance:a,imgIndex:N})=>{const[o,g]=p([]),i=q(null),[,j]=p(0),[w,f]=p(-1),{t:b}=W();v(()=>{a&&(g(a.config.inputList.map(e=>e.value)),a.singleOn("render",()=>{j(e=>e+1)}))},[a]),v(()=>{if(a&&(a.singleOn("expend",O),a.labelSelectedList.length===1)){let e=0;for(let l=0;l<a.labelSelectedList[0];l++)e+=46,s[l]&&o[l]!==""&&s[l].subSelected.forEach(r=>{e+=40});i.current&&(i.current.children[0].scrollTop=e)}}),v(()=>{i.current&&(i.current.children[0].scrollTop=0)},[N]);const O=()=>{var e;const l=a.labelSelectedList[0],r=(e=s.filter((t,m)=>m===l)[0])==null?void 0:e.value;h(l,r,!0)},h=z((e,l,r)=>{const t=U(o);t[e]===""||r===!0?t[e]=l:t[e]="",g(t)},[o]);if(!a)return null;const{labelSelectedList:c,config:{inputList:s},currentTagResult:u,setLabel:E}=a,A=e=>c.length>0&&c[0]===e?n.createElement("span",{className:"keyDownIconActive"},e+1):n.createElement("span",{className:"keyDownIcon"},e+1),y=(e,l=-1)=>e?e.map((r,t)=>{var m,L,k,_,C;if(r.subSelected){const R=Q.judgeResultIsInInputList(r.value,(m=u==null?void 0:u.result)==null?void 0:m[r.value],s);return n.createElement(T,{bordered:!1,expandIcon:$,key:`collapse_${t}_${l+1}`,onChange:()=>h(t,r.value),activeKey:[o[t]]},n.createElement(X,{header:n.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"}},n.createElement("span",null,r.key,n.createElement(H,{placement:"bottom",title:b("ClearThisOption")},n.createElement("img",{style:{marginLeft:5,cursor:"pointer"},onClick:K=>{K.stopPropagation(),a.clearResult(!0,r.value)},src:w===t||R?J:G,onMouseEnter:()=>{f(t)},onMouseLeave:()=>{f(-1)}})),R&&o[t]===""&&n.createElement(F,{color:"#87d068"})),(s==null?void 0:s.length)>1&&A(t)),key:r.value},n.createElement("div",{className:"level",style:{backgroundColor:c.length>0&&c[0]===t?"rgba(158, 158, 158, 0.18)":""}},y(r.subSelected,t))))}const d=(s==null?void 0:s[l])?s==null?void 0:s[l].value:0,S=((_=(k=(L=u==null?void 0:u.result)==null?void 0:L[d])==null?void 0:k.split(";"))==null?void 0:_.indexOf(r.value))>-1?r.value:"";return((C=s==null?void 0:s[l])==null?void 0:C.isMulti)===!0?n.createElement("div",{className:"singleBar",key:`${d}_${l}_${t}`},n.createElement(M,{attributeChanged:()=>E(l,t),selectedAttribute:[S],list:[{value:r.value,label:r.key}],num:t+1})):n.createElement("div",{className:"singleBar",key:`${d}_${l}_${t}`},n.createElement(B,{forbidColor:!0,attributeChanged:()=>E(l,t),selectedAttribute:S,list:[{value:r.value,label:r.key}],num:t+1}))}):null,D=window.innerHeight-61-80;return n.createElement("div",{className:"tagOperationMenu",ref:i},(s==null?void 0:s.length)===0?n.createElement("div",{style:{padding:20,textAlign:"center"}},b("NoConfiguration")):n.createElement("div",{className:"main",style:{height:D}},y(s)))};function Z(a){return{toolInstance:a.annotation.toolInstance,imgIndex:a.annotation.imgIndex}}var x=V(Z)(Y);export{x as default,$ as expandIconFuc};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/TagSidebar/index.tsx"],"sourcesContent":["import RadioList from '@/components/attributeList';\nimport CheckBoxList from '@/components/checkboxList';\nimport { CaretRightOutlined } from '@ant-design/icons';\nimport { Badge, Collapse, Tooltip } from 'antd/es';\nimport { cloneDeep } from 'lodash';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport clearSmall from '@/assets/annotation/common/icon_clearSmall.svg';\nimport clearSmallA from '@/assets/annotation/common/icon_clearSmall_a.svg';\nimport { TagOperation, TagUtils } from '@labelbee/lb-annotation';\nimport { connect } from 'react-redux';\nimport { AppState } from '@/store';\nimport { IInputList } from '@/types/main';\nimport { useTranslation } from 'react-i18next';\nimport { DEFAULT_CANVAS_SIZE } from '@/constant';\n\ninterface IProps {\n imgIndex: number;\n toolInstance: TagOperation;\n}\n\nconst { Panel } = Collapse;\n\nexport const expandIconFuc = ({ isActive }: any) => (\n <CaretRightOutlined rotate={isActive ? 90 : 0} />\n);\n\nconst TagSidebar: React.FC<IProps> = ({ toolInstance, imgIndex }) => {\n const [expandKeyList, setExpandKeyList] = useState<string[]>([]);\n\n const sidebarRef = useRef<HTMLDivElement>(null);\n const [, forceRender] = useState<number>(0);\n const [hoverDeleteIndex, setHoverDeleteIndex] = useState(-1);\n const { t } = useTranslation();\n\n useEffect(() => {\n if (toolInstance) {\n // 用于配置的初始化\n setExpandKeyList(toolInstance.config.inputList.map((v: IInputList) => v.value));\n\n // 进行实时渲染\n toolInstance.singleOn('render', () => {\n forceRender((s) => s + 1);\n });\n }\n }, [toolInstance]);\n\n useEffect(() => {\n if (toolInstance) {\n // 该写法会不断的重复绑定,后续写法上可以更改(如果将 singleOn 改为 on 会有很大问题)\n toolInstance.singleOn('expend', expendRender);\n\n if (toolInstance.labelSelectedList.length === 1) {\n let height = 0;\n for (let i = 0; i < toolInstance.labelSelectedList[0]; i++) {\n height += 46;\n inputList[i] &&\n expandKeyList[i] !== '' &&\n inputList[i].subSelected.forEach((i: any) => {\n height += 40;\n });\n }\n if (sidebarRef.current) {\n sidebarRef.current.children[0].scrollTop = height;\n }\n }\n }\n });\n\n useEffect(() => {\n // 翻页侧边栏跳到最上\n if (sidebarRef.current) {\n sidebarRef.current.children[0].scrollTop = 0;\n }\n }, [imgIndex]);\n\n const expendRender = () => {\n const index = toolInstance.labelSelectedList[0];\n const value = inputList.filter((v: IInputList, i: number) => i === index)[0]?.value;\n setExpendKeyList(index, value, true);\n };\n\n const setExpendKeyList = useCallback(\n (index: number, value: string, expend?: boolean) => {\n const newKeyList = cloneDeep(expandKeyList);\n if (newKeyList[index] === '' || expend === true) {\n newKeyList[index] = value;\n } else {\n newKeyList[index] = '';\n }\n setExpandKeyList(newKeyList);\n },\n [expandKeyList],\n );\n\n if (!toolInstance) return null;\n\n const {\n labelSelectedList,\n config: { inputList },\n currentTagResult,\n setLabel,\n } = toolInstance;\n\n const selectedButton = (index: number) => {\n if (labelSelectedList.length > 0 && labelSelectedList[0] === index) {\n return <span className='keyDownIconActive'>{index + 1}</span>;\n }\n return <span className='keyDownIcon'>{index + 1}</span>;\n };\n\n // basicIndex 到底是那一层\n const labelPanel = (labelInfoSet: IInputList[], basicIndex = -1) => {\n if (!labelInfoSet) {\n return null;\n }\n\n return labelInfoSet.map((info: IInputList, index: number) => {\n if (info.subSelected) {\n // 判断是否有数据\n const isResult = TagUtils.judgeResultIsInInputList(\n info.value,\n currentTagResult?.result?.[info.value],\n inputList,\n );\n\n return (\n <Collapse\n bordered={false}\n expandIcon={expandIconFuc}\n key={`collapse_${index}_${basicIndex + 1}`}\n onChange={() => setExpendKeyList(index, info.value)}\n activeKey={[expandKeyList[index]]}\n >\n <Panel\n header={\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <span>\n {info.key}\n <Tooltip placement='bottom' title={t('ClearThisOption')}>\n <img\n style={{ marginLeft: 5, cursor: 'pointer' }}\n onClick={(e) => {\n e.stopPropagation();\n toolInstance.clearResult(true, info.value);\n }}\n src={hoverDeleteIndex === index || isResult ? clearSmallA : clearSmall}\n onMouseEnter={() => {\n setHoverDeleteIndex(index);\n }}\n onMouseLeave={() => {\n setHoverDeleteIndex(-1);\n }}\n />\n </Tooltip>\n {isResult && expandKeyList[index] === '' && <Badge color='#87d068' />}\n </span>\n\n {inputList?.length > 1 && selectedButton(index)}\n </div>\n }\n key={info.value}\n >\n <div\n className='level'\n style={{\n backgroundColor:\n labelSelectedList.length > 0 && labelSelectedList[0] === index\n ? 'rgba(158, 158, 158, 0.18)'\n : '',\n }}\n >\n {labelPanel(info.subSelected, index)}\n </div>\n </Panel>\n </Collapse>\n );\n }\n const key = inputList?.[basicIndex] ? inputList?.[basicIndex].value : 0;\n const selectedAttribute =\n currentTagResult?.result?.[key]?.split(';')?.indexOf(info.value) > -1 ? info.value : '';\n\n if (inputList?.[basicIndex]?.isMulti === true) {\n return (\n <div className='singleBar' key={`${key}_${basicIndex}_${index}`}>\n <CheckBoxList\n attributeChanged={() => setLabel(basicIndex, index)}\n selectedAttribute={[selectedAttribute]}\n list={[{ value: info.value, label: info.key }]}\n num={index + 1}\n />\n </div>\n );\n }\n return (\n <div className='singleBar' key={`${key}_${basicIndex}_${index}`}>\n <RadioList\n forbidColor\n attributeChanged={() => setLabel(basicIndex, index)}\n selectedAttribute={selectedAttribute}\n list={[{ value: info.value, label: info.key }]}\n num={index + 1}\n />\n </div>\n );\n });\n };\n const height = window ? (window?.innerHeight ?? DEFAULT_CANVAS_SIZE.height) - 61 - 80 : 0;\n\n return (\n <div className='tagOperationMenu' ref={sidebarRef}>\n {inputList?.length === 0 ? (\n <div style={{ padding: 20, textAlign: 'center' }}>{t('NoConfiguration')}</div>\n ) : (\n <div className='main' style={{ height }}>\n {labelPanel(inputList)}\n </div>\n )}\n </div>\n );\n};\n\nfunction mapStateToProps(state: AppState) {\n return { toolInstance: state.annotation.toolInstance, imgIndex: state.annotation.imgIndex };\n}\n\nexport default connect(mapStateToProps)(TagSidebar);\n"],"names":["clearSmallA","clearSmall","CheckBoxList","RadioList"],"mappings":";;;;;;;;;;;;;AAoBA,MAAM,CAAE,SAAU;MAEL,gBAAgB,CAAC,CAAE,kDAC7B,oBAAD;AAAA,EAAoB,QAAQ,WAAW,KAAK;AAAA;AAG9C,MAAM,aAA+B,CAAC,CAAE,cAAc,cAAe;AA1BrE;AA2BE,QAAM,CAAC,eAAe,oBAAoB,SAAmB;AAE7D,QAAM,aAAa,OAAuB;AAC1C,QAAM,GAAG,eAAe,SAAiB;AACzC,QAAM,CAAC,kBAAkB,uBAAuB,SAAS;AACzD,QAAM,CAAE,KAAM;AAEd,YAAU,MAAM;AACd,QAAI,cAAc;AAEhB,uBAAiB,aAAa,OAAO,UAAU,IAAI,CAAC,MAAkB,EAAE;AAGxE,mBAAa,SAAS,UAAU,MAAM;AACpC,oBAAY,CAAC,MAAM,IAAI;AAAA;AAAA;AAAA,KAG1B,CAAC;AAEJ,YAAU,MAAM;AACd,QAAI,cAAc;AAEhB,mBAAa,SAAS,UAAU;AAEhC,UAAI,aAAa,kBAAkB,WAAW,GAAG;AAC/C,YAAI,UAAS;AACb,iBAAS,IAAI,GAAG,IAAI,aAAa,kBAAkB,IAAI,KAAK;AAC1D,qBAAU;AACV,oBAAU,MACR,cAAc,OAAO,MACrB,UAAU,GAAG,YAAY,QAAQ,CAAC,OAAW;AAC3C,uBAAU;AAAA;AAAA;AAGhB,YAAI,WAAW,SAAS;AACtB,qBAAW,QAAQ,SAAS,GAAG,YAAY;AAAA;AAAA;AAAA;AAAA;AAMnD,YAAU,MAAM;AAEd,QAAI,WAAW,SAAS;AACtB,iBAAW,QAAQ,SAAS,GAAG,YAAY;AAAA;AAAA,KAE5C,CAAC;AAEJ,QAAM,eAAe,MAAM;AA3E7B;AA4EI,UAAM,QAAQ,aAAa,kBAAkB;AAC7C,UAAM,QAAQ,iBAAU,OAAO,CAAC,GAAe,MAAc,MAAM,OAAO,OAA5D,oBAAgE;AAC9E,qBAAiB,OAAO,OAAO;AAAA;AAGjC,QAAM,mBAAmB,YACvB,CAAC,OAAe,OAAe,WAAqB;AAClD,UAAM,aAAa,UAAU;AAC7B,QAAI,WAAW,WAAW,MAAM,WAAW,MAAM;AAC/C,iBAAW,SAAS;AAAA,WACf;AACL,iBAAW,SAAS;AAAA;AAEtB,qBAAiB;AAAA,KAEnB,CAAC;AAGH,MAAI,CAAC;AAAc,WAAO;AAE1B,QAAM;AAAA,IACJ;AAAA,IACA,QAAQ,CAAE;AAAA,IACV;AAAA,IACA;AAAA,MACE;AAEJ,QAAM,iBAAiB,CAAC,UAAkB;AACxC,QAAI,kBAAkB,SAAS,KAAK,kBAAkB,OAAO,OAAO;AAClE,iDAAQ,QAAD;AAAA,QAAM,WAAU;AAAA,SAAqB,QAAQ;AAAA;AAEtD,+CAAQ,QAAD;AAAA,MAAM,WAAU;AAAA,OAAe,QAAQ;AAAA;AAIhD,QAAM,aAAa,CAAC,cAA4B,aAAa,OAAO;AAClE,QAAI,CAAC,cAAc;AACjB,aAAO;AAAA;AAGT,WAAO,aAAa,IAAI,CAAC,MAAkB,UAAkB;AApHjE;AAqHM,UAAI,KAAK,aAAa;AAEpB,cAAM,WAAW,SAAS,yBACxB,KAAK,OACL,4DAAkB,WAAlB,oBAA2B,KAAK,QAChC;AAGF,mDACG,UAAD;AAAA,UACE,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,KAAK,YAAY,SAAS,aAAa;AAAA,UACvC,UAAU,MAAM,iBAAiB,OAAO,KAAK;AAAA,UAC7C,WAAW,CAAC,cAAc;AAAA,+CAEzB,OAAD;AAAA,UACE,4CACG,OAAD;AAAA,YACE,OAAO;AAAA,cACL,SAAS;AAAA,cACT,gBAAgB;AAAA,cAChB,YAAY;AAAA;AAAA,iDAGb,QAAD,MACG,KAAK,yCACL,SAAD;AAAA,YAAS,WAAU;AAAA,YAAS,OAAO,EAAE;AAAA,iDAClC,OAAD;AAAA,YACE,OAAO,CAAE,YAAY,GAAG,QAAQ;AAAA,YAChC,SAAS,CAAC,MAAM;AACd,gBAAE;AACF,2BAAa,YAAY,MAAM,KAAK;AAAA;AAAA,YAEtC,KAAK,qBAAqB,SAAS,WAAWA,MAAcC;AAAA,YAC5D,cAAc,MAAM;AAClB,kCAAoB;AAAA;AAAA,YAEtB,cAAc,MAAM;AAClB,kCAAoB;AAAA;AAAA,eAIzB,YAAY,cAAc,WAAW,0CAAO,OAAD;AAAA,YAAO,OAAM;AAAA,eAG1D,wCAAW,UAAS,KAAK,eAAe;AAAA,UAG7C,KAAK,KAAK;AAAA,+CAET,OAAD;AAAA,UACE,WAAU;AAAA,UACV,OAAO;AAAA,YACL,iBACE,kBAAkB,SAAS,KAAK,kBAAkB,OAAO,QACrD,8BACA;AAAA;AAAA,WAGP,WAAW,KAAK,aAAa;AAAA;AAMxC,YAAM,MAAM,wCAAY,eAAc,uCAAY,YAAY,QAAQ;AACtE,YAAM,oBACJ,wEAAkB,WAAlB,mBAA2B,SAA3B,mBAAiC,MAAM,SAAvC,mBAA6C,QAAQ,KAAK,UAAS,KAAK,KAAK,QAAQ;AAEvF,UAAI,8CAAY,gBAAZ,mBAAyB,aAAY,MAAM;AAC7C,mDACG,OAAD;AAAA,UAAK,WAAU;AAAA,UAAY,KAAK,GAAG,OAAO,cAAc;AAAA,+CACrDC,cAAD;AAAA,UACE,kBAAkB,MAAM,SAAS,YAAY;AAAA,UAC7C,mBAAmB,CAAC;AAAA,UACpB,MAAM,CAAC,CAAE,OAAO,KAAK,OAAO,OAAO,KAAK;AAAA,UACxC,KAAK,QAAQ;AAAA;AAAA;AAKrB,iDACG,OAAD;AAAA,QAAK,WAAU;AAAA,QAAY,KAAK,GAAG,OAAO,cAAc;AAAA,6CACrDC,eAAD;AAAA,QACE,aAAW;AAAA,QACX,kBAAkB,MAAM,SAAS,YAAY;AAAA,QAC7C;AAAA,QACA,MAAM,CAAC,CAAE,OAAO,KAAK,OAAO,OAAO,KAAK;AAAA,QACxC,KAAK,QAAQ;AAAA;AAAA;AAAA;AAMvB,QAAM,SAAS,SAAU,wCAAQ,gBAAR,YAAuB,oBAAoB,UAAU,KAAK,KAAK;AAExF,6CACG,OAAD;AAAA,IAAK,WAAU;AAAA,IAAmB,KAAK;AAAA,KACpC,wCAAW,YAAW,wCACpB,OAAD;AAAA,IAAK,OAAO,CAAE,SAAS,IAAI,WAAW;AAAA,KAAa,EAAE,0DAEpD,OAAD;AAAA,IAAK,WAAU;AAAA,IAAO,OAAO,CAAE;AAAA,KAC5B,WAAW;AAAA;AAOtB,yBAAyB,OAAiB;AACxC,SAAO,CAAE,cAAc,MAAM,WAAW,cAAc,UAAU,MAAM,WAAW;AAAA;AAGnF,mBAAe,QAAQ,iBAAiB;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/TagSidebar/index.tsx"],"sourcesContent":["import RadioList from '@/components/attributeList';\nimport CheckBoxList from '@/components/checkboxList';\nimport { CaretRightOutlined } from '@ant-design/icons';\nimport { Badge, Collapse, Tooltip } from 'antd/es';\nimport { cloneDeep } from 'lodash';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport clearSmall from '@/assets/annotation/common/icon_clearSmall.svg';\nimport clearSmallA from '@/assets/annotation/common/icon_clearSmall_a.svg';\nimport { TagOperation, TagUtils } from '@labelbee/lb-annotation';\nimport { connect } from 'react-redux';\nimport { AppState } from '@/store';\nimport { IInputList } from '@/types/main';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n imgIndex: number;\n toolInstance: TagOperation;\n}\n\nconst { Panel } = Collapse;\n\nexport const expandIconFuc = ({ isActive }: any) => (\n <CaretRightOutlined rotate={isActive ? 90 : 0} />\n);\n\nconst TagSidebar: React.FC<IProps> = ({ toolInstance, imgIndex }) => {\n const [expandKeyList, setExpandKeyList] = useState<string[]>([]);\n\n const sidebarRef = useRef<HTMLDivElement>(null);\n const [, forceRender] = useState<number>(0);\n const [hoverDeleteIndex, setHoverDeleteIndex] = useState(-1);\n const { t } = useTranslation();\n\n useEffect(() => {\n if (toolInstance) {\n // 用于配置的初始化\n setExpandKeyList(toolInstance.config.inputList.map((v: IInputList) => v.value));\n\n // 进行实时渲染\n toolInstance.singleOn('render', () => {\n forceRender((s) => s + 1);\n });\n }\n }, [toolInstance]);\n\n useEffect(() => {\n if (toolInstance) {\n // 该写法会不断的重复绑定,后续写法上可以更改(如果将 singleOn 改为 on 会有很大问题)\n toolInstance.singleOn('expend', expendRender);\n\n if (toolInstance.labelSelectedList.length === 1) {\n let height = 0;\n for (let i = 0; i < toolInstance.labelSelectedList[0]; i++) {\n height += 46;\n inputList[i] &&\n expandKeyList[i] !== '' &&\n inputList[i].subSelected.forEach((i: any) => {\n height += 40;\n });\n }\n if (sidebarRef.current) {\n sidebarRef.current.children[0].scrollTop = height;\n }\n }\n }\n });\n\n useEffect(() => {\n // 翻页侧边栏跳到最上\n if (sidebarRef.current) {\n sidebarRef.current.children[0].scrollTop = 0;\n }\n }, [imgIndex]);\n\n const expendRender = () => {\n const index = toolInstance.labelSelectedList[0];\n const value = inputList.filter((v: IInputList, i: number) => i === index)[0]?.value;\n setExpendKeyList(index, value, true);\n };\n\n const setExpendKeyList = useCallback(\n (index: number, value: string, expend?: boolean) => {\n const newKeyList = cloneDeep(expandKeyList);\n if (newKeyList[index] === '' || expend === true) {\n newKeyList[index] = value;\n } else {\n newKeyList[index] = '';\n }\n setExpandKeyList(newKeyList);\n },\n [expandKeyList],\n );\n\n if (!toolInstance) return null;\n\n const {\n labelSelectedList,\n config: { inputList },\n currentTagResult,\n setLabel,\n } = toolInstance;\n\n const selectedButton = (index: number) => {\n if (labelSelectedList.length > 0 && labelSelectedList[0] === index) {\n return <span className='keyDownIconActive'>{index + 1}</span>;\n }\n return <span className='keyDownIcon'>{index + 1}</span>;\n };\n\n // basicIndex 到底是那一层\n const labelPanel = (labelInfoSet: IInputList[], basicIndex = -1) => {\n if (!labelInfoSet) {\n return null;\n }\n\n return labelInfoSet.map((info: IInputList, index: number) => {\n if (info.subSelected) {\n // 判断是否有数据\n const isResult = TagUtils.judgeResultIsInInputList(\n info.value,\n currentTagResult?.result?.[info.value],\n inputList,\n );\n\n return (\n <Collapse\n bordered={false}\n expandIcon={expandIconFuc}\n key={`collapse_${index}_${basicIndex + 1}`}\n onChange={() => setExpendKeyList(index, info.value)}\n activeKey={[expandKeyList[index]]}\n >\n <Panel\n header={\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <span>\n {info.key}\n <Tooltip placement='bottom' title={t('ClearThisOption')}>\n <img\n style={{ marginLeft: 5, cursor: 'pointer' }}\n onClick={(e) => {\n e.stopPropagation();\n toolInstance.clearResult(true, info.value);\n }}\n src={hoverDeleteIndex === index || isResult ? clearSmallA : clearSmall}\n onMouseEnter={() => {\n setHoverDeleteIndex(index);\n }}\n onMouseLeave={() => {\n setHoverDeleteIndex(-1);\n }}\n />\n </Tooltip>\n {isResult && expandKeyList[index] === '' && <Badge color='#87d068' />}\n </span>\n\n {inputList?.length > 1 && selectedButton(index)}\n </div>\n }\n key={info.value}\n >\n <div\n className='level'\n style={{\n backgroundColor:\n labelSelectedList.length > 0 && labelSelectedList[0] === index\n ? 'rgba(158, 158, 158, 0.18)'\n : '',\n }}\n >\n {labelPanel(info.subSelected, index)}\n </div>\n </Panel>\n </Collapse>\n );\n }\n const key = inputList?.[basicIndex] ? inputList?.[basicIndex].value : 0;\n const selectedAttribute =\n currentTagResult?.result?.[key]?.split(';')?.indexOf(info.value) > -1 ? info.value : '';\n\n if (inputList?.[basicIndex]?.isMulti === true) {\n return (\n <div className='singleBar' key={`${key}_${basicIndex}_${index}`}>\n <CheckBoxList\n attributeChanged={() => setLabel(basicIndex, index)}\n selectedAttribute={[selectedAttribute]}\n list={[{ value: info.value, label: info.key }]}\n num={index + 1}\n />\n </div>\n );\n }\n return (\n <div className='singleBar' key={`${key}_${basicIndex}_${index}`}>\n <RadioList\n forbidColor\n attributeChanged={() => setLabel(basicIndex, index)}\n selectedAttribute={selectedAttribute}\n list={[{ value: info.value, label: info.key }]}\n num={index + 1}\n />\n </div>\n );\n });\n };\n const height = window.innerHeight - 61 - 80;\n\n return (\n <div className='tagOperationMenu' ref={sidebarRef}>\n {inputList?.length === 0 ? (\n <div style={{ padding: 20, textAlign: 'center' }}>{t('NoConfiguration')}</div>\n ) : (\n <div className='main' style={{ height }}>\n {labelPanel(inputList)}\n </div>\n )}\n </div>\n );\n};\n\nfunction mapStateToProps(state: AppState) {\n return { toolInstance: state.annotation.toolInstance, imgIndex: state.annotation.imgIndex };\n}\n\nexport default connect(mapStateToProps)(TagSidebar);\n"],"names":["clearSmallA","clearSmall","CheckBoxList","RadioList"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import n,{useState as d,useEffect as _,useRef as K}from"react";import{connect as R}from"react-redux";import{cloneDeep as j}from"lodash";import{classnames as
|
|
1
|
+
import n,{useState as d,useEffect as _,useRef as K}from"react";import{connect as R}from"react-redux";import{cloneDeep as j}from"lodash";import{classnames as C}from"../../../../utils/index.js";import{Input as D}from"antd/es";import{cKeyCode as $}from"@labelbee/lb-annotation";import{PageForward as q}from"../../../../store/annotation/actionCreators.js";import{ConfigUtils as U}from"../../../../utils/ConfigUtils.js";import{useTranslation as B}from"react-i18next";var M=Object.defineProperty,I=Object.getOwnPropertySymbols,z=Object.prototype.hasOwnProperty,V=Object.prototype.propertyIsEnumerable,S=(e,t,a)=>t in e?M(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,W=(e,t)=>{for(var a in t||(t={}))z.call(t,a)&&S(e,a,t[a]);if(I)for(var a of I(t))V.call(t,a)&&S(e,a,t[a]);return e};const F=$.default,L=e=>{e.stopPropagation(),e.nativeEvent.stopPropagation(),e.nativeEvent.stopImmediatePropagation()},O=e=>{const{textareaProps:t,footer:a}=e;return n.createElement(n.Fragment,null,n.createElement(D.TextArea,W({bordered:!1,rows:6,onKeyDown:L,onKeyUp:L},t)),n.createElement("div",{className:C({textAreaLength:!0})},a))},k=e=>{var t;const a=K(null),[g,c]=d(!1),[w,x]=d(!1),{t:u}=B(),{disabled:l,config:i,result:v,updateText:E,index:T,switchToNextTextarea:h,hasMultiple:P,onNext:p}=e,{maxLength:m}=i,f=v?v[i.key]:"",y=(t=f==null?void 0:f.length)!=null?t:0,N=o=>{E&&(E(o,i.key),i.required&&x(!o))},b=P&&h,r={id:`textInput-${T}`,ref:a,disabled:l,value:f,maxLength:m,autoSize:{minRows:2,maxRows:6},onChange:o=>{const A=o.target.value;N(A)},onFocus:()=>{c(!0)},onBlur:o=>{c(!1),i.required&&x(!o.target.value)},style:{resize:"none",wordBreak:"break-all"},onKeyDownCapture:o=>{o.ctrlKey&&o.keyCode===F.Enter&&(p&&p(),o.preventDefault()),o.keyCode===F.Tab&&b&&(o.preventDefault(),o.nativeEvent.stopImmediatePropagation(),h(T)),o.nativeEvent.stopPropagation()}},s=n.createElement("div",{className:"textAreaFooter"},n.createElement("div",{className:"hotkeyTip"},b&&n.createElement("span",null,`[${u("Switch")}]Tab`),n.createElement("span",null,`[${u("TurnPage")}]Ctrl+Enter`)),n.createElement("div",{className:"wordCount"},n.createElement("span",{className:y>=m?"warning":""},y),"/",n.createElement("span",null,m)));return _(()=>{l&&c(!1)},[l]),n.createElement("div",{className:"textField"},n.createElement("div",{className:"label"},n.createElement("span",{className:C({required:i.required})},i.label),n.createElement("i",{className:C({clearText:!0,disabled:l}),onClick:()=>{l||N("")}})),n.createElement("div",{className:C({disabled:l,"textarea-outline":!0,"ant-input-focused":g,textareaContainer:!0,focus:g,invalid:w})},n.createElement(O,{footer:s,textareaProps:r})))},G=({toolInstance:e,imgIndex:t,dispatch:a,triggerEventAfterIndexChanged:g,step:c,stepList:w,basicResultList:x})=>{var u,l;const[i,v]=d([]),[E,T]=d(0),[,h]=d(0),P=r=>{const s=(r+1)%i.length;p(s)},p=r=>{setTimeout(()=>{const s=document.getElementById(`textInput-${r}`);s&&(T(r),s.focus(),s.select(),s.scrollIntoView({behavior:"smooth",block:"center"}))})};_(()=>{e&&(v(j(e.config.configList)),e.singleOn("valueUpdated",()=>{h(r=>r+1)}))},[e]);const m=(r,s)=>{e.updateTextValue(s,r)};_(()=>{t>-1&&g&&p(0)},[t]);const f=(l=(u=e.textList[0])==null?void 0:u.value)!=null?l:{},y=()=>{a(q(!0))},b=U.getStepConfig(w,c).dataSourceStep>0&&x.length===0;return n.createElement("div",{className:"textToolOperationMenu"},i.map((r,s)=>n.createElement(k,{config:r,key:r.key,index:s,result:f,updateText:m,switchToNextTextarea:P,hasMultiple:i.length>1,focus:E===s,onNext:y,disabled:b})))};function H(e){return{toolInstance:e.annotation.toolInstance,imgIndex:e.annotation.imgIndex,step:e.annotation.step,basicResultList:e.annotation.basicResultList,stepList:e.annotation.stepList,triggerEventAfterIndexChanged:e.annotation.triggerEventAfterIndexChanged}}var J=R(H)(G);export{k as SingleTextInput,O as TextareaWithFooter,J as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/TextToolSidebar/index.tsx"],"sourcesContent":["import React, { useEffect, useState, useRef, FocusEvent } from 'react';\nimport { connect } from 'react-redux';\nimport { AppState } from '@/store';\nimport { cloneDeep } from 'lodash';\nimport { classnames } from '@/utils';\nimport { Input } from 'antd/es';\nimport { cKeyCode } from '@labelbee/lb-annotation';\nimport { PageForward } from '@/store/annotation/actionCreators';\nimport { ConfigUtils } from '@/utils/ConfigUtils';\nimport { IStepInfo } from '@/types/step';\nimport TextToolOperation from '@labelbee/lb-annotation/dist/types/core/toolOperation/TextToolOperation';\nimport { useTranslation } from 'react-i18next';\n\nconst EKeyCode = cKeyCode.default;\n\nconst syntheticEventStopPagination = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n e.stopPropagation();\n e.nativeEvent.stopPropagation();\n e.nativeEvent.stopImmediatePropagation();\n};\n\ninterface ITextareaWithFooterProps {\n textareaProps?: any;\n footer?: any;\n}\n\nexport const TextareaWithFooter = (props: ITextareaWithFooterProps) => {\n const { textareaProps, footer } = props;\n\n return (\n <>\n <Input.TextArea\n bordered={false}\n rows={6}\n onKeyDown={syntheticEventStopPagination}\n onKeyUp={syntheticEventStopPagination}\n {...textareaProps}\n />\n <div\n className={classnames({\n textAreaLength: true,\n })}\n >\n {footer}\n </div>\n </>\n );\n};\n\ninterface IProps {\n dispatch: Function;\n toolInstance: TextToolOperation;\n imgIndex: number;\n triggerEventAfterIndexChanged: boolean;\n step: number;\n stepList: IStepInfo[];\n basicResultList: any[];\n}\n\ninterface IConfigListItem {\n label: string;\n key: string;\n required: boolean;\n default: string;\n maxLength: number;\n}\n\nexport const SingleTextInput = (props: any) => {\n const ref = useRef(null);\n const [textAreaFocus, setTextAreaFocus] = useState(false);\n const [invalid, setInvalid] = useState(false);\n const { t } = useTranslation();\n\n const { disabled, config, result, updateText, index, switchToNextTextarea, hasMultiple, onNext } =\n props;\n const { maxLength } = config;\n\n const value = result ? result[config.key] : '';\n const textLength = value?.length ?? 0;\n\n const updateTextWithKey = (newVal: string) => {\n if (updateText) {\n updateText(newVal, config.key);\n if (config.required) {\n setInvalid(!newVal);\n }\n }\n };\n\n const tabToSwitchEnabled = hasMultiple && switchToNextTextarea;\n\n const textareaProps = {\n id: `textInput-${index}`,\n ref,\n disabled,\n value,\n maxLength,\n autoSize: { minRows: 2, maxRows: 6 },\n onChange: (e: FocusEvent<HTMLTextAreaElement>) => {\n const value = e.target.value;\n updateTextWithKey(value);\n },\n onFocus: () => {\n setTextAreaFocus(true);\n },\n onBlur: (e: FocusEvent<HTMLTextAreaElement>) => {\n setTextAreaFocus(false);\n if (config.required) {\n setInvalid(!e.target.value);\n }\n },\n style: {\n resize: 'none',\n wordBreak: 'break-all',\n },\n onKeyDownCapture: (e: React.KeyboardEvent) => {\n if (e.ctrlKey && e.keyCode === EKeyCode.Enter) {\n if (onNext) {\n onNext();\n }\n e.preventDefault();\n }\n\n if (e.keyCode === EKeyCode.Tab && tabToSwitchEnabled) {\n e.preventDefault();\n e.nativeEvent.stopImmediatePropagation();\n switchToNextTextarea(index);\n }\n\n e.nativeEvent.stopPropagation();\n },\n };\n\n const TextareaFooter = (\n <div className='textAreaFooter'>\n <div className='hotkeyTip'>\n {tabToSwitchEnabled && <span>{`[${t('Switch')}]Tab`}</span>}\n <span>{`[${t('TurnPage')}]Ctrl+Enter`}</span>\n </div>\n <div className='wordCount'>\n <span className={textLength >= maxLength ? 'warning' : ''}>{textLength}</span>/\n <span>{maxLength}</span>\n </div>\n </div>\n );\n\n useEffect(() => {\n if (disabled) {\n setTextAreaFocus(false);\n }\n }, [disabled]);\n\n return (\n <div className='textField'>\n <div className='label'>\n <span className={classnames({ required: config.required })}>{config.label}</span>\n <i\n className={classnames({ clearText: true, disabled: disabled })}\n onClick={() => {\n if (disabled) {\n return;\n }\n updateTextWithKey('');\n }}\n />\n </div>\n <div\n className={classnames({\n disabled,\n 'textarea-outline': true,\n 'ant-input-focused': textAreaFocus,\n textareaContainer: true,\n focus: textAreaFocus,\n invalid: invalid,\n })}\n >\n <TextareaWithFooter footer={TextareaFooter} textareaProps={textareaProps} />\n </div>\n </div>\n );\n};\n\nconst TextToolSidebar: React.FC<IProps> = ({\n toolInstance,\n imgIndex,\n dispatch,\n triggerEventAfterIndexChanged,\n step,\n stepList,\n basicResultList,\n}) => {\n const [configList, setConfigList] = useState<IConfigListItem[]>([]);\n const [focusIndex, setFocusIndex] = useState(0);\n const [, forceRender] = useState(0);\n\n const switchToNextTextarea = (currentIndex: number) => {\n const nextIndex = (currentIndex + 1) % configList.length;\n textareaFocus(nextIndex);\n };\n\n const textareaFocus = (index: number) => {\n if (!window) {\n return;\n }\n\n setTimeout(() => {\n const textarea = document.getElementById(`textInput-${index}`) as HTMLTextAreaElement;\n if (textarea) {\n setFocusIndex(index);\n textarea.focus();\n textarea.select();\n textarea.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n });\n };\n\n useEffect(() => {\n if (toolInstance) {\n setConfigList(cloneDeep(toolInstance.config.configList));\n toolInstance.singleOn('valueUpdated', () => {\n forceRender((s) => s + 1);\n });\n }\n }, [toolInstance]);\n\n const updateText = (v: string, k: string) => {\n toolInstance.updateTextValue(k, v);\n };\n\n useEffect(() => {\n if (imgIndex > -1 && triggerEventAfterIndexChanged) {\n textareaFocus(0);\n }\n }, [imgIndex]);\n\n const result = toolInstance.textList[0]?.value ?? {};\n\n const onNext = () => {\n dispatch(PageForward(true));\n };\n\n const stepConfig = ConfigUtils.getStepConfig(stepList, step);\n const disabled = stepConfig.dataSourceStep > 0 && basicResultList.length === 0;\n\n return (\n <div className='textToolOperationMenu'>\n {configList.map((i, index) => (\n <SingleTextInput\n config={i}\n key={i.key}\n index={index}\n result={result}\n updateText={updateText}\n switchToNextTextarea={switchToNextTextarea}\n hasMultiple={configList.length > 1}\n focus={focusIndex === index}\n onNext={onNext}\n disabled={disabled}\n />\n ))}\n </div>\n );\n};\n\nfunction mapStateToProps(state: AppState) {\n return {\n toolInstance: state.annotation.toolInstance,\n imgIndex: state.annotation.imgIndex,\n step: state.annotation.step,\n basicResultList: state.annotation.basicResultList,\n stepList: state.annotation.stepList,\n triggerEventAfterIndexChanged: state.annotation.triggerEventAfterIndexChanged,\n };\n}\n\nexport default connect(mapStateToProps)(TextToolSidebar);\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/TextToolSidebar/index.tsx"],"sourcesContent":["import React, { useEffect, useState, useRef, FocusEvent } from 'react';\nimport { connect } from 'react-redux';\nimport { AppState } from '@/store';\nimport { cloneDeep } from 'lodash';\nimport { classnames } from '@/utils';\nimport { Input } from 'antd/es';\nimport { cKeyCode } from '@labelbee/lb-annotation';\nimport { PageForward } from '@/store/annotation/actionCreators';\nimport { ConfigUtils } from '@/utils/ConfigUtils';\nimport { IStepInfo } from '@/types/step';\nimport TextToolOperation from '@labelbee/lb-annotation/dist/types/core/toolOperation/TextToolOperation';\nimport { useTranslation } from 'react-i18next';\n\nconst EKeyCode = cKeyCode.default;\n\nconst syntheticEventStopPagination = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n e.stopPropagation();\n e.nativeEvent.stopPropagation();\n e.nativeEvent.stopImmediatePropagation();\n};\n\ninterface ITextareaWithFooterProps {\n textareaProps?: any;\n footer?: any;\n}\n\nexport const TextareaWithFooter = (props: ITextareaWithFooterProps) => {\n const { textareaProps, footer } = props;\n\n return (\n <>\n <Input.TextArea\n bordered={false}\n rows={6}\n onKeyDown={syntheticEventStopPagination}\n onKeyUp={syntheticEventStopPagination}\n {...textareaProps}\n />\n <div\n className={classnames({\n textAreaLength: true,\n })}\n >\n {footer}\n </div>\n </>\n );\n};\n\ninterface IProps {\n dispatch: Function;\n toolInstance: TextToolOperation;\n imgIndex: number;\n triggerEventAfterIndexChanged: boolean;\n step: number;\n stepList: IStepInfo[];\n basicResultList: any[];\n}\n\ninterface IConfigListItem {\n label: string;\n key: string;\n required: boolean;\n default: string;\n maxLength: number;\n}\n\nexport const SingleTextInput = (props: any) => {\n const ref = useRef(null);\n const [textAreaFocus, setTextAreaFocus] = useState(false);\n const [invalid, setInvalid] = useState(false);\n const { t } = useTranslation();\n\n const { disabled, config, result, updateText, index, switchToNextTextarea, hasMultiple, onNext } =\n props;\n const { maxLength } = config;\n\n const value = result ? result[config.key] : '';\n const textLength = value?.length ?? 0;\n\n const updateTextWithKey = (newVal: string) => {\n if (updateText) {\n updateText(newVal, config.key);\n if (config.required) {\n setInvalid(!newVal);\n }\n }\n };\n\n const tabToSwitchEnabled = hasMultiple && switchToNextTextarea;\n\n const textareaProps = {\n id: `textInput-${index}`,\n ref,\n disabled,\n value,\n maxLength,\n autoSize: { minRows: 2, maxRows: 6 },\n onChange: (e: FocusEvent<HTMLTextAreaElement>) => {\n const value = e.target.value;\n updateTextWithKey(value);\n },\n onFocus: () => {\n setTextAreaFocus(true);\n },\n onBlur: (e: FocusEvent<HTMLTextAreaElement>) => {\n setTextAreaFocus(false);\n if (config.required) {\n setInvalid(!e.target.value);\n }\n },\n style: {\n resize: 'none',\n wordBreak: 'break-all',\n },\n onKeyDownCapture: (e: React.KeyboardEvent) => {\n if (e.ctrlKey && e.keyCode === EKeyCode.Enter) {\n if (onNext) {\n onNext();\n }\n e.preventDefault();\n }\n\n if (e.keyCode === EKeyCode.Tab && tabToSwitchEnabled) {\n e.preventDefault();\n e.nativeEvent.stopImmediatePropagation();\n switchToNextTextarea(index);\n }\n\n e.nativeEvent.stopPropagation();\n },\n };\n\n const TextareaFooter = (\n <div className='textAreaFooter'>\n <div className='hotkeyTip'>\n {tabToSwitchEnabled && <span>{`[${t('Switch')}]Tab`}</span>}\n <span>{`[${t('TurnPage')}]Ctrl+Enter`}</span>\n </div>\n <div className='wordCount'>\n <span className={textLength >= maxLength ? 'warning' : ''}>{textLength}</span>/\n <span>{maxLength}</span>\n </div>\n </div>\n );\n\n useEffect(() => {\n if (disabled) {\n setTextAreaFocus(false);\n }\n }, [disabled]);\n\n return (\n <div className='textField'>\n <div className='label'>\n <span className={classnames({ required: config.required })}>{config.label}</span>\n <i\n className={classnames({ clearText: true, disabled: disabled })}\n onClick={() => {\n if (disabled) {\n return;\n }\n updateTextWithKey('');\n }}\n />\n </div>\n <div\n className={classnames({\n disabled,\n 'textarea-outline': true,\n 'ant-input-focused': textAreaFocus,\n textareaContainer: true,\n focus: textAreaFocus,\n invalid: invalid,\n })}\n >\n <TextareaWithFooter footer={TextareaFooter} textareaProps={textareaProps} />\n </div>\n </div>\n );\n};\n\nconst TextToolSidebar: React.FC<IProps> = ({\n toolInstance,\n imgIndex,\n dispatch,\n triggerEventAfterIndexChanged,\n step,\n stepList,\n basicResultList,\n}) => {\n const [configList, setConfigList] = useState<IConfigListItem[]>([]);\n const [focusIndex, setFocusIndex] = useState(0);\n const [, forceRender] = useState(0);\n\n const switchToNextTextarea = (currentIndex: number) => {\n const nextIndex = (currentIndex + 1) % configList.length;\n textareaFocus(nextIndex);\n };\n\n const textareaFocus = (index: number) => {\n setTimeout(() => {\n const textarea = document.getElementById(`textInput-${index}`) as HTMLTextAreaElement;\n if (textarea) {\n setFocusIndex(index);\n textarea.focus();\n textarea.select();\n textarea.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n });\n };\n\n useEffect(() => {\n if (toolInstance) {\n setConfigList(cloneDeep(toolInstance.config.configList));\n toolInstance.singleOn('valueUpdated', () => {\n forceRender((s) => s + 1);\n });\n }\n }, [toolInstance]);\n\n const updateText = (v: string, k: string) => {\n toolInstance.updateTextValue(k, v);\n };\n\n useEffect(() => {\n if (imgIndex > -1 && triggerEventAfterIndexChanged) {\n textareaFocus(0);\n }\n }, [imgIndex]);\n\n const result = toolInstance.textList[0]?.value ?? {};\n\n const onNext = () => {\n dispatch(PageForward(true));\n };\n\n const stepConfig = ConfigUtils.getStepConfig(stepList, step);\n const disabled = stepConfig.dataSourceStep > 0 && basicResultList.length === 0;\n\n return (\n <div className='textToolOperationMenu'>\n {configList.map((i, index) => (\n <SingleTextInput\n config={i}\n key={i.key}\n index={index}\n result={result}\n updateText={updateText}\n switchToNextTextarea={switchToNextTextarea}\n hasMultiple={configList.length > 1}\n focus={focusIndex === index}\n onNext={onNext}\n disabled={disabled}\n />\n ))}\n </div>\n );\n};\n\nfunction mapStateToProps(state: AppState) {\n return {\n toolInstance: state.annotation.toolInstance,\n imgIndex: state.annotation.imgIndex,\n step: state.annotation.step,\n basicResultList: state.annotation.basicResultList,\n stepList: state.annotation.stepList,\n triggerEventAfterIndexChanged: state.annotation.triggerEventAfterIndexChanged,\n };\n}\n\nexport default connect(mapStateToProps)(TextToolSidebar);\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e,{useReducer as T,useRef as
|
|
1
|
+
import e,{useReducer as T,useRef as j}from"react";import{LeftOutlined as b}from"@ant-design/icons";import{connect as w,useDispatch as y}from"react-redux";import{store as C}from"../../../index.js";import D from"classnames";import{prefix as n,ESubmitType as k}from"../../../constant/index.js";import O from"./ExportData/index.js";import z from"./headerOption/index.js";import{Tooltip as F,Button as H}from"antd/es";import{ToSubmitFileData as P,ToNextStep as R}from"../../../store/annotation/actionCreators.js";import A from"./StepSwitch/index.js";import{i18n as E}from"@labelbee/lb-utils";import{useTranslation as h}from"react-i18next";import B from"../../../hooks/useSize.js";import{last as I}from"lodash";const g=({disabled:t})=>{const{t:a}=h();return e.createElement(H,{type:"primary",style:{marginLeft:10},onClick:()=>{C.dispatch(R(0))},disabled:t},a("NextStep"))},Q=({step:t,stepProgress:a,stepList:r})=>{var i;const{t:s}=h(),c=(i=I(r))==null?void 0:i.step;if(r.length<2||t===c)return null;const o=a<1;return o?e.createElement(F,{title:s("StepNotFinishedNotify")},e.createElement("span",null,e.createElement(g,{disabled:o}))):e.createElement(g,{disabled:o})},U=({goBack:t,exportData:a,headerName:r,imgList:i,stepProgress:s,stepInfo:c,stepList:o,step:N,annotationEngine:x})=>{var m;const _=y(),[,v]=T(l=>l+1,0),p=j(null),d=B(p),S=e.createElement(O,{exportData:a}),$=()=>{_(P(k.Quit)),t&&t(i)},u=l=>{E.changeLanguage(l),x.setLang(l),v()},f=E.language,L=(m=d==null?void 0:d.width)!=null?m:window.innerWidth;return e.createElement("div",{className:D(`${n}-header`),ref:p},e.createElement("div",{className:`${n}-header__title`},e.createElement(b,{className:`${n}-header__icon`,onClick:$}),r?e.createElement("span",{className:`${n}-header__name`},r):"",o.length>1&&e.createElement(e.Fragment,null,e.createElement(A,{stepProgress:s}),e.createElement(Q,{step:N,stepProgress:s,stepList:o})),S,e.createElement("div",{id:"operationNode",className:`${n}-header__operationNode`,style:{left:L/2-174/2}},e.createElement(z,{stepInfo:c})),e.createElement("div",{className:`${n}-header__titlePlacement`}),e.createElement("div",{className:`${n}-header__lang`},e.createElement("span",{className:`${n}-langCN ${f==="cn"?"active":""}`,onClick:()=>u("cn")},"\u4E2D\u6587")," / ",e.createElement("span",{className:`${n}-langEN ${f==="en"?"active":""}`,onClick:()=>u("en")},"En"))))},W=t=>{var a;return{imgList:t.annotation.imgList,annotationEngine:t.annotation.annotationEngine,stepProgress:t.annotation.stepProgress,toolName:(a=t.annotation.stepList[t.annotation.step-1])==null?void 0:a.tool,stepList:t.annotation.stepList,stepInfo:t.annotation.stepList[t.annotation.step-1],step:t.annotation.step}};var q=w(W)(U);export{q as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/views/MainView/toolHeader/index.tsx"],"sourcesContent":["import React, { useReducer, useRef } from 'react';\nimport { LeftOutlined } from '@ant-design/icons';\nimport { connect, useDispatch } from 'react-redux';\nimport { store } from 'src';\nimport { IFileItem } from '@/types/data';\nimport { AppState } from '@/store';\nimport classNames from 'classnames';\nimport { ESubmitType, prefix } from '@/constant';\nimport ExportData from './ExportData';\nimport HeaderOption from './headerOption';\nimport { AnnotationEngine } from '@labelbee/lb-annotation';\nimport { Button, Tooltip } from 'antd/es';\nimport { ToNextStep, ToSubmitFileData } from '@/store/annotation/actionCreators';\nimport StepSwitch from './StepSwitch';\nimport { EToolName } from '@/data/enums/ToolType';\nimport { IStepInfo } from '@/types/step';\nimport { i18n } from '@labelbee/lb-utils';\nimport { useTranslation } from 'react-i18next';\nimport useSize from '@/hooks/useSize';\n\ninterface INextStep {\n stepProgress: number;\n stepList: IStepInfo[];\n step: number; // 当前步骤\n}\n\nconst NextButton: React.FC<{ disabled: boolean }> = ({ disabled }) => {\n const { t } = useTranslation();\n return (\n <Button\n type='primary'\n style={{\n marginLeft: 10,\n }}\n onClick={() => {\n store.dispatch(ToNextStep(0) as any);\n }}\n disabled={disabled}\n >\n {t('NextStep')}\n </Button>\n );\n};\n\nconst NextStep: React.FC<INextStep> = ({ step, stepProgress, stepList }) => {\n const { t } = useTranslation();\n\n if (stepList.length < 2 || step ===
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/views/MainView/toolHeader/index.tsx"],"sourcesContent":["import React, { useReducer, useRef } from 'react';\nimport { LeftOutlined } from '@ant-design/icons';\nimport { connect, useDispatch } from 'react-redux';\nimport { store } from 'src';\nimport { IFileItem } from '@/types/data';\nimport { AppState } from '@/store';\nimport classNames from 'classnames';\nimport { ESubmitType, prefix } from '@/constant';\nimport ExportData from './ExportData';\nimport HeaderOption from './headerOption';\nimport { AnnotationEngine } from '@labelbee/lb-annotation';\nimport { Button, Tooltip } from 'antd/es';\nimport { ToNextStep, ToSubmitFileData } from '@/store/annotation/actionCreators';\nimport StepSwitch from './StepSwitch';\nimport { EToolName } from '@/data/enums/ToolType';\nimport { IStepInfo } from '@/types/step';\nimport { i18n } from '@labelbee/lb-utils';\nimport { useTranslation } from 'react-i18next';\nimport useSize from '@/hooks/useSize';\nimport { last } from 'lodash';\n\ninterface INextStep {\n stepProgress: number;\n stepList: IStepInfo[];\n step: number; // 当前步骤\n}\n\nconst NextButton: React.FC<{ disabled: boolean }> = ({ disabled }) => {\n const { t } = useTranslation();\n return (\n <Button\n type='primary'\n style={{\n marginLeft: 10,\n }}\n onClick={() => {\n store.dispatch(ToNextStep(0) as any);\n }}\n disabled={disabled}\n >\n {t('NextStep')}\n </Button>\n );\n};\n\nconst NextStep: React.FC<INextStep> = ({ step, stepProgress, stepList }) => {\n const { t } = useTranslation();\n // 最后一步不显示下一步按钮\n const lastStep = last(stepList)?.step;\n\n if (stepList.length < 2 || step === lastStep) {\n return null;\n }\n\n const disabled = stepProgress < 1;\n\n if (disabled) {\n return (\n <Tooltip title={t('StepNotFinishedNotify')}>\n <span>\n <NextButton disabled={disabled} />\n </span>\n </Tooltip>\n );\n }\n\n return <NextButton disabled={disabled} />;\n};\n\ninterface IToolHeaderProps {\n goBack?: (imgList?: IFileItem[]) => void;\n exportData?: (data: any[]) => void;\n headerName?: string;\n imgList: IFileItem[];\n annotationEngine: AnnotationEngine;\n stepProgress: number;\n toolName: EToolName;\n stepInfo: IStepInfo;\n stepList: IStepInfo[];\n step: number;\n}\n\nconst ToolHeader: React.FC<IToolHeaderProps> = ({\n goBack,\n exportData,\n headerName,\n imgList,\n stepProgress,\n stepInfo,\n stepList,\n step,\n annotationEngine,\n}) => {\n const dispatch = useDispatch();\n const [, forceUpdate] = useReducer((x) => x + 1, 0);\n const ref = useRef(null);\n\n const size = useSize(ref);\n\n // render 数据展示\n const currentOption = <ExportData exportData={exportData} />;\n\n const closeAnnotation = () => {\n dispatch(ToSubmitFileData(ESubmitType.Quit));\n\n if (goBack) {\n goBack(imgList);\n }\n };\n\n const changeLanguage = (lang: 'en' | 'cn') => {\n i18n.changeLanguage(lang);\n annotationEngine.setLang(lang);\n forceUpdate();\n };\n\n const curLang = i18n.language;\n\n const width = size?.width ?? window.innerWidth;\n\n return (\n <div className={classNames(`${prefix}-header`)} ref={ref}>\n <div className={`${prefix}-header__title`}>\n <LeftOutlined className={`${prefix}-header__icon`} onClick={closeAnnotation} />\n {headerName ? <span className={`${prefix}-header__name`}>{headerName}</span> : ''}\n {stepList.length > 1 && (\n <>\n <StepSwitch stepProgress={stepProgress} />\n <NextStep step={step} stepProgress={stepProgress} stepList={stepList} />\n </>\n )}\n\n {currentOption}\n <div\n id='operationNode'\n className={`${prefix}-header__operationNode`}\n style={{ left: width / 2 - 174 / 2 }}\n >\n <HeaderOption stepInfo={stepInfo} />\n </div>\n\n <div className={`${prefix}-header__titlePlacement`} />\n\n <div className={`${prefix}-header__lang`}>\n <span\n className={`${prefix}-langCN ${curLang === 'cn' ? 'active' : ''}`}\n onClick={() => changeLanguage('cn')}\n >\n 中文\n </span>\n {` / `}\n <span\n className={`${prefix}-langEN ${curLang === 'en' ? 'active' : ''}`}\n onClick={() => changeLanguage('en')}\n >\n En\n </span>\n </div>\n </div>\n </div>\n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n imgList: state.annotation.imgList,\n annotationEngine: state.annotation.annotationEngine,\n stepProgress: state.annotation.stepProgress,\n toolName: state.annotation.stepList[state.annotation.step - 1]?.tool,\n stepList: state.annotation.stepList,\n stepInfo: state.annotation.stepList[state.annotation.step - 1],\n step: state.annotation.step,\n});\n\nexport default connect(mapStateToProps)(ToolHeader);\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@labelbee/lb-components",
|
|
3
|
-
"version": "1.2.3-alpha.
|
|
3
|
+
"version": "1.2.3-alpha.5",
|
|
4
4
|
"description": "Provide a complete library of annotation components",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"es": "./es/index.js",
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
"email": "brady_luo.sz@foxmail.com"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@labelbee/lb-annotation": "1.5.4-alpha.
|
|
45
|
+
"@labelbee/lb-annotation": "1.5.4-alpha.4",
|
|
46
46
|
"@ant-design/icons": "^4.6.2",
|
|
47
47
|
"classnames": "^2.3.0",
|
|
48
|
-
"@labelbee/lb-utils": "^1.0.
|
|
48
|
+
"@labelbee/lb-utils": "^1.0.4-alpha.0",
|
|
49
49
|
"lodash": "^4.17.21",
|
|
50
50
|
"react-i18next": "^11.12.0",
|
|
51
51
|
"react-redux": "^7.2.3",
|