UNPKG

lost-sia

Version:

Single Image Annotation Tool

2 lines (1 loc) 3.31 kB
import{jsxs as F,jsx as C}from"react/jsx-runtime";import{useState as i,useRef as G,useEffect as l}from"react";import R from"./Canvas.js";import{noAnnos as E}from"./siaDummyData.js";import P from"./ToolBar.js";import{CANVAS_UI_CONFIG_UPDATE as A,CANVAS_SVG_UPDATE as w}from"./types/canvasActions.js";import{EDIT_NODE_RADIUS as W,EDIT_STROKE_WIDTH as K,SHOW_ANNO_STATS as M,SHOW_LABEL_INFO as V,SHOW_ANNO_DETAILS as H,SET_FULLSCREEN as J}from"./types/toolbarEvents.js";const Z=e=>{const[k,m]=i(""),[s,f]=i(),[S,g]=i(E),[c,I]=i(0),[T,h]=i(),[x,d]=i(!1),[a,o]=i({nodeRadius:4,strokeWidth:4,annoDetails:{visible:!1},labelInfo:{visible:!1},annoStats:{visible:!1},layoutOffset:{left:20,top:0,bottom:5,right:5},imgBarVisible:!0,imgLabelInputVisible:!1,centerCanvasInContainer:!0,maxCanvas:!0}),b=G();l(()=>{v()},[e.layoutUpdate]),l(()=>{},[S]),l(()=>{e.annos?g(e.annos):g({...E})},[e.annos]),l(()=>{typeof e.fullscreen=="boolean"&&s!==e.fullscreen&&f(e.fullscreen)},[e.fullscreen]),l(()=>{s!==void 0&&O(s)},[s]),l(()=>{d(!0),o({...a,...e.uiConfig})},[e.uiConfig]),l(()=>{x?d(!1):e.onCanvasEvent&&e.onCanvasEvent(A,a)},[a]);const v=()=>{I(c+1)},B=(n,t,u)=>{e.onAnnoEvent&&e.onAnnoEvent(n,t,u)},D=n=>{e.onNotification&&e.onNotification(n)},_=n=>{e.onCanvasKeyDown&&e.onCanvasKeyDown(n)},r=(n,t)=>{switch(n){case w:h(t);break;case A:o({...a,...t});break}e.onCanvasEvent&&e.onCanvasEvent(n,t)},y=n=>{e.onGetFunction&&e.onGetFunction(n)},N=(n,t)=>{e.onAnnoSaveEvent&&e.onAnnoSaveEvent(n,t)},O=n=>{n?(m("sia-fullscreen"),o({...a,layoutOffset:{...a.layoutOffset,left:50,top:5}}),v()):(m(""),o({...a,layoutOffset:{...a.layoutOffset,left:20,top:0}}),v())},U=()=>{f(!s)},L=(n,t)=>{switch(n){case J:U();break;case H:o({...a,annoDetails:{...a.annoDetails,visible:!a.annoDetails.visible}});break;case V:o({...a,labelInfo:{...a.labelInfo,visible:!a.labelInfo.visible}});break;case M:o({...a,annoStats:{...a.annoStats,visible:!a.annoStats.visible}});break;case K:o({...a,strokeWidth:t});break;case W:o({...a,nodeRadius:t});break}e.onToolBarEvent&&e.onToolBarEvent(n,t)};return e.canvasConfig.tools,F("div",{className:`sia-app ${k}`,ref:b,children:[C(R,{container:b,onAnnoEvent:(n,t,u)=>B(n,t,u),onNotification:n=>D(n),onKeyDown:n=>_(n),onCanvasEvent:(n,t)=>r(n,t),onGetAnnoExample:n=>e.onGetAnnoExample?e.onGetAnnoExample(n):{},onGetFunction:n=>y(n),onAnnoSaveEvent:n=>N(n),annoSaveResponse:e.annoSaveResponse,canvasConfig:e.canvasConfig,uiConfig:a,annos:S,annoTaskId:e.annoTaskId,imageMeta:e.imageMeta,imageBlob:e.imageBlob,possibleLabels:e.possibleLabels,exampleImg:e.exampleImg,lockedAnnos:e.lockedAnnos,layoutUpdate:c,selectedTool:e.selectedTool,isJunk:e.isJunk,blocked:e.blockCanvas,defaultLabel:e.defaultLabel,preventScrolling:e.preventScrolling,isImageChanging:e.isImageChanging,isStaticPosition:e.isStaticPosition,fixedImageSize:e.fixedImageSize,samPoints:e.samPoints||[],onSamPointClick:e.onSamPointClick,samBBox:e.samBBox||null,onUpdateSamBBox:e.onUpdateSamBBox}),C(P,{onToolBarEvent:(n,t)=>L(n,t),imageMeta:e.imageMeta,layoutUpdate:c,svg:T,active:{isJunk:e.isJunk,selectedTool:e.selectedTool,fullscreen:e.fullscreenMode},enabled:e.toolbarEnabled,canvasConfig:e.canvasConfig,uiConfig:a,filter:e.filter,onImgageSearchClicked:()=>{if(e.onImgageSearchClicked)return e.onImgageSearchClicked()}})]})};export{Z as default};