@fnndsc/argus 0.43.0 → 0.44.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 (41) hide show
  1. package/dist/assets/{Settings-BMJaDptb.js → Settings-CA_Y9_tD.js} +1 -1
  2. package/dist/assets/{Texture-DMlqpdeR.js → Texture-CiCQeubr.js} +1 -1
  3. package/dist/assets/__vite-browser-external-D7Ct-6yo.js +1 -0
  4. package/dist/assets/{addVolumesToViewports-Df-xtrvy.js → addVolumesToViewports-DMbI2RL0.js} +1 -1
  5. package/dist/assets/asciidoc-CY89DR7y.js +1 -0
  6. package/dist/assets/cornerstoneEngine-DOq401ca.js +2 -0
  7. package/dist/assets/documentEngines-DVCBo-Z6.js +1960 -0
  8. package/dist/assets/field-DLtY8hYm.js +2 -0
  9. package/dist/assets/index-BQPxeCl8.js +1 -0
  10. package/dist/assets/{index-B6zltrBv.js → index-BQltAD7K.js} +1 -1
  11. package/dist/assets/index-BtxxK29d.js +13 -0
  12. package/dist/assets/{index-M_ElGUhd.js → index-BuNudOlE.js} +245 -245
  13. package/dist/assets/index-CH0i1dT3.js +1 -0
  14. package/dist/assets/{index-CumqcIR1.js → index-CPY1fYxX.js} +5 -5
  15. package/dist/assets/index-CRipsi7X.js +1 -0
  16. package/dist/assets/{index-CbXrICMA.js → index-CewxfqE7.js} +1 -1
  17. package/dist/assets/index-D6WqGtsG.js +27876 -0
  18. package/dist/assets/{index-BlsRHH5_.js → index-D6nj2sGK.js} +2 -2
  19. package/dist/assets/index-D9307TXO.js +3 -0
  20. package/dist/assets/{index-DPOsCEOj.js → index-DAPJ1asE.js} +1 -1
  21. package/dist/assets/index-DBDbe82G.js +1 -0
  22. package/dist/assets/index-DTiNKN3t.js +1 -0
  23. package/dist/assets/index-Da39IMz6.css +1 -0
  24. package/dist/assets/{index-BDdjtqhe.js → index-dGoK1HyL.js} +2 -2
  25. package/dist/assets/{niivueEngine-CxKW1mDW.js → niivueEngine-GirHHMsU.js} +2 -2
  26. package/dist/assets/{slabScene-CYO8ilc7.js → slabScene-DZaFF3AA.js} +2 -2
  27. package/dist/assets/syntax-1x8StFCS.js +15 -0
  28. package/dist/build.json +1 -1
  29. package/dist/index.html +2 -2
  30. package/dist/notes.json +1 -1
  31. package/package.json +4 -1
  32. package/dist/assets/cornerstoneEngine-CCys6hXi.js +0 -2
  33. package/dist/assets/field-Gyij1-2V.js +0 -12
  34. package/dist/assets/index-B2I3zHKh.js +0 -1
  35. package/dist/assets/index-CdJijRXE.js +0 -1
  36. package/dist/assets/index-CgllecgK.js +0 -3
  37. package/dist/assets/index-DQZiM6Ic.css +0 -1
  38. package/dist/assets/index-DvIjGJJA.js +0 -13
  39. package/dist/assets/index-LXTkv5wy.js +0 -1
  40. package/dist/assets/index-dqYVVnOj.js +0 -1
  41. package/dist/assets/index-edPOjgBj.js +0 -1
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-CbXrICMA.js","./_commonjsHelpers-CE1G-McA.js","./index-M_ElGUhd.js","./index-DQZiM6Ic.css"])))=>i.map(i=>d[i]);
2
- import{_ as u,b as a,I as c}from"./index-M_ElGUhd.js";import{r as p}from"./refusal-DOpm8I8L.js";const m={gray:"gray",hot:"hot",jet:"jet",cool:"cool"},d={wl:"contrast",pan:"pan",length:"measurement",angle:"angle"};class g{name="niivue";host;path;nv=null;module=null;layout="mpr";tool="wl";colormap="gray";slice=0;slices=0;refused=0;disposed=!1;constructor(s,t){this.host=s,this.path=t}async open(s){const t=document.createElement("canvas");t.className="image-canvas",s.appendChild(t),this.host.readout_set("LOADING"),this.host.progress_set({label:"READING VOLUME",done:0,total:0});const e=performance.now();if(this.module=await u(()=>import("./index-CbXrICMA.js"),__vite__mapDeps([0,1,2,3]),import.meta.url),this.disposed)return;const i=new this.module.Niivue({isResizeCanvas:!0,logLevel:"error",dragAndDropEnabled:!1,crosshairWidth:.4,crosshairWidthUnit:"percent"});i.onLocationChange=o=>{const r=o,l=r.vox?.[2];l!==void 0&&(this.slice=l+1),this.host.readout_set(`${this.slices>0?`SLICE ${this.slice} OF ${this.slices} · `:""}${r.string??""}`)},await i.attachToCanvas(t);const n=this.path.split("/").pop()??"volume.nii.gz";try{await i.loadVolumes([{url:a(this.host.source.url_resolve(this.path),location.href),name:n}])}catch(o){this.refused=1,this.host.progress_set(null),this.host.readout_set("REFUSED 1 OF 1"),this.host.note(`image: ${this.path}: ${o instanceof Error?o.message:String(o)}`);const r=await p(a(this.host.source.url_resolve(this.path),location.href));this.host.readout_set(`REFUSED 1 OF 1 · ${r}`),this.host.note(`image: ${this.path}: ${r.toLowerCase()}`);return}if(this.host.progress_set(null),this.disposed)return;this.nv=i;const h=i.volumes[0]?.dims;this.slices=h?.[3]??0,i.setSliceType(i.sliceTypeMultiplanar),this.layout="mpr",this.host.readout_set(`${this.slices} SLICES`),this.host.note(`image: ${n} drawn in ${Math.round(performance.now()-e)} ms`),this.host.regard(this.path)}async layout_set(s){return s==="slab"||this.nv===null?!1:(this.nv.setSliceType(s==="single"?this.nv.sliceTypeAxial:s==="mpr"?this.nv.sliceTypeMultiplanar:this.nv.sliceTypeRender),this.layout=s,this.host.readout_set(`${this.slices} SLICES`),!0)}slice_set(s){if(this.nv===null||this.slices===0)return!1;const t=Math.max(1,Math.min(s,this.slices)),e=this.slice>0?this.slice:Math.ceil(this.slices/2);return this.nv.moveCrosshairInVox(0,0,t-e),this.slice=t,!0}wl_set(s,t){const e=this.nv?.volumes[0];return this.nv===null||e===void 0?!1:(e.cal_min=s,e.cal_max=t,this.nv.updateGLVolume(),!0)}colormap_set(s){const t=this.nv?.volumes[0];return this.nv===null||t?.id===void 0?!1:(this.colormap=s,this.nv.setColormap(t.id,m[s]),!0)}toolsOffered_get(){return c}ghost_set(s){return!1}tool_set(s){const t=d[s];return this.nv===null||t===void 0?!1:(this.nv.setDragMode(t),this.tool=s,!0)}annotations_export(){return Promise.resolve(null)}annotations_import(){return Promise.resolve(0)}async slices_fill(){return this.nv!==null}state_get(){return{engine:"niivue",layout:this.layout,slice:this.slice,slices:this.slices,tool:this.tool,primaryTool:this.tool,refused:this.refused,annotations:0,filled:this.nv!==null,colormap:this.colormap}}dispose(){this.disposed=!0,this.nv=null}}export{g as NiivueEngine};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-CewxfqE7.js","./_commonjsHelpers-CE1G-McA.js","./index-BuNudOlE.js","./index-Da39IMz6.css"])))=>i.map(i=>d[i]);
2
+ import{_ as u,b as a,I as c}from"./index-BuNudOlE.js";import{r as p}from"./refusal-DOpm8I8L.js";const m={gray:"gray",hot:"hot",jet:"jet",cool:"cool"},d={wl:"contrast",pan:"pan",length:"measurement",angle:"angle"};class g{name="niivue";host;path;nv=null;module=null;layout="mpr";tool="wl";colormap="gray";slice=0;slices=0;refused=0;disposed=!1;constructor(s,t){this.host=s,this.path=t}async open(s){const t=document.createElement("canvas");t.className="image-canvas",s.appendChild(t),this.host.readout_set("LOADING"),this.host.progress_set({label:"READING VOLUME",done:0,total:0});const e=performance.now();if(this.module=await u(()=>import("./index-CewxfqE7.js"),__vite__mapDeps([0,1,2,3]),import.meta.url),this.disposed)return;const i=new this.module.Niivue({isResizeCanvas:!0,logLevel:"error",dragAndDropEnabled:!1,crosshairWidth:.4,crosshairWidthUnit:"percent"});i.onLocationChange=o=>{const r=o,l=r.vox?.[2];l!==void 0&&(this.slice=l+1),this.host.readout_set(`${this.slices>0?`SLICE ${this.slice} OF ${this.slices} · `:""}${r.string??""}`)},await i.attachToCanvas(t);const n=this.path.split("/").pop()??"volume.nii.gz";try{await i.loadVolumes([{url:a(this.host.source.url_resolve(this.path),location.href),name:n}])}catch(o){this.refused=1,this.host.progress_set(null),this.host.readout_set("REFUSED 1 OF 1"),this.host.note(`image: ${this.path}: ${o instanceof Error?o.message:String(o)}`);const r=await p(a(this.host.source.url_resolve(this.path),location.href));this.host.readout_set(`REFUSED 1 OF 1 · ${r}`),this.host.note(`image: ${this.path}: ${r.toLowerCase()}`);return}if(this.host.progress_set(null),this.disposed)return;this.nv=i;const h=i.volumes[0]?.dims;this.slices=h?.[3]??0,i.setSliceType(i.sliceTypeMultiplanar),this.layout="mpr",this.host.readout_set(`${this.slices} SLICES`),this.host.note(`image: ${n} drawn in ${Math.round(performance.now()-e)} ms`),this.host.regard(this.path)}async layout_set(s){return s==="slab"||this.nv===null?!1:(this.nv.setSliceType(s==="single"?this.nv.sliceTypeAxial:s==="mpr"?this.nv.sliceTypeMultiplanar:this.nv.sliceTypeRender),this.layout=s,this.host.readout_set(`${this.slices} SLICES`),!0)}slice_set(s){if(this.nv===null||this.slices===0)return!1;const t=Math.max(1,Math.min(s,this.slices)),e=this.slice>0?this.slice:Math.ceil(this.slices/2);return this.nv.moveCrosshairInVox(0,0,t-e),this.slice=t,!0}wl_set(s,t){const e=this.nv?.volumes[0];return this.nv===null||e===void 0?!1:(e.cal_min=s,e.cal_max=t,this.nv.updateGLVolume(),!0)}colormap_set(s){const t=this.nv?.volumes[0];return this.nv===null||t?.id===void 0?!1:(this.colormap=s,this.nv.setColormap(t.id,m[s]),!0)}toolsOffered_get(){return c}ghost_set(s){return!1}tool_set(s){const t=d[s];return this.nv===null||t===void 0?!1:(this.nv.setDragMode(t),this.tool=s,!0)}annotations_export(){return Promise.resolve(null)}annotations_import(){return Promise.resolve(0)}async slices_fill(){return this.nv!==null}state_get(){return{engine:"niivue",layout:this.layout,slice:this.slice,slices:this.slices,tool:this.tool,primaryTool:this.tool,refused:this.refused,annotations:0,filled:this.nv!==null,colormap:this.colormap}}dispose(){this.disposed=!0,this.nv=null}}export{g as NiivueEngine};
@@ -1,4 +1,4 @@
1
- import{m as v,as as _e,R as ft,K as Ge,L as Le,W as ke,N as We,k as de,E as X,t as vt,i as Me,x as ce,F as ht,Z as St,h as dt,D as Tt,al as wt,c as yt,at as Ct,d as Ve,au as xt,y as ue,ak as le,av as ze,j as pe}from"./cornerstoneEngine-CCys6hXi.js";import{ae as Ne,am as De,an as re,K as B,k as Z,al as $,D as se,U as $e,X as Be,B as Q,J as Et,E as Rt,ak as _t,$ as He,a2 as Mt,Z as Vt,b as Dt,_ as Ke,ao as Bt,ap as be,aq as mt,ar as Te,as as Ot,z as Ut,at as Ft,au as Pt,av as ae,ad as Gt,R as Lt,aw as Y,ah as kt,ai as Wt,C as zt,P as Nt,I as $t,a as Ht}from"./Texture-DMlqpdeR.js";import"./index-M_ElGUhd.js";import"./refusal-DOpm8I8L.js";import"./_commonjsHelpers-CE1G-McA.js";function Kt(t){return t}function ye(t){if(t===null||t==="null")return null;if(t==="true")return!0;if(t==="false")return!1;if(!(t===void 0||t==="undefined"))return t[0]==="["&&t[t.length-1]==="]"?t.substring(1,t.length-1).split(",").map(e=>ye(e.trim())):t===""||Number.isNaN(Number(t))?t:Number(t)}function bt(t=!0,e=window.location.search){const r={},s=t?ye:Kt;return new URLSearchParams(e).forEach((n,a)=>{a&&(r[a]=n?s(n):!0)}),r}var It={toNativeType:ye,extractURLParameters:bt},jt={IS_START:0,IS_NONE:0,IS_ROTATE:1,IS_PAN:2,IS_SPIN:3,IS_DOLLY:4,IS_CAMERA_POSE:11,IS_WINDOW_LEVEL:1024,IS_SLICE:1025},Ce={States:jt},{vtkErrorMacro:Qt,VOID:Yt}=v;function Xt(t,e,r,s){return t.getRenderWindow().getViews()[0].worldToDisplay(e,r,s,t)}function Zt(t,e,r,s){return t.getRenderWindow().getViews()[0].displayToWorld(e,r,s,t)}var Jt={computeWorldToDisplay:Xt,computeDisplayToWorld:Zt};function qt(t,e){e.classHierarchy.push("vtkInteractorObserver");const r={...t};function s(){for(;e.subscribedEvents.length;)e.subscribedEvents.pop().unsubscribe()}function n(){Ne.handledEvents.forEach(a=>{t[`handle${a}`]&&e.subscribedEvents.push(e._interactor[`on${a}`](o=>e.processEvents?t[`handle${a}`](o):Yt,e.priority))})}t.setInteractor=a=>{a!==e._interactor&&(s(),e._interactor=a,a&&e.enabled&&n(),t.modified())},t.setEnabled=a=>{a!==e.enabled&&(s(),a&&(e._interactor?n():Qt(`
1
+ import{m as v,as as _e,R as ft,K as Ge,L as Le,W as ke,N as We,k as de,E as X,t as vt,i as Me,x as ce,F as ht,Z as St,h as dt,D as Tt,al as wt,c as yt,at as Ct,d as Ve,au as xt,y as ue,ak as le,av as ze,j as pe}from"./cornerstoneEngine-DOq401ca.js";import{ae as Ne,am as De,an as re,K as B,k as Z,al as $,D as se,U as $e,X as Be,B as Q,J as Et,E as Rt,ak as _t,$ as He,a2 as Mt,Z as Vt,b as Dt,_ as Ke,ao as Bt,ap as be,aq as mt,ar as Te,as as Ot,z as Ut,at as Ft,au as Pt,av as ae,ad as Gt,R as Lt,aw as Y,ah as kt,ai as Wt,C as zt,P as Nt,I as $t,a as Ht}from"./Texture-CiCQeubr.js";import"./index-BuNudOlE.js";import"./refusal-DOpm8I8L.js";import"./_commonjsHelpers-CE1G-McA.js";import"./__vite-browser-external-D7Ct-6yo.js";function Kt(t){return t}function ye(t){if(t===null||t==="null")return null;if(t==="true")return!0;if(t==="false")return!1;if(!(t===void 0||t==="undefined"))return t[0]==="["&&t[t.length-1]==="]"?t.substring(1,t.length-1).split(",").map(e=>ye(e.trim())):t===""||Number.isNaN(Number(t))?t:Number(t)}function bt(t=!0,e=window.location.search){const r={},s=t?ye:Kt;return new URLSearchParams(e).forEach((n,a)=>{a&&(r[a]=n?s(n):!0)}),r}var It={toNativeType:ye,extractURLParameters:bt},jt={IS_START:0,IS_NONE:0,IS_ROTATE:1,IS_PAN:2,IS_SPIN:3,IS_DOLLY:4,IS_CAMERA_POSE:11,IS_WINDOW_LEVEL:1024,IS_SLICE:1025},Ce={States:jt},{vtkErrorMacro:Qt,VOID:Yt}=v;function Xt(t,e,r,s){return t.getRenderWindow().getViews()[0].worldToDisplay(e,r,s,t)}function Zt(t,e,r,s){return t.getRenderWindow().getViews()[0].displayToWorld(e,r,s,t)}var Jt={computeWorldToDisplay:Xt,computeDisplayToWorld:Zt};function qt(t,e){e.classHierarchy.push("vtkInteractorObserver");const r={...t};function s(){for(;e.subscribedEvents.length;)e.subscribedEvents.pop().unsubscribe()}function n(){Ne.handledEvents.forEach(a=>{t[`handle${a}`]&&e.subscribedEvents.push(e._interactor[`on${a}`](o=>e.processEvents?t[`handle${a}`](o):Yt,e.priority))})}t.setInteractor=a=>{a!==e._interactor&&(s(),e._interactor=a,a&&e.enabled&&n(),t.modified())},t.setEnabled=a=>{a!==e.enabled&&(s(),a&&(e._interactor?n():Qt(`
2
2
  The interactor must be set before subscribing to events
3
3
  `)),e.enabled=a,t.modified())},t.computeDisplayToWorld=(a,o,i,u)=>a?e._interactor.getView().displayToWorld(o,i,u,a):null,t.computeWorldToDisplay=(a,o,i,u)=>a?e._interactor.getView().worldToDisplay(o,i,u,a):null,t.setPriority=a=>{r.setPriority(a)&&e._interactor&&(s(),n())}}var At={enabled:!0,priority:0,processEvents:!0,subscribedEvents:[]};function Ie(t,e,r={}){Object.assign(e,At,r),v.obj(t,e),v.event(t,e,"InteractionEvent"),v.event(t,e,"StartInteractionEvent"),v.event(t,e,"EndInteractionEvent"),v.get(t,e,["_interactor","enabled"]),v.setGet(t,e,["priority","processEvents"]),v.moveToProtected(t,e,["interactor"]),qt(t,e)}var en=v.newInstance(Ie,"vtkInteractorObserver"),tn={newInstance:en,extend:Ie,...Jt},{States:N}=Ce,ge={Rotate:N.IS_ROTATE,Pan:N.IS_PAN,Spin:N.IS_SPIN,Dolly:N.IS_DOLLY,CameraPose:N.IS_CAMERA_POSE,WindowLevel:N.IS_WINDOW_LEVEL,Slice:N.IS_SLICE};function nn(t,e){e.classHierarchy.push("vtkInteractorStyle"),Object.keys(ge).forEach(r=>{v.event(t,e,`Start${r}Event`),t[`start${r}`]=()=>{e.state===N.IS_NONE&&(e.state=ge[r],e._interactor.requestAnimation(t),t.invokeStartInteractionEvent({type:"StartInteractionEvent"}),t[`invokeStart${r}Event`]({type:`Start${r}Event`}))},v.event(t,e,`End${r}Event`),t[`end${r}`]=()=>{e.state===ge[r]&&(e.state=N.IS_NONE,e._interactor.cancelAnimation(t),t.invokeEndInteractionEvent({type:"EndInteractionEvent"}),t[`invokeEnd${r}Event`]({type:`End${r}Event`}),e._interactor.render())}}),e.getRenderer=r=>e.focusedRenderer||r.pokedRenderer,t.handleKeyPress=r=>{const s=e._interactor;let n=null;switch(r.key){case"r":case"R":e.getRenderer(r).resetCamera(),s.render();break;case"w":case"W":n=e.getRenderer(r).getActors(),n.forEach(a=>{const o=a.getProperty();o.setRepresentationToWireframe&&o.setRepresentationToWireframe()}),s.render();break;case"s":case"S":n=e.getRenderer(r).getActors(),n.forEach(a=>{const o=a.getProperty();o.setRepresentationToSurface&&o.setRepresentationToSurface()}),s.render();break;case"v":case"V":n=e.getRenderer(r).getActors(),n.forEach(a=>{const o=a.getProperty();o.setRepresentationToPoints&&o.setRepresentationToPoints()}),s.render();break}}}var rn={state:N.IS_NONE,handleObservers:1,autoAdjustCameraClippingRange:1};function je(t,e,r={}){Object.assign(e,rn,r),tn.extend(t,e,r),v.setGet(t,e,["focusedRenderer"]),nn(t,e)}var an=v.newInstance(je,"vtkInteractorStyle"),xe={newInstance:an,extend:je,...Ce},{States:W}=Ce;function sn(t,e){e.classHierarchy.push("vtkInteractorStyleTrackballCamera"),t.handleMouseMove=r=>{const s=r.position,n=e.getRenderer(r);switch(e.state){case W.IS_ROTATE:t.handleMouseRotate(n,s),t.invokeInteractionEvent({type:"InteractionEvent"});break;case W.IS_PAN:t.handleMousePan(n,s),t.invokeInteractionEvent({type:"InteractionEvent"});break;case W.IS_DOLLY:e.wheelDolly||(t.handleMouseDolly(n,s),t.invokeInteractionEvent({type:"InteractionEvent"}));break;case W.IS_SPIN:t.handleMouseSpin(n,s),t.invokeInteractionEvent({type:"InteractionEvent"});break}e.previousPosition=s},t.handleButton3D=r=>{if(r&&r.pressed&&r.device===De.RightController&&(r.input===re.Trigger||r.input===re.TrackPad)){t.startCameraPose();return}r&&!r.pressed&&r.device===De.RightController&&(r.input===re.Trigger||r.input===re.TrackPad)&&e.state===W.IS_CAMERA_POSE&&t.endCameraPose()},t.handleMove3D=r=>{e.state===W.IS_CAMERA_POSE&&t.updateCameraPose(r)},t.updateCameraPose=r=>{const s=e.getRenderer(r).getActiveCamera(),n=s.getPhysicalTranslation(),a=.5*.05*s.getPhysicalScale(),o=s.physicalOrientationToWorldDirection([r.orientation.x,r.orientation.y,r.orientation.z,r.orientation.w]);s.setPhysicalTranslation(n[0]+o[0]*a,n[1]+o[1]*a,n[2]+o[2]*a)},t.handleLeftButtonPress=r=>{e.previousPosition=r.position,r.shiftKey?r.controlKey||r.altKey?t.startDolly():t.startPan():r.controlKey||r.altKey?t.startSpin():t.startRotate()},t.handleLeftButtonRelease=()=>{switch(e.state){case W.IS_DOLLY:t.endDolly();break;case W.IS_PAN:t.endPan();break;case W.IS_SPIN:t.endSpin();break;case W.IS_ROTATE:t.endRotate();break}},t.handleStartMouseWheel=()=>{e.wheelDolly=!0,t.startDolly()},t.handleEndMouseWheel=()=>{t.endDolly(),e.wheelDolly=!1},t.handleStartPinch=r=>{e.previousScale=r.scale,t.startDolly()},t.handleEndPinch=()=>{t.endDolly()},t.handleStartRotate=r=>{e.previousRotation=r.rotation,t.startRotate()},t.handleEndRotate=()=>{t.endRotate()},t.handleStartPan=r=>{e.previousTranslation=r.translation,t.startPan()},t.handleEndPan=()=>{t.endPan()},t.handlePinch=r=>{t.dollyByFactor(e.getRenderer(r),r.scale/e.previousScale),e.previousScale=r.scale},t.handlePan=r=>{const s=e.getRenderer(r).getActiveCamera();let n=s.getFocalPoint();n=t.computeWorldToDisplay(e.getRenderer(r),n[0],n[1],n[2]);const a=n[2],o=r.translation,i=e.previousTranslation,u=t.computeDisplayToWorld(e.getRenderer(r),n[0]+o[0]-i[0],n[1]+o[1]-i[1],a),p=t.computeDisplayToWorld(e.getRenderer(r),n[0],n[1],a),c=[];c[0]=p[0]-u[0],c[1]=p[1]-u[1],c[2]=p[2]-u[2],n=s.getFocalPoint();const l=s.getPosition();s.setFocalPoint(c[0]+n[0],c[1]+n[1],c[2]+n[2]),s.setPosition(c[0]+l[0],c[1]+l[1],c[2]+l[2]),e._interactor.getLightFollowCamera()&&e.getRenderer(r).updateLightsGeometryToFollowCamera(),s.orthogonalizeViewUp(),e.previousTranslation=r.translation},t.handleRotate=r=>{const s=e.getRenderer(r).getActiveCamera();s.roll(r.rotation-e.previousRotation),s.orthogonalizeViewUp(),e.previousRotation=r.rotation},t.handleMouseRotate=(r,s)=>{if(!e.previousPosition)return;const n=e._interactor,a=s.x-e.previousPosition.x,o=s.y-e.previousPosition.y,i=n.getView().getViewportSize(r);let u=-.1,p=-.1;i[0]&&i[1]&&(u=-20/i[1],p=-20/i[0]);const c=a*p*e.motionFactor,l=o*u*e.motionFactor,g=r.getActiveCamera();!Number.isNaN(c)&&!Number.isNaN(l)&&(g.azimuth(c),g.elevation(l),g.orthogonalizeViewUp()),e.autoAdjustCameraClippingRange&&r.resetCameraClippingRange(),n.getLightFollowCamera()&&r.updateLightsGeometryToFollowCamera()},t.handleMouseSpin=(r,s)=>{if(!e.previousPosition)return;const n=e._interactor,a=r.getActiveCamera(),o=n.getView().getViewportCenter(r),i=_e(Math.atan2(e.previousPosition.y-o[1],e.previousPosition.x-o[0])),u=_e(Math.atan2(s.y-o[1],s.x-o[0]))-i;Number.isNaN(u)||(a.roll(u),a.orthogonalizeViewUp())},t.handleMousePan=(r,s)=>{if(!e.previousPosition)return;const n=r.getActiveCamera();let a=n.getFocalPoint();a=t.computeWorldToDisplay(r,a[0],a[1],a[2]);const o=a[2],i=t.computeDisplayToWorld(r,s.x,s.y,o),u=t.computeDisplayToWorld(r,e.previousPosition.x,e.previousPosition.y,o),p=[];p[0]=u[0]-i[0],p[1]=u[1]-i[1],p[2]=u[2]-i[2],a=n.getFocalPoint();const c=n.getPosition();n.setFocalPoint(p[0]+a[0],p[1]+a[1],p[2]+a[2]),n.setPosition(p[0]+c[0],p[1]+c[1],p[2]+c[2]),e._interactor.getLightFollowCamera()&&r.updateLightsGeometryToFollowCamera()},t.handleMouseDolly=(r,s)=>{if(!e.previousPosition)return;const n=s.y-e.previousPosition.y,a=e._interactor.getView().getViewportCenter(r),o=e.motionFactor*n/a[1];t.dollyByFactor(r,1.1**o)},t.handleMouseWheel=r=>{const s=1-r.spinY/e.zoomFactor;t.dollyByFactor(e.getRenderer(r),s)},t.dollyByFactor=(r,s)=>{if(Number.isNaN(s))return;const n=r.getActiveCamera();n.getParallelProjection()?n.setParallelScale(n.getParallelScale()/s):(n.dolly(s),e.autoAdjustCameraClippingRange&&r.resetCameraClippingRange()),e._interactor.getLightFollowCamera()&&r.updateLightsGeometryToFollowCamera()}}var on={motionFactor:10,zoomFactor:10,wheelDolly:!1};function Qe(t,e,r={}){Object.assign(e,on,r),xe.extend(t,e,r),v.setGet(t,e,["motionFactor","zoomFactor"]),sn(t,e)}var cn=v.newInstance(Qe,"vtkInteractorStyleTrackballCamera"),un={newInstance:cn,extend:Qe},{vtkErrorMacro:ln}=ft,fe=["setBindGroup","setIndexBuffer","setVertexBuffer","draw","drawIndexed"];function pn(t,e){e.classHierarchy.push("vtkWebGPURenderEncoder"),t.begin=r=>{e.drawCallbacks=[],e.handle=r.beginRenderPass(e.description),e.label&&e.handle.pushDebugGroup(e.label)},t.end=()=>{for(let r=0;r<e.drawCallbacks.length;r++){const s=e.drawCallbacks[r],n=s.pipeline;t.setPipeline(n);for(let a=0;a<s.callbacks.length;a++)s.callbacks[a](t)}e.label&&e.handle.popDebugGroup(),e.handle.end(),e.boundPipeline=null},t.setPipeline=r=>{if(e.boundPipeline===r)return;e.handle.setPipeline(r.getHandle());const s=r.getPipelineDescription(),n=s.fragment?.targets;if(e.colorTextureViews.length!==n.length)console.log(`mismatched attachment counts on pipeline ${n.length} while encoder has ${e.colorTextureViews.length}`),console.trace();else for(let a=0;a<e.colorTextureViews.length;a++){const o=e.colorTextureViews[a].getTexture()?.getFormat();o&&o!==n[a].format&&(console.log(`mismatched attachments for attachment ${a} on pipeline ${n[a].format} while encoder has ${o}`),console.trace())}if(!!e.depthTextureView!="depthStencil"in s)console.log("mismatched depth attachments"),console.trace();else if(e.depthTextureView){const a=e.depthTextureView.getTexture()?.getFormat();a&&a!==s.depthStencil.format&&(console.log(`mismatched depth attachments on pipeline ${s.depthStencil.format} while encoder has ${a}`),console.trace())}e.boundPipeline=r},t.replaceShaderCode=r=>{e.replaceShaderCodeFunction(r)},t.setColorTextureView=(r,s)=>{e.colorTextureViews[r]!==s&&(e.colorTextureViews[r]=s)},t.activateBindGroup=r=>{const s=e.boundPipeline.getDevice(),n=e.boundPipeline.getBindGroupLayoutIndex(r.getLabel());if(n<0){ln(`vtkWebGPURenderEncoder: could not find bind group layout ${r.getLabel()}`);return}e.handle.setBindGroup(n,r.getBindGroup(s));const a=s.getBindGroupLayoutDescription(r.getBindGroupLayout(s)),o=s.getBindGroupLayoutDescription(e.boundPipeline.getBindGroupLayout(n));a!==o&&(console.log(`renderEncoder ${e.pipelineHash} mismatched bind group layouts bind group has
4
4
  ${a}
@@ -556,4 +556,4 @@ fn main(
556
556
  //VTK::RenderEncoder::Impl
557
557
  return output;
558
558
  }
559
- `;function kn(t,e){e.classHierarchy.push("vtkForwardPass"),t.traverse=(r,s=null)=>{if(e.deleted)return;e._currentParent=s,t.setCurrentOperation("buildPass"),r.traverse(t),e.opaquePass||(e.opaquePass=dn.newInstance());const n=r.getRenderable().getNumberOfLayers(),a=r.getChildren();for(let o=0;o<n;o++)for(let i=0;i<a.length;i++){const u=a[i],p=r.getRenderable().getRenderers()[i];p.getDraw()&&p.getLayer()===o&&(e.opaqueActorCount=0,e.translucentActorCount=0,e.volumes=[],t.setCurrentOperation("queryPass"),u.traverse(t),t.setCurrentOperation("cameraPass"),u.traverse(t),e.opaquePass.traverse(u,r),e.translucentActorCount>0&&(e.translucentPass||(e.translucentPass=xn.newInstance()),e.translucentPass.setColorTextureView(e.opaquePass.getColorTextureView()),e.translucentPass.setDepthTextureView(e.opaquePass.getDepthTextureView()),e.translucentPass.traverse(u,r)),e.volumes.length>0&&(e.volumePass||(e.volumePass=Gn.newInstance()),e.volumePass.setColorTextureView(e.opaquePass.getColorTextureView()),e.volumePass.setDepthTextureView(e.opaquePass.getDepthTextureView()),e.volumePass.setVolumes(e.volumes),e.volumePass.traverse(u,r)),t.finalPass(r,u))}},t.finalPass=(r,s)=>{e._finalBlitEncoder||t.createFinalBlitEncoder(r),e._finalBlitOutputTextureView.createFromTextureHandle(r.getCurrentTexture(),{depth:1,format:r.getPresentationFormat()}),e._finalBlitEncoder.attachTextureViews(),e._finalBlitEncoder.begin(r.getCommandEncoder()),s.scissorAndViewport(e._finalBlitEncoder),e._fullScreenQuad.prepareAndDraw(e._finalBlitEncoder),e._finalBlitEncoder.end()},t.createFinalBlitEncoder=r=>{e._finalBlitEncoder=H.newInstance({label:"forwardPassBlit"}),e._finalBlitEncoder.setDescription({colorAttachments:[{view:null,loadOp:"load",storeOp:"store"}]}),e._finalBlitEncoder.setPipelineHash("fpf"),e._finalBlitEncoder.setPipelineSettings({primitive:{cullMode:"none"},fragment:{targets:[{format:r.getPresentationFormat(),blend:{color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]}}),e._fsqSampler=He.newInstance({label:"finalPassSampler"}),e._fsqSampler.create(r.getDevice(),{minFilter:"linear",magFilter:"linear"}),e._fullScreenQuad=se.newInstance(),e._fullScreenQuad.setDevice(r.getDevice()),e._fullScreenQuad.setPipelineHash("fpfsq"),e._fullScreenQuad.setTextureViews([e.opaquePass.getColorTextureView()]),e._fullScreenQuad.setAdditionalBindables([e._fsqSampler]),e._fullScreenQuad.setFragmentShaderTemplate(Ln),e._fullScreenQuad.getShaderReplacements().set("replaceShaderTCoord",(s,n)=>{const a=n.getShaderDescription("vertex");a.hasOutput("tcoordVS")||a.addOutput("vec2<f32>","tcoordVS"),n.getShaderDescription("fragment").addBuiltinInput("vec4<f32>","@builtin(position) fragPos")}),e._finalBlitOutputTextureView=Bt.newInstance(),e._finalBlitEncoder.setColorTextureView(0,e._finalBlitOutputTextureView)},t.incrementOpaqueActorCount=()=>e.opaqueActorCount++,t.incrementTranslucentActorCount=()=>e.translucentActorCount++,t.addVolume=r=>{e.volumes.push(r)},t.releaseGraphicsResources=()=>{e.opaquePass?.releaseGraphicsResources?.(),e.translucentPass?.releaseGraphicsResources?.(),e.volumePass?.releaseGraphicsResources?.(),e.opaquePass=null,e.translucentPass=null,e.volumePass=null,e._finalBlitEncoder=null,e._finalBlitOutputTextureView=null,e._fullScreenQuad=null,e._fsqSampler=null}}var Wn={opaqueActorCount:0,translucentActorCount:0,volumes:null,opaqueRenderEncoder:null,translucentPass:null,volumePass:null};function Ae(t,e,r={}){Object.assign(e,Wn,r),Z.extend(t,e,r),v.setGet(t,e,["opaquePass","translucentPass","volumePass"]),kn(t,e)}var zn=v.newInstance(Ae,"vtkForwardPass"),Nn={newInstance:zn,extend:Ae},{VtkDataTypes:I}=Tt;function $n(t,e){e.classHierarchy.push("vtkWebGPUTextureManager");function r(n){if(n.imageData){n.dataArray=n.imageData.getPointData().getScalars(),n.time=n.dataArray.getMTime(),n.nativeArray=n.dataArray.getData();const a=n.imageData.getDimensions();switch(n.width=a[0],n.height=a[1],n.depth=a[2],n.dataArray.getNumberOfComponents()){case 1:n.format="r";break;case 2:n.format="rg";break;default:n.format="rgba";break}switch(n.dataArray.getDataType()){case I.UNSIGNED_CHAR:n.format+="8unorm";break;case I.FLOAT:case I.UNSIGNED_INT:case I.INT:case I.DOUBLE:case I.UNSIGNED_SHORT:case I.SHORT:default:n.format+="16float";break}}n.image&&(n.width=n.image.width,n.height=n.image.height,n.depth=1,n.format="rgba8unorm",n.flip=!0,n.usage=GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT),n.jsImageData&&(n.width=n.jsImageData.width,n.height=n.jsImageData.height,n.depth=1,n.format="rgba8unorm",n.flip=!0,n.nativeArray=n.jsImageData.data,n.usage=GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT),n.imageBitmap&&(n.width=n.imageBitmap.width,n.height=n.imageBitmap.height,n.depth=1,n.format="rgba8unorm",n.flip=!0,n.usage=GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT),n.canvas&&(n.width=n.canvas.width,n.height=n.canvas.height,n.depth=1,n.format="rgba8unorm",n.flip=!0,n.usage=GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT)}function s(n){const a=$.newInstance({label:n.label});return a.create(e.device,{width:n.width,height:n.height,depth:n.depth,format:n.format,usage:n.usage,mipLevel:n.mipLevel}),(n.nativeArray||n.image||n.canvas||n.imageBitmap)&&a.writeImageData(n),a}t.getTexture=n=>n.hash?e.device.getCachedObject(n.hash,s,n):s(n),t.getTextureForImageData=n=>{const a={time:n.getMTime()};return a.imageData=n,r(a),a.hash=a.time+a.format+a.mipLevel,e.device.getTextureManager().getTexture(a)},t.getTextureForVTKTexture=(n,a=void 0)=>{const o={time:n.getMTime(),label:a};return n.getInputData()?o.imageData=n.getInputData():n.getImage()?o.image=n.getImage():n.getJsImageData()?o.jsImageData=n.getJsImageData():n.getImageBitmap()?o.imageBitmap=n.getImageBitmap():n.getCanvas()&&(o.canvas=n.getCanvas()),r(o),o.mipLevel=n.getMipLevel(),o.hash=o.time+o.format+o.mipLevel,e.device.getTextureManager().getTexture(o)}}var Hn={handle:null,device:null};function et(t,e,r={}){Object.assign(e,Hn,r),v.obj(t,e),v.setGet(t,e,["device"]),$n(t,e)}var Kn=v.newInstance(et),bn={newInstance:Kn,extend:et},In=class extends Map{constructor(){super(),this.registry=new FinalizationRegistry(t=>{const e=super.get(t);e&&e.deref&&e.deref()===void 0&&super.delete(t)})}getValue(t){const e=super.get(t);if(e){const r=e.deref();if(r!==void 0)return r;super.delete(t)}}setValue(t,e){let r;return e&&typeof e=="object"&&(r=new WeakRef(e),this.registry.register(e,t),super.set(t,r)),r}};function jn(t,e){e.classHierarchy.push("vtkWebGPUDevice"),t.initialize=r=>{e.handle=r},t.createCommandEncoder=()=>e.handle.createCommandEncoder(),t.submitCommandEncoder=r=>{e.handle.queue.submit([r.finish()])},t.getShaderModule=r=>e.shaderCache.getShaderModule(r),t.getBindGroupLayout=r=>{if(!r.entries)return null;for(let a=0;a<r.entries.length;a++){const o=r.entries[a];o.binding=o.binding||0,o.visibility=o.visibility||GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT}const s=JSON.stringify(r);for(let a=0;a<e.bindGroupLayouts.length;a++)if(e.bindGroupLayouts[a].sval===s)return e.bindGroupLayouts[a].layout;const n=e.handle.createBindGroupLayout(r);return e.bindGroupLayouts.push({sval:s,layout:n}),n},t.getBindGroupLayoutDescription=r=>{for(let s=0;s<e.bindGroupLayouts.length;s++)if(e.bindGroupLayouts[s].layout===r)return e.bindGroupLayouts[s].sval;return vtkErrorMacro("layout not found"),console.trace(),null},t.getPipeline=r=>r in e.pipelines?e.pipelines[r]:null,t.createPipeline=(r,s)=>{s.initialize(t,r),e.pipelines[r]=s},t.onSubmittedWorkDone=()=>e.handle.queue.onSubmittedWorkDone(),t.hasCachedObject=r=>e.objectCache.getValue(r),t.getCachedObject=(r,s,...n)=>{if(!r)return vtkErrorMacro("attempt to cache an object without a hash"),null;const a=e.objectCache.getValue(r);if(a)return a;const o=s(...n);return e.objectCache.setValue(r,o),o}}var Qn={handle:null,pipelines:null,shaderCache:null,bindGroupLayouts:null,bufferManager:null,textureManager:null};function tt(t,e,r={}){Object.assign(e,Qn,r),Le(t,e),We(t,e,["handle"]),ke(t,e,["bufferManager","shaderCache","textureManager"]),e.objectCache=new In,e.shaderCache=B.newInstance(),e.shaderCache.setDevice(t),e.bindGroupLayouts=[],e.bufferManager=Ke.newInstance(),e.bufferManager.setDevice(t),e.textureManager=bn.newInstance(),e.textureManager.setDevice(t),e.pipelines={},jn(t,e)}var Yn=Ge(tt,"vtkWebGPUDevice"),Xn={newInstance:Yn,extend:tt};function Zn(t,e){e.classHierarchy.push("vtkWebGPUHardwareSelectionPass"),t.traverse=(r,s)=>{if(e.deleted)return;e._currentParent=null,t.setCurrentOperation("buildPass"),r.traverse(t);const n=r.getDevice();if(e.selectionRenderEncoder)e.colorTexture.resize(r.getCanvas().width,r.getCanvas().height),e.depthTexture.resizeToMatch(e.colorTexture);else{t.createRenderEncoder(),e.colorTexture=$.newInstance({label:"hardwareSelectorColor"}),e.colorTexture.create(n,{width:r.getCanvas().width,height:r.getCanvas().height,format:"rgba32uint",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC});const a=e.colorTexture.createView("hardwareSelectColorTexture");e.selectionRenderEncoder.setColorTextureView(0,a),e.depthTexture=$.newInstance({label:"hardwareSelectorDepth"}),e.depthTexture.create(n,{width:r.getCanvas().width,height:r.getCanvas().height,format:"depth32float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC});const o=e.depthTexture.createView("hardwareSelectDepthTexture");e.selectionRenderEncoder.setDepthTextureView(o)}e.selectionRenderEncoder.attachTextureViews(),s.setRenderEncoder(e.selectionRenderEncoder),t.setCurrentOperation("cameraPass"),s.traverse(t),t.setCurrentOperation("opaquePass"),s.traverse(t)},t.createRenderEncoder=()=>{e.selectionRenderEncoder=H.newInstance({label:"HardwareSelectionPass"}),e.selectionRenderEncoder.setPipelineHash("sel"),e.selectionRenderEncoder.setReplaceShaderCodeFunction(s=>{const n=s.getShaderDescription("fragment");n.addOutput("vec4<u32>","outColor");let a=n.getCode();a=B.substitute(a,"//VTK::Select::Impl",[" var compositeID: u32 = 0u;"," var attributeID: u32 = compositeID;"]).result,a=B.substitute(a,"//VTK::RenderEncoder::Impl",["output.outColor = vec4<u32>(mapperUBO.PropID, compositeID, attributeID + 1u, 0u);"]).result,n.setCode(a)});const r=e.selectionRenderEncoder.getDescription();r.colorAttachments[0].clearValue=[0,0,0,0],e.selectionRenderEncoder.setPipelineSettings({primitive:{cullMode:"none"},depthStencil:{depthWriteEnabled:!0,depthCompare:"greater",format:"depth32float"},fragment:{targets:[{format:"rgba32uint",blend:void 0}]}})}}var Jn={selectionRenderEncoder:null,colorTexture:null,depthTexture:null};function nt(t,e,r={}){Object.assign(e,Jn,r),Z.extend(t,e,r),v.get(t,e,["colorTexture","depthTexture"]),Zn(t,e)}var qn=v.newInstance(nt,"vtkWebGPUHardwareSelectionPass"),An={newInstance:qn,extend:nt},{SelectionContent:er,SelectionField:Oe}=be,{FieldAssociations:Ue}=wt,{vtkErrorMacro:rt}=v;function tr(t){return`${t.propID} ${t.compositeID}`}function he(t,e,r,s){const n=((r.height-e-1)*r.colorBufferWidth+t)*4+s;return r.colorValues[n]}function nr(t,e,r,s){{if(s[0]=e[0],s[1]=e[1],e[0]<0||e[0]>=t.width||e[1]<0||e[1]>=t.height)return null;const n=he(e[0],e[1],t,0);if(n<=0||n-1>=(t.props?.length??0))return null;const a={};a.propID=n-1,a.prop=t.props?.[a.propID];let o=he(e[0],e[1],t,1);(o<0||o>16777215)&&(o=0),a.compositeID=o-1;let i=he(e[0],e[1],t,2);if(i<1&&(i=o),a.attributeID=i-1,t.captureZValues){const u=(t.height-e[1]-1)*t.zbufferBufferWidth+e[0];a.zValue=t.depthValues[u],a.zValue=t.webGPURenderer.convertToOpenGLDepth(a.zValue),a.displayPosition=e}return a}}function rr(t,e,r){const s=[];let n=0;return e.forEach((a,o)=>{const i=be.newInstance();switch(i.setContentType(er.INDICES),t){case Ue.FIELD_ASSOCIATION_CELLS:i.setFieldType(Oe.CELL);break;case Ue.FIELD_ASSOCIATION_POINTS:i.setFieldType(Oe.POINT);break;default:rt("Unknown field association")}i.getProperties().propID=a.info.propID,i.getProperties().prop=a.info.prop,i.getProperties().compositeID=a.info.compositeID,i.getProperties().attributeID=a.info.attributeID,i.getProperties().pixelCount=a.pixelCount,r.captureZValues&&(i.getProperties().displayPosition=[a.info.displayPosition[0],a.info.displayPosition[1],a.info.zValue],i.getProperties().worldPosition=r.webGPURenderWindow.displayToWorld(a.info.displayPosition[0],a.info.displayPosition[1],a.info.zValue,r.renderer)),i.setSelectionList(a.attributeIDs),s[n]=i,n++}),s}function ar(t,e,r,s,n){const a=Math.floor(e),o=Math.floor(r),i=Math.floor(s),u=Math.floor(n),p=new Map,c=[0,0];for(let l=o;l<=u;l++)for(let g=a;g<=i;g++){const f=nr(t,[g,l],0,c);if(f){const h=tr(f);if(!p.has(h))p.set(h,{info:f,pixelCount:1,attributeIDs:[f.attributeID]});else{const S=p.get(h);S.pixelCount++,t.captureZValues&&f.zValue<S.info.zValue&&(S.info=f),S.attributeIDs.indexOf(f.attributeID)===-1&&S.attributeIDs.push(f.attributeID)}}}return rr(t.fieldAssociation,p,t)}function sr(t,e){e.classHierarchy.push("vtkWebGPUHardwareSelector"),t.getPropIDForSelection=(r,s=null)=>{if(e._selectionPropMap.has(r))return e._selectionPropMap.get(r);const n=e._selectionProps.length;return e._selectionPropMap.set(r,n),e._selectionProps.push(s),n},t.endSelection=()=>{e.WebGPURenderer.setSelector(null)},t.getSourceDataAsync=async r=>{if(!r||!e._WebGPURenderWindow)return rt("Renderer and view must be set before calling Select."),!1;e._WebGPURenderWindow.getRenderable().preRender(),e._WebGPURenderWindow.getInitialized()||(e._WebGPURenderWindow.initialize(),await new Promise(h=>{e._WebGPURenderWindow.onInitialized(h)}));const s=e._WebGPURenderWindow.getViewNodeFor(r);if(!s)return!1;const n=s.getSuppressClear(),a=s.getSelector();e._selectionPropMap.clear(),e._selectionProps=[],s.setSuppressClear(!0),s.setSelector(t);try{e._selectionPass.traverse(e._WebGPURenderWindow,s)}finally{s.setSelector(a),s.setSuppressClear(n)}const o=e._WebGPURenderWindow.getDevice(),i=e._selectionPass.getColorTexture(),u=e._selectionPass.getDepthTexture(),p={area:[0,0,i.getWidth()-1,i.getHeight()-1],captureZValues:e.captureZValues,fieldAssociation:e.fieldAssociation,props:[...e._selectionProps],renderer:r,webGPURenderer:s,webGPURenderWindow:e._WebGPURenderWindow,width:i.getWidth(),height:i.getHeight()};p.colorBufferWidth=16*Math.floor((p.width+15)/16),p.colorBufferSizeInBytes=p.colorBufferWidth*p.height*4*4;const c=Te.newInstance({label:"hardwareSelectColorBuffer"});c.setDevice(o),c.create(p.colorBufferSizeInBytes,GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST);const l=e._WebGPURenderWindow.getCommandEncoder();l.copyTextureToBuffer({texture:i.getHandle()},{buffer:c.getHandle(),bytesPerRow:16*p.colorBufferWidth,rowsPerImage:p.height},{width:p.width,height:p.height,depthOrArrayLayers:1});let g;e.captureZValues&&(p.zbufferBufferWidth=64*Math.floor((p.width+63)/64),g=Te.newInstance({label:"hardwareSelectDepthBuffer"}),g.setDevice(o),p.zbufferSizeInBytes=p.height*p.zbufferBufferWidth*4,g.create(p.zbufferSizeInBytes,GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST),l.copyTextureToBuffer({texture:u.getHandle(),aspect:"depth-only"},{buffer:g.getHandle(),bytesPerRow:4*p.zbufferBufferWidth,rowsPerImage:p.height},{width:p.width,height:p.height,depthOrArrayLayers:1})),o.submitCommandEncoder(l);const f=c.mapAsync(GPUMapMode.READ);if(e.captureZValues){const h=g.mapAsync(GPUMapMode.READ);await Promise.all([f,h]),p.depthValues=new Float32Array(g.getMappedRange().slice()),g.unmap()}else await f;return p.colorValues=new Uint32Array(c.getMappedRange().slice()),c.unmap(),p.generateSelection=(h,S,x,C)=>ar(p,h,S,x,C),p}}var or={_selectionPropMap:null,_selectionProps:null};function at(t,e,r={}){Object.assign(e,or,r),mt.extend(t,e,r),e._selectionPass=An.newInstance(),e._selectionPropMap=new Map,e._selectionProps=[],v.setGet(t,e,["_WebGPURenderWindow"]),v.moveToProtected(t,e,["WebGPURenderWindow"]),sr(t,e)}var ir=v.newInstance(at,"vtkWebGPUHardwareSelector"),st={newInstance:ir,extend:at},{vtkErrorMacro:Fe,vtkWarningMacro:cr}=v,ur={position:"absolute",top:0,left:0,width:"100%",height:"100%"};function lr(t,e){e.classHierarchy.push("vtkWebGPURenderWindow"),t.getViewNodeFactory=()=>e.myFactory;function r(c,l=new Set){if(!c||l.has(c))return;l.add(c);const g=c.getChildren?.()||[];for(let f=0;f<g.length;f++){const h=g[f];h?.releaseGraphicsResources?.(),r(h,l)}}function s(){const c=t.onInitialized(()=>{c.unsubscribe(),e.deleted||t.traverseAllPasses()})}function n(c,l){if(e.deleted||l!==e.deviceGeneration||e.handlingDeviceLost)return;e.handlingDeviceLost=!0,e.deviceLostInfo=c;const g=c?.reason??"unknown",f=c?.message||"WebGPU device was lost.";cr(`WebGPU device lost (${g}): ${f}`),t.releaseGraphicsResources(),t.invokeDeviceLost({reason:g,message:f,recoverable:g!=="destroyed"}),g!=="destroyed"&&(s(),t.initialize()),e.handlingDeviceLost=!1}function a(c,l){c.lost.then(g=>{n(g,l)})}const o=[0,0];function i(){e.renderable&&(e.size[0]!==o[0]||e.size[1]!==o[1])&&(o[0]=e.size[0],o[1]=e.size[1],e.canvas.setAttribute("width",e.size[0]),e.canvas.setAttribute("height",e.size[1]),t.recreateSwapChain()),e.viewStream&&e.viewStream.setSize(e.size[0],e.size[1]),e.canvas.style.display=e.useOffScreen?"none":"block",e.el&&(e.el.style.cursor=e.cursorVisibility?e.cursor:"none"),e.containerSize=null}t.onModified(i),t.recreateSwapChain=()=>{e.context&&(e.context.unconfigure(),e.presentationFormat=navigator.gpu.getPreferredCanvasFormat(e.adapter),e.context.configure({device:e.device.getHandle(),format:e.presentationFormat,alphaMode:"premultiplied",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_DST,width:e.size[0],height:e.size[1]}),e._configured=!0)},t.getCurrentTexture=()=>e.context.getCurrentTexture(),t.buildPass=c=>{if(c){if(!e.renderable)return;t.prepareNodes(),t.addMissingNodes(e.renderable.getRenderersByReference()),t.removeUnusedNodes(),t.initialize()}else e.initialized&&(e._configured||t.recreateSwapChain(),e.commandEncoder=e.device.createCommandEncoder())},t.initialize=()=>{if(!e.initializing){if(e.initializing=!0,e.deviceLostInfo=null,!navigator.gpu){Fe("WebGPU is not enabled.");return}t.create3DContextAsync().then(()=>{e.initialized=!0,!e.deleted&&t.invokeInitialized()})}},t.setContainer=c=>{e.el&&e.el!==c&&(e.canvas.parentNode!==e.el&&Fe("Error: canvas parent node does not match container"),e.el.removeChild(e.canvas),e.el.contains(e.bgImage)&&e.el.removeChild(e.bgImage)),e.el!==c&&(e.el=c,e.el&&(e.el.appendChild(e.canvas),e.useBackgroundImage&&e.el.appendChild(e.bgImage)),t.modified())},t.getContainer=()=>e.el,t.getContainerSize=()=>{if(!e.containerSize&&e.el){const{width:c,height:l}=e.el.getBoundingClientRect();e.containerSize=[c,l]}return e.containerSize||e.size},t.getFramebufferSize=()=>e.size,t.create3DContextAsync=async()=>{if(e.adapter=await navigator.gpu.requestAdapter({powerPreference:"high-performance"}),!e.deleted){if(e.device=Xn.newInstance(),e.device.initialize(await e.adapter.requestDevice({requiredLimits:{maxBufferSize:e.adapter.limits.maxBufferSize,maxStorageBufferBindingSize:e.adapter.limits.maxStorageBufferBindingSize,maxUniformBufferBindingSize:e.adapter.limits.maxUniformBufferBindingSize}})),e.deleted){e.device=null;return}e.deviceGeneration+=1,a(e.device.getHandle(),e.deviceGeneration),e.context=e.canvas.getContext("webgpu")}},t.releaseGraphicsResources=()=>{if(e.renderPasses)for(let l=0;l<e.renderPasses.length;l++)e.renderPasses[l]?.releaseGraphicsResources?.();r(t);const c=Z.newInstance();c.setCurrentOperation("Release"),c.traverse(t,null),e.context&&e.context.unconfigure(),e.adapter=null,e.device=null,e.context=null,e.commandEncoder=null,e._configured=!1,e.initialized=!1,e.initializing=!1},t.setBackgroundImage=c=>{e.bgImage.src=c.src},t.setUseBackgroundImage=c=>{e.useBackgroundImage=c,e.useBackgroundImage&&!e.el.contains(e.bgImage)?e.el.appendChild(e.bgImage):!e.useBackgroundImage&&e.el.contains(e.bgImage)&&e.el.removeChild(e.bgImage)};async function u(c=e.imageFormat){const l=document.createElement("canvas"),g=l.getContext("2d");l.width=e.canvas.width,l.height=e.canvas.height;const f=await t.getPixelsAsync(),h=new ImageData(f.colorValues,f.width,f.height);g.putImageData(h,0,0);const S=e.canvas.getBoundingClientRect();e.renderable.getRenderers().forEach(C=>{C.getViewProps().forEach(_=>{if(_.getContainer){const R=_.getContainer().getElementsByTagName("canvas");for(let M=0;M<R.length;M++){const T=R[M],U=T.getBoundingClientRect(),V=U.x-S.x,d=U.y-S.y;g.drawImage(T,V,d)}}})});const x=l.toDataURL(c);l.remove(),t.invokeImageReady(x)}t.captureNextImage=(c="image/png",{resetCamera:l=!1,size:g=null,scale:f=1}={})=>{if(e.deleted)return null;e.imageFormat=c;const h=e.notifyStartCaptureImage;return e.notifyStartCaptureImage=!0,e._screenshot={size:g||f!==1?g||e.size.map(S=>S*f):null},new Promise((S,x)=>{const C=t.onImageReady(_=>{if(e._screenshot.size===null)e.notifyStartCaptureImage=h,C.unsubscribe(),e._screenshot.placeHolder&&(e.size=e._screenshot.originalSize,t.modified(),e._screenshot.cameras&&e._screenshot.cameras.forEach(({restoreParamsFn:R,arg:M})=>R(M)),t.traverseAllPasses(),e.el.removeChild(e._screenshot.placeHolder),e._screenshot.placeHolder.remove(),e._screenshot=null),S(_);else{const R=document.createElement("img");if(R.style=ur,R.src=_,e._screenshot.placeHolder=e.el.appendChild(R),e.canvas.style.display="none",e._screenshot.originalSize=e.size,e.size=e._screenshot.size,e._screenshot.size=null,t.modified(),l){const M=l!==!0;e._screenshot.cameras=e.renderable.getRenderers().map(T=>{const U=T.getActiveCamera(),V=U.get("focalPoint","position","parallelScale");return{resetCameraArgs:M?{renderer:T}:void 0,resetCameraFn:M?l:T.resetCamera,restoreParamsFn:U.set,arg:JSON.parse(JSON.stringify(V))}}),e._screenshot.cameras.forEach(({resetCameraFn:T,resetCameraArgs:U})=>T(U))}t.traverseAllPasses()}})})},t.traverseAllPasses=()=>{if(!e.deleted)if(e.initialized){if(e.renderPasses)for(let c=0;c<e.renderPasses.length;++c)e.renderPasses[c].traverse(t,null);e.commandEncoder&&(e.device.submitCommandEncoder(e.commandEncoder),e.commandEncoder=null,e.notifyStartCaptureImage&&e.device.onSubmittedWorkDone().then(()=>{u()}))}else{t.initialize();const c=t.onInitialized(()=>{c.unsubscribe(),t.traverseAllPasses()})}},t.setViewStream=c=>{if(e.viewStream===c)return!1;if(e.subscription&&(e.subscription.unsubscribe(),e.subscription=null),e.viewStream=c,e.viewStream){const l=e.renderable.getRenderers()[0];l.getBackgroundByReference()[3]=0,t.setUseBackgroundImage(!0),e.subscription=e.viewStream.onImageReady(g=>t.setBackgroundImage(g.image)),e.viewStream.setSize(e.size[0],e.size[1]),e.viewStream.invalidateCache(),e.viewStream.render(),t.modified()}return!0},t.getUniquePropID=()=>e.nextPropID++,t.getPropFromID=c=>{for(let l=0;l<e.children.length;l++){const g=e.children[l].getPropFromID(c);if(g!==null)return g}return null},t.getPixelsAsync=async()=>{const c=e.device,l=e.renderPasses[0].getOpaquePass().getColorTexture(),g={width:l.getWidth(),height:l.getHeight()};g.colorBufferWidth=32*Math.floor((g.width+31)/32),g.colorBufferSizeInBytes=g.colorBufferWidth*g.height*8;const f=Te.newInstance();f.setDevice(c),f.create(g.colorBufferSizeInBytes,GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST);const h=e.device.createCommandEncoder();h.copyTextureToBuffer({texture:l.getHandle()},{buffer:f.getHandle(),bytesPerRow:8*g.colorBufferWidth,rowsPerImage:g.height},{width:g.width,height:g.height,depthOrArrayLayers:1}),c.submitCommandEncoder(h),await f.mapAsync(GPUMapMode.READ),g.colorValues=new Uint16Array(f.getMappedRange().slice()),f.unmap();const S=new Uint8ClampedArray(g.height*g.width*4);for(let x=0;x<g.height;x++)for(let C=0;C<g.width;C++){const _=(x*g.width+C)*4,R=(x*g.colorBufferWidth+C)*4;S[_]=255*ae.fromHalf(g.colorValues[R]),S[_+1]=255*ae.fromHalf(g.colorValues[R+1]),S[_+2]=255*ae.fromHalf(g.colorValues[R+2]),S[_+3]=255*ae.fromHalf(g.colorValues[R+3])}return g.colorValues=S,g},t.createSelector=()=>{const c=st.newInstance();return c.setWebGPURenderWindow(t),c};const p=t.setSize;t.setSize=(c,l)=>{const g=p(c,l);return g&&t.invokeWindowResizeEvent({width:c,height:l}),g},t.delete=v.chain(t.delete,t.setViewStream)}var pr={initialized:!1,initializing:!1,handlingDeviceLost:!1,deviceGeneration:0,deviceLostInfo:null,context:null,adapter:null,device:null,canvas:null,cursorVisibility:!0,cursor:"pointer",containerSize:null,renderPasses:[],notifyStartCaptureImage:!1,imageFormat:"image/png",useOffScreen:!1,useBackgroundImage:!1,nextPropID:1,xrSupported:!1,presentationFormat:null};function gr(t,e,r={}){Object.assign(e,pr,r),e.canvas=document.createElement("canvas"),e.canvas.style.width="100%",e.bgImage=new Image,e.bgImage.style.position="absolute",e.bgImage.style.left="0",e.bgImage.style.top="0",e.bgImage.style.width="100%",e.bgImage.style.height="100%",e.bgImage.style.zIndex="-1",Ft.extend(t,e,r),e.myFactory=Pt.newInstance(),e.renderPasses[0]=Nn.newInstance(),e.selector||(e.selector=st.newInstance(),e.selector.setWebGPURenderWindow(t)),v.event(t,e,"imageReady"),v.event(t,e,"initialized"),v.event(t,e,"deviceLost"),v.get(t,e,["commandEncoder","deviceLostInfo","device","presentationFormat","useBackgroundImage","xrSupported"]),v.setGet(t,e,["initialized","context","canvas","device","renderPasses","notifyStartCaptureImage","cursor","useOffScreen"]),v.setGetArray(t,e,["size"],2),v.event(t,e,"windowResizeEvent"),lr(t,e)}var ot=v.newInstance(gr,"vtkWebGPURenderWindow");Ot("WebGPU",ot);Ut("vtkRenderWindow",ot);var fr=It.extractURLParameters();function vr(t,e){const r=t.invokeResize;delete t.invokeResize,e.renderWindow=Gt.newInstance(),e.renderer=Lt.newInstance(),e.renderWindow.addRenderer(e.renderer),e._apiSpecificRenderWindow=e.renderWindow.newAPISpecificView(fr.viewAPI??e.defaultViewAPI),e.renderWindow.addView(e._apiSpecificRenderWindow),e.interactor=Ne.newInstance(),e.interactor.setInteractorStyle(un.newInstance()),e.interactor.setView(e._apiSpecificRenderWindow),e.interactor.initialize(),t.setBackground=e.renderer.setBackground,t.setBackground(...e.background),t.resize=()=>{if(e.container){const s=e.container.getBoundingClientRect(),n=window.devicePixelRatio||1;e._apiSpecificRenderWindow.setSize(Math.floor(s.width*n),Math.floor(s.height*n)),r(),e.renderWindow.render()}},t.setContainer=s=>{e.container&&e.interactor.unbindEvents(e.container),e.container=s,e._apiSpecificRenderWindow.setContainer(e.container),e.container&&e.interactor.bindEvents(e.container)},t.delete=v.chain(t.setContainer,e._apiSpecificRenderWindow.delete,()=>{window.removeEventListener("resize",t.resize)},t.delete),e.listenWindowResize&&window.addEventListener("resize",t.resize),t.resize()}var hr={background:[.32,.34,.43],listenWindowResize:!0,container:null};function it(t,e,r={}){Object.assign(e,hr,r),v.obj(t,e),v.get(t,e,["renderWindow","renderer","_apiSpecificRenderWindow","interactor","container"]),v.moveToProtected(t,e,["_apiSpecificRenderWindow"]),v.event(t,e,"resize"),vr(t,e)}var Sr=v.newInstance(it),dr={newInstance:Sr,extend:it},{vtkDebugMacro:Se}=v,{States:Tr}=xe,ee={type:"StartInteractionEvent"},b={type:"InteractionEvent"},te={type:"EndInteractionEvent"};function we(t,e,r,s,n,a){const o=t.getActiveCamera();let i=o.getFocalPoint();i=e.getInteractorStyle().computeWorldToDisplay(t,i[0],i[1],i[2]);const u=i[2],p=e.getInteractorStyle().computeDisplayToWorld(t,r,s,u),c=e.getInteractorStyle().computeDisplayToWorld(t,n,a,u),l=[c[0]-p[0],c[1]-p[1],c[2]-p[2]];i=o.getFocalPoint();const g=o.getPosition();o.setFocalPoint(l[0]+i[0],l[1]+i[1],l[2]+i[2]),o.setPosition(l[0]+g[0],l[1]+g[1],l[2]+g[2])}function wr(t,e,r,s){const n=r.getActiveCamera();if(n.getParallelProjection()){const a=s.getView(),o=a.getViewportSize(r),i=r.getViewport(),u=a.getSize(),p=o[0],c=o[1],l=p/2,g=c/2,f=e.x-i[0]*u[0],h=e.y-i[1]*u[1];we(r,s,l,g,f,h),n.setParallelScale(n.getParallelScale()/t),we(r,s,f,h,l,g)}else{let a=n.getFocalPoint();const o=n.getViewPlaneNormal();a=s.getInteractorStyle().computeWorldToDisplay(r,a[0],a[1],a[2]);const i=s.getInteractorStyle().computeDisplayToWorld(r,e.x,e.y,a[2]);n.setFocalPoint(i[0],i[1],i[2]),n.dolly(t),r.resetCameraClippingRange();const u=n.getPosition();a=n.getFocalPoint();const p=[0,0,0];let c=o[0]*(a[0]-u[0])+o[1]*(a[1]-u[1])+o[2]*(a[2]-u[2]);c/=o[0]**2+o[1]**2+o[2]**2,p[0]=u[0]+o[0]*c,p[1]=u[1]+o[1]*c,p[2]=u[2]+o[2]*c,n.setFocalPoint(p[0],p[1],p[2]),r.resetCameraClippingRange()}}function yr(t,e,r){if(Number.isNaN(r))return;const s=e.getActiveCamera();s.getParallelProjection()?s.setParallelScale(s.getParallelScale()/r):(s.dolly(r),e.resetCameraClippingRange()),t.getLightFollowCamera()&&e.updateLightsGeometryToFollowCamera()}var Cr={dollyToPosition:wr,translateCamera:we,dollyByFactor:yr};function xr(t,e){e.classHierarchy.push("vtkInteractorStyleManipulator"),e.currentVRManipulators=new Map,e.mouseManipulators=[],e.keyboardManipulators=[],e.vrManipulators=[],e.gestureManipulators=[],e.currentManipulator=null,e.currentWheelManipulator=null,e.centerOfRotation=[0,0,0],e.rotationFactor=1,t.removeAllManipulators=()=>{t.removeAllMouseManipulators(),t.removeAllKeyboardManipulators(),t.removeAllVRManipulators(),t.removeAllGestureManipulators()},t.removeAllMouseManipulators=()=>{e.mouseManipulators=[]},t.removeAllKeyboardManipulators=()=>{e.keyboardManipulators=[]},t.removeAllVRManipulators=()=>{e.vrManipulators=[]},t.removeAllGestureManipulators=()=>{e.gestureManipulators=[]};const r=(n,a)=>{const o=a.indexOf(n);return o===-1?!1:(a.splice(o,1),t.modified(),!0)};t.removeMouseManipulator=n=>r(n,e.mouseManipulators),t.removeKeyboardManipulator=n=>r(n,e.keyboardManipulators),t.removeVRManipulator=n=>r(n,e.vrManipulators),t.removeGestureManipulator=n=>r(n,e.gestureManipulators);const s=(n,a)=>a.indexOf(n)!==-1?!1:(a.push(n),t.modified(),!0);t.addMouseManipulator=n=>s(n,e.mouseManipulators),t.addKeyboardManipulator=n=>s(n,e.keyboardManipulators),t.addVRManipulator=n=>s(n,e.vrManipulators),t.addGestureManipulator=n=>s(n,e.gestureManipulators),t.getNumberOfMouseManipulators=()=>e.mouseManipulators.length,t.getNumberOfKeyboardManipulators=()=>e.keyboardManipulators.length,t.getNumberOfVRManipulators=()=>e.vrManipulators.length,t.getNumberOfGestureManipulators=()=>e.gestureManipulators.length,t.resetCurrentManipulator=()=>{e.currentManipulator=null,e.currentWheelManipulator=null},t.handleLeftButtonPress=n=>{e.previousPosition=n.position,t.onButtonDown(Y.LeftButton,n)},t.handleMiddleButtonPress=n=>{e.previousPosition=n.position,t.onButtonDown(Y.MiddleButton,n)},t.handleRightButtonPress=n=>{e.previousPosition=n.position,t.onButtonDown(Y.RightButton,n)},t.handleButton3D=n=>{if(!n)return;const a=t.findVRManipulator(n.device,n.input,n.pressed);a?(e.currentVRManipulators.set(n.device,a),a.onButton3D(t,e.getRenderer(n),e.state,n),n.pressed?t.startCameraPose():(e.currentVRManipulators.delete(n.device),e.currentVRManipulators.size===0&&t.endCameraPose())):Se("No manipulator found")},t.handleMove3D=n=>{const a=e.currentVRManipulators.get(n.device);a&&e.state===Tr.IS_CAMERA_POSE&&a.onMove3D(t,e.getRenderer(n),e.state,n)},t.onButtonDown=(n,a)=>{e.currentManipulator||(e.currentManipulator=t.findMouseManipulator(n,a.shiftKey,a.controlKey,a.altKey),e.currentManipulator?(e.currentManipulator.setCenter&&e.currentManipulator.setCenter(e.centerOfRotation),e.currentManipulator.setRotationFactor&&e.currentManipulator.setRotationFactor(e.rotationFactor),e.currentManipulator.startInteraction(),e.currentManipulator.onButtonDown(e._interactor,e.getRenderer(a),a.position),e._interactor.requestAnimation(t.onButtonDown),t.invokeStartInteractionEvent(ee)):Se("No manipulator found"))},t.findMouseManipulator=(n,a,o,i)=>{let u=null,p=e.mouseManipulators.length;for(;p--;){const c=e.mouseManipulators[p];c&&c.getButton()===n&&c.getShift()===a&&c.getControl()===o&&c.getAlt()===i&&c.isDragEnabled()&&(u=c)}return u},t.findVRManipulator=(n,a)=>{let o=null,i=e.vrManipulators.length;for(;i--;){const u=e.vrManipulators[i];u&&u.getDevice()===n&&u.getInput()===a&&(o=u)}return o},t.handleLeftButtonRelease=()=>{t.onButtonUp(Y.LeftButton)},t.handleMiddleButtonRelease=()=>{t.onButtonUp(Y.MiddleButton)},t.handleRightButtonRelease=()=>{t.onButtonUp(Y.RightButton)},t.onButtonUp=n=>{e.currentManipulator&&e.currentManipulator.getButton&&e.currentManipulator.getButton()===n&&(e.currentManipulator.onButtonUp(e._interactor),e.currentManipulator.endInteraction(),e._interactor.isPointerLocked()||(e.currentManipulator=null),e._interactor.cancelAnimation(t.onButtonDown),t.invokeEndInteractionEvent(te))},t.handleEndPointerLock=()=>{e.currentManipulator=null},t.handleStartMouseWheel=n=>{if(e.currentWheelManipulator)return;let a=null,o=e.mouseManipulators.length;for(;o--;){const i=e.mouseManipulators[o];i&&i.isScrollEnabled()&&i.getShift()===n.shiftKey&&i.getControl()===n.controlKey&&i.getAlt()===n.altKey&&(a=i)}a?(e.currentWheelManipulator=a,e.currentWheelManipulator.onStartScroll(e._interactor,e.getRenderer(n),n.spinY),e.currentWheelManipulator.startInteraction(),e._interactor.requestAnimation(t.handleStartMouseWheel),t.invokeStartInteractionEvent(ee)):Se("No manipulator found")},t.handleEndMouseWheel=()=>{e.currentWheelManipulator&&e.currentWheelManipulator.onEndScroll&&(e.currentWheelManipulator.onEndScroll(e._interactor),e.currentWheelManipulator.endInteraction(),e.currentWheelManipulator=null,e._interactor.cancelAnimation(t.handleStartMouseWheel),t.invokeEndInteractionEvent(te))},t.handleMouseWheel=n=>{e.currentWheelManipulator&&e.currentWheelManipulator.onScroll&&(e.currentWheelManipulator.onScroll(e._interactor,e.getRenderer(n),n.spinY,e.cachedMousePosition),t.invokeInteractionEvent(b))},t.handleMouseMove=n=>{e.cachedMousePosition=n.position,e.currentManipulator&&e.currentManipulator.onMouseMove&&(e.currentManipulator.onMouseMove(e._interactor,e.getRenderer(n),n.position),t.invokeInteractionEvent(b))},t.handleKeyPress=n=>{e.keyboardManipulators.filter(a=>a.onKeyPress).forEach(a=>{a.onKeyPress(e._interactor,e.getRenderer(n),n.key),t.invokeInteractionEvent(b)})},t.handleKeyDown=n=>{e.keyboardManipulators.filter(a=>a.onKeyDown).forEach(a=>{a.onKeyDown(e._interactor,e.getRenderer(n),n.key),t.invokeInteractionEvent(b)})},t.handleKeyUp=n=>{e.keyboardManipulators.filter(a=>a.onKeyUp).forEach(a=>{a.onKeyUp(e._interactor,e.getRenderer(n),n.key),t.invokeInteractionEvent(b)})},t.handleStartPinch=n=>{t.startDolly();let a=e.gestureManipulators.length;for(;a--;){const o=e.gestureManipulators[a];o&&o.isPinchEnabled()&&(o.onStartPinch(e._interactor,n.scale),o.startInteraction())}e._interactor.requestAnimation(t.handleStartPinch),t.invokeStartInteractionEvent(ee)},t.handleEndPinch=()=>{t.endDolly();let n=e.gestureManipulators.length;for(;n--;){const a=e.gestureManipulators[n];a&&a.isPinchEnabled()&&(a.onEndPinch(e._interactor),a.endInteraction())}e._interactor.cancelAnimation(t.handleStartPinch),t.invokeEndInteractionEvent(te)},t.handleStartRotate=n=>{t.startRotate();let a=e.gestureManipulators.length;for(;a--;){const o=e.gestureManipulators[a];o&&o.isRotateEnabled()&&(o.onStartRotate(e._interactor,n.rotation),o.startInteraction())}e._interactor.requestAnimation(t.handleStartRotate),t.invokeStartInteractionEvent(ee)},t.handleEndRotate=()=>{t.endRotate();let n=e.gestureManipulators.length;for(;n--;){const a=e.gestureManipulators[n];a&&a.isRotateEnabled()&&(a.onEndRotate(e._interactor),a.endInteraction())}e._interactor.cancelAnimation(t.handleStartRotate),t.invokeEndInteractionEvent(te)},t.handleStartPan=n=>{t.startPan();let a=e.gestureManipulators.length;for(;a--;){const o=e.gestureManipulators[a];o&&o.isPanEnabled()&&(o.onStartPan(e._interactor,n.translation),o.startInteraction())}e._interactor.requestAnimation(t.handleStartPan),t.invokeStartInteractionEvent(ee)},t.handleEndPan=()=>{t.endPan();let n=e.gestureManipulators.length;for(;n--;){const a=e.gestureManipulators[n];a&&a.isPanEnabled()&&(a.onEndPan(e._interactor),a.endInteraction())}e._interactor.cancelAnimation(t.handleStartPan),t.invokeEndInteractionEvent(te)},t.handlePinch=n=>{let a=e.gestureManipulators.length,o=0;for(;a--;){const i=e.gestureManipulators[a];i&&i.isPinchEnabled()&&(i.onPinch(e._interactor,e.getRenderer(n),n.scale),o++)}o&&t.invokeInteractionEvent(b)},t.handlePan=n=>{const a=e.getRenderer(n);let o=e.gestureManipulators.length,i=0;for(;o--;){const u=e.gestureManipulators[o];u&&u.isPanEnabled()&&(u.onPan(e._interactor,a,n.translation),i++)}i&&t.invokeInteractionEvent(b)},t.handleRotate=n=>{let a=e.gestureManipulators.length,o=0;for(;a--;){const i=e.gestureManipulators[a];i&&i.isRotateEnabled()&&(i.onRotate(e._interactor,e.getRenderer(n),n.rotation),o++)}o&&t.invokeInteractionEvent(b)}}var Er=t=>({cachedMousePosition:null,currentManipulator:null,currentWheelManipulator:null,centerOfRotation:[0,0,0],rotationFactor:1,...t});function ct(t,e,r={}){Object.assign(e,Er(r)),xe.extend(t,e,r),v.setGet(t,e,["rotationFactor"]),v.get(t,e,["mouseManipulators","keyboardManipulators","vrManipulators","gestureManipulators"]),v.setGetArray(t,e,["centerOfRotation"],3),xr(t,e)}var Rr=v.newInstance(ct,"vtkInteractorStyleManipulator"),_r={newInstance:Rr,extend:ct,...Cr};function Mr(t,e){e.classHierarchy.push("vtkCompositeCameraManipulator"),t.computeDisplayCenter=(r,s)=>{const n=r.computeWorldToDisplay(s,e.center[0],e.center[1],e.center[2]);e.displayCenter[0]=n[0],e.displayCenter[1]=n[1]}}var Vr={center:[0,0,0],rotationFactor:1,displayCenter:[0,0]};function Dr(t,e,r={}){Object.assign(e,Vr,r),v.setGet(t,e,["rotationFactor"]),v.setGetArray(t,e,["displayCenter"],2),v.setGetArray(t,e,["center"],3),Mr(t,e)}var Ee={extend:Dr};function Br(t,e){e.classHierarchy.push("vtkCompositeMouseManipulator"),t.startInteraction=()=>{},t.endInteraction=()=>{},t.onButtonDown=(r,s,n)=>{},t.onButtonUp=r=>{},t.onMouseMove=(r,s,n)=>{},t.onStartScroll=(r,s,n)=>{},t.onScroll=(r,s,n)=>{},t.onEndScroll=r=>{},t.isDragEnabled=()=>e.dragEnabled,t.isScrollEnabled=()=>e.scrollEnabled}var mr={button:1,shift:!1,control:!1,alt:!1,dragEnabled:!0,scrollEnabled:!1};function Or(t,e,r={}){Object.assign(e,mr,r),v.setGet(t,e,["button","shift","control","alt"]),v.set(t,e,["dragEnabled","scrollEnabled"]),Br(t,e)}var Re={extend:Or};function Ur(t,e){e.classHierarchy.push("vtkMouseCameraTrackballRotateManipulator");const r=new Float64Array(3),s=new Float64Array(3),n=new Float64Array(3),a=new Float64Array(16),o=new Float64Array(3),i=new Float64Array(3),u=new Float64Array(3);t.onButtonDown=(p,c,l)=>{e.previousPosition=l},t.onMouseMove=(p,c,l)=>{if(!l)return;const g=c.getActiveCamera(),f=g.getPosition(),h=g.getFocalPoint();de(a);const{center:S,rotationFactor:x}=e;e.useFocalPointAsCenterOfRotation&&(S[0]=h[0],S[1]=h[1],S[2]=h[2]);const C=e.previousPosition.x-l.x,_=e.previousPosition.y-l.y,R=p.getView().getViewportSize(c),M=g.getViewUp();if(e.useWorldUpVec){const T=new Float64Array(3);yt(T,e.worldUpVec),Ct(T,Ve(f,e.worldUpVec)/Ve(e.worldUpVec,e.worldUpVec)),xt(S,T,T),X(a,a,T),ue(a,a,le(360*C/R[0]*x),e.worldUpVec),T[0]=-T[0],T[1]=-T[1],T[2]=-T[2],X(a,a,T),X(a,a,S)}else X(a,a,S),ue(a,a,le(360*C/R[0]*x),M);ze(g.getDirectionOfProjection(),M,o),ue(a,a,le(-360*_/R[1]*x),o),i[0]=-S[0],i[1]=-S[1],i[2]=-S[2],X(a,a,i),pe(r,f,a),pe(s,h,a),u[0]=M[0]+f[0],u[1]=M[1]+f[1],u[2]=M[2]+f[2],pe(n,u,a),g.setPosition(r[0],r[1],r[2]),g.setFocalPoint(s[0],s[1],s[2]),g.setViewUp(n[0]-r[0],n[1]-r[1],n[2]-r[2]),g.orthogonalizeViewUp(),c.resetCameraClippingRange(),p.getLightFollowCamera()&&c.updateLightsGeometryToFollowCamera(),e.previousPosition=l}}var Fr={useWorldUpVec:!1,worldUpVec:[0,1,0],useFocalPointAsCenterOfRotation:!1};function ut(t,e,r={}){Object.assign(e,Fr,r),v.obj(t,e),Re.extend(t,e,r),Ee.extend(t,e,r),v.setGet(t,e,["useWorldUpVec"]),v.setGetArray(t,e,["worldUpVec"],3),v.setGet(t,e,["useFocalPointAsCenterOfRotation"]),Ur(t,e)}var Pr=v.newInstance(ut,"vtkMouseCameraTrackballRotateManipulator"),Gr={newInstance:Pr,extend:ut};function Lr(t,e){e.classHierarchy.push("vtkMouseCameraTrackballZoomManipulator"),t.onButtonDown=(r,s,n)=>{e.previousPosition=n;const a=r.getView().getViewportSize(s),o=s.getActiveCamera(),i=e.flipDirection?-1:1;o.getParallelProjection()?e.zoomScale=1.5/a[1]*i:e.zoomScale=1.5*(o.getClippingRange()[1]/a[1])*i},t.onMouseMove=(r,s,n)=>{if(!n)return;const a=e.previousPosition.y-n.y,o=s.getActiveCamera();if(o.getParallelProjection()){const i=a*e.zoomScale;o.setParallelScale((1-i)*o.getParallelScale())}else{const i=o.getPosition(),u=o.getFocalPoint(),p=o.getDirectionOfProjection(),c=a*e.zoomScale;let l=c*p[0];i[0]+=l,u[0]+=l,l=c*p[1],i[1]+=l,u[1]+=l,l=c*p[2],i[2]+=l,u[2]+=l,o.getFreezeFocalPoint()||o.setFocalPoint(u[0],u[1],u[2]),o.setPosition(i[0],i[1],i[2]),s.resetCameraClippingRange()}r.getLightFollowCamera()&&s.updateLightsGeometryToFollowCamera(),e.previousPosition=n},t.onScroll=(r,s,n)=>{if(!n)return;const a=s.getActiveCamera(),o=1-n/10;a.getParallelProjection()?a.setParallelScale(a.getParallelScale()/o):(a.dolly(o),s.resetCameraClippingRange()),r.getLightFollowCamera()&&s.updateLightsGeometryToFollowCamera()}}var kr={zoomScale:0,flipDirection:!1};function lt(t,e,r={}){Object.assign(e,kr,r),v.obj(t,e),Re.extend(t,e,r),Ee.extend(t,e,r),v.setGet(t,e,["flipDirection"]),Lr(t,e)}var Wr=v.newInstance(lt,"vtkMouseCameraTrackballZoomManipulator"),zr={newInstance:Wr,extend:lt};function Nr(t,e){e.classHierarchy.push("vtkMouseCameraTrackballPanManipulator"),t.onButtonDown=(r,s,n)=>{e.previousPosition=n},t.onMouseMove=(r,s,n)=>{if(!n)return;const a=n,o=e.previousPosition;e.previousPosition=n;const i=s.getActiveCamera(),u=i.getPosition(),p=i.getFocalPoint();if(i.getParallelProjection()){i.orthogonalizeViewUp();const c=i.getViewUp(),l=i.getViewPlaneNormal(),g=[0,0,0];ze(l,c,g);const f=r.getView().getViewportSize(s)[1];let h=(a.x-o.x)/f,S=(o.y-a.y)/f;const x=i.getParallelScale();h*=x*2,S*=x*2;let C=g[0]*h+c[0]*S;u[0]+=C,p[0]+=C,C=g[1]*h+c[1]*S,u[1]+=C,p[1]+=C,C=g[2]*h+c[2]*S,u[2]+=C,p[2]+=C,i.setPosition(u[0],u[1],u[2]),i.setFocalPoint(p[0],p[1],p[2])}else{const{center:c}=e,l=r.getInteractorStyle(),g=l.computeWorldToDisplay(s,c[0],c[1],c[2])[2],f=l.computeDisplayToWorld(s,a.x,a.y,g),h=l.computeDisplayToWorld(s,o.x,o.y,g),S=[u[0]+(h[0]-f[0]),u[1]+(h[1]-f[1]),u[2]+(h[2]-f[2])],x=[p[0]+(h[0]-f[0]),p[1]+(h[1]-f[1]),p[2]+(h[2]-f[2])];i.setPosition(S[0],S[1],S[2]),i.setFocalPoint(x[0],x[1],x[2])}s.resetCameraClippingRange(),r.getLightFollowCamera()&&s.updateLightsGeometryToFollowCamera()}}var $r={};function pt(t,e,r={}){Object.assign(e,$r,r),v.obj(t,e),Ee.extend(t,e,r),Re.extend(t,e,r),Nr(t,e)}var Hr=v.newInstance(pt,"vtkMouseCameraTrackballPanManipulator"),Kr={newInstance:Hr,extend:pt};const Pe=12;function Xr(t,e){const r=dr.newInstance({background:[0,0,0]});r.setContainer(t),r.resize();const s=r.getRenderer(),n=r.getRenderWindow();let a=e.ghost,o=Math.max(0,Math.min(e.startK,e.slices-1));const[i,u]=e.range,p=kt.newInstance();p.setInputData(e.imageData),p.setSampleDistance?.(1.2);const c=Wt.newInstance();c.setMapper(p);const l=zt.newInstance();l.addRGBPoint(i,.6,.6,.6),l.addRGBPoint(u,1,1,1);const g=Nt.newInstance(),f=c.getProperty();f.setRGBTransferFunction(0,l),f.setScalarOpacity(0,g),f.setScalarOpacityUnitDistance(0,3),f.setInterpolationTypeToLinear();const h=()=>{g.removeAllPoints(),a===null||a<=0?(g.addPoint(i,0),g.addPoint(u,0)):(g.addPoint(i,0),g.addPoint(i+(u-i)*.4,a*.25),g.addPoint(u,a))};h(),s.addVolume(c);const S=$t.newInstance();S.setInputData(e.imageData),S.setKSlice(o);const x=Ht.newInstance();x.setMapper(S);const C=x.getProperty(),_=e.voi?e.voi.upper-e.voi.lower:u-i,R=e.voi?(e.voi.upper+e.voi.lower)/2:(u+i)/2;C.setColorWindow(_),C.setColorLevel(R),s.addActor(x),(()=>{s.resetCamera();const w=s.getActiveCamera();w.getFocalPoint();const D=w.getDistance();w.azimuth(30),w.elevation(12),w.setDistance(D*1.05),w.zoom(1.4),s.resetCameraClippingRange()})();const T=_r.newInstance(),U=Gr.newInstance({button:1}),V=zr.newInstance({button:3}),d=Kr.newInstance({button:2});T.addMouseManipulator(U),T.addMouseManipulator(V),T.addMouseManipulator(d),r.getInteractor().setInteractorStyle(T),n.render();const m=w=>{const D=Math.max(0,Math.min(w,e.slices-1));D!==o&&(o=D,S.setKSlice(D),n.render())},O=w=>{w.preventDefault();const D=o+(w.deltaY>0?1:-1);m(D),e.onSweep(o)};t.addEventListener("wheel",O,{passive:!1});let G=null;const j=w=>((w.touches[0]?.clientY??0)+(w.touches[1]?.clientY??0))/2,L=w=>{if(w.touches.length!==2){G=null;return}G=j(w),w.preventDefault(),w.stopPropagation()},K=w=>{if(G===null||w.touches.length!==2)return;w.preventDefault(),w.stopPropagation();const D=j(w)-G,y=Math.trunc(D/Pe);y!==0&&(G+=y*Pe,m(o+y),e.onSweep(o))},k=w=>{w.touches.length<2&&(G=null)};return t.addEventListener("touchstart",L,{capture:!0,passive:!1}),t.addEventListener("touchmove",K,{capture:!0,passive:!1}),t.addEventListener("touchend",k,{capture:!0}),t.addEventListener("touchcancel",k,{capture:!0}),{sweep:m,ghost_set:w=>{a=w===null?null:Math.max(0,Math.min(1,w)),h(),n.render()},wl_set:(w,D)=>{C.setColorWindow(D-w),C.setColorLevel((D+w)/2),n.render()},resize:()=>{r.resize(),n.render()},slice_get:()=>o,dispose:()=>{t.removeEventListener("wheel",O),t.removeEventListener("touchstart",L,{capture:!0}),t.removeEventListener("touchmove",K,{capture:!0}),t.removeEventListener("touchend",k,{capture:!0}),t.removeEventListener("touchcancel",k,{capture:!0});try{s.removeVolume(c),s.removeActor(x)}catch{}try{r.delete()}catch{}}}}export{Xr as slabScene_open};
559
+ `;function kn(t,e){e.classHierarchy.push("vtkForwardPass"),t.traverse=(r,s=null)=>{if(e.deleted)return;e._currentParent=s,t.setCurrentOperation("buildPass"),r.traverse(t),e.opaquePass||(e.opaquePass=dn.newInstance());const n=r.getRenderable().getNumberOfLayers(),a=r.getChildren();for(let o=0;o<n;o++)for(let i=0;i<a.length;i++){const u=a[i],p=r.getRenderable().getRenderers()[i];p.getDraw()&&p.getLayer()===o&&(e.opaqueActorCount=0,e.translucentActorCount=0,e.volumes=[],t.setCurrentOperation("queryPass"),u.traverse(t),t.setCurrentOperation("cameraPass"),u.traverse(t),e.opaquePass.traverse(u,r),e.translucentActorCount>0&&(e.translucentPass||(e.translucentPass=xn.newInstance()),e.translucentPass.setColorTextureView(e.opaquePass.getColorTextureView()),e.translucentPass.setDepthTextureView(e.opaquePass.getDepthTextureView()),e.translucentPass.traverse(u,r)),e.volumes.length>0&&(e.volumePass||(e.volumePass=Gn.newInstance()),e.volumePass.setColorTextureView(e.opaquePass.getColorTextureView()),e.volumePass.setDepthTextureView(e.opaquePass.getDepthTextureView()),e.volumePass.setVolumes(e.volumes),e.volumePass.traverse(u,r)),t.finalPass(r,u))}},t.finalPass=(r,s)=>{e._finalBlitEncoder||t.createFinalBlitEncoder(r),e._finalBlitOutputTextureView.createFromTextureHandle(r.getCurrentTexture(),{depth:1,format:r.getPresentationFormat()}),e._finalBlitEncoder.attachTextureViews(),e._finalBlitEncoder.begin(r.getCommandEncoder()),s.scissorAndViewport(e._finalBlitEncoder),e._fullScreenQuad.prepareAndDraw(e._finalBlitEncoder),e._finalBlitEncoder.end()},t.createFinalBlitEncoder=r=>{e._finalBlitEncoder=H.newInstance({label:"forwardPassBlit"}),e._finalBlitEncoder.setDescription({colorAttachments:[{view:null,loadOp:"load",storeOp:"store"}]}),e._finalBlitEncoder.setPipelineHash("fpf"),e._finalBlitEncoder.setPipelineSettings({primitive:{cullMode:"none"},fragment:{targets:[{format:r.getPresentationFormat(),blend:{color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]}}),e._fsqSampler=He.newInstance({label:"finalPassSampler"}),e._fsqSampler.create(r.getDevice(),{minFilter:"linear",magFilter:"linear"}),e._fullScreenQuad=se.newInstance(),e._fullScreenQuad.setDevice(r.getDevice()),e._fullScreenQuad.setPipelineHash("fpfsq"),e._fullScreenQuad.setTextureViews([e.opaquePass.getColorTextureView()]),e._fullScreenQuad.setAdditionalBindables([e._fsqSampler]),e._fullScreenQuad.setFragmentShaderTemplate(Ln),e._fullScreenQuad.getShaderReplacements().set("replaceShaderTCoord",(s,n)=>{const a=n.getShaderDescription("vertex");a.hasOutput("tcoordVS")||a.addOutput("vec2<f32>","tcoordVS"),n.getShaderDescription("fragment").addBuiltinInput("vec4<f32>","@builtin(position) fragPos")}),e._finalBlitOutputTextureView=Bt.newInstance(),e._finalBlitEncoder.setColorTextureView(0,e._finalBlitOutputTextureView)},t.incrementOpaqueActorCount=()=>e.opaqueActorCount++,t.incrementTranslucentActorCount=()=>e.translucentActorCount++,t.addVolume=r=>{e.volumes.push(r)},t.releaseGraphicsResources=()=>{e.opaquePass?.releaseGraphicsResources?.(),e.translucentPass?.releaseGraphicsResources?.(),e.volumePass?.releaseGraphicsResources?.(),e.opaquePass=null,e.translucentPass=null,e.volumePass=null,e._finalBlitEncoder=null,e._finalBlitOutputTextureView=null,e._fullScreenQuad=null,e._fsqSampler=null}}var Wn={opaqueActorCount:0,translucentActorCount:0,volumes:null,opaqueRenderEncoder:null,translucentPass:null,volumePass:null};function Ae(t,e,r={}){Object.assign(e,Wn,r),Z.extend(t,e,r),v.setGet(t,e,["opaquePass","translucentPass","volumePass"]),kn(t,e)}var zn=v.newInstance(Ae,"vtkForwardPass"),Nn={newInstance:zn,extend:Ae},{VtkDataTypes:I}=Tt;function $n(t,e){e.classHierarchy.push("vtkWebGPUTextureManager");function r(n){if(n.imageData){n.dataArray=n.imageData.getPointData().getScalars(),n.time=n.dataArray.getMTime(),n.nativeArray=n.dataArray.getData();const a=n.imageData.getDimensions();switch(n.width=a[0],n.height=a[1],n.depth=a[2],n.dataArray.getNumberOfComponents()){case 1:n.format="r";break;case 2:n.format="rg";break;default:n.format="rgba";break}switch(n.dataArray.getDataType()){case I.UNSIGNED_CHAR:n.format+="8unorm";break;case I.FLOAT:case I.UNSIGNED_INT:case I.INT:case I.DOUBLE:case I.UNSIGNED_SHORT:case I.SHORT:default:n.format+="16float";break}}n.image&&(n.width=n.image.width,n.height=n.image.height,n.depth=1,n.format="rgba8unorm",n.flip=!0,n.usage=GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT),n.jsImageData&&(n.width=n.jsImageData.width,n.height=n.jsImageData.height,n.depth=1,n.format="rgba8unorm",n.flip=!0,n.nativeArray=n.jsImageData.data,n.usage=GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT),n.imageBitmap&&(n.width=n.imageBitmap.width,n.height=n.imageBitmap.height,n.depth=1,n.format="rgba8unorm",n.flip=!0,n.usage=GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT),n.canvas&&(n.width=n.canvas.width,n.height=n.canvas.height,n.depth=1,n.format="rgba8unorm",n.flip=!0,n.usage=GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT)}function s(n){const a=$.newInstance({label:n.label});return a.create(e.device,{width:n.width,height:n.height,depth:n.depth,format:n.format,usage:n.usage,mipLevel:n.mipLevel}),(n.nativeArray||n.image||n.canvas||n.imageBitmap)&&a.writeImageData(n),a}t.getTexture=n=>n.hash?e.device.getCachedObject(n.hash,s,n):s(n),t.getTextureForImageData=n=>{const a={time:n.getMTime()};return a.imageData=n,r(a),a.hash=a.time+a.format+a.mipLevel,e.device.getTextureManager().getTexture(a)},t.getTextureForVTKTexture=(n,a=void 0)=>{const o={time:n.getMTime(),label:a};return n.getInputData()?o.imageData=n.getInputData():n.getImage()?o.image=n.getImage():n.getJsImageData()?o.jsImageData=n.getJsImageData():n.getImageBitmap()?o.imageBitmap=n.getImageBitmap():n.getCanvas()&&(o.canvas=n.getCanvas()),r(o),o.mipLevel=n.getMipLevel(),o.hash=o.time+o.format+o.mipLevel,e.device.getTextureManager().getTexture(o)}}var Hn={handle:null,device:null};function et(t,e,r={}){Object.assign(e,Hn,r),v.obj(t,e),v.setGet(t,e,["device"]),$n(t,e)}var Kn=v.newInstance(et),bn={newInstance:Kn,extend:et},In=class extends Map{constructor(){super(),this.registry=new FinalizationRegistry(t=>{const e=super.get(t);e&&e.deref&&e.deref()===void 0&&super.delete(t)})}getValue(t){const e=super.get(t);if(e){const r=e.deref();if(r!==void 0)return r;super.delete(t)}}setValue(t,e){let r;return e&&typeof e=="object"&&(r=new WeakRef(e),this.registry.register(e,t),super.set(t,r)),r}};function jn(t,e){e.classHierarchy.push("vtkWebGPUDevice"),t.initialize=r=>{e.handle=r},t.createCommandEncoder=()=>e.handle.createCommandEncoder(),t.submitCommandEncoder=r=>{e.handle.queue.submit([r.finish()])},t.getShaderModule=r=>e.shaderCache.getShaderModule(r),t.getBindGroupLayout=r=>{if(!r.entries)return null;for(let a=0;a<r.entries.length;a++){const o=r.entries[a];o.binding=o.binding||0,o.visibility=o.visibility||GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT}const s=JSON.stringify(r);for(let a=0;a<e.bindGroupLayouts.length;a++)if(e.bindGroupLayouts[a].sval===s)return e.bindGroupLayouts[a].layout;const n=e.handle.createBindGroupLayout(r);return e.bindGroupLayouts.push({sval:s,layout:n}),n},t.getBindGroupLayoutDescription=r=>{for(let s=0;s<e.bindGroupLayouts.length;s++)if(e.bindGroupLayouts[s].layout===r)return e.bindGroupLayouts[s].sval;return vtkErrorMacro("layout not found"),console.trace(),null},t.getPipeline=r=>r in e.pipelines?e.pipelines[r]:null,t.createPipeline=(r,s)=>{s.initialize(t,r),e.pipelines[r]=s},t.onSubmittedWorkDone=()=>e.handle.queue.onSubmittedWorkDone(),t.hasCachedObject=r=>e.objectCache.getValue(r),t.getCachedObject=(r,s,...n)=>{if(!r)return vtkErrorMacro("attempt to cache an object without a hash"),null;const a=e.objectCache.getValue(r);if(a)return a;const o=s(...n);return e.objectCache.setValue(r,o),o}}var Qn={handle:null,pipelines:null,shaderCache:null,bindGroupLayouts:null,bufferManager:null,textureManager:null};function tt(t,e,r={}){Object.assign(e,Qn,r),Le(t,e),We(t,e,["handle"]),ke(t,e,["bufferManager","shaderCache","textureManager"]),e.objectCache=new In,e.shaderCache=B.newInstance(),e.shaderCache.setDevice(t),e.bindGroupLayouts=[],e.bufferManager=Ke.newInstance(),e.bufferManager.setDevice(t),e.textureManager=bn.newInstance(),e.textureManager.setDevice(t),e.pipelines={},jn(t,e)}var Yn=Ge(tt,"vtkWebGPUDevice"),Xn={newInstance:Yn,extend:tt};function Zn(t,e){e.classHierarchy.push("vtkWebGPUHardwareSelectionPass"),t.traverse=(r,s)=>{if(e.deleted)return;e._currentParent=null,t.setCurrentOperation("buildPass"),r.traverse(t);const n=r.getDevice();if(e.selectionRenderEncoder)e.colorTexture.resize(r.getCanvas().width,r.getCanvas().height),e.depthTexture.resizeToMatch(e.colorTexture);else{t.createRenderEncoder(),e.colorTexture=$.newInstance({label:"hardwareSelectorColor"}),e.colorTexture.create(n,{width:r.getCanvas().width,height:r.getCanvas().height,format:"rgba32uint",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC});const a=e.colorTexture.createView("hardwareSelectColorTexture");e.selectionRenderEncoder.setColorTextureView(0,a),e.depthTexture=$.newInstance({label:"hardwareSelectorDepth"}),e.depthTexture.create(n,{width:r.getCanvas().width,height:r.getCanvas().height,format:"depth32float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC});const o=e.depthTexture.createView("hardwareSelectDepthTexture");e.selectionRenderEncoder.setDepthTextureView(o)}e.selectionRenderEncoder.attachTextureViews(),s.setRenderEncoder(e.selectionRenderEncoder),t.setCurrentOperation("cameraPass"),s.traverse(t),t.setCurrentOperation("opaquePass"),s.traverse(t)},t.createRenderEncoder=()=>{e.selectionRenderEncoder=H.newInstance({label:"HardwareSelectionPass"}),e.selectionRenderEncoder.setPipelineHash("sel"),e.selectionRenderEncoder.setReplaceShaderCodeFunction(s=>{const n=s.getShaderDescription("fragment");n.addOutput("vec4<u32>","outColor");let a=n.getCode();a=B.substitute(a,"//VTK::Select::Impl",[" var compositeID: u32 = 0u;"," var attributeID: u32 = compositeID;"]).result,a=B.substitute(a,"//VTK::RenderEncoder::Impl",["output.outColor = vec4<u32>(mapperUBO.PropID, compositeID, attributeID + 1u, 0u);"]).result,n.setCode(a)});const r=e.selectionRenderEncoder.getDescription();r.colorAttachments[0].clearValue=[0,0,0,0],e.selectionRenderEncoder.setPipelineSettings({primitive:{cullMode:"none"},depthStencil:{depthWriteEnabled:!0,depthCompare:"greater",format:"depth32float"},fragment:{targets:[{format:"rgba32uint",blend:void 0}]}})}}var Jn={selectionRenderEncoder:null,colorTexture:null,depthTexture:null};function nt(t,e,r={}){Object.assign(e,Jn,r),Z.extend(t,e,r),v.get(t,e,["colorTexture","depthTexture"]),Zn(t,e)}var qn=v.newInstance(nt,"vtkWebGPUHardwareSelectionPass"),An={newInstance:qn,extend:nt},{SelectionContent:er,SelectionField:Oe}=be,{FieldAssociations:Ue}=wt,{vtkErrorMacro:rt}=v;function tr(t){return`${t.propID} ${t.compositeID}`}function he(t,e,r,s){const n=((r.height-e-1)*r.colorBufferWidth+t)*4+s;return r.colorValues[n]}function nr(t,e,r,s){{if(s[0]=e[0],s[1]=e[1],e[0]<0||e[0]>=t.width||e[1]<0||e[1]>=t.height)return null;const n=he(e[0],e[1],t,0);if(n<=0||n-1>=(t.props?.length??0))return null;const a={};a.propID=n-1,a.prop=t.props?.[a.propID];let o=he(e[0],e[1],t,1);(o<0||o>16777215)&&(o=0),a.compositeID=o-1;let i=he(e[0],e[1],t,2);if(i<1&&(i=o),a.attributeID=i-1,t.captureZValues){const u=(t.height-e[1]-1)*t.zbufferBufferWidth+e[0];a.zValue=t.depthValues[u],a.zValue=t.webGPURenderer.convertToOpenGLDepth(a.zValue),a.displayPosition=e}return a}}function rr(t,e,r){const s=[];let n=0;return e.forEach((a,o)=>{const i=be.newInstance();switch(i.setContentType(er.INDICES),t){case Ue.FIELD_ASSOCIATION_CELLS:i.setFieldType(Oe.CELL);break;case Ue.FIELD_ASSOCIATION_POINTS:i.setFieldType(Oe.POINT);break;default:rt("Unknown field association")}i.getProperties().propID=a.info.propID,i.getProperties().prop=a.info.prop,i.getProperties().compositeID=a.info.compositeID,i.getProperties().attributeID=a.info.attributeID,i.getProperties().pixelCount=a.pixelCount,r.captureZValues&&(i.getProperties().displayPosition=[a.info.displayPosition[0],a.info.displayPosition[1],a.info.zValue],i.getProperties().worldPosition=r.webGPURenderWindow.displayToWorld(a.info.displayPosition[0],a.info.displayPosition[1],a.info.zValue,r.renderer)),i.setSelectionList(a.attributeIDs),s[n]=i,n++}),s}function ar(t,e,r,s,n){const a=Math.floor(e),o=Math.floor(r),i=Math.floor(s),u=Math.floor(n),p=new Map,c=[0,0];for(let l=o;l<=u;l++)for(let g=a;g<=i;g++){const f=nr(t,[g,l],0,c);if(f){const h=tr(f);if(!p.has(h))p.set(h,{info:f,pixelCount:1,attributeIDs:[f.attributeID]});else{const S=p.get(h);S.pixelCount++,t.captureZValues&&f.zValue<S.info.zValue&&(S.info=f),S.attributeIDs.indexOf(f.attributeID)===-1&&S.attributeIDs.push(f.attributeID)}}}return rr(t.fieldAssociation,p,t)}function sr(t,e){e.classHierarchy.push("vtkWebGPUHardwareSelector"),t.getPropIDForSelection=(r,s=null)=>{if(e._selectionPropMap.has(r))return e._selectionPropMap.get(r);const n=e._selectionProps.length;return e._selectionPropMap.set(r,n),e._selectionProps.push(s),n},t.endSelection=()=>{e.WebGPURenderer.setSelector(null)},t.getSourceDataAsync=async r=>{if(!r||!e._WebGPURenderWindow)return rt("Renderer and view must be set before calling Select."),!1;e._WebGPURenderWindow.getRenderable().preRender(),e._WebGPURenderWindow.getInitialized()||(e._WebGPURenderWindow.initialize(),await new Promise(h=>{e._WebGPURenderWindow.onInitialized(h)}));const s=e._WebGPURenderWindow.getViewNodeFor(r);if(!s)return!1;const n=s.getSuppressClear(),a=s.getSelector();e._selectionPropMap.clear(),e._selectionProps=[],s.setSuppressClear(!0),s.setSelector(t);try{e._selectionPass.traverse(e._WebGPURenderWindow,s)}finally{s.setSelector(a),s.setSuppressClear(n)}const o=e._WebGPURenderWindow.getDevice(),i=e._selectionPass.getColorTexture(),u=e._selectionPass.getDepthTexture(),p={area:[0,0,i.getWidth()-1,i.getHeight()-1],captureZValues:e.captureZValues,fieldAssociation:e.fieldAssociation,props:[...e._selectionProps],renderer:r,webGPURenderer:s,webGPURenderWindow:e._WebGPURenderWindow,width:i.getWidth(),height:i.getHeight()};p.colorBufferWidth=16*Math.floor((p.width+15)/16),p.colorBufferSizeInBytes=p.colorBufferWidth*p.height*4*4;const c=Te.newInstance({label:"hardwareSelectColorBuffer"});c.setDevice(o),c.create(p.colorBufferSizeInBytes,GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST);const l=e._WebGPURenderWindow.getCommandEncoder();l.copyTextureToBuffer({texture:i.getHandle()},{buffer:c.getHandle(),bytesPerRow:16*p.colorBufferWidth,rowsPerImage:p.height},{width:p.width,height:p.height,depthOrArrayLayers:1});let g;e.captureZValues&&(p.zbufferBufferWidth=64*Math.floor((p.width+63)/64),g=Te.newInstance({label:"hardwareSelectDepthBuffer"}),g.setDevice(o),p.zbufferSizeInBytes=p.height*p.zbufferBufferWidth*4,g.create(p.zbufferSizeInBytes,GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST),l.copyTextureToBuffer({texture:u.getHandle(),aspect:"depth-only"},{buffer:g.getHandle(),bytesPerRow:4*p.zbufferBufferWidth,rowsPerImage:p.height},{width:p.width,height:p.height,depthOrArrayLayers:1})),o.submitCommandEncoder(l);const f=c.mapAsync(GPUMapMode.READ);if(e.captureZValues){const h=g.mapAsync(GPUMapMode.READ);await Promise.all([f,h]),p.depthValues=new Float32Array(g.getMappedRange().slice()),g.unmap()}else await f;return p.colorValues=new Uint32Array(c.getMappedRange().slice()),c.unmap(),p.generateSelection=(h,S,x,C)=>ar(p,h,S,x,C),p}}var or={_selectionPropMap:null,_selectionProps:null};function at(t,e,r={}){Object.assign(e,or,r),mt.extend(t,e,r),e._selectionPass=An.newInstance(),e._selectionPropMap=new Map,e._selectionProps=[],v.setGet(t,e,["_WebGPURenderWindow"]),v.moveToProtected(t,e,["WebGPURenderWindow"]),sr(t,e)}var ir=v.newInstance(at,"vtkWebGPUHardwareSelector"),st={newInstance:ir,extend:at},{vtkErrorMacro:Fe,vtkWarningMacro:cr}=v,ur={position:"absolute",top:0,left:0,width:"100%",height:"100%"};function lr(t,e){e.classHierarchy.push("vtkWebGPURenderWindow"),t.getViewNodeFactory=()=>e.myFactory;function r(c,l=new Set){if(!c||l.has(c))return;l.add(c);const g=c.getChildren?.()||[];for(let f=0;f<g.length;f++){const h=g[f];h?.releaseGraphicsResources?.(),r(h,l)}}function s(){const c=t.onInitialized(()=>{c.unsubscribe(),e.deleted||t.traverseAllPasses()})}function n(c,l){if(e.deleted||l!==e.deviceGeneration||e.handlingDeviceLost)return;e.handlingDeviceLost=!0,e.deviceLostInfo=c;const g=c?.reason??"unknown",f=c?.message||"WebGPU device was lost.";cr(`WebGPU device lost (${g}): ${f}`),t.releaseGraphicsResources(),t.invokeDeviceLost({reason:g,message:f,recoverable:g!=="destroyed"}),g!=="destroyed"&&(s(),t.initialize()),e.handlingDeviceLost=!1}function a(c,l){c.lost.then(g=>{n(g,l)})}const o=[0,0];function i(){e.renderable&&(e.size[0]!==o[0]||e.size[1]!==o[1])&&(o[0]=e.size[0],o[1]=e.size[1],e.canvas.setAttribute("width",e.size[0]),e.canvas.setAttribute("height",e.size[1]),t.recreateSwapChain()),e.viewStream&&e.viewStream.setSize(e.size[0],e.size[1]),e.canvas.style.display=e.useOffScreen?"none":"block",e.el&&(e.el.style.cursor=e.cursorVisibility?e.cursor:"none"),e.containerSize=null}t.onModified(i),t.recreateSwapChain=()=>{e.context&&(e.context.unconfigure(),e.presentationFormat=navigator.gpu.getPreferredCanvasFormat(e.adapter),e.context.configure({device:e.device.getHandle(),format:e.presentationFormat,alphaMode:"premultiplied",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_DST,width:e.size[0],height:e.size[1]}),e._configured=!0)},t.getCurrentTexture=()=>e.context.getCurrentTexture(),t.buildPass=c=>{if(c){if(!e.renderable)return;t.prepareNodes(),t.addMissingNodes(e.renderable.getRenderersByReference()),t.removeUnusedNodes(),t.initialize()}else e.initialized&&(e._configured||t.recreateSwapChain(),e.commandEncoder=e.device.createCommandEncoder())},t.initialize=()=>{if(!e.initializing){if(e.initializing=!0,e.deviceLostInfo=null,!navigator.gpu){Fe("WebGPU is not enabled.");return}t.create3DContextAsync().then(()=>{e.initialized=!0,!e.deleted&&t.invokeInitialized()})}},t.setContainer=c=>{e.el&&e.el!==c&&(e.canvas.parentNode!==e.el&&Fe("Error: canvas parent node does not match container"),e.el.removeChild(e.canvas),e.el.contains(e.bgImage)&&e.el.removeChild(e.bgImage)),e.el!==c&&(e.el=c,e.el&&(e.el.appendChild(e.canvas),e.useBackgroundImage&&e.el.appendChild(e.bgImage)),t.modified())},t.getContainer=()=>e.el,t.getContainerSize=()=>{if(!e.containerSize&&e.el){const{width:c,height:l}=e.el.getBoundingClientRect();e.containerSize=[c,l]}return e.containerSize||e.size},t.getFramebufferSize=()=>e.size,t.create3DContextAsync=async()=>{if(e.adapter=await navigator.gpu.requestAdapter({powerPreference:"high-performance"}),!e.deleted){if(e.device=Xn.newInstance(),e.device.initialize(await e.adapter.requestDevice({requiredLimits:{maxBufferSize:e.adapter.limits.maxBufferSize,maxStorageBufferBindingSize:e.adapter.limits.maxStorageBufferBindingSize,maxUniformBufferBindingSize:e.adapter.limits.maxUniformBufferBindingSize}})),e.deleted){e.device=null;return}e.deviceGeneration+=1,a(e.device.getHandle(),e.deviceGeneration),e.context=e.canvas.getContext("webgpu")}},t.releaseGraphicsResources=()=>{if(e.renderPasses)for(let l=0;l<e.renderPasses.length;l++)e.renderPasses[l]?.releaseGraphicsResources?.();r(t);const c=Z.newInstance();c.setCurrentOperation("Release"),c.traverse(t,null),e.context&&e.context.unconfigure(),e.adapter=null,e.device=null,e.context=null,e.commandEncoder=null,e._configured=!1,e.initialized=!1,e.initializing=!1},t.setBackgroundImage=c=>{e.bgImage.src=c.src},t.setUseBackgroundImage=c=>{e.useBackgroundImage=c,e.useBackgroundImage&&!e.el.contains(e.bgImage)?e.el.appendChild(e.bgImage):!e.useBackgroundImage&&e.el.contains(e.bgImage)&&e.el.removeChild(e.bgImage)};async function u(c=e.imageFormat){const l=document.createElement("canvas"),g=l.getContext("2d");l.width=e.canvas.width,l.height=e.canvas.height;const f=await t.getPixelsAsync(),h=new ImageData(f.colorValues,f.width,f.height);g.putImageData(h,0,0);const S=e.canvas.getBoundingClientRect();e.renderable.getRenderers().forEach(C=>{C.getViewProps().forEach(_=>{if(_.getContainer){const R=_.getContainer().getElementsByTagName("canvas");for(let M=0;M<R.length;M++){const T=R[M],U=T.getBoundingClientRect(),V=U.x-S.x,d=U.y-S.y;g.drawImage(T,V,d)}}})});const x=l.toDataURL(c);l.remove(),t.invokeImageReady(x)}t.captureNextImage=(c="image/png",{resetCamera:l=!1,size:g=null,scale:f=1}={})=>{if(e.deleted)return null;e.imageFormat=c;const h=e.notifyStartCaptureImage;return e.notifyStartCaptureImage=!0,e._screenshot={size:g||f!==1?g||e.size.map(S=>S*f):null},new Promise((S,x)=>{const C=t.onImageReady(_=>{if(e._screenshot.size===null)e.notifyStartCaptureImage=h,C.unsubscribe(),e._screenshot.placeHolder&&(e.size=e._screenshot.originalSize,t.modified(),e._screenshot.cameras&&e._screenshot.cameras.forEach(({restoreParamsFn:R,arg:M})=>R(M)),t.traverseAllPasses(),e.el.removeChild(e._screenshot.placeHolder),e._screenshot.placeHolder.remove(),e._screenshot=null),S(_);else{const R=document.createElement("img");if(R.style=ur,R.src=_,e._screenshot.placeHolder=e.el.appendChild(R),e.canvas.style.display="none",e._screenshot.originalSize=e.size,e.size=e._screenshot.size,e._screenshot.size=null,t.modified(),l){const M=l!==!0;e._screenshot.cameras=e.renderable.getRenderers().map(T=>{const U=T.getActiveCamera(),V=U.get("focalPoint","position","parallelScale");return{resetCameraArgs:M?{renderer:T}:void 0,resetCameraFn:M?l:T.resetCamera,restoreParamsFn:U.set,arg:JSON.parse(JSON.stringify(V))}}),e._screenshot.cameras.forEach(({resetCameraFn:T,resetCameraArgs:U})=>T(U))}t.traverseAllPasses()}})})},t.traverseAllPasses=()=>{if(!e.deleted)if(e.initialized){if(e.renderPasses)for(let c=0;c<e.renderPasses.length;++c)e.renderPasses[c].traverse(t,null);e.commandEncoder&&(e.device.submitCommandEncoder(e.commandEncoder),e.commandEncoder=null,e.notifyStartCaptureImage&&e.device.onSubmittedWorkDone().then(()=>{u()}))}else{t.initialize();const c=t.onInitialized(()=>{c.unsubscribe(),t.traverseAllPasses()})}},t.setViewStream=c=>{if(e.viewStream===c)return!1;if(e.subscription&&(e.subscription.unsubscribe(),e.subscription=null),e.viewStream=c,e.viewStream){const l=e.renderable.getRenderers()[0];l.getBackgroundByReference()[3]=0,t.setUseBackgroundImage(!0),e.subscription=e.viewStream.onImageReady(g=>t.setBackgroundImage(g.image)),e.viewStream.setSize(e.size[0],e.size[1]),e.viewStream.invalidateCache(),e.viewStream.render(),t.modified()}return!0},t.getUniquePropID=()=>e.nextPropID++,t.getPropFromID=c=>{for(let l=0;l<e.children.length;l++){const g=e.children[l].getPropFromID(c);if(g!==null)return g}return null},t.getPixelsAsync=async()=>{const c=e.device,l=e.renderPasses[0].getOpaquePass().getColorTexture(),g={width:l.getWidth(),height:l.getHeight()};g.colorBufferWidth=32*Math.floor((g.width+31)/32),g.colorBufferSizeInBytes=g.colorBufferWidth*g.height*8;const f=Te.newInstance();f.setDevice(c),f.create(g.colorBufferSizeInBytes,GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST);const h=e.device.createCommandEncoder();h.copyTextureToBuffer({texture:l.getHandle()},{buffer:f.getHandle(),bytesPerRow:8*g.colorBufferWidth,rowsPerImage:g.height},{width:g.width,height:g.height,depthOrArrayLayers:1}),c.submitCommandEncoder(h),await f.mapAsync(GPUMapMode.READ),g.colorValues=new Uint16Array(f.getMappedRange().slice()),f.unmap();const S=new Uint8ClampedArray(g.height*g.width*4);for(let x=0;x<g.height;x++)for(let C=0;C<g.width;C++){const _=(x*g.width+C)*4,R=(x*g.colorBufferWidth+C)*4;S[_]=255*ae.fromHalf(g.colorValues[R]),S[_+1]=255*ae.fromHalf(g.colorValues[R+1]),S[_+2]=255*ae.fromHalf(g.colorValues[R+2]),S[_+3]=255*ae.fromHalf(g.colorValues[R+3])}return g.colorValues=S,g},t.createSelector=()=>{const c=st.newInstance();return c.setWebGPURenderWindow(t),c};const p=t.setSize;t.setSize=(c,l)=>{const g=p(c,l);return g&&t.invokeWindowResizeEvent({width:c,height:l}),g},t.delete=v.chain(t.delete,t.setViewStream)}var pr={initialized:!1,initializing:!1,handlingDeviceLost:!1,deviceGeneration:0,deviceLostInfo:null,context:null,adapter:null,device:null,canvas:null,cursorVisibility:!0,cursor:"pointer",containerSize:null,renderPasses:[],notifyStartCaptureImage:!1,imageFormat:"image/png",useOffScreen:!1,useBackgroundImage:!1,nextPropID:1,xrSupported:!1,presentationFormat:null};function gr(t,e,r={}){Object.assign(e,pr,r),e.canvas=document.createElement("canvas"),e.canvas.style.width="100%",e.bgImage=new Image,e.bgImage.style.position="absolute",e.bgImage.style.left="0",e.bgImage.style.top="0",e.bgImage.style.width="100%",e.bgImage.style.height="100%",e.bgImage.style.zIndex="-1",Ft.extend(t,e,r),e.myFactory=Pt.newInstance(),e.renderPasses[0]=Nn.newInstance(),e.selector||(e.selector=st.newInstance(),e.selector.setWebGPURenderWindow(t)),v.event(t,e,"imageReady"),v.event(t,e,"initialized"),v.event(t,e,"deviceLost"),v.get(t,e,["commandEncoder","deviceLostInfo","device","presentationFormat","useBackgroundImage","xrSupported"]),v.setGet(t,e,["initialized","context","canvas","device","renderPasses","notifyStartCaptureImage","cursor","useOffScreen"]),v.setGetArray(t,e,["size"],2),v.event(t,e,"windowResizeEvent"),lr(t,e)}var ot=v.newInstance(gr,"vtkWebGPURenderWindow");Ot("WebGPU",ot);Ut("vtkRenderWindow",ot);var fr=It.extractURLParameters();function vr(t,e){const r=t.invokeResize;delete t.invokeResize,e.renderWindow=Gt.newInstance(),e.renderer=Lt.newInstance(),e.renderWindow.addRenderer(e.renderer),e._apiSpecificRenderWindow=e.renderWindow.newAPISpecificView(fr.viewAPI??e.defaultViewAPI),e.renderWindow.addView(e._apiSpecificRenderWindow),e.interactor=Ne.newInstance(),e.interactor.setInteractorStyle(un.newInstance()),e.interactor.setView(e._apiSpecificRenderWindow),e.interactor.initialize(),t.setBackground=e.renderer.setBackground,t.setBackground(...e.background),t.resize=()=>{if(e.container){const s=e.container.getBoundingClientRect(),n=window.devicePixelRatio||1;e._apiSpecificRenderWindow.setSize(Math.floor(s.width*n),Math.floor(s.height*n)),r(),e.renderWindow.render()}},t.setContainer=s=>{e.container&&e.interactor.unbindEvents(e.container),e.container=s,e._apiSpecificRenderWindow.setContainer(e.container),e.container&&e.interactor.bindEvents(e.container)},t.delete=v.chain(t.setContainer,e._apiSpecificRenderWindow.delete,()=>{window.removeEventListener("resize",t.resize)},t.delete),e.listenWindowResize&&window.addEventListener("resize",t.resize),t.resize()}var hr={background:[.32,.34,.43],listenWindowResize:!0,container:null};function it(t,e,r={}){Object.assign(e,hr,r),v.obj(t,e),v.get(t,e,["renderWindow","renderer","_apiSpecificRenderWindow","interactor","container"]),v.moveToProtected(t,e,["_apiSpecificRenderWindow"]),v.event(t,e,"resize"),vr(t,e)}var Sr=v.newInstance(it),dr={newInstance:Sr,extend:it},{vtkDebugMacro:Se}=v,{States:Tr}=xe,ee={type:"StartInteractionEvent"},b={type:"InteractionEvent"},te={type:"EndInteractionEvent"};function we(t,e,r,s,n,a){const o=t.getActiveCamera();let i=o.getFocalPoint();i=e.getInteractorStyle().computeWorldToDisplay(t,i[0],i[1],i[2]);const u=i[2],p=e.getInteractorStyle().computeDisplayToWorld(t,r,s,u),c=e.getInteractorStyle().computeDisplayToWorld(t,n,a,u),l=[c[0]-p[0],c[1]-p[1],c[2]-p[2]];i=o.getFocalPoint();const g=o.getPosition();o.setFocalPoint(l[0]+i[0],l[1]+i[1],l[2]+i[2]),o.setPosition(l[0]+g[0],l[1]+g[1],l[2]+g[2])}function wr(t,e,r,s){const n=r.getActiveCamera();if(n.getParallelProjection()){const a=s.getView(),o=a.getViewportSize(r),i=r.getViewport(),u=a.getSize(),p=o[0],c=o[1],l=p/2,g=c/2,f=e.x-i[0]*u[0],h=e.y-i[1]*u[1];we(r,s,l,g,f,h),n.setParallelScale(n.getParallelScale()/t),we(r,s,f,h,l,g)}else{let a=n.getFocalPoint();const o=n.getViewPlaneNormal();a=s.getInteractorStyle().computeWorldToDisplay(r,a[0],a[1],a[2]);const i=s.getInteractorStyle().computeDisplayToWorld(r,e.x,e.y,a[2]);n.setFocalPoint(i[0],i[1],i[2]),n.dolly(t),r.resetCameraClippingRange();const u=n.getPosition();a=n.getFocalPoint();const p=[0,0,0];let c=o[0]*(a[0]-u[0])+o[1]*(a[1]-u[1])+o[2]*(a[2]-u[2]);c/=o[0]**2+o[1]**2+o[2]**2,p[0]=u[0]+o[0]*c,p[1]=u[1]+o[1]*c,p[2]=u[2]+o[2]*c,n.setFocalPoint(p[0],p[1],p[2]),r.resetCameraClippingRange()}}function yr(t,e,r){if(Number.isNaN(r))return;const s=e.getActiveCamera();s.getParallelProjection()?s.setParallelScale(s.getParallelScale()/r):(s.dolly(r),e.resetCameraClippingRange()),t.getLightFollowCamera()&&e.updateLightsGeometryToFollowCamera()}var Cr={dollyToPosition:wr,translateCamera:we,dollyByFactor:yr};function xr(t,e){e.classHierarchy.push("vtkInteractorStyleManipulator"),e.currentVRManipulators=new Map,e.mouseManipulators=[],e.keyboardManipulators=[],e.vrManipulators=[],e.gestureManipulators=[],e.currentManipulator=null,e.currentWheelManipulator=null,e.centerOfRotation=[0,0,0],e.rotationFactor=1,t.removeAllManipulators=()=>{t.removeAllMouseManipulators(),t.removeAllKeyboardManipulators(),t.removeAllVRManipulators(),t.removeAllGestureManipulators()},t.removeAllMouseManipulators=()=>{e.mouseManipulators=[]},t.removeAllKeyboardManipulators=()=>{e.keyboardManipulators=[]},t.removeAllVRManipulators=()=>{e.vrManipulators=[]},t.removeAllGestureManipulators=()=>{e.gestureManipulators=[]};const r=(n,a)=>{const o=a.indexOf(n);return o===-1?!1:(a.splice(o,1),t.modified(),!0)};t.removeMouseManipulator=n=>r(n,e.mouseManipulators),t.removeKeyboardManipulator=n=>r(n,e.keyboardManipulators),t.removeVRManipulator=n=>r(n,e.vrManipulators),t.removeGestureManipulator=n=>r(n,e.gestureManipulators);const s=(n,a)=>a.indexOf(n)!==-1?!1:(a.push(n),t.modified(),!0);t.addMouseManipulator=n=>s(n,e.mouseManipulators),t.addKeyboardManipulator=n=>s(n,e.keyboardManipulators),t.addVRManipulator=n=>s(n,e.vrManipulators),t.addGestureManipulator=n=>s(n,e.gestureManipulators),t.getNumberOfMouseManipulators=()=>e.mouseManipulators.length,t.getNumberOfKeyboardManipulators=()=>e.keyboardManipulators.length,t.getNumberOfVRManipulators=()=>e.vrManipulators.length,t.getNumberOfGestureManipulators=()=>e.gestureManipulators.length,t.resetCurrentManipulator=()=>{e.currentManipulator=null,e.currentWheelManipulator=null},t.handleLeftButtonPress=n=>{e.previousPosition=n.position,t.onButtonDown(Y.LeftButton,n)},t.handleMiddleButtonPress=n=>{e.previousPosition=n.position,t.onButtonDown(Y.MiddleButton,n)},t.handleRightButtonPress=n=>{e.previousPosition=n.position,t.onButtonDown(Y.RightButton,n)},t.handleButton3D=n=>{if(!n)return;const a=t.findVRManipulator(n.device,n.input,n.pressed);a?(e.currentVRManipulators.set(n.device,a),a.onButton3D(t,e.getRenderer(n),e.state,n),n.pressed?t.startCameraPose():(e.currentVRManipulators.delete(n.device),e.currentVRManipulators.size===0&&t.endCameraPose())):Se("No manipulator found")},t.handleMove3D=n=>{const a=e.currentVRManipulators.get(n.device);a&&e.state===Tr.IS_CAMERA_POSE&&a.onMove3D(t,e.getRenderer(n),e.state,n)},t.onButtonDown=(n,a)=>{e.currentManipulator||(e.currentManipulator=t.findMouseManipulator(n,a.shiftKey,a.controlKey,a.altKey),e.currentManipulator?(e.currentManipulator.setCenter&&e.currentManipulator.setCenter(e.centerOfRotation),e.currentManipulator.setRotationFactor&&e.currentManipulator.setRotationFactor(e.rotationFactor),e.currentManipulator.startInteraction(),e.currentManipulator.onButtonDown(e._interactor,e.getRenderer(a),a.position),e._interactor.requestAnimation(t.onButtonDown),t.invokeStartInteractionEvent(ee)):Se("No manipulator found"))},t.findMouseManipulator=(n,a,o,i)=>{let u=null,p=e.mouseManipulators.length;for(;p--;){const c=e.mouseManipulators[p];c&&c.getButton()===n&&c.getShift()===a&&c.getControl()===o&&c.getAlt()===i&&c.isDragEnabled()&&(u=c)}return u},t.findVRManipulator=(n,a)=>{let o=null,i=e.vrManipulators.length;for(;i--;){const u=e.vrManipulators[i];u&&u.getDevice()===n&&u.getInput()===a&&(o=u)}return o},t.handleLeftButtonRelease=()=>{t.onButtonUp(Y.LeftButton)},t.handleMiddleButtonRelease=()=>{t.onButtonUp(Y.MiddleButton)},t.handleRightButtonRelease=()=>{t.onButtonUp(Y.RightButton)},t.onButtonUp=n=>{e.currentManipulator&&e.currentManipulator.getButton&&e.currentManipulator.getButton()===n&&(e.currentManipulator.onButtonUp(e._interactor),e.currentManipulator.endInteraction(),e._interactor.isPointerLocked()||(e.currentManipulator=null),e._interactor.cancelAnimation(t.onButtonDown),t.invokeEndInteractionEvent(te))},t.handleEndPointerLock=()=>{e.currentManipulator=null},t.handleStartMouseWheel=n=>{if(e.currentWheelManipulator)return;let a=null,o=e.mouseManipulators.length;for(;o--;){const i=e.mouseManipulators[o];i&&i.isScrollEnabled()&&i.getShift()===n.shiftKey&&i.getControl()===n.controlKey&&i.getAlt()===n.altKey&&(a=i)}a?(e.currentWheelManipulator=a,e.currentWheelManipulator.onStartScroll(e._interactor,e.getRenderer(n),n.spinY),e.currentWheelManipulator.startInteraction(),e._interactor.requestAnimation(t.handleStartMouseWheel),t.invokeStartInteractionEvent(ee)):Se("No manipulator found")},t.handleEndMouseWheel=()=>{e.currentWheelManipulator&&e.currentWheelManipulator.onEndScroll&&(e.currentWheelManipulator.onEndScroll(e._interactor),e.currentWheelManipulator.endInteraction(),e.currentWheelManipulator=null,e._interactor.cancelAnimation(t.handleStartMouseWheel),t.invokeEndInteractionEvent(te))},t.handleMouseWheel=n=>{e.currentWheelManipulator&&e.currentWheelManipulator.onScroll&&(e.currentWheelManipulator.onScroll(e._interactor,e.getRenderer(n),n.spinY,e.cachedMousePosition),t.invokeInteractionEvent(b))},t.handleMouseMove=n=>{e.cachedMousePosition=n.position,e.currentManipulator&&e.currentManipulator.onMouseMove&&(e.currentManipulator.onMouseMove(e._interactor,e.getRenderer(n),n.position),t.invokeInteractionEvent(b))},t.handleKeyPress=n=>{e.keyboardManipulators.filter(a=>a.onKeyPress).forEach(a=>{a.onKeyPress(e._interactor,e.getRenderer(n),n.key),t.invokeInteractionEvent(b)})},t.handleKeyDown=n=>{e.keyboardManipulators.filter(a=>a.onKeyDown).forEach(a=>{a.onKeyDown(e._interactor,e.getRenderer(n),n.key),t.invokeInteractionEvent(b)})},t.handleKeyUp=n=>{e.keyboardManipulators.filter(a=>a.onKeyUp).forEach(a=>{a.onKeyUp(e._interactor,e.getRenderer(n),n.key),t.invokeInteractionEvent(b)})},t.handleStartPinch=n=>{t.startDolly();let a=e.gestureManipulators.length;for(;a--;){const o=e.gestureManipulators[a];o&&o.isPinchEnabled()&&(o.onStartPinch(e._interactor,n.scale),o.startInteraction())}e._interactor.requestAnimation(t.handleStartPinch),t.invokeStartInteractionEvent(ee)},t.handleEndPinch=()=>{t.endDolly();let n=e.gestureManipulators.length;for(;n--;){const a=e.gestureManipulators[n];a&&a.isPinchEnabled()&&(a.onEndPinch(e._interactor),a.endInteraction())}e._interactor.cancelAnimation(t.handleStartPinch),t.invokeEndInteractionEvent(te)},t.handleStartRotate=n=>{t.startRotate();let a=e.gestureManipulators.length;for(;a--;){const o=e.gestureManipulators[a];o&&o.isRotateEnabled()&&(o.onStartRotate(e._interactor,n.rotation),o.startInteraction())}e._interactor.requestAnimation(t.handleStartRotate),t.invokeStartInteractionEvent(ee)},t.handleEndRotate=()=>{t.endRotate();let n=e.gestureManipulators.length;for(;n--;){const a=e.gestureManipulators[n];a&&a.isRotateEnabled()&&(a.onEndRotate(e._interactor),a.endInteraction())}e._interactor.cancelAnimation(t.handleStartRotate),t.invokeEndInteractionEvent(te)},t.handleStartPan=n=>{t.startPan();let a=e.gestureManipulators.length;for(;a--;){const o=e.gestureManipulators[a];o&&o.isPanEnabled()&&(o.onStartPan(e._interactor,n.translation),o.startInteraction())}e._interactor.requestAnimation(t.handleStartPan),t.invokeStartInteractionEvent(ee)},t.handleEndPan=()=>{t.endPan();let n=e.gestureManipulators.length;for(;n--;){const a=e.gestureManipulators[n];a&&a.isPanEnabled()&&(a.onEndPan(e._interactor),a.endInteraction())}e._interactor.cancelAnimation(t.handleStartPan),t.invokeEndInteractionEvent(te)},t.handlePinch=n=>{let a=e.gestureManipulators.length,o=0;for(;a--;){const i=e.gestureManipulators[a];i&&i.isPinchEnabled()&&(i.onPinch(e._interactor,e.getRenderer(n),n.scale),o++)}o&&t.invokeInteractionEvent(b)},t.handlePan=n=>{const a=e.getRenderer(n);let o=e.gestureManipulators.length,i=0;for(;o--;){const u=e.gestureManipulators[o];u&&u.isPanEnabled()&&(u.onPan(e._interactor,a,n.translation),i++)}i&&t.invokeInteractionEvent(b)},t.handleRotate=n=>{let a=e.gestureManipulators.length,o=0;for(;a--;){const i=e.gestureManipulators[a];i&&i.isRotateEnabled()&&(i.onRotate(e._interactor,e.getRenderer(n),n.rotation),o++)}o&&t.invokeInteractionEvent(b)}}var Er=t=>({cachedMousePosition:null,currentManipulator:null,currentWheelManipulator:null,centerOfRotation:[0,0,0],rotationFactor:1,...t});function ct(t,e,r={}){Object.assign(e,Er(r)),xe.extend(t,e,r),v.setGet(t,e,["rotationFactor"]),v.get(t,e,["mouseManipulators","keyboardManipulators","vrManipulators","gestureManipulators"]),v.setGetArray(t,e,["centerOfRotation"],3),xr(t,e)}var Rr=v.newInstance(ct,"vtkInteractorStyleManipulator"),_r={newInstance:Rr,extend:ct,...Cr};function Mr(t,e){e.classHierarchy.push("vtkCompositeCameraManipulator"),t.computeDisplayCenter=(r,s)=>{const n=r.computeWorldToDisplay(s,e.center[0],e.center[1],e.center[2]);e.displayCenter[0]=n[0],e.displayCenter[1]=n[1]}}var Vr={center:[0,0,0],rotationFactor:1,displayCenter:[0,0]};function Dr(t,e,r={}){Object.assign(e,Vr,r),v.setGet(t,e,["rotationFactor"]),v.setGetArray(t,e,["displayCenter"],2),v.setGetArray(t,e,["center"],3),Mr(t,e)}var Ee={extend:Dr};function Br(t,e){e.classHierarchy.push("vtkCompositeMouseManipulator"),t.startInteraction=()=>{},t.endInteraction=()=>{},t.onButtonDown=(r,s,n)=>{},t.onButtonUp=r=>{},t.onMouseMove=(r,s,n)=>{},t.onStartScroll=(r,s,n)=>{},t.onScroll=(r,s,n)=>{},t.onEndScroll=r=>{},t.isDragEnabled=()=>e.dragEnabled,t.isScrollEnabled=()=>e.scrollEnabled}var mr={button:1,shift:!1,control:!1,alt:!1,dragEnabled:!0,scrollEnabled:!1};function Or(t,e,r={}){Object.assign(e,mr,r),v.setGet(t,e,["button","shift","control","alt"]),v.set(t,e,["dragEnabled","scrollEnabled"]),Br(t,e)}var Re={extend:Or};function Ur(t,e){e.classHierarchy.push("vtkMouseCameraTrackballRotateManipulator");const r=new Float64Array(3),s=new Float64Array(3),n=new Float64Array(3),a=new Float64Array(16),o=new Float64Array(3),i=new Float64Array(3),u=new Float64Array(3);t.onButtonDown=(p,c,l)=>{e.previousPosition=l},t.onMouseMove=(p,c,l)=>{if(!l)return;const g=c.getActiveCamera(),f=g.getPosition(),h=g.getFocalPoint();de(a);const{center:S,rotationFactor:x}=e;e.useFocalPointAsCenterOfRotation&&(S[0]=h[0],S[1]=h[1],S[2]=h[2]);const C=e.previousPosition.x-l.x,_=e.previousPosition.y-l.y,R=p.getView().getViewportSize(c),M=g.getViewUp();if(e.useWorldUpVec){const T=new Float64Array(3);yt(T,e.worldUpVec),Ct(T,Ve(f,e.worldUpVec)/Ve(e.worldUpVec,e.worldUpVec)),xt(S,T,T),X(a,a,T),ue(a,a,le(360*C/R[0]*x),e.worldUpVec),T[0]=-T[0],T[1]=-T[1],T[2]=-T[2],X(a,a,T),X(a,a,S)}else X(a,a,S),ue(a,a,le(360*C/R[0]*x),M);ze(g.getDirectionOfProjection(),M,o),ue(a,a,le(-360*_/R[1]*x),o),i[0]=-S[0],i[1]=-S[1],i[2]=-S[2],X(a,a,i),pe(r,f,a),pe(s,h,a),u[0]=M[0]+f[0],u[1]=M[1]+f[1],u[2]=M[2]+f[2],pe(n,u,a),g.setPosition(r[0],r[1],r[2]),g.setFocalPoint(s[0],s[1],s[2]),g.setViewUp(n[0]-r[0],n[1]-r[1],n[2]-r[2]),g.orthogonalizeViewUp(),c.resetCameraClippingRange(),p.getLightFollowCamera()&&c.updateLightsGeometryToFollowCamera(),e.previousPosition=l}}var Fr={useWorldUpVec:!1,worldUpVec:[0,1,0],useFocalPointAsCenterOfRotation:!1};function ut(t,e,r={}){Object.assign(e,Fr,r),v.obj(t,e),Re.extend(t,e,r),Ee.extend(t,e,r),v.setGet(t,e,["useWorldUpVec"]),v.setGetArray(t,e,["worldUpVec"],3),v.setGet(t,e,["useFocalPointAsCenterOfRotation"]),Ur(t,e)}var Pr=v.newInstance(ut,"vtkMouseCameraTrackballRotateManipulator"),Gr={newInstance:Pr,extend:ut};function Lr(t,e){e.classHierarchy.push("vtkMouseCameraTrackballZoomManipulator"),t.onButtonDown=(r,s,n)=>{e.previousPosition=n;const a=r.getView().getViewportSize(s),o=s.getActiveCamera(),i=e.flipDirection?-1:1;o.getParallelProjection()?e.zoomScale=1.5/a[1]*i:e.zoomScale=1.5*(o.getClippingRange()[1]/a[1])*i},t.onMouseMove=(r,s,n)=>{if(!n)return;const a=e.previousPosition.y-n.y,o=s.getActiveCamera();if(o.getParallelProjection()){const i=a*e.zoomScale;o.setParallelScale((1-i)*o.getParallelScale())}else{const i=o.getPosition(),u=o.getFocalPoint(),p=o.getDirectionOfProjection(),c=a*e.zoomScale;let l=c*p[0];i[0]+=l,u[0]+=l,l=c*p[1],i[1]+=l,u[1]+=l,l=c*p[2],i[2]+=l,u[2]+=l,o.getFreezeFocalPoint()||o.setFocalPoint(u[0],u[1],u[2]),o.setPosition(i[0],i[1],i[2]),s.resetCameraClippingRange()}r.getLightFollowCamera()&&s.updateLightsGeometryToFollowCamera(),e.previousPosition=n},t.onScroll=(r,s,n)=>{if(!n)return;const a=s.getActiveCamera(),o=1-n/10;a.getParallelProjection()?a.setParallelScale(a.getParallelScale()/o):(a.dolly(o),s.resetCameraClippingRange()),r.getLightFollowCamera()&&s.updateLightsGeometryToFollowCamera()}}var kr={zoomScale:0,flipDirection:!1};function lt(t,e,r={}){Object.assign(e,kr,r),v.obj(t,e),Re.extend(t,e,r),Ee.extend(t,e,r),v.setGet(t,e,["flipDirection"]),Lr(t,e)}var Wr=v.newInstance(lt,"vtkMouseCameraTrackballZoomManipulator"),zr={newInstance:Wr,extend:lt};function Nr(t,e){e.classHierarchy.push("vtkMouseCameraTrackballPanManipulator"),t.onButtonDown=(r,s,n)=>{e.previousPosition=n},t.onMouseMove=(r,s,n)=>{if(!n)return;const a=n,o=e.previousPosition;e.previousPosition=n;const i=s.getActiveCamera(),u=i.getPosition(),p=i.getFocalPoint();if(i.getParallelProjection()){i.orthogonalizeViewUp();const c=i.getViewUp(),l=i.getViewPlaneNormal(),g=[0,0,0];ze(l,c,g);const f=r.getView().getViewportSize(s)[1];let h=(a.x-o.x)/f,S=(o.y-a.y)/f;const x=i.getParallelScale();h*=x*2,S*=x*2;let C=g[0]*h+c[0]*S;u[0]+=C,p[0]+=C,C=g[1]*h+c[1]*S,u[1]+=C,p[1]+=C,C=g[2]*h+c[2]*S,u[2]+=C,p[2]+=C,i.setPosition(u[0],u[1],u[2]),i.setFocalPoint(p[0],p[1],p[2])}else{const{center:c}=e,l=r.getInteractorStyle(),g=l.computeWorldToDisplay(s,c[0],c[1],c[2])[2],f=l.computeDisplayToWorld(s,a.x,a.y,g),h=l.computeDisplayToWorld(s,o.x,o.y,g),S=[u[0]+(h[0]-f[0]),u[1]+(h[1]-f[1]),u[2]+(h[2]-f[2])],x=[p[0]+(h[0]-f[0]),p[1]+(h[1]-f[1]),p[2]+(h[2]-f[2])];i.setPosition(S[0],S[1],S[2]),i.setFocalPoint(x[0],x[1],x[2])}s.resetCameraClippingRange(),r.getLightFollowCamera()&&s.updateLightsGeometryToFollowCamera()}}var $r={};function pt(t,e,r={}){Object.assign(e,$r,r),v.obj(t,e),Ee.extend(t,e,r),Re.extend(t,e,r),Nr(t,e)}var Hr=v.newInstance(pt,"vtkMouseCameraTrackballPanManipulator"),Kr={newInstance:Hr,extend:pt};const Pe=12;function Zr(t,e){const r=dr.newInstance({background:[0,0,0]});r.setContainer(t),r.resize();const s=r.getRenderer(),n=r.getRenderWindow();let a=e.ghost,o=Math.max(0,Math.min(e.startK,e.slices-1));const[i,u]=e.range,p=kt.newInstance();p.setInputData(e.imageData),p.setSampleDistance?.(1.2);const c=Wt.newInstance();c.setMapper(p);const l=zt.newInstance();l.addRGBPoint(i,.6,.6,.6),l.addRGBPoint(u,1,1,1);const g=Nt.newInstance(),f=c.getProperty();f.setRGBTransferFunction(0,l),f.setScalarOpacity(0,g),f.setScalarOpacityUnitDistance(0,3),f.setInterpolationTypeToLinear();const h=()=>{g.removeAllPoints(),a===null||a<=0?(g.addPoint(i,0),g.addPoint(u,0)):(g.addPoint(i,0),g.addPoint(i+(u-i)*.4,a*.25),g.addPoint(u,a))};h(),s.addVolume(c);const S=$t.newInstance();S.setInputData(e.imageData),S.setKSlice(o);const x=Ht.newInstance();x.setMapper(S);const C=x.getProperty(),_=e.voi?e.voi.upper-e.voi.lower:u-i,R=e.voi?(e.voi.upper+e.voi.lower)/2:(u+i)/2;C.setColorWindow(_),C.setColorLevel(R),s.addActor(x),(()=>{s.resetCamera();const w=s.getActiveCamera();w.getFocalPoint();const D=w.getDistance();w.azimuth(30),w.elevation(12),w.setDistance(D*1.05),w.zoom(1.4),s.resetCameraClippingRange()})();const T=_r.newInstance(),U=Gr.newInstance({button:1}),V=zr.newInstance({button:3}),d=Kr.newInstance({button:2});T.addMouseManipulator(U),T.addMouseManipulator(V),T.addMouseManipulator(d),r.getInteractor().setInteractorStyle(T),n.render();const m=w=>{const D=Math.max(0,Math.min(w,e.slices-1));D!==o&&(o=D,S.setKSlice(D),n.render())},O=w=>{w.preventDefault();const D=o+(w.deltaY>0?1:-1);m(D),e.onSweep(o)};t.addEventListener("wheel",O,{passive:!1});let G=null;const j=w=>((w.touches[0]?.clientY??0)+(w.touches[1]?.clientY??0))/2,L=w=>{if(w.touches.length!==2){G=null;return}G=j(w),w.preventDefault(),w.stopPropagation()},K=w=>{if(G===null||w.touches.length!==2)return;w.preventDefault(),w.stopPropagation();const D=j(w)-G,y=Math.trunc(D/Pe);y!==0&&(G+=y*Pe,m(o+y),e.onSweep(o))},k=w=>{w.touches.length<2&&(G=null)};return t.addEventListener("touchstart",L,{capture:!0,passive:!1}),t.addEventListener("touchmove",K,{capture:!0,passive:!1}),t.addEventListener("touchend",k,{capture:!0}),t.addEventListener("touchcancel",k,{capture:!0}),{sweep:m,ghost_set:w=>{a=w===null?null:Math.max(0,Math.min(1,w)),h(),n.render()},wl_set:(w,D)=>{C.setColorWindow(D-w),C.setColorLevel((D+w)/2),n.render()},resize:()=>{r.resize(),n.render()},slice_get:()=>o,dispose:()=>{t.removeEventListener("wheel",O),t.removeEventListener("touchstart",L,{capture:!0}),t.removeEventListener("touchmove",K,{capture:!0}),t.removeEventListener("touchend",k,{capture:!0}),t.removeEventListener("touchcancel",k,{capture:!0});try{s.removeVolume(c),s.removeActor(x)}catch{}try{r.delete()}catch{}}}}export{Zr as slabScene_open};