UNPKG

lost-sia

Version:

Single Image Annotation Tool

2 lines (1 loc) 3.72 kB
import{jsx as d,jsxs as J}from"react/jsx-runtime";import{useRef as dn,useState as s,useEffect as f}from"react";import{CSpinner as P}from"@coreui/react";import ln from"./Canvas/Canvas.js";import cn from"./models/AnnotationTool.js";import fn from"./Toolbar/Toolbar.js";import un from"./models/AnnotationMode.js";import In from"./models/AnnotationStatus.js";const gn=({additionalButtons:W,allowedTools:h,polygonOperationResult:l={annotationsToDelete:[],polygonsToCreate:[]},annotationSettings:A,uiConfig:x,defaultAnnotationTool:g,defaultLabelId:q,image:u,isLoading:w=!1,isPolygonSelectionMode:y=!1,initialAnnotations:S=[],initialImageLabelIds:_=[],initialIsImageJunk:z=!1,possibleLabels:b,onAnnoCreated:H=(c,I)=>{},onAnnoCreationFinished:M=(c,I)=>{},onAnnoChanged:V=(c,I)=>{},onAnnoDeleted:G=(c,I)=>{},onImageLabelsChanged:K=()=>{},onIsImageJunk:Q=()=>{},onNotification:X=c=>{},onSelectAnnotation:Y=c=>{}})=>{const I=dn(null),[D,E]=s(),[i,a]=s([]),[k,Z]=s(),[$,R]=s(),[r,C]=s(),[j,N]=s(g!==void 0?g:cn.Point),[O,mn]=s({height:"100%"}),[nn,p]=s(_),[B,F]=s(),[T,tn]=s(!1),[L,U]=s([]),v=n=>{const t=i.findIndex(m=>m.internalId===n),e=[...i],o=e.splice(t,1)[0];a(e),G(o,e)},en=()=>{r!==void 0&&v(r.internalId)},on=()=>{let n=0;const t=S.map(e=>({...e,internalId:n++,mode:un.VIEW,selectedNode:1,status:e.status,annoTime:e.annoTime!==void 0?e.annoTime:0}));U([...Array(n).keys()]),a(t)},sn=()=>{let n=0;for(;L.includes(n);)n++;const t=[...L];return t.push(n),U(t),n};f(()=>{u===void 0&&(a([]),C(void 0))},[u]),f(()=>{F(z),!(u!==void 0||S.length===0)&&on()},[S]),f(()=>{p(_)},[_]),f(()=>{const t={...{canCreate:!0,canEdit:!0,canHaveMultipleLabels:!1,canLabel:!0,minimalArea:250},...A};Z(t)},[A]),f(()=>{const t={...{nodeRadius:4,strokeWidth:4,imageCentered:!1},...x};R(t)},[x]),f(()=>{const n={bbox:!0,point:!0,line:!0,junk:!0,polygon:!0};if(h===void 0)return E(n);E(h)},[h]);const an={position:"fixed",top:0,left:0,zIndex:6e3,backgroundColor:"#ffff",width:"100%",height:"100%",padding:15};return D===void 0?d("div",{className:"d-flex justify-content-center",children:d(P,{color:"primary",style:{width:"5rem",height:"5rem"}})}):J("div",{style:{...T?an:{},width:"100%",height:"100%"},children:[d("div",{ref:I,style:{marginBottom:10},children:d(fn,{annotationSettings:k,allowedTools:D,additionalButtons:W,isDisabled:w,isFullscreen:T,isImageJunk:B,imageLabelIds:nn,possibleLabels:b,selectedTool:j,onImageLabelsChanged:n=>{p(n),K(n)},onSetIsFullscreen:tn,onSetIsImageJunk:n=>{F(n),Q(n)},onSetSelectedTool:N,onShouldDeleteSelectedAnnotation:en})}),J("div",{style:O,children:[w&&d("div",{className:"d-flex justify-content-center",children:d(P,{color:"primary",style:{width:"5rem",height:"5rem",marginTop:200}})}),u&&i&&d(ln,{annotations:i,annotationSettings:k,defaultLabelId:q,image:u,isFullscreen:T,isImageJunk:B,isPolygonSelectionMode:y,selectedAnnotation:r,selectedAnnoTool:j,polygonOperationResult:l,possibleLabels:b,uiConfig:$,onAnnoCreated:n=>{const t=[...i];t.push(n),a(t),C(n),H(n,t)},onAnnoChanged:n=>{const t=i.findIndex(o=>o.internalId===n.internalId);if(t===-1)return;const e=[...i];e[t]=n,a(e),V(n,e)},onAnnoCreationFinished:(n,t)=>{const e=[...i];if(y&&(l==null?void 0:l.annotationsToDelete)!==void 0&&(l.annotationsToDelete.push(r),l.annotationsToDelete.forEach(o=>{v(o.internalId);const m=e.findIndex(rn=>rn.internalId===o.internalId);e.splice(m,1)})),t)e.push(n);else{const o=i.findIndex(m=>m.internalId===n.internalId);e[o]=n}a(e),n.status=In.CREATED,M(n,e)},onAnnoEditing:n=>{const t=[...i],e=t.findIndex(o=>o.internalId===(r==null?void 0:r.internalId));t[e]=n,a(t)},onNotification:X,onRequestNewAnnoId:sn,onSelectAnnotation:n=>{C(n),Y(n)},onSetSelectedTool:N,onShouldDeleteAnno:v})]})]})};export{gn as default};