@labelbee/lb-components 1.23.0-alpha.59 → 1.23.0-alpha.60

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.
@@ -14,9 +14,10 @@ export declare enum EPointCloudBoxSingleModifiedType {
14
14
  ChangeAttribute = "ChangeAttribute",
15
15
  Move = "Move",
16
16
  ChangeDepth = "ChangeDepth",
17
- ChangeSize = "ChangeSize"
17
+ ChangeSize = "ChangeSize",
18
+ ToggleValid = "ToggleValid"
18
19
  }
19
20
  export declare const calcResetAreasAndBoxIds: (trigger: EPointCloudBoxRenderTrigger, newList: IPointCloudBox[], oldList: IPointCloudBox[]) => {
20
- resetAreas: ICoordinate[][];
21
21
  modifiedBoxIds: string[];
22
+ resetAreas: ICoordinate[][];
22
23
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var lbAnnotation=require("@labelbee/lb-annotation"),__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));exports.EPointCloudBoxRenderTrigger=void 0,function(e){e.Default="Default",e.UndoRedo="UndoRedo",e.ClearAll="ClearAll",e.Single="Single",e.SingleDelete="SingleDelete",e.SingleToggleValid="SingleToggleValid",e.SingleRotate="SingleRotate",e.MultiPaste="MultiPaste",e.MultiMove="MultiMove"}(exports.EPointCloudBoxRenderTrigger||(exports.EPointCloudBoxRenderTrigger={})),exports.EPointCloudBoxSingleModifiedType=void 0,function(e){e.ChangeAttribute="ChangeAttribute",e.Move="Move",e.ChangeDepth="ChangeDepth",e.ChangeSize="ChangeSize"}(exports.EPointCloudBoxSingleModifiedType||(exports.EPointCloudBoxSingleModifiedType={}));const getExternalBox=e=>{const o=Math.max(e.width,e.height)/Math.sqrt(2);return __spreadProps(__spreadValues({},e),{width:o*2,height:o*2})},checkRectanglesIntersect=(e,t)=>{const o=getAxes(e).concat(getAxes(t));for(const n of o){const r=projectRectangle(e,n),i=projectRectangle(t,n);if(!projectionsOverlap(r,i))return!1}return!0},getAxes=e=>{const t=[];for(let o=0;o<e.length;o++){const n=e[o],r=e[(o+1)%e.length],i={x:r.x-n.x,y:r.y-n.y},s={x:-i.y,y:i.x};t.push(s)}return t},projectRectangle=(e,t)=>{let o=dotProduct(e[0],t),n=o;for(const r of e){const i=dotProduct(r,t);i<o&&(o=i),i>n&&(n=i)}return{min:o,max:n}},projectionsOverlap=(e,t)=>!(e.max<t.min||t.max<e.min),dotProduct=(e,t)=>e.x*t.x+e.y*t.y,getIntersectingBoxIds=(e,t)=>{const o=[];return t.forEach(n=>{const{polygonPointList:r}=lbAnnotation.getCuboidFromPointCloudBox(n);checkRectanglesIntersect(e,r)&&o.push(n.id)}),o},getAddBoxId=(e,t)=>{const o=e.map(r=>r.id),n=t.map(r=>r.id);return o.find(r=>!n.includes(r))||""},getDeletedBox=(e,t)=>{const o=e.map(n=>n.id);return t.find(n=>!o.includes(n.id))},getRotationModifiedOrValidChangedBox=(e,t)=>e.find(n=>{const r=t.find(i=>i.id===n.id);return r&&(r.rotation!==n.rotation||r.valid!==n.valid)}),getIntersectingBoxIdsOfExternalBox=(e,t)=>{const o=getExternalBox(e),n=lbAnnotation.getCuboidFromPointCloudBox(o);return{ids:getIntersectingBoxIds(n.polygonPointList,t.filter(i=>i.id!==e.id)),rect:n.polygonPointList}},getModifiedBox=(e,t)=>{const o=(n,r)=>n.attribute===r.attribute&&n.center.x===r.center.x&&n.center.y===r.center.y&&n.depth===r.depth&&n.width===r.width&&n.height===r.height;for(const n of e){const r=t.find(i=>i.id===n.id);if(r&&!o(n,r)){let i;if(r.attribute!==n.attribute?i=exports.EPointCloudBoxSingleModifiedType.ChangeAttribute:r.center.x!==n.center.x||r.center.y!==n.center.y?i=exports.EPointCloudBoxSingleModifiedType.Move:r.depth!==n.depth?i=exports.EPointCloudBoxSingleModifiedType.ChangeDepth:(r.width!==n.width||r.height!==n.height)&&(i=exports.EPointCloudBoxSingleModifiedType.ChangeSize),i!==void 0)return{modifiedType:i,box:n}}}},calcResetAreasAndBoxIds=(e,t,o)=>{const n=[],r=[];try{switch(e){case exports.EPointCloudBoxRenderTrigger.Single:if(t.length>o.length){const i=getAddBoxId(t,o);i&&r.push(i)}else{const i=getModifiedBox(t,o);if(i&&(r.push(i.box.id),t.length>1&&(i.modifiedType===exports.EPointCloudBoxSingleModifiedType.ChangeSize||i.modifiedType===exports.EPointCloudBoxSingleModifiedType.Move))){const s=o.find(a=>a.id===i.box.id),d=o.filter(a=>a.id!==i.box.id),{ids:c,rect:l}=getIntersectingBoxIdsOfExternalBox(s,d);r.push(...c),n.push(l)}}break;case exports.EPointCloudBoxRenderTrigger.SingleDelete:if(t.length<o.length){const i=getDeletedBox(t,o);if(i){const s=lbAnnotation.getCuboidFromPointCloudBox(i);if(n.push(s.polygonPointList),t.length>1){const{ids:d}=getIntersectingBoxIdsOfExternalBox(i,o);d.length&&r.push(...d)}}}break;case exports.EPointCloudBoxRenderTrigger.SingleRotate:if(getRotationModifiedOrValidChangedBox(t,o)){const i=getRotationModifiedOrValidChangedBox(t,o);if(r.push(i.id),t.length>1){const s=o.filter(l=>l.id!==i.id),{ids:d,rect:c}=getIntersectingBoxIdsOfExternalBox(i,s);r.push(...d),n.push(c)}}break;case exports.EPointCloudBoxRenderTrigger.SingleToggleValid:if(getRotationModifiedOrValidChangedBox(t,o)){const i=getRotationModifiedOrValidChangedBox(t,o);r.push(i.id)}break;case exports.EPointCloudBoxRenderTrigger.MultiPaste:case exports.EPointCloudBoxRenderTrigger.MultiMove:break;case exports.EPointCloudBoxRenderTrigger.Default:case exports.EPointCloudBoxRenderTrigger.UndoRedo:case exports.EPointCloudBoxRenderTrigger.ClearAll:default:break}}catch(i){return console.error("calcResetAreasAndBoxIds error:",i),{resetAreas:n,modifiedBoxIds:r}}return{resetAreas:n,modifiedBoxIds:r}};exports.calcResetAreasAndBoxIds=calcResetAreasAndBoxIds;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var lbAnnotation=require("@labelbee/lb-annotation");exports.EPointCloudBoxRenderTrigger=void 0,function(t){t.Default="Default",t.UndoRedo="UndoRedo",t.ClearAll="ClearAll",t.Single="Single",t.SingleDelete="SingleDelete",t.SingleToggleValid="SingleToggleValid",t.SingleRotate="SingleRotate",t.MultiPaste="MultiPaste",t.MultiMove="MultiMove"}(exports.EPointCloudBoxRenderTrigger||(exports.EPointCloudBoxRenderTrigger={})),exports.EPointCloudBoxSingleModifiedType=void 0,function(t){t.ChangeAttribute="ChangeAttribute",t.Move="Move",t.ChangeDepth="ChangeDepth",t.ChangeSize="ChangeSize",t.ToggleValid="ToggleValid"}(exports.EPointCloudBoxSingleModifiedType||(exports.EPointCloudBoxSingleModifiedType={}));const checkRectanglesIntersect=(t,n)=>{const i=getAxes(t).concat(getAxes(n));for(const e of i){const o=projectRectangle(t,e),r=projectRectangle(n,e);if(!projectionsOverlap(o,r))return!1}return!0},getAxes=t=>{const n=[];for(let i=0;i<t.length;i++){const e=t[i],o=t[(i+1)%t.length],r={x:o.x-e.x,y:o.y-e.y},d={x:-r.y,y:r.x};n.push(d)}return n},projectRectangle=(t,n)=>{let i=dotProduct(t[0],n),e=i;for(const o of t){const r=dotProduct(o,n);r<i&&(i=r),r>e&&(e=r)}return{min:i,max:e}},projectionsOverlap=(t,n)=>!(t.max<n.min||n.max<t.min),dotProduct=(t,n)=>t.x*n.x+t.y*n.y,getIntersectingBoxIds=(t,n)=>{const i=[];return n.forEach(e=>{const{polygonPointList:o}=lbAnnotation.getCuboidFromPointCloudBox(e);checkRectanglesIntersect(t,o)&&i.push(e.id)}),i},getAddBoxId=(t,n)=>{const i=t.map(o=>o.id),e=n.map(o=>o.id);return i.find(o=>!e.includes(o))||""},getDeletedBox=(t,n)=>{const i=t.map(e=>e.id);return n.find(e=>!i.includes(e.id))},getValidChangedBox=(t,n)=>t.find(e=>{const o=n.find(r=>r.id===e.id);return o&&o.valid!==e.valid}),getRotationChangedBox=(t,n)=>t.find(e=>{const o=n.find(r=>r.id===e.id);return o&&o.rotation!==e.rotation}),getIntersectingBoxIdsOfBox=(t,n)=>{const{polygonPointList:i}=lbAnnotation.getCuboidFromPointCloudBox(t);return{ids:getIntersectingBoxIds(i,n.filter(o=>o.id!==t.id)),rect:i}},getModifiedBox=(t,n)=>{const i=(e,o)=>e.attribute===o.attribute&&e.center.x===o.center.x&&e.center.y===o.center.y&&e.depth===o.depth&&e.width===o.width&&e.height===o.height;for(const e of t){const o=n.find(r=>r.id===e.id);if(o&&!i(e,o)){let r;if(o.attribute!==e.attribute?r=exports.EPointCloudBoxSingleModifiedType.ChangeAttribute:o.center.x!==e.center.x||o.center.y!==e.center.y?r=exports.EPointCloudBoxSingleModifiedType.Move:o.depth!==e.depth?r=exports.EPointCloudBoxSingleModifiedType.ChangeDepth:(o.width!==e.width||o.height!==e.height)&&(r=exports.EPointCloudBoxSingleModifiedType.ChangeSize),r!==void 0)return{modifiedType:r,box:e}}}},calcResetAreasAndBoxIds=(t,n,i)=>{try{switch(t){case exports.EPointCloudBoxRenderTrigger.Single:if(n.length>i.length){const e=getAddBoxId(n,i);return e?{modifiedBoxIds:[e],resetAreas:[]}:{modifiedBoxIds:[],resetAreas:[]}}else{const e=[],o=[],r=getModifiedBox(n,i);if(r&&(e.push(r.box.id),r.modifiedType===exports.EPointCloudBoxSingleModifiedType.ChangeSize||r.modifiedType===exports.EPointCloudBoxSingleModifiedType.Move)){const d=i.find(l=>l.id===r.box.id),{ids:s,rect:c}=getIntersectingBoxIdsOfBox(d,n);e.push(...s),o.push(c)}return{modifiedBoxIds:e,resetAreas:o}}case exports.EPointCloudBoxRenderTrigger.SingleDelete:if(n.length<i.length){const e=getDeletedBox(n,i);if(e){const r=[lbAnnotation.getCuboidFromPointCloudBox(e).polygonPointList],d=[];if(n.length>1){const{ids:s}=getIntersectingBoxIdsOfBox(e,n);s.length&&d.push(...s)}return{modifiedBoxIds:d,resetAreas:r}}return{modifiedBoxIds:[],resetAreas:[]}}return{modifiedBoxIds:[],resetAreas:[]};case exports.EPointCloudBoxRenderTrigger.SingleRotate:if(getRotationChangedBox(n,i)){const e=getRotationChangedBox(n,i);if(e){const o=i.find(s=>s.id===e.id),{ids:r,rect:d}=getIntersectingBoxIdsOfBox(o,n);return{modifiedBoxIds:[e.id,...r],resetAreas:[d]}}}return{modifiedBoxIds:[],resetAreas:[]};case exports.EPointCloudBoxRenderTrigger.SingleToggleValid:if(getValidChangedBox(n,i)){const e=getValidChangedBox(n,i);return e?{modifiedBoxIds:[e.id],resetAreas:[]}:{modifiedBoxIds:[],resetAreas:[]}}return{modifiedBoxIds:[],resetAreas:[]};case exports.EPointCloudBoxRenderTrigger.MultiPaste:case exports.EPointCloudBoxRenderTrigger.MultiMove:case exports.EPointCloudBoxRenderTrigger.Default:case exports.EPointCloudBoxRenderTrigger.UndoRedo:case exports.EPointCloudBoxRenderTrigger.ClearAll:default:return{modifiedBoxIds:[],resetAreas:[]}}}catch(e){return console.error("calcResetAreasAndBoxIds error:",e),{modifiedBoxIds:[],resetAreas:[]}}};exports.calcResetAreasAndBoxIds=calcResetAreasAndBoxIds;
@@ -1 +1 @@
1
- import{getCuboidFromPointCloudBox as p}from"@labelbee/lb-annotation";var I=Object.defineProperty,_=Object.defineProperties,M=Object.getOwnPropertyDescriptors,x=Object.getOwnPropertySymbols,S=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable,m=(e,t,n)=>t in e?I(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,b=(e,t)=>{for(var n in t||(t={}))S.call(t,n)&&m(e,n,t[n]);if(x)for(var n of x(t))O.call(t,n)&&m(e,n,t[n]);return e},A=(e,t)=>_(e,M(t)),s;(function(e){e.Default="Default",e.UndoRedo="UndoRedo",e.ClearAll="ClearAll",e.Single="Single",e.SingleDelete="SingleDelete",e.SingleToggleValid="SingleToggleValid",e.SingleRotate="SingleRotate",e.MultiPaste="MultiPaste",e.MultiMove="MultiMove"})(s||(s={}));var c;(function(e){e.ChangeAttribute="ChangeAttribute",e.Move="Move",e.ChangeDepth="ChangeDepth",e.ChangeSize="ChangeSize"})(c||(c={}));const D=e=>{const n=Math.max(e.width,e.height)/Math.sqrt(2);return A(b({},e),{width:n*2,height:n*2})},P=(e,t)=>{const n=v(e).concat(v(t));for(const o of n){const r=y(e,o),i=y(t,o);if(!C(r,i))return!1}return!0},v=e=>{const t=[];for(let n=0;n<e.length;n++){const o=e[n],r=e[(n+1)%e.length],i={x:r.x-o.x,y:r.y-o.y},a={x:-i.y,y:i.x};t.push(a)}return t},y=(e,t)=>{let n=B(e[0],t),o=n;for(const r of e){const i=B(r,t);i<n&&(n=i),i>o&&(o=i)}return{min:n,max:o}},C=(e,t)=>!(e.max<t.min||t.max<e.min),B=(e,t)=>e.x*t.x+e.y*t.y,j=(e,t)=>{const n=[];return t.forEach(o=>{const{polygonPointList:r}=p(o);P(e,r)&&n.push(o.id)}),n},w=(e,t)=>{const n=e.map(r=>r.id),o=t.map(r=>r.id);return n.find(r=>!o.includes(r))||""},R=(e,t)=>{const n=e.map(o=>o.id);return t.find(o=>!n.includes(o.id))},l=(e,t)=>e.find(o=>{const r=t.find(i=>i.id===o.id);return r&&(r.rotation!==o.rotation||r.valid!==o.valid)}),u=(e,t)=>{const n=D(e),o=p(n);return{ids:j(o.polygonPointList,t.filter(i=>i.id!==e.id)),rect:o.polygonPointList}},k=(e,t)=>{const n=(o,r)=>o.attribute===r.attribute&&o.center.x===r.center.x&&o.center.y===r.center.y&&o.depth===r.depth&&o.width===r.width&&o.height===r.height;for(const o of e){const r=t.find(i=>i.id===o.id);if(r&&!n(o,r)){let i;if(r.attribute!==o.attribute?i=c.ChangeAttribute:r.center.x!==o.center.x||r.center.y!==o.center.y?i=c.Move:r.depth!==o.depth?i=c.ChangeDepth:(r.width!==o.width||r.height!==o.height)&&(i=c.ChangeSize),i!==void 0)return{modifiedType:i,box:o}}}},V=(e,t,n)=>{const o=[],r=[];try{switch(e){case s.Single:if(t.length>n.length){const i=w(t,n);i&&r.push(i)}else{const i=k(t,n);if(i&&(r.push(i.box.id),t.length>1&&(i.modifiedType===c.ChangeSize||i.modifiedType===c.Move))){const a=n.find(g=>g.id===i.box.id),d=n.filter(g=>g.id!==i.box.id),{ids:h,rect:f}=u(a,d);r.push(...h),o.push(f)}}break;case s.SingleDelete:if(t.length<n.length){const i=R(t,n);if(i){const a=p(i);if(o.push(a.polygonPointList),t.length>1){const{ids:d}=u(i,n);d.length&&r.push(...d)}}}break;case s.SingleRotate:if(l(t,n)){const i=l(t,n);if(r.push(i.id),t.length>1){const a=n.filter(f=>f.id!==i.id),{ids:d,rect:h}=u(i,a);r.push(...d),o.push(h)}}break;case s.SingleToggleValid:if(l(t,n)){const i=l(t,n);r.push(i.id)}break;case s.MultiPaste:case s.MultiMove:break;case s.Default:case s.UndoRedo:case s.ClearAll:default:break}}catch(i){return console.error("calcResetAreasAndBoxIds error:",i),{resetAreas:o,modifiedBoxIds:r}}return{resetAreas:o,modifiedBoxIds:r}};export{s as EPointCloudBoxRenderTrigger,c as EPointCloudBoxSingleModifiedType,V as calcResetAreasAndBoxIds};
1
+ import{getCuboidFromPointCloudBox as l}from"@labelbee/lb-annotation";var i;(function(t){t.Default="Default",t.UndoRedo="UndoRedo",t.ClearAll="ClearAll",t.Single="Single",t.SingleDelete="SingleDelete",t.SingleToggleValid="SingleToggleValid",t.SingleRotate="SingleRotate",t.MultiPaste="MultiPaste",t.MultiMove="MultiMove"})(i||(i={}));var d;(function(t){t.ChangeAttribute="ChangeAttribute",t.Move="Move",t.ChangeDepth="ChangeDepth",t.ChangeSize="ChangeSize",t.ToggleValid="ToggleValid"})(d||(d={}));const p=(t,o)=>{const s=g(t).concat(g(o));for(const e of s){const n=h(t,e),r=h(o,e);if(!A(n,r))return!1}return!0},g=t=>{const o=[];for(let s=0;s<t.length;s++){const e=t[s],n=t[(s+1)%t.length],r={x:n.x-e.x,y:n.y-e.y},c={x:-r.y,y:r.x};o.push(c)}return o},h=(t,o)=>{let s=u(t[0],o),e=s;for(const n of t){const r=u(n,o);r<s&&(s=r),r>e&&(e=r)}return{min:s,max:e}},A=(t,o)=>!(t.max<o.min||o.max<t.min),u=(t,o)=>t.x*o.x+t.y*o.y,y=(t,o)=>{const s=[];return o.forEach(e=>{const{polygonPointList:n}=l(e);p(t,n)&&s.push(e.id)}),s},v=(t,o)=>{const s=t.map(n=>n.id),e=o.map(n=>n.id);return s.find(n=>!e.includes(n))||""},S=(t,o)=>{const s=t.map(e=>e.id);return o.find(e=>!s.includes(e.id))},x=(t,o)=>t.find(e=>{const n=o.find(r=>r.id===e.id);return n&&n.valid!==e.valid}),B=(t,o)=>t.find(e=>{const n=o.find(r=>r.id===e.id);return n&&n.rotation!==e.rotation}),f=(t,o)=>{const{polygonPointList:s}=l(t);return{ids:y(s,o.filter(n=>n.id!==t.id)),rect:s}},M=(t,o)=>{const s=(e,n)=>e.attribute===n.attribute&&e.center.x===n.center.x&&e.center.y===n.center.y&&e.depth===n.depth&&e.width===n.width&&e.height===n.height;for(const e of t){const n=o.find(r=>r.id===e.id);if(n&&!s(e,n)){let r;if(n.attribute!==e.attribute?r=d.ChangeAttribute:n.center.x!==e.center.x||n.center.y!==e.center.y?r=d.Move:n.depth!==e.depth?r=d.ChangeDepth:(n.width!==e.width||n.height!==e.height)&&(r=d.ChangeSize),r!==void 0)return{modifiedType:r,box:e}}}},D=(t,o,s)=>{try{switch(t){case i.Single:if(o.length>s.length){const e=v(o,s);return e?{modifiedBoxIds:[e],resetAreas:[]}:{modifiedBoxIds:[],resetAreas:[]}}else{const e=[],n=[],r=M(o,s);if(r&&(e.push(r.box.id),r.modifiedType===d.ChangeSize||r.modifiedType===d.Move)){const c=s.find(m=>m.id===r.box.id),{ids:a,rect:I}=f(c,o);e.push(...a),n.push(I)}return{modifiedBoxIds:e,resetAreas:n}}case i.SingleDelete:if(o.length<s.length){const e=S(o,s);if(e){const r=[l(e).polygonPointList],c=[];if(o.length>1){const{ids:a}=f(e,o);a.length&&c.push(...a)}return{modifiedBoxIds:c,resetAreas:r}}return{modifiedBoxIds:[],resetAreas:[]}}return{modifiedBoxIds:[],resetAreas:[]};case i.SingleRotate:if(B(o,s)){const e=B(o,s);if(e){const n=s.find(a=>a.id===e.id),{ids:r,rect:c}=f(n,o);return{modifiedBoxIds:[e.id,...r],resetAreas:[c]}}}return{modifiedBoxIds:[],resetAreas:[]};case i.SingleToggleValid:if(x(o,s)){const e=x(o,s);return e?{modifiedBoxIds:[e.id],resetAreas:[]}:{modifiedBoxIds:[],resetAreas:[]}}return{modifiedBoxIds:[],resetAreas:[]};case i.MultiPaste:case i.MultiMove:case i.Default:case i.UndoRedo:case i.ClearAll:default:return{modifiedBoxIds:[],resetAreas:[]}}}catch(e){return console.error("calcResetAreasAndBoxIds error:",e),{modifiedBoxIds:[],resetAreas:[]}}};export{i as EPointCloudBoxRenderTrigger,d as EPointCloudBoxSingleModifiedType,D as calcResetAreasAndBoxIds};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@labelbee/lb-components",
3
- "version": "1.23.0-alpha.59",
3
+ "version": "1.23.0-alpha.60",
4
4
  "description": "Provide a complete library of annotation components",
5
5
  "main": "./dist/index.js",
6
6
  "es": "./es/index.js",
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "@ant-design/icons": "^4.6.2",
46
- "@labelbee/lb-annotation": "1.27.0-alpha.30",
46
+ "@labelbee/lb-annotation": "1.27.0-alpha.31",
47
47
  "@labelbee/lb-utils": "1.19.0-alpha.18",
48
48
  "@labelbee/wavesurfer": "1.0.0",
49
49
  "@types/react-dom": "^18.2.7",