seg-cam 1.1.0 → 1.1.1
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/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
- package/public/jersey-detector-worker.js +14 -1
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Me=Object.create;var V=Object.defineProperty;var Ce=Object.getOwnPropertyDescriptor;var We=Object.getOwnPropertyNames,ge=Object.getOwnPropertySymbols,Se=Object.getPrototypeOf,
|
|
1
|
+
"use strict";var Me=Object.create;var V=Object.defineProperty;var Ce=Object.getOwnPropertyDescriptor;var We=Object.getOwnPropertyNames,ge=Object.getOwnPropertySymbols,Se=Object.getPrototypeOf,ye=Object.prototype.hasOwnProperty,xe=Object.prototype.propertyIsEnumerable;var pe=(e,r,t)=>r in e?V(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,he=(e,r)=>{for(var t in r||(r={}))ye.call(r,t)&&pe(e,t,r[t]);if(ge)for(var t of ge(r))xe.call(r,t)&&pe(e,t,r[t]);return e};var Oe=(e,r)=>{for(var t in r)V(e,t,{get:r[t],enumerable:!0})},Te=(e,r,t,T)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of We(r))!ye.call(e,i)&&i!==t&&V(e,i,{get:()=>r[i],enumerable:!(T=Ce(r,i))||T.enumerable});return e};var Be=(e,r,t)=>(t=e!=null?Me(Se(e)):{},Te(r||!e||!e.__esModule?V(t,"default",{value:e,enumerable:!0}):t,e)),Ne=e=>Te(V({},"__esModule",{value:!0}),e);var S=(e,r,t)=>new Promise((T,i)=>{var x=f=>{try{k(t.next(f))}catch(b){i(b)}},I=f=>{try{k(t.throw(f))}catch(b){i(b)}},k=f=>f.done?T(f.value):Promise.resolve(f.value).then(x,I);k((t=t.apply(e,r)).next())});var Je={};Oe(Je,{DEFAULT_CONFIG:()=>d,JerseyDetector:()=>ie,useJerseyWorker:()=>Z});module.exports=Ne(Je);var s=require("react");var y=require("react");var p=null,C=!1,j=null,oe=0,se=null,D=new Map,Ae=0,Q=new Map;function Z(e,r){let t=(0,y.useRef)(!1),[T,i]=(0,y.useState)(!1),[x,I]=(0,y.useState)(null),k=(0,y.useRef)(!0),f=(0,y.useRef)(!1),b=(0,y.useRef)(`instance_${Math.random().toString(36).substr(2,9)}`),O=(0,y.useRef)(0);(0,y.useEffect)(()=>{var _;if(!e)return;k.current=!0,O.current++;let v=O.current,W=b.current,B=(_=Q.get(W))!=null?_:0;return v>B&&(oe++,Q.set(W,v)),S(null,null,function*(){var h;if(!p||!He(se,e)){p&&(p.terminate(),p=null,C=!1,console.log("[v0 useJerseyWorker] Worker terminated because of change in config"));try{f.current=(h=e.verbose)!=null?h:f.current;let m=r||"/jersey-detector-worker.js";p=new Worker(m),se=e,C=!1,j=null,i(!1),I(null),p.onmessage=g=>{let c=g.data;switch(c.type){case"ready":C=!0,i(!0),f.current&&console.log("[v0 useJerseyWorker] Worker Ready",{device:c.device,dtype:c.dtype,config:c.config});break;case"loading_progress":f.current&&console.log(`[v0 useJerseyWorker] Loaded ${c.progress}% of ${c.file}`);break;case"debug":f.current&&console.log(c.debug_message);break;case"error":let P=c.error_message||"Unknown worker error";console.error("[v0 useJerseyWorker] Worker sent error message:",P),C=!1,j=P,i(!1),I(P);break;case"detect_response":if(c.requestId&&D.has(c.requestId)){let l=D.get(c.requestId);l&&(l.resolve(c),D.delete(c.requestId))}else if(D.size>0){let l=D.entries().next();if(!l.done){let[ee,N]=l.value;N.resolve(c),D.delete(ee)}}break}},p.onerror=g=>{let c=g.message||"Worker initialization error";console.error("[useJerseyWorker] Worker error:",c),C=!1,j=c,i(!1),I(c)},p.postMessage({type:"init",config:e})}catch(m){let g=(m==null?void 0:m.message)||String(m);console.error("[useJerseyWorker] Failed to create worker:",g),i(!1),I(g)}}else i(C),I(j)}),()=>{k.current=!1;let h=b.current,m=Q.get(h),g=O.current;m===g&&(oe--,Q.delete(h),oe<=0&&p&&(p.terminate(),p=null,C=!1,j=null,se=null,D.clear()))}},[]);let Y=(0,y.useCallback)((v,W,B=.5)=>S(null,null,function*(){if(!p||!C)throw new Error("Worker not ready");if(t.current)return null;let R=`req_${++Ae}_${Date.now()}`;return new Promise((_,h)=>{D.set(R,{resolve:_,reject:h});try{t.current=!0,p.postMessage({type:"detect",requestId:R,dimensions:W,bitmap:v,threshold:B},[v])}catch(m){D.delete(R);let g=`Failed to send detect: ${m==null?void 0:m.message}`;h(new Error(g))}finally{t.current=!1}setTimeout(()=>{D.has(R)&&(D.delete(R),h(new Error("Detection timeout")))},1e4)})}),[T]);return{isReady:T,workerReady:T,lastError:x,detect:Y}}function He(e,r){return e?JSON.stringify(e)===JSON.stringify(r):!1}var d={TASK:"image-segmentation",MODEL:"BodyPix",BODYPIX_ARCHITECTURE:"MobileNetV1",BODYPIX_MULTIPLIER:.75,BODYPIX_QUANT_BYTES:2,BODYPIX_STRIDE:16,MULTI_SEGMENTATION:!0,SEGMENT_BODY_PARTS:!0,BACKGROUND_SHADE:0,SHIRT_SHADE:170,DETECTION_THRESHOLD:.5,TARGET_PART_ID:12,IMAGES_TO_RETURN:"mask",VERBOSE:!1,MIN_DETECTION_AREA:1e4};var Ee=Be(require("p-limit"));var De=require("react/jsx-runtime"),ie=(0,s.forwardRef)(({videoRef:e,onWorkerReady:r,onWorkerError:t,onStatsUpdate:T,onSegmentedImage:i,task:x=d.TASK,model:I=d.MODEL,verbose:k=d.VERBOSE,bodyPixArchitecture:f=d.BODYPIX_ARCHITECTURE,bodyPixMultiplier:b=d.BODYPIX_MULTIPLIER,bodyPixQuantBytes:O=d.BODYPIX_QUANT_BYTES,bodyPixStride:Y=d.BODYPIX_STRIDE,multiSegmentation:v=d.MULTI_SEGMENTATION,segmentBodyParts:W=d.SEGMENT_BODY_PARTS,backgroundShade:B=d.BACKGROUND_SHADE,shirtShade:R=d.SHIRT_SHADE,threshold:_=d.DETECTION_THRESHOLD,targetPartId:h=d.TARGET_PART_ID,imagesToReturn:m=d.IMAGES_TO_RETURN,minDetectionArea:g=d.MIN_DETECTION_AREA,workerUrl:c,className:P,style:l},ee)=>{let N=(0,s.useRef)(null),L=(0,s.useRef)(null),re=(0,s.useRef)(!1),q=(0,s.useRef)([]),Ie=(0,s.useRef)(null),U=(0,s.useRef)(!1),X=(0,s.useRef)(void 0);X.current=t;let te=(0,s.useRef)({jerseyCount:0,confidence:0,fps:0,processingTime:0}),ae=(0,s.useRef)(0),ke=500,ce=5,ue=(0,s.useMemo)(()=>(0,Ee.default)(ce),[]),$=(0,s.useMemo)(()=>({task:x,model:I,verbose:k,bodyPixArchitecture:f,bodyPixMultiplier:b,bodyPixQuantBytes:O,bodyPixStride:Y,multiSegmentation:v,segmentBodyParts:W,backgroundShade:B,shirtShade:R,threshold:_,targetPartId:h,imagesToReturn:m,minDetectionArea:g,mirror:(l==null?void 0:l.transform)==="scaleX(-1)"||typeof(l==null?void 0:l.transform)=="string"&&l.transform.includes("scaleX(-1)")}),[x,I,k,f,b,O,Y,v,W,B,R,_,h,m,g,l==null?void 0:l.transform]),be=()=>{var n,a;return{width:((n=e.current)==null?void 0:n.videoWidth)||0,height:((a=e.current)==null?void 0:a.videoHeight)||0}},{isReady:A,workerReady:M,lastError:G,detect:Re}=Z($,c);(0,s.useEffect)(()=>{M&&console.log("[JerseyDetector] Worker Ready with config:",$),r==null||r(M)},[M,r,$]),(0,s.useEffect)(()=>{var n;G&&(U.current=!0,(n=X.current)==null||n.call(X,G))},[G]);let we=(0,s.useCallback)((n,a)=>{if(ue.activeCount>=ce){n.forEach(o=>{var u;return(u=o==null?void 0:o.close)==null?void 0:u.call(o)}),console.warn("[JerseyDetector] Dropped new segmented images \u2014 max 5 classifications running");return}ue(()=>S(null,null,function*(){try{i==null||i(n,a)}catch(o){console.error("[JerseyDetector] Classification error:",o)}finally{n.forEach(o=>{var u;return(u=o==null?void 0:o.close)==null?void 0:u.call(o)})}}))},[i]),ve=()=>S(null,null,function*(){var H,ne,le;let n=e.current,a=N.current;if(U.current||!A||!M||!n||!a||re.current||n.readyState<2||n.paused||n.ended||n.videoWidth===0||n.videoHeight===0)return;let o=a.getContext("2d");if(!o||a.width<=0||a.height<=0)return;let u=null,w=null;try{re.current=!0;let F=n.videoWidth,z=n.videoHeight;Ie.current={width:F,height:z},u=yield createImageBitmap(n);let _e=be(),E=yield Re(u,_e,_);if((E==null?void 0:E.type)==="detect_response"){if(m!=="none"&&((a.width!==F||a.height!==z)&&(a.width=F,a.height=z),o.clearRect(0,0,F,z),E.bitmap)){let J=E.bitmap;o.drawImage(J,0,0),console.log(`[JerseyDetector] Bitmap created with dims ${J.width}x${J.height}`),J.close()}q.current.push(Date.now()),q.current=q.current.filter(J=>Date.now()-J<1e3);let K={jerseyCount:((H=E.stats)==null?void 0:H.jerseyCount)||0,confidence:((ne=E.stats)==null?void 0:ne.confidence)||0,fps:q.current.length,processingTime:((le=E.stats)==null?void 0:le.processingTime)||0},de=te.current;te.current=K;let fe=Date.now(),me=fe-ae.current>ke||K.jerseyCount!==de.jerseyCount||K.confidence!==de.confidence;me&&T&&(T(K),ae.current=fe),me&&E.segmentedImages&&i&&we(E.segmentedImages,E.bboxes)}}catch(F){U.current=!0}finally{u==null||u.close(),re.current=!1}});return(0,s.useImperativeHandle)(ee,()=>({get isReady(){return A},get lastError(){return G},get stats(){return te.current},capture:(n="image/jpeg",a=.92)=>{let o=e.current,u=N.current;if(!o||o.videoWidth<=0||o.videoHeight<=0)throw new Error("Video not ready for capture");let w=document.createElement("canvas");w.width=o.videoWidth,w.height=o.videoHeight;let H=w.getContext("2d");if(!H)throw new Error("Failed to get context for capture canvas");let ne=$.mirror;return H.drawImage(o,0,0,w.width,w.height),u&&u.width>0&&u.height>0&&H.drawImage(u,0,0,w.width,w.height),w.toDataURL(n,a)}}),[A,G,M]),(0,s.useEffect)(()=>{if(!M||!A||U.current)return;let n=e.current,a=N.current;if(!n||!a||n.videoWidth===0||n.videoHeight===0){let u=setTimeout(()=>{L.current=requestAnimationFrame(()=>{})},100);return()=>clearTimeout(u)}(a.width!==n.videoWidth||a.height!==n.videoHeight)&&(a.width=n.videoWidth,a.height=n.videoHeight);let o=()=>S(null,null,function*(){!M||!A||U.current||(yield ve(),L.current=requestAnimationFrame(o))});return L.current=requestAnimationFrame(o),()=>{L.current&&cancelAnimationFrame(L.current)}},[M,A]),(0,De.jsx)("canvas",{ref:N,className:`absolute inset-0 pointer-events-none ${P||""}`,style:he({zIndex:10,width:"100%",height:"100%"},l)})});ie.displayName="JerseyDetector";0&&(module.exports={DEFAULT_CONFIG,JerseyDetector,useJerseyWorker});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var ve=Object.defineProperty;var me=Object.getOwnPropertySymbols;var _e=Object.prototype.hasOwnProperty,Me=Object.prototype.propertyIsEnumerable;var ge=(t,n,o)=>n in t?ve(t,n,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[n]=o,pe=(t,n)=>{for(var o in n||(n={}))_e.call(n,o)&&ge(t,o,n[o]);if(me)for(var o of me(n))Me.call(n,o)&&ge(t,o,n[o]);return t};var
|
|
1
|
+
var ve=Object.defineProperty;var me=Object.getOwnPropertySymbols;var _e=Object.prototype.hasOwnProperty,Me=Object.prototype.propertyIsEnumerable;var ge=(t,n,o)=>n in t?ve(t,n,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[n]=o,pe=(t,n)=>{for(var o in n||(n={}))_e.call(n,o)&&ge(t,o,n[o]);if(me)for(var o of me(n))Me.call(n,o)&&ge(t,o,n[o]);return t};var W=(t,n,o)=>new Promise((R,f)=>{var S=u=>{try{E(o.next(u))}catch(D){f(D)}},T=u=>{try{E(o.throw(u))}catch(D){f(D)}},E=u=>u.done?R(u.value):Promise.resolve(u.value).then(S,T);E((o=o.apply(t,n)).next())});import{forwardRef as Oe,useImperativeHandle as Be,useRef as b,useEffect as se,useMemo as he,useCallback as Ne}from"react";import{useEffect as Ce,useState as ye,useCallback as We,useRef as F}from"react";var g=null,M=!1,V=null,te=0,ne=null,h=new Map,Se=0,K=new Map;function oe(t,n){let o=F(!1),[R,f]=ye(!1),[S,T]=ye(null),E=F(!0),u=F(!1),D=F(`instance_${Math.random().toString(36).substr(2,9)}`),x=F(0);Ce(()=>{var v;if(!t)return;E.current=!0,x.current++;let w=x.current,C=D.current,O=(v=K.get(C))!=null?v:0;return w>O&&(te++,K.set(C,w)),W(null,null,function*(){var p;if(!g||!xe(ne,t)){g&&(g.terminate(),g=null,M=!1,console.log("[v0 useJerseyWorker] Worker terminated because of change in config"));try{u.current=(p=t.verbose)!=null?p:u.current;let l=n||"/jersey-detector-worker.js";g=new Worker(l),ne=t,M=!1,V=null,f(!1),T(null),g.onmessage=m=>{let i=m.data;switch(i.type){case"ready":M=!0,f(!0),u.current&&console.log("[v0 useJerseyWorker] Worker Ready",{device:i.device,dtype:i.dtype,config:i.config});break;case"loading_progress":u.current&&console.log(`[v0 useJerseyWorker] Loaded ${i.progress}% of ${i.file}`);break;case"debug":u.current&&console.log(i.debug_message);break;case"error":let J=i.error_message||"Unknown worker error";console.error("[v0 useJerseyWorker] Worker sent error message:",J),M=!1,V=J,f(!1),T(J);break;case"detect_response":if(i.requestId&&h.has(i.requestId)){let c=h.get(i.requestId);c&&(c.resolve(i),h.delete(i.requestId))}else if(h.size>0){let c=h.entries().next();if(!c.done){let[Q,B]=c.value;B.resolve(i),h.delete(Q)}}break}},g.onerror=m=>{let i=m.message||"Worker initialization error";console.error("[useJerseyWorker] Worker error:",i),M=!1,V=i,f(!1),T(i)},g.postMessage({type:"init",config:t})}catch(l){let m=(l==null?void 0:l.message)||String(l);console.error("[useJerseyWorker] Failed to create worker:",m),f(!1),T(m)}}else f(M),T(V)}),()=>{E.current=!1;let p=D.current,l=K.get(p),m=x.current;l===m&&(te--,K.delete(p),te<=0&&g&&(g.terminate(),g=null,M=!1,V=null,ne=null,h.clear()))}},[]);let j=We((w,C,O=.5)=>W(null,null,function*(){if(!g||!M)throw new Error("Worker not ready");if(o.current)return null;let I=`req_${++Se}_${Date.now()}`;return new Promise((v,p)=>{h.set(I,{resolve:v,reject:p});try{o.current=!0,g.postMessage({type:"detect",requestId:I,dimensions:C,bitmap:w,threshold:O},[w])}catch(l){h.delete(I);let m=`Failed to send detect: ${l==null?void 0:l.message}`;p(new Error(m))}finally{o.current=!1}setTimeout(()=>{h.has(I)&&(h.delete(I),p(new Error("Detection timeout")))},1e4)})}),[R]);return{isReady:R,workerReady:R,lastError:S,detect:j}}function xe(t,n){return t?JSON.stringify(t)===JSON.stringify(n):!1}var d={TASK:"image-segmentation",MODEL:"BodyPix",BODYPIX_ARCHITECTURE:"MobileNetV1",BODYPIX_MULTIPLIER:.75,BODYPIX_QUANT_BYTES:2,BODYPIX_STRIDE:16,MULTI_SEGMENTATION:!0,SEGMENT_BODY_PARTS:!0,BACKGROUND_SHADE:0,SHIRT_SHADE:170,DETECTION_THRESHOLD:.5,TARGET_PART_ID:12,IMAGES_TO_RETURN:"mask",VERBOSE:!1,MIN_DETECTION_AREA:1e4};import Ae from"p-limit";import{jsx as He}from"react/jsx-runtime";var Te=Oe(({videoRef:t,onWorkerReady:n,onWorkerError:o,onStatsUpdate:R,onSegmentedImage:f,task:S=d.TASK,model:T=d.MODEL,verbose:E=d.VERBOSE,bodyPixArchitecture:u=d.BODYPIX_ARCHITECTURE,bodyPixMultiplier:D=d.BODYPIX_MULTIPLIER,bodyPixQuantBytes:x=d.BODYPIX_QUANT_BYTES,bodyPixStride:j=d.BODYPIX_STRIDE,multiSegmentation:w=d.MULTI_SEGMENTATION,segmentBodyParts:C=d.SEGMENT_BODY_PARTS,backgroundShade:O=d.BACKGROUND_SHADE,shirtShade:I=d.SHIRT_SHADE,threshold:v=d.DETECTION_THRESHOLD,targetPartId:p=d.TARGET_PART_ID,imagesToReturn:l=d.IMAGES_TO_RETURN,minDetectionArea:m=d.MIN_DETECTION_AREA,workerUrl:i,className:J,style:c},Q)=>{let B=b(null),P=b(null),Z=b(!1),Y=b([]),Ee=b(null),L=b(!1),q=b(void 0);q.current=o;let ee=b({jerseyCount:0,confidence:0,fps:0,processingTime:0}),ie=b(0),De=500,ae=5,ce=he(()=>Ae(ae),[]),X=he(()=>({task:S,model:T,verbose:E,bodyPixArchitecture:u,bodyPixMultiplier:D,bodyPixQuantBytes:x,bodyPixStride:j,multiSegmentation:w,segmentBodyParts:C,backgroundShade:O,shirtShade:I,threshold:v,targetPartId:p,imagesToReturn:l,minDetectionArea:m,mirror:(c==null?void 0:c.transform)==="scaleX(-1)"||typeof(c==null?void 0:c.transform)=="string"&&c.transform.includes("scaleX(-1)")}),[S,T,E,u,D,x,j,w,C,O,I,v,p,l,m,c==null?void 0:c.transform]),Ie=()=>{var e,s;return{width:((e=t.current)==null?void 0:e.videoWidth)||0,height:((s=t.current)==null?void 0:s.videoHeight)||0}},{isReady:N,workerReady:_,lastError:U,detect:ke}=oe(X,i);se(()=>{_&&console.log("[JerseyDetector] Worker Ready with config:",X),n==null||n(_)},[_,n,X]),se(()=>{var e;U&&(L.current=!0,(e=q.current)==null||e.call(q,U))},[U]);let be=Ne((e,s)=>{if(ce.activeCount>=ae){e.forEach(r=>{var a;return(a=r==null?void 0:r.close)==null?void 0:a.call(r)}),console.warn("[JerseyDetector] Dropped new segmented images \u2014 max 5 classifications running");return}ce(()=>W(null,null,function*(){try{f==null||f(e,s)}catch(r){console.error("[JerseyDetector] Classification error:",r)}finally{e.forEach(r=>{var a;return(a=r==null?void 0:r.close)==null?void 0:a.call(r)})}}))},[f]),Re=()=>W(null,null,function*(){var A,re,ue;let e=t.current,s=B.current;if(L.current||!N||!_||!e||!s||Z.current||e.readyState<2||e.paused||e.ended||e.videoWidth===0||e.videoHeight===0)return;let r=s.getContext("2d");if(!r||s.width<=0||s.height<=0)return;let a=null,k=null;try{Z.current=!0;let G=e.videoWidth,$=e.videoHeight;Ee.current={width:G,height:$},a=yield createImageBitmap(e);let we=Ie(),y=yield ke(a,we,v);if((y==null?void 0:y.type)==="detect_response"){if(l!=="none"&&((s.width!==G||s.height!==$)&&(s.width=G,s.height=$),r.clearRect(0,0,G,$),y.bitmap)){let H=y.bitmap;r.drawImage(H,0,0),console.log(`[JerseyDetector] Bitmap created with dims ${H.width}x${H.height}`),H.close()}Y.current.push(Date.now()),Y.current=Y.current.filter(H=>Date.now()-H<1e3);let z={jerseyCount:((A=y.stats)==null?void 0:A.jerseyCount)||0,confidence:((re=y.stats)==null?void 0:re.confidence)||0,fps:Y.current.length,processingTime:((ue=y.stats)==null?void 0:ue.processingTime)||0},le=ee.current;ee.current=z;let de=Date.now(),fe=de-ie.current>De||z.jerseyCount!==le.jerseyCount||z.confidence!==le.confidence;fe&&R&&(R(z),ie.current=de),fe&&y.segmentedImages&&f&&be(y.segmentedImages,y.bboxes)}}catch(G){L.current=!0}finally{a==null||a.close(),Z.current=!1}});return Be(Q,()=>({get isReady(){return N},get lastError(){return U},get stats(){return ee.current},capture:(e="image/jpeg",s=.92)=>{let r=t.current,a=B.current;if(!r||r.videoWidth<=0||r.videoHeight<=0)throw new Error("Video not ready for capture");let k=document.createElement("canvas");k.width=r.videoWidth,k.height=r.videoHeight;let A=k.getContext("2d");if(!A)throw new Error("Failed to get context for capture canvas");let re=X.mirror;return A.drawImage(r,0,0,k.width,k.height),a&&a.width>0&&a.height>0&&A.drawImage(a,0,0,k.width,k.height),k.toDataURL(e,s)}}),[N,U,_]),se(()=>{if(!_||!N||L.current)return;let e=t.current,s=B.current;if(!e||!s||e.videoWidth===0||e.videoHeight===0){let a=setTimeout(()=>{P.current=requestAnimationFrame(()=>{})},100);return()=>clearTimeout(a)}(s.width!==e.videoWidth||s.height!==e.videoHeight)&&(s.width=e.videoWidth,s.height=e.videoHeight);let r=()=>W(null,null,function*(){!_||!N||L.current||(yield Re(),P.current=requestAnimationFrame(r))});return P.current=requestAnimationFrame(r),()=>{P.current&&cancelAnimationFrame(P.current)}},[_,N]),He("canvas",{ref:B,className:`absolute inset-0 pointer-events-none ${J||""}`,style:pe({zIndex:10,width:"100%",height:"100%"},c)})});Te.displayName="JerseyDetector";export{d as DEFAULT_CONFIG,Te as JerseyDetector,oe as useJerseyWorker};
|
package/package.json
CHANGED
|
@@ -82361,7 +82361,20 @@ var handleDetect = async (message) => {
|
|
|
82361
82361
|
});
|
|
82362
82362
|
const overlayData = await overlayTensor.data();
|
|
82363
82363
|
ctx.putImageData(new ImageData(new Uint8ClampedArray(overlayData), width, height), 0, 0);
|
|
82364
|
-
|
|
82364
|
+
if (currentConfig?.mirror) {
|
|
82365
|
+
const mirrorCanvas = new OffscreenCanvas(width, height);
|
|
82366
|
+
const mctx = mirrorCanvas.getContext("2d");
|
|
82367
|
+
if (mctx) {
|
|
82368
|
+
mctx.translate(width, 0);
|
|
82369
|
+
mctx.scale(-1, 1);
|
|
82370
|
+
mctx.drawImage(canvas, 0, 0);
|
|
82371
|
+
outputBitmap = await createImageBitmap(mirrorCanvas);
|
|
82372
|
+
} else {
|
|
82373
|
+
outputBitmap = await createImageBitmap(canvas);
|
|
82374
|
+
}
|
|
82375
|
+
} else {
|
|
82376
|
+
outputBitmap = await createImageBitmap(canvas);
|
|
82377
|
+
}
|
|
82365
82378
|
overlayTensor.dispose();
|
|
82366
82379
|
allTorsosMask.dispose();
|
|
82367
82380
|
}
|