@pennsieve-viz/tsviewer 1.0.31 → 1.1.0

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.
Files changed (33) hide show
  1. package/dist/{BFLibraryButton-Dec5fit3.js → BFLibraryButton-CjW78KwZ.js} +1 -1
  2. package/dist/{BFLibraryButton-CnSdxNr1.cjs → BFLibraryButton-DGI5G53e.cjs} +1 -1
  3. package/dist/{IconSelection-CxtyAEya.cjs → IconSelection-BJc1giuT.cjs} +1 -1
  4. package/dist/{IconSelection-C_zQHxVs.js → IconSelection-ChXlHpsu.js} +1 -1
  5. package/dist/TSAnnotationCanvas-CfyqYTnB.js +730 -0
  6. package/dist/TSAnnotationCanvas-DhskkXWf.cjs +1 -0
  7. package/dist/{TSAnnotationModal-Bvz6Hr6c.cjs → TSAnnotationModal-Bde2b3U0.cjs} +1 -1
  8. package/dist/{TSAnnotationModal-Crb5zX1P.js → TSAnnotationModal-KX-_Afb3.js} +42 -42
  9. package/dist/{TSFilterModal-DdNCo0nH.js → TSFilterModal-BMSEMK8Y.js} +3 -3
  10. package/dist/{TSFilterModal-BA7WXDk1.cjs → TSFilterModal-RgvcihE6.cjs} +1 -1
  11. package/dist/TSScrubber-C90JS4pD.cjs +1 -0
  12. package/dist/{TSScrubber-BsoGLy_L.js → TSScrubber-DqCc3Zp7.js} +39 -39
  13. package/dist/{TSViewerCanvas-ByhDLibl.js → TSViewerCanvas-3TTYdC6T.js} +13 -13
  14. package/dist/{TSViewerCanvas-D_i1FrqG.cjs → TSViewerCanvas-BUlYMq9z.cjs} +2 -2
  15. package/dist/{TSViewerLayerWindow-Cf4J_lK_.js → TSViewerLayerWindow-B94J9tDk.js} +2 -2
  16. package/dist/{TSViewerLayerWindow-4ckQFmUZ.cjs → TSViewerLayerWindow-C5Va7dH9.cjs} +1 -1
  17. package/dist/{TSViewerToolbar-BLOSD8fd.cjs → TSViewerToolbar-B1q33g4K.cjs} +1 -1
  18. package/dist/{TSViewerToolbar-BxAiyYi7.js → TSViewerToolbar-ECRy1rzk.js} +6 -6
  19. package/dist/{TsAnnotationDeleteDialog-Dm0rbNQr.js → TsAnnotationDeleteDialog-3aMg8Pa_.js} +3 -3
  20. package/dist/{TsAnnotationDeleteDialog-B_ZIUOh2.cjs → TsAnnotationDeleteDialog-O-NFN0pa.cjs} +1 -1
  21. package/dist/index-B-qad683.cjs +1 -0
  22. package/dist/index-ZGQLYYRT.js +1459 -0
  23. package/dist/index.cjs +1 -1
  24. package/dist/index.js +7 -3
  25. package/dist/{pathOr-D8CyYHmd.cjs → pathOr-BHBhJmTE.cjs} +1 -1
  26. package/dist/{pathOr-CC_5pAvC.js → pathOr-Byg6zMXz.js} +1 -1
  27. package/dist/style.css +1 -1
  28. package/package.json +1 -1
  29. package/dist/TSAnnotationCanvas-BuYjJ340.cjs +0 -1
  30. package/dist/TSAnnotationCanvas-DV93mqhV.js +0 -778
  31. package/dist/TSScrubber-KnkoGu88.cjs +0 -1
  32. package/dist/index-C3ilckwx.js +0 -1318
  33. package/dist/index-D8lvFC22.cjs +0 -1
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("vue"),b=require("./index-B-qad683.cjs"),J=require("pinia"),K=require("./TSViewerCanvas-BUlYMq9z.cjs"),_=require("./pathOr-BHBhJmTE.cjs"),Q=require("./_commonjsHelpers-DKOUU3wS.cjs"),M=(t,o)=>{let c;if(/^#([A-Fa-f0-9]{3}){1,2}$/.test(t))return c=t.substring(1).split(""),c.length===3&&(c=[c[0],c[0],c[1],c[1],c[2],c[2]]),c="0x"+c.join(""),"rgba("+[c>>16&255,c>>8&255,c&255].join(",")+","+o+")";throw new Error("Bad Hex")},Y=t=>{t.sort((o,c)=>o.start<c.start?-1:o.start>c.start?1:0)},j=(t,o)=>{const c=(t==null?void 0:t.layer_id)||0;return b.defaultTo({},K.find(b.propEq("id",c),o))},q=(t,o,c,a=0,f=!1)=>{let u;return f?u=U(t,o,a,t.length-1,c):u=V(t,o,a,t.length-1,c),u===-1?u=0:u<0&&(u=-u-2),u},V=(t,o,c,a,f)=>{if(a<c){let g=a>=0?a:-a-2;if(g===-1)return g;const T=t[g].start;for(;g>=0&&t[g].start===T;)g--;return-g-2}const u=parseInt((c+a)/2);if(t[u].start>o)return V(t,o,c,u-1,f);if(t[u].start<o)return V(t,o,u+1,a,f);{let g=u;if(f){for(;g>=0&&t[g].start===o;)g--;g++}else{for(;g<t.length&&t[g].start===o;)g++;g--}return g}},U=(t,o,c,a,f)=>{if(a<c){let T=a>=0?a:-a-2;if(T===-1)return T;const I=t[T].start+t[T].duration;for(;T>=0&&t[T].start+t[T].duration===I;)T--;return-T-2}const u=parseInt((c+a)/2),g=t[u].start+t[u].duration;if(g>o)return U(t,o,c,u-1,f);if(g<o)return U(t,o,u+1,a,f);{let T=u;if(f){for(;T>=0&&t[T].start+t[T].duration===o;)T--;T++}else{for(;T<t.length&&t[T].start+t[T].duration===o;)T++;T--}return T}},z=(t,o,c=0)=>o*(t+c);function Z(t=null){const o=t||S.inject("viewerStore",null)||b.createViewerStore("default"),{viewerChannels:c,viewerAnnotations:a,viewerMontageScheme:f}=J.storeToRefs(o),u=S.ref([]),g=S.ref([]),T=w=>{const d=f.value!=="NOT_MONTAGED";let e=b.propOr("","id",w);if(d){const l=e.split("_");e=l.length?K.head(l):e}return e},I=async(w,d,e,l,v)=>{const r=[];r.push({start:w,end:e.tsEnd});let i=0;for(let n=0;n<u.value.length;n++){const s=u.value[n];if(w>=s.start&&d<=s.end)return;if(r[0].start>d)break;if(s.start<=r[0].start&&s.end>=w)i=n+1,r[0].start=s.end;else if(s.start>r[0].start){i=n;break}}const h=a.value.reduce((n,s)=>n+s.annotations.length,0);if(r[0].start>=r[0].end&&h>0)return;const y=0;for(let n=i;n<u.value.length;n++)if(u.value[n].start>=r[y].start)if(r[y].end=u.value[n].start,u.value[n].end<d)r.push({start:u.value[n].end,end:e.tsEnd});else break;if(!(r[0].start>=r[0].end&&h>0)&&r.length>0){c.value.map(n=>T(n));for(const n of r){for(const s of a.value){if(!s.id){console.warn("Layer ID is undefined, skipping annotation request for layer:",s);continue}const m=Math.floor(n.end),p={id:l.content.id,start:Math.floor(n.start),end:m,layerId:s.id,limit:e.constants.LIMITANNFETCH};try{const L=await b.useToken(),A=`${o.config.apiUrl}/timeseries/${l.content.id}/layers/${s.id}/annotations?api_key=${L}`,k=Object.keys(p).map(H=>`&${H}=${p[H]}`).join(""),E=`${A}${k}`,F=await fetch(E,{method:"GET",headers:{"Content-type":"application/json"}});if(F.status>=400)throw new Error(F.status);const N=await F.json();await R(N,v)}catch(L){b.useHandleXhrError(L)}}u.value.push({start:Math.floor(n.start),end:Math.floor(n.end)})}u.value.sort((n,s)=>n.start<s.start?-1:n.start>s.start?1:0)}},R=async(w,d)=>{const e=b.propOr({},"linkedPackages",w);let l=_.pathOr([],["annotations","results"],w);if(l.length>=500){let r=0;for(const i of l)i.start>r&&(r=i.start);for(const i of u.value)if(i.end>r&&i.start<r){i.end=r;break}}const v=f.value!=="NOT_MONTAGED";if(l.length>0){const r=l.map(i=>{const h={name:"",id:i.id,label:i.label,description:i.description,start:i.start,duration:i.end-i.start,end:i.end,cStart:null,cEnd:null,selected:!1,channelIds:i.channelIds,allChannels:!1,layer_id:i.layerId,userId:i.userId};if(i.linkedPackage){const y=i.linkedPackage;h.linkedPackage=_.pathOr("",["content","id"],e[y]),h.linkedPackageDTO=e[y]}return(!v&&h.channelIds.length===c.value.length||v&&h.channelIds.length>c.value.length)&&(h.allChannels=!0),h});a.value.forEach(i=>{const h=i.annotations,y=r.filter(n=>i.id===n.layer_id);i.annotations=h.concat(y),o.updateLayer(i)})}d("annotationsReceived")};return{cachedAnnRange:u,annLayerInfo:g,checkAnnotationRange:I,findNextAnnotation:w=>{const d=o.getViewerActiveLayer(),e=q(d.annotations,w,!1);return e<d.annotations.length?d.annotations[e].start>w?d.annotations[e]:d.annotations[e+1]||d.annotations[e]:d.annotations[e]},findPreviousAnnotation:w=>{const d=o.getViewerActiveLayer(),e=q(d.annotations,w,!0);return d.annotations[e].start<w?d.annotations[e]:e>0?d.annotations[e-1]:d.annotations[e]},getChannelId:T}}function x(t=null){const o=t||S.inject("viewerStore",null)||b.createViewerStore("default"),{viewerAnnotations:c,viewerChannels:a}=J.storeToRefs(o),f=S.ref([]),u=S.ref([]),g=S.ref(null),T=S.ref(["#FFFF4E"]),I=(e,l)=>{var h,y;const r=(((h=l.constants)==null?void 0:h.ANNOTATIONLABELHEIGHT)||20)/2|0,i=((y=l.constants)==null?void 0:y.XOFFSET)||0;for(const n of e){let s=n.start,m=n.duration;n.duration<0&&(s=n.start+n.duration,m=-n.duration);const p=i+(s-l.start)/l.rsPeriod;if(n.cStart=p|0,n.duration!==0){const L=i+(s+m-l.start)/l.rsPeriod;n.cEnd=L|0}else n.cEnd=n.cStart+l.cWidth/40|0;if(n.allChannels)n.allOffsets=[r],n.cY=r;else{n.allOffsets=[],n.minOffset=l.cHeight|0,n.maxOffset=0;const L=a.value;for(const C of n.channelIds){let A=null;for(const k of L)if(k.id===C&&k.visible){A=k.rowBaseline|0,A<n.minOffset&&(n.minOffset=A),A>n.maxOffset&&(n.maxOffset=A),n.allOffsets.push(A);break}}u.value.indexOf(n.minOffset)<0&&u.value.push(n.minOffset),n.cY=n.minOffset}}},R=(e,l,v,r)=>{var y,n;const i=((y=v.constants)==null?void 0:y.ANNOTATIONLABELHEIGHT)||20,h=i/2|0;e.setTransform(v.pixelRatio,0,0,v.pixelRatio,0,0),e.save(),e.lineWidth=1,e.setLineDash([8,5]),e.strokeStyle="rgba(0,0,0, 0.6)",e.fillStyle="rgba(0,0,0,0.05)";for(const s of l){const m=j(s,c.value);s.selected&&(e.save(),e.strokeStyle=m.selColor,e.fillStyle=m.bkColor,e.lineWidth=1);const p=Math.round(s.cStart)+.5,L=Math.round(s.cEnd)+.5;s.allChannels?s.duration===0?(e.beginPath(),e.moveTo(p+1,i),e.lineTo(p,r),e.stroke()):(e.fillRect(p,i,L-p,r-i),e.beginPath(),e.moveTo(p,i),e.lineTo(p,r),e.moveTo(L,i),e.lineTo(L,r),e.stroke()):((n=s==null?void 0:s.channelIds)==null?void 0:n.length)===1?s.duration===0&&(e.beginPath(),e.moveTo(p,s.minOffset+h),e.lineTo(p,s.minOffset+h+8),e.stroke()):s.duration===0?(e.beginPath(),e.moveTo(p,s.minOffset+h),e.lineTo(p,s.maxOffset-h),e.stroke()):(e.fillRect(p-1,s.minOffset+h,L-p+1,s.maxOffset-s.minOffset-i),e.beginPath(),e.moveTo(p,s.minOffset+h),e.lineTo(p,s.maxOffset-h),e.moveTo(L,s.minOffset+h),e.lineTo(L,s.maxOffset-h),e.stroke()),s.selected&&e.restore()}e.restore()},$=async(e,l,v,r,i,h)=>{var s;const y=((s=v.constants)==null?void 0:s.ANNOTATIONLABELHEIGHT)||20,n=y/2|0;e.setTransform(v.pixelRatio,0,0,v.pixelRatio,0,0),e.save(),e.lineWidth=2,e.font="14px sans-serif",e.textAlign="left";for(const m of l){const p=j(m,c.value);if(m===g.value&&r)continue;m.selected?(e.fillStyle=p.selColor||"rgba(51,204,102, 0.8)",e.strokeStyle="white"):(e.fillStyle=p.color||"rgba(51,204,102,0.8)",e.strokeStyle=m===g.value?"white":"rgba(255,255,255,0.8)");const L=Math.round(m.cStart)+1,C=Math.round(m.cEnd);let A=0;for(let F=0;F<m.allOffsets.length;F++)e.fillRect(L-1,m.allOffsets[F]-n,C-L+2,y),m.allOffsets[F]===m.minOffset&&(A=F);const k=m.allOffsets[A];if(["annSelect","annResize-left","annResize-right"].includes(i)&&h==="annotate"&&(e.beginPath(),m.duration!==0&&(e.moveTo(C-3,k-n+3),e.lineTo(C-3,k+n-3)),e.moveTo(L+3,k-n+3),e.lineTo(L+3,k+n-3),e.stroke()),C-L>m.label.length*8+10){e.fillStyle=T.value.indexOf(p.hexColor)>=0?"black":"white";const F=m.linkedPackage?L+30:L+10,N=m.linkedPackage?k+n-n/2:k+n-6;e.fillText(m.label,F,N)}const E=m.linkedPackageDTO;E&&C-L>=30&&await O(e,E,L,k,n,y)}e.restore()},O=async(e,l,v,r,i,h)=>{const y=_.pathOr({},["objects","view",1,"content"],l),n=b.propOr("","fileType",y),s=new Image;if(n==="PNG"){const{id:m,packageId:p}=y,L=o.config.apiUrl;try{const C=await b.useToken();s.src=`${L}/packages/${p}/files/${m}/presign/?api_key=${C}`,s.complete?e.drawImage(s,v,r-i,27,h):s.addEventListener("load",()=>{e.drawImage(s,v,r-i,27,h)},{once:!0})}catch(C){console.error("Error loading image:",C)}}else s.src=w(),e.drawImage(s,v+5,r-i,20,20)},w=e=>"/path/to/default/icon.png";return{renderAnn:f,hoverOffsets:u,focusedAnn:g,render:(e,l,v,r)=>{var m,p,L,C;if(!l){console.warn("TSAnnotationCanvas: annotationsCanvas prop is undefined or null");return}const i=l.getContext("2d"),h=v.getContext("2d");i.setTransform(e.pixelRatio,0,0,e.pixelRatio,0,0),h.setTransform(e.pixelRatio,0,0,e.pixelRatio,0,0),u.value=[(((m=e.constants)==null?void 0:m.ANNOTATIONLABELHEIGHT)||20)/2],i.clearRect(0,0,e.cWidth,e.cHeight),h.clearRect(0,0,e.cWidth,e.cHeight),f.value=[];const y=e.duration&&e.duration>0?e.duration:15e6,n=e.start||0,s=n+y;console.log("🎨 Annotation render debug:",{start:n,duration:y,end:s,layerCount:((p=c.value)==null?void 0:p.length)||0,totalAnnotations:((L=c.value)==null?void 0:L.reduce((A,k)=>{var E;return A+(((E=k.annotations)==null?void 0:E.length)||0)},0))||0});for(const A of c.value)if(A.visible&&((C=A.annotations)==null?void 0:C.length)>0){console.log(`🔍 Processing layer "${A.name}" with ${A.annotations.length} annotations`);const k=A.annotations.filter(E=>{const F=E.start,N=E.end||E.start+(E.duration||0),H=F<s&&N>n;return H&&console.log(` ✅ Including annotation "${E.label}": ${F} - ${N}`),H});console.log(` 📊 Found ${k.length} annotations in viewport`),k.length>0&&(k.sort((E,F)=>E.start-F.start),f.value.push(...k))}if(console.log(`🎯 Total annotations to render: ${f.value.length}`),f.value.length===0){console.log("⚠️ No annotations found in viewport");return}Y(f.value),I(f.value,e),R(i,f.value,e,r),$(h,f.value,e,!0,e.pointerMode,e.viewerActiveTool),g.value&&$(h,[g.value],e,!1,e.pointerMode,e.viewerActiveTool),console.log(`✅ Rendered ${f.value.length} annotations successfully`)},computeRenderOptions:I,renderAnnotationAreas:R,renderAnnotationLabels:$}}function ee(t,o,c,a=null){const f=a||S.inject("viewerStore",null)||b.createViewerStore("default"),u=S.ref([0,0]),g=(e,l)=>{const r=((l==null?void 0:l.ANNOTATIONLABELHEIGHT)||20)/2;for(const i of c.value)if(e>=i-r&&e<=i+r)return!0;return!1},T=(e,l,v)=>{var h;const i=((v==null?void 0:v.ANNOTATIONLABELHEIGHT)||20)/2;for(let y=0;y<(((h=o.value)==null?void 0:h.length)||0);y++){const n=o.value[y];if(n.cStart<e&&n.cEnd>e){if(l>n.cY-i&&l<n.cY+i)return y}else if(n.cStart>e)break}return null},I=(e,l,v)=>{if(!v)return l;switch(l){case"annotate":return e<=v.cStart+10?"annResize-left":e>=v.cEnd-10&&v.duration>0?"annResize-right":"annSelect";case"pointer":return"annSelect";default:return l}};return{mouseDownPosition:u,shouldCheckAnnotationHover:g,findAnnotationAtPosition:T,determinePointerMode:I,resetFocusedAnnotation:()=>{var e;((e=t.value)==null?void 0:e.oldStart)!==void 0&&(t.value.start=t.value.oldStart,t.value.duration=t.value.oldDuration,t.value.end=t.value.start+t.value.duration)},selectFocusedAnnotation:()=>t.value?(f.setActiveAnnotation(t.value),!0):!1,onMouseDown:(e,l,v)=>{t.value&&["annResize-left","annResize-right"].includes(v)&&(t.value.oldStart=t.value.start,t.value.oldDuration=t.value.duration,u.value=[e,l])},onMouseMove:(e,l,v,r,i)=>{let h=v;if(r&&u.value){const y=(e-u.value[0])*i.rsPeriod;switch(v){case"annResize-left":t.value.oldDuration>0?(t.value.start=t.value.oldStart+y,t.value.duration=t.value.oldDuration-y,t.value.end=t.value.start+t.value.duration):t.value.start=t.value.oldStart+y;break;case"annResize-right":t.value.duration=t.value.oldDuration+y,t.value.end=t.value.start+t.value.duration;break}}else{const y=g(l,i.constants);if(h=i.viewerActiveTool,y){const n=T(e,l,i.constants);if(n!==null){const s=t.value,m=o.value[n];(!s||e<t.value.cStart||e>t.value.cEnd)&&(t.value=m),h=I(e,i.viewerActiveTool,t.value)}else t.value=null}else t.value=null,h=i.viewerActiveTool}return h},onMouseUp:(e,l)=>{if(t.value&&["annResize-left","annResize-right"].includes(e)){if(t.value.duration<0){const v=-t.value.duration,r=t.value.start-v;t.value.start=r,t.value.duration=v,t.value.end=r+v}f.setActiveAnnotation(t.value),l("updateAnnotation",t.value)}}}}var P={exports:{}},G;function te(){if(G)return P.exports;G=1;function t(){}return t.prototype={on:function(o,c,a){var f=this.e||(this.e={});return(f[o]||(f[o]=[])).push({fn:c,ctx:a}),this},once:function(o,c,a){var f=this;function u(){f.off(o,u),c.apply(a,arguments)}return u._=c,this.on(o,u,a)},emit:function(o){var c=[].slice.call(arguments,1),a=((this.e||(this.e={}))[o]||[]).slice(),f=0,u=a.length;for(f;f<u;f++)a[f].fn.apply(a[f].ctx,c);return this},off:function(o,c){var a=this.e||(this.e={}),f=a[o],u=[];if(f&&c)for(var g=0,T=f.length;g<T;g++)f[g].fn!==c&&f[g].fn._!==c&&u.push(f[g]);return u.length?a[o]=u:delete a[o],this}},P.exports=t,P.exports.TinyEmitter=t,P.exports}var B,W;function ne(){if(W)return B;W=1;var t=te();return B=new t,B}var oe=ne();const D=Q.getDefaultExportFromCjs(oe),X={$emit:(...t)=>D.emit(...t),$on:(...t)=>D.on(...t),$off:(...t)=>D.off(...t),$once:(...t)=>D.once(...t)};function ae(t=null){const o=t||S.inject("viewerStore",null)||b.createViewerStore("default"),c=S.ref([]),a=S.ref(["#18BA62","#FFBC27","#E94B4B","#0D4EFF","#FF4FFF","#50FFFF","#FFFF4E","#512BAF","#8A6ECF","#389BAD","#187D46","#B12800","#0C2475","#FF5321","#FF99CC","#DCC180","#FF6C21","#000000","#9B9B9B","#00FF00","#FA8072","#808000","#A0522D","#2760FF"]),f=async(O,w)=>{const d=[];if(O.results.length===0)await u({name:"Default",color:"#18BA62",description:"Default Annotation Layer"},null,w);else{for(let e=0;e<O.results.length;e++){const l=O.results[e];let v=l.color||a.value[e%a.value.length];const r={id:l.id,name:l.name,description:l.description,visible:!0,selected:e===0,annotations:[],color:M(v,.7),hexColor:v,bkColor:M(v,.15),selColor:M(v,.9)};d.push(r)}o.setAnnotations(d),w("annLayersInitialized")}c.value=O.results},u=async(O,w,d)=>{try{const e=await b.useToken(),l=`${o.config.apiUrl}/timeseries/${w.content.id}/layers?api_key=${e}`,v=await b.useSendXhr(l,{method:"POST",body:{name:O.name,color:O.color,description:O.description||O.name}}),r={...v,annotations:[],hexColor:v.color,color:M(v.color,.7),bkColor:M(v.color,.15),selColor:M(v.color,.9),visible:!0,selected:!0};return o.createLayer(r),o.setActiveAnnotationLayer(r.id),X.$emit("toast",{detail:{msg:`'${r.name}' Layer Created`}}),r}catch(e){throw b.useHandleXhrError(e),e}finally{d&&d("closeAnnotationLayerWindow")}};return{annLayerInfo:c,defaultColors:a,initializeLayers:f,createAnnotationLayer:u,updateLayerVisibility:(O,w)=>{console.log(`[useAnnotationLayers] Updating layer ${O} visibility to:`,w);const d=o.viewerAnnotations.find(e=>e.id===O);if(d){console.log("[useAnnotationLayers] Found layer:",d.name,"current visible:",d.visible),d.visible=w,o.updateLayer(d),console.log("[useAnnotationLayers] Updated layer:",d.name,"new visible:",d.visible);const e=o.viewerAnnotations.find(l=>l.id===O);console.log("[useAnnotationLayers] Verification - layer visible is now:",e==null?void 0:e.visible)}else console.error("[useAnnotationLayers] Layer not found with ID:",O),console.log("[useAnnotationLayers] Available layers:",o.viewerAnnotations.map(e=>({id:e.id,name:e.name})))},selectLayer:O=>{o.viewerAnnotations.forEach(d=>{d.selected=!1,o.updateLayer(d)});const w=o.viewerAnnotations.find(d=>d.id===O);w&&(w.selected=!0,o.updateLayer(w),o.setActiveAnnotationLayer(O))},deleteLayer:async(O,w)=>{try{const d=await b.useToken(),e=`${o.config.apiUrl}/timeseries/${w.content.id}/layers/${O}?api_key=${d}`;await b.useSendXhr(e,{method:"DELETE"}),o.removeLayer(O),X.$emit("toast",{detail:{msg:"Layer deleted successfully"}})}catch(d){throw b.useHandleXhrError(d),d}},updateLayerColor:async(O,w,d)=>{try{const e=await b.useToken(),l=`${o.config.apiUrl}/timeseries/${d.content.id}/layers/${O}?api_key=${e}`,v=await b.useSendXhr(l,{method:"PUT",body:{color:w}}),r=o.viewerAnnotations.find(i=>i.id===O);return r&&(r.hexColor=w,r.color=M(w,.7),r.bkColor=M(w,.15),r.selColor=M(w,.9),o.updateLayer(r)),v}catch(e){throw b.useHandleXhrError(e),e}},loadLayers:async(O,w)=>{try{const d=await b.useToken(),e=`${o.config.apiUrl}/timeseries/${O.content.id}/layers?api_key=${d}`,l=await b.useSendXhr(e);return await f(l,w),l}catch(d){throw b.useHandleXhrError(d),d}}}}const ie=["width","height"],re={__name:"TSAnnotationCanvas",props:{cWidth:{type:Number,default:0},cHeight:Number,start:Number,duration:Number,tsEnd:Number,rsPeriod:Number,pixelRatio:Number,constants:{type:Object,default:()=>({ANNOTATIONLABELHEIGHT:20,XOFFSET:0,LIMITANNFETCH:500})},pointerMode:String,annotationsCanvas:[HTMLCanvasElement,Object],activeViewer:{type:Object,required:!0},viewerActiveTool:String},emits:["annLayersInitialized","annotationsReceived","closeAnnotationLayerWindow","updateAnnotation"],setup(t,{expose:o,emit:c}){const a=t,f=c,u=S.ref(null),{checkAnnotationRange:g,findNextAnnotation:T,findPreviousAnnotation:I}=Z(),{renderAnn:R,hoverOffsets:$,focusedAnn:O,render:w}=x(),{resetFocusedAnnotation:d,selectFocusedAnnotation:e,onMouseDown:l,onMouseMove:v,onMouseUp:r}=ee(O,R,$),{createAnnotationLayer:i,loadLayers:h}=ae(),y=S.computed(()=>a.cHeight-20),n=S.computed(()=>({width:a.cWidth+"px",height:y.value+"px"})),s=()=>{w(a,a.annotationsCanvas,u.value,y.value)},m=(k,E)=>{l(k,E,a.pointerMode)},p=(k,E,F,N)=>v(k,E,F,N,a),L=()=>{r(a.pointerMode,f)},C=()=>{e()&&S.nextTick(()=>s())},A=async k=>{try{await i(k,a.activeViewer,f)}catch(E){console.error("Error creating layer:",E)}};return S.watch(()=>a.activeViewer,async k=>{try{await h(k,f),await g(a.start,a.start+a.duration,a,k,f)}catch(E){console.error("Error loading annotations for new viewer:",E)}}),S.onMounted(async()=>{console.log("TSAnnotationCanvas mounted with props:",{constants:a.constants,annotationsCanvas:a.annotationsCanvas,viewerActiveTool:a.viewerActiveTool});try{await h(a.activeViewer,f),await g(a.start,a.start+a.duration,a,a.activeViewer,f)}catch(k){console.error("Error initializing annotations:",k)}}),o({render:s,resetFocusedAnnotation:d,findNextAnnotation:T,findPreviousAnnotation:I,checkAnnotationRange:(k,E)=>g(k,E,a,a.activeViewer,f),selectFocusedAnn:C,createAnnotationLayer:A,onMouseDown:m,onMouseMove:p,onMouseUp:L}),(k,E)=>(S.openBlock(),S.createElementBlock("canvas",{id:"annLabelArea",ref_key:"annLabelArea",ref:u,class:"timeseries-annotation-canvas",width:S.unref(z)(t.cWidth,t.pixelRatio,0),height:S.unref(z)(y.value,t.pixelRatio,0),style:S.normalizeStyle(n.value)},null,12,ie))}},se=b._export_sfc(re,[["__scopeId","data-v-41f7f1c2"]]);exports.default=se;