UNPKG

lost-sia

Version:

Single Image Annotation Tool

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