@fnndsc/argus 0.7.2 → 0.9.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 (27) hide show
  1. package/dist/assets/Settings-aPI1L0Hv.js +4204 -0
  2. package/dist/assets/Texture-B5_yVp0g.js +204 -0
  3. package/dist/assets/{addVolumesToViewports-kPbPUzG1.js → addVolumesToViewports-DihvLMPa.js} +1 -1
  4. package/dist/assets/cornerstoneEngine-A1IbMa9k.js +2 -0
  5. package/dist/assets/{index-BEqlmVJ8.js → index-AzIZ0aym.js} +1 -1
  6. package/dist/assets/{index-WxcTPiRU.js → index-B4dN9H5V.js} +2 -2
  7. package/dist/assets/index-C0cxM8sU.css +1 -0
  8. package/dist/assets/index-CNN-ajYW.js +4149 -0
  9. package/dist/assets/index-CU4ov6t9.js +1 -0
  10. package/dist/assets/index-CsgpuZsj.js +1 -0
  11. package/dist/assets/{index-BivV2-EJ.js → index-Cw0WY3CI.js} +2 -2
  12. package/dist/assets/{index-DRvbvdZm.js → index-DPYz8EHh.js} +5 -5
  13. package/dist/assets/niivueEngine-BOeCGTwL.js +2 -0
  14. package/dist/assets/slabScene-BvqXoSPu.js +559 -0
  15. package/dist/index.html +161 -37
  16. package/package.json +4 -3
  17. package/dist/assets/Settings-B_WPNkCE.js +0 -4407
  18. package/dist/assets/cornerstoneEngine-COmMRWtq.js +0 -2
  19. package/dist/assets/index-B1IRr1ii.js +0 -4145
  20. package/dist/assets/index-BbgujRGq.css +0 -1
  21. package/dist/assets/index-Ddoc1eo6.js +0 -1
  22. package/dist/assets/index-oaz5IMVa.js +0 -1
  23. package/dist/assets/niivueEngine-B2PDgoH7.js +0 -2
  24. /package/dist/{assets/arrive-ClURnB_N.wav → sounds/arrive.wav} +0 -0
  25. /package/dist/{assets/press-Cr6-1MeH.wav → sounds/press.wav} +0 -0
  26. /package/dist/{assets/refuse-DQOeTs-N.wav → sounds/refuse.wav} +0 -0
  27. /package/dist/{assets/retreat-CxfXQVOC.wav → sounds/retreat.wav} +0 -0
@@ -1 +0,0 @@
1
- @font-face{font-family:Antonio;src:url(./antonio-latin-400-normal-CZjzwNAN.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Antonio;src:url(./antonio-latin-700-normal-DSH-lEDG.woff2) format("woff2");font-weight:700;font-display:swap}html{font-size:22px;color:#fff}:root{--lfw: 168px;--bar-height: 28px;--left-frame-padding: .75rem;--panel-border: 8px solid #000}body{display:flex;flex-direction:row;margin:0;padding:10px 0 0 5px;background-color:#000;color:var(--daybreak);font-family:Antonio,Arial Narrow,Avenir Next Condensed,sans-serif;line-height:1.5}.wrap-all{display:flex;flex-direction:column;flex:1 1 auto;min-width:auto;min-height:auto;width:100%}.wrap{display:flex;flex:1 1 auto;width:100%;padding:0 15px 0 5px;overflow:hidden}#gap.wrap{margin-top:var(--left-frame-padding)}main{display:block;flex:1 1 auto;padding:60px 0 11px 50px}.left-frame{display:flex;flex-direction:column;justify-content:space-between;position:relative;flex:none;width:var(--lfw);background-color:var(--orange);color:#000;text-align:right;font-weight:700;line-height:1.2}.left-frame-top{display:flex;flex-direction:column;flex:none;width:var(--lfw);border-bottom-left-radius:100px;background-color:var(--october-sunset);color:#000;text-align:right;font-weight:700;line-height:1.2}button[class^=panel-]{display:flex;justify-content:flex-end;width:var(--lfw);padding:var(--left-frame-padding);border:none;border-bottom:8px solid #000;color:#000;text-align:right;font-family:inherit;font-weight:700;font-size:inherit;line-height:1.2;cursor:pointer}button.panel-1{min-height:160px;flex-direction:column;justify-content:space-between;align-items:flex-end;overflow:hidden}button.panel-2{position:relative;flex:1 1 auto;border-bottom:0;border-bottom-left-radius:100px}button.panel-3{align-items:flex-end;border-top-left-radius:100px}button.panel-7{border-top:8px solid #000;border-bottom:0}button.panel-console,button.panel-lang{border-bottom:8px solid #000}.banner{min-width:0;min-height:0;padding-left:5px;padding-bottom:4.4px;color:var(--honey);text-align:right;text-transform:uppercase;line-height:1.1}.panel-1,.panel-4,.panel-spacer{background-color:var(--orange)}.panel-2,.panel-3,.panel-6{background-color:var(--october-sunset)}.panel-5,.panel-7{background-color:var(--harvestgold)}.panel-spacer{width:var(--lfw);background-color:var(--orange);color:#000;text-align:right;font-weight:700;line-height:1.2}.hop{font-family:inherit;font-size:inherit;font-weight:700;line-height:1.2;text-align:right}h1{margin:0;font-size:4rem;font-weight:400;letter-spacing:.2em;line-height:1.2;text-align:right;text-transform:uppercase}.right-frame{position:relative;display:flex;flex-direction:column;flex:1 1 auto}.right-frame-top{position:relative;display:block;width:100%}.bar-panel{display:flex;width:100%}.data-cascade-button-group{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:flex-start;min-width:0;min-height:0;padding-bottom:var(--left-frame-padding)}.first-bar-panel{position:relative;margin-top:2.5vh}.bar-1,.bar-2,.bar-3,.bar-4,.bar-5,.bar-6,.bar-7,.bar-8,.bar-9,.bar-10{height:var(--bar-height)}.bar-1,.bar-6{width:10%;background-color:var(--october-sunset);border-right:8px solid #000}.bar-2,.bar-7{width:12%;background-color:var(--orange);border-right:8px solid #000}.bar-3,.bar-8{width:17%;background-color:var(--honey);border-right:8px solid #000}.bar-5,.bar-10{width:5%;background-color:var(--october-sunset);border-left:8px solid #000}.bar-4,.bar-9{position:relative;width:56.0022%;background-color:var(--harvestgold);z-index:-1}.headtrim,.baseboard{position:fixed;left:0;right:0;height:10px;background-color:#000;z-index:999}.headtrim{top:0}.baseboard{bottom:0}*{box-sizing:border-box}button{margin:0;padding:0;font-family:inherit;font-size:inherit;font-weight:700;line-height:1.5;color:inherit}input,select,textarea{margin:0;padding:0;font-family:inherit;font-size:inherit;line-height:1.5;color:inherit}.argus-input-line input{font-weight:700}a{color:var(--honey);text-decoration:none;text-transform:uppercase;line-height:1.3}.banner a{line-height:1.1}.about-footer a{color:var(--october-sunset);text-transform:none}p{margin:0}label{line-height:1.5}:root{--face-label: "Antonio", sans-serif;--face-data: inherit;--lfw: 168px;--state-done: var(--daybreak);--state-running: var(--orange);--state-idle: color-mix(in srgb, var(--pumpkin-pie) 45%, transparent);--state-error: color-mix(in srgb, #f2402a 80%, var(--october-sunset));--mars: #f2402a}@font-face{font-family:MesloLGS NF;src:url(./MesloLGS-NF-Regular-DAUcZJjt.ttf) format("truetype");font-weight:400;font-display:swap}@font-face{font-family:MesloLGS NF;src:url(./MesloLGS-NF-Bold-DbxbaV6p.ttf) format("truetype");font-weight:700;font-display:swap}@font-face{font-family:Chakra Petch;src:url(./chakra-petch-latin-400-normal-SafcrIr2.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Chakra Petch;src:url(./chakra-petch-latin-500-normal-BR1ody1F.woff2) format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Chakra Petch;src:url(./chakra-petch-latin-600-normal-DVQm9bgb.woff2) format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Chakra Petch;src:url(./chakra-petch-latin-700-normal-CnDBPjkL.woff2) format("woff2");font-weight:700;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(./jetbrains-mono-latin-400-normal-V6pRDFza.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(./jetbrains-mono-latin-500-normal-BWZEU5yA.woff2) format("woff2");font-weight:500;font-display:swap}#status-strip{display:flex;flex-wrap:wrap;gap:.6rem 1.2rem;margin-bottom:.8rem;font-size:.8rem;letter-spacing:.05em;text-transform:uppercase}#status-strip .readout{color:var(--honey)}#status-strip .readout:empty{display:none}#status-strip .lamp-online{color:#000}#status-strip .mismatch{color:#ff5f5f;font-weight:700}.lamp-online{background:#6f6;color:#000;padding:0 .5rem;border-radius:.6rem}.lamp-host{background:#ffaf00;color:#000;padding:0 .5rem;border-radius:.6rem}#status-strip .lamp-host{color:#000}.lamp-offline{background:var(--state-error);color:var(--butter);padding:0 .5rem;border-radius:.6rem}.wrap:not(#gap),.left-frame{transition:translate .5s cubic-bezier(.22,1,.36,1),margin .5s cubic-bezier(.22,1,.36,1)}body[data-zoom]{height:100dvh;overflow:hidden}body[data-zoom] .wrap:not(#gap){translate:0 calc(-1 * var(--zoom-header-height, 100vh));margin-bottom:calc(-1 * var(--zoom-header-height, 0px))}body[data-zoom] .left-frame{translate:calc(-100% - 20px) 0;margin-right:calc(-1 * var(--lfw))}#drawer{transition:height .5s cubic-bezier(.22,1,.36,1)}#drawer.drawer-dragging{transition:none}body[data-zoom=console] #drawer{height:calc(100dvh - 3.6rem)!important}body[data-zoom=console] main{min-height:0}body[data-zoom]:not([data-zoom=console]) #drawer{height:0!important}body[data-zoom] .pane-zoomed .files-panel{max-height:calc(100dvh - 7rem)}.lcars-bar-zoom{width:40px;height:28px;background-color:var(--butter);margin-left:.5rem;cursor:pointer}.lcars-bar-zoom:hover{filter:brightness(1.18)}body[data-zoom=console] #drawer .lcars-bar-zoom{background-color:var(--october-sunset)}.files-header-bar{margin:.2rem 0 .5rem}.pane-zoomed .files-header-bar .lcars-bar-zoom{background-color:var(--october-sunset)}.lcars-bar-split{width:28px;height:28px;margin-left:.5rem;cursor:pointer;background:linear-gradient(to right,var(--pumpkin-pie) 45%,transparent 45%,transparent 55%,var(--pumpkin-pie) 55%)}.lcars-bar-split.lcars-split-row{background:linear-gradient(to bottom,var(--pumpkin-pie) 45%,transparent 45%,transparent 55%,var(--pumpkin-pie) 55%)}.lcars-bar-split:hover{filter:brightness(1.4);box-shadow:0 0 10px var(--pumpkin-pie)}.pane-handle{cursor:pointer}.pane-handle:hover .lcars-bar-end{filter:brightness(1.25)}.pane-drawer{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;padding:.35rem .6rem;margin:-.3rem 0 .5rem;background-color:#00000059;border-left:6px solid var(--pumpkin-pie);border-radius:0 12px 12px 0}.pane-drawer[hidden]{display:none}.pane-drawer button:focus{outline:2px solid var(--butter);outline-offset:2px;box-shadow:0 0 8px var(--butter)}.pane-drawer .drawer-children{display:inline-flex;gap:.4rem}.drawer-group{display:inline-flex;align-items:center;gap:.4rem}.drawer-group+.drawer-group{margin-left:.7rem;padding-left:.7rem;border-left:2px solid color-mix(in srgb,var(--harvestgold) 35%,transparent)}.drawer-group:empty{display:none}.drawer-label{color:var(--harvestgold);font-family:var(--face-label);font-size:.7rem;letter-spacing:.14em;margin-right:.1rem}.drawer-structure .pacs-capsule{background-color:var(--harvestgold);color:#000}.drawer-binding .drawer-bind,.drawer-binding .drawer-cwdbind{background-color:#ffeecc38;color:var(--butter)}.drawer-binding .drawer-label-cwd{margin-left:.5rem}.drawer-binding .drawer-bind.drawer-bind-selected,.drawer-binding .drawer-cwdbind.drawer-bind-selected{background-color:var(--butter);color:#000;box-shadow:0 0 8px #fec9}.drawer-children .drawer-child{background-color:var(--orange);color:#000}.drawer-children .drawer-child.drawer-destructive{background-color:#d22;color:var(--butter)}.pane-zoomed .pane-drawer .drawer-zoom{background-color:var(--butter)}.pane-view .view-body{flex:1 1 0;min-height:0;overflow:auto}#pacs-workspace{--roster-gap: .8rem;--roster-pad: 6px;overflow-y:auto;min-height:0}.workspace-pane{display:none}.layout-leaf>.workspace-pane{display:flex;flex-direction:column;flex:1;min-width:0;min-height:0;overflow:hidden}.roster-order{position:sticky;top:0;z-index:2;background:#000}.files-panel>.roster-order{position:static;z-index:auto;flex:none}.files-body{--roster-gap: 0px;--roster-pad: 0px}.dag-roster{--roster-gap: .8rem;--roster-pad: 6px}.roster-caps{display:grid;grid-template-columns:var(--roster-cols);column-gap:var(--roster-gap);padding:0 var(--roster-pad);margin:.2rem 0 .45rem;font-size:.8rem}.roster-cap{min-width:0;height:24px;margin-right:calc(3px - var(--roster-gap));border:none;border-radius:0;background-color:var(--harvestgold);color:#000;font-family:var(--face-label);font-size:.66rem;letter-spacing:.12em;text-align:left;padding:0 .15rem;cursor:pointer}.pane-dag .roster-cap[data-key=id],.files-body .roster-cap[data-key=size],.files-body .roster-cap[data-key=owner],.files-body .roster-cap[data-key=date]{text-align:right}.roster-cap:first-of-type{border-radius:9px 0 0 9px;padding-left:.7rem}.roster-cap:last-of-type{border-radius:0 9px 9px 0;padding-right:.7rem;margin-right:0}.roster-cap:nth-of-type(3n+2),.mode-frame .strategy-pill:nth-of-type(3n+2){background-color:var(--daybreak)}.roster-cap:nth-of-type(3n+3),.mode-frame .strategy-pill:nth-of-type(3n+3){background-color:var(--orange)}.roster-cap.roster-active{background-color:var(--butter)}.roster-filter[hidden]{display:none}.roster-filter{display:flex;align-items:stretch;height:26px;margin:0 0 .4rem;background:#000}.roster-filter-glyph{display:flex;align-items:center;padding:0 .8rem 0 1rem;background:var(--harvestgold);color:#000;font-family:var(--face-label);font-size:.7rem;letter-spacing:.12em;border-radius:13px 0 0 13px}.roster-filter-input{flex:1;background:transparent;border:none;border-bottom:2px solid var(--pumpkin-pie);outline:none;padding:0 .7rem;color:var(--butter);font-family:Share Tech Mono,monospace;font-size:.74rem}.pane-mode{margin-left:auto;font-family:Share Tech Mono,monospace;font-size:.6rem;letter-spacing:.06em;text-transform:none;opacity:.85}.pane-mode:empty{display:none}.pane-legend .legend-swatch{display:inline-block;width:.55rem;height:.55rem;margin:0 .25rem 0 0;border-radius:2px;vertical-align:-1px}.pane-state{margin-left:1rem;font-family:Share Tech Mono,monospace;font-size:.6rem;letter-spacing:.06em;text-transform:none;opacity:.85}.pane-state.state-live{color:var(--harvestgold);opacity:1}.pane-state.state-settled{opacity:.7}.pane-state.state-stale{color:var(--orange);opacity:1;text-decoration:underline dotted}.pane-state.state-wait{color:var(--butter);opacity:1}.left-frame-top .panel-1{flex-direction:column;align-items:flex-end;justify-content:space-between}.brand-mark{width:4.2rem;aspect-ratio:111 / 78;background-color:#000;mask:url(./ChRISlogo-color-t-i99soF.svg) no-repeat center / contain;-webkit-mask:url(./ChRISlogo-color-t-i99soF.svg) no-repeat center / contain}.left-frame>div:first-child{flex:1 1 0;min-height:0;display:flex;flex-direction:column}.left-frame button[class^=panel-],.left-frame .panel-spacer{position:relative}.left-frame .panel-3{height:auto;max-height:none;flex:3 1 0;min-height:3.5rem}.left-frame .panel-4{height:auto;min-height:3rem;flex:2 1 0}.left-frame .panel-5{height:auto;flex:4 1 0;min-height:3rem}.left-frame .panel-6{height:auto;flex:2 1 0;min-height:3rem}.left-frame .panel-spacer{height:auto;flex:1 1 0;min-height:.8rem}.left-frame .panel-7{height:clamp(3.5rem,12vh,30vh)}html,body{height:100dvh}body{overflow:hidden}.wrap-all{height:100%;display:flex;flex-direction:column}.wrap-all>.wrap{width:100%}.wrap:not(#gap){flex:none}#gap{flex:1;min-height:0}.right-frame{display:flex;flex-direction:column;min-height:0}.bar-panel{flex:none}main{flex:1;min-height:0;display:flex;flex-direction:column}#status-strip{flex:none}#layout-root{flex:1;min-height:0}#layout-root>.layout-split,#layout-root>.layout-leaf{height:100%}.layout-split{min-height:0}.layout-leaf{display:flex;min-height:0}#pacs-form{display:grid;grid-template-columns:var(--roster-cols);align-items:end;column-gap:var(--roster-gap);padding:0 var(--roster-pad);margin:.3rem 0 .5rem;font-size:.8rem}#pacs-form label{display:flex;flex-direction:column;gap:.15rem;min-width:0;color:var(--honey);font-family:var(--face-label);font-size:.66rem;letter-spacing:.12em}#pacs-form .pacs-form-gutter,#pacs-form .pacs-form-blank{min-width:0}#pacs-form #pacs-run{min-width:0;justify-self:stretch}#pacs-form input{min-width:0;width:100%}#pacs-form input,#pacs-gather-name{background:#000;border:1px solid var(--pumpkin-pie);border-radius:.4rem;color:var(--butter);font-family:Share Tech Mono,monospace;font-size:.8rem;padding:.15rem .5rem;outline:none}#pacs-form input:focus,#pacs-command:focus,#pacs-gather-name:focus{border-color:var(--harvestgold);box-shadow:0 0 6px color-mix(in srgb,var(--harvestgold) 40%,transparent)}#pacs-commandline{display:flex;gap:.6rem;margin-bottom:.6rem}#pacs-command{flex:1;background:#000;border:1px solid var(--pumpkin-pie);border-radius:.4rem;color:var(--daybreak);font-family:Share Tech Mono,monospace;font-size:.85rem;padding:.2rem .6rem;outline:none}.pacs-capsule{border:none;border-radius:.8rem;padding:.1rem .9rem;background-color:var(--harvestgold);color:#000;font-family:var(--face-label);font-weight:700;font-size:.7rem;letter-spacing:.1em;cursor:pointer}.pacs-capsule-off{background-color:color-mix(in srgb,var(--harvestgold) 28%,transparent);color:var(--honey)}.pacs-capsule:hover{filter:brightness(1.3);box-shadow:0 0 8px var(--harvestgold)}.pacs-capsule:disabled{opacity:.35;cursor:default}.pacs-provenance{display:block;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:right;padding-right:.6rem;color:var(--honey);font-family:var(--face-label);font-size:.66rem;letter-spacing:.12em}.pacs-capsule.pacs-capsule-requery{background-color:var(--october-sunset);color:#000}.pacs-capsule.pacs-capsule-requery:hover{box-shadow:0 0 8px var(--october-sunset)}.pacs-listing{position:relative;display:flex;flex-direction:column;max-height:34vh;padding-right:var(--spine-w);margin-bottom:.6rem}#pacs-results{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;overflow:hidden;padding-top:calc(var(--rule-h) + .3rem)}#pacs-results>.roster-order{position:static;z-index:auto;flex:none}#pacs-results>.listing-field{flex:1 1 auto;padding-right:.5rem}.pacs-study{margin-bottom:.7rem}.pacs-study-row{padding-block:3px;color:var(--orange);border-bottom:2px solid var(--orange);cursor:pointer}.pacs-study-row:hover{background:#ff77001f}.pacs-study-row>span{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.pacs-study-patient,.pacs-study-desc{color:var(--butter)}.pacs-study-mrn,.pacs-study-accession{color:var(--harvestgold)}.pacs-study-date,.pacs-study-modalities,.pacs-study-server,.pacs-study-count{color:var(--pumpkin-pie)}#pacs-results .listing-level[data-depth="2"]{font-size:.8rem;padding-left:1.4em}#pacs-results .listing-level[data-depth="2"] .roster-caps{margin:.35rem 0 .3rem}.pacs-series{padding-block:2px}.pacs-series:hover{background:#ff77001f}.pacs-series-desc{color:var(--butter);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.pacs-series-modality{color:var(--harvestgold)}.pacs-series-files{color:var(--pumpkin-pie);text-align:right}#pacs-results .roster-cap[data-key=files]{text-align:right}.pacs-badge{display:grid;grid-template-columns:1fr 9.5em;align-items:center;gap:.4rem;min-width:0;font-size:.7rem;color:var(--honey)}.pacs-badge:not(:has(>.listing-progress,>.pacs-bar-full)){grid-template-columns:1fr}.pacs-badge .listing-progress{min-width:0}.pacs-badge-note{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pacs-badge[data-state=running]{color:var(--state-running)}.pacs-badge[data-state=done]{color:var(--state-done)}.pacs-badge[data-state=error]{color:var(--state-error)}.pacs-badge[data-state=unconfirmed]{color:var(--honey)}#pacs-gather{border-top:2px solid var(--pumpkin-pie);padding-top:.4rem}.pacs-gather-head{display:flex;align-items:center;gap:.7rem;margin-bottom:.4rem}.pacs-gather-title{color:var(--harvestgold);font-family:var(--face-label);font-weight:700;letter-spacing:.12em}.pacs-gather-row{display:flex;align-items:center;gap:.6rem;font-size:.8rem;padding:1px 6px}.pacs-gather-label{color:var(--butter)}#layout-root{width:100%}#layout-root.layout-arrive{animation:layout-arrive .45s cubic-bezier(.22,1,.36,1)}@keyframes layout-arrive{0%{transform:translate(60px);opacity:0}to{transform:translate(0);opacity:1}}.layout-split{display:flex;width:100%;min-width:0}.layout-col{flex-direction:row}.layout-row{flex-direction:column}.layout-leaf{min-width:0;overflow:hidden;border-radius:4px}.layout-leaf.pane-focused{position:relative}.layout-leaf.pane-focused:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:20;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--harvestgold) 45%,transparent)}.layout-divider{flex:none;background:var(--pumpkin-pie);opacity:.35;border-radius:3px}.layout-col>.layout-divider{width:6px;margin:0 4px;cursor:col-resize}.layout-row>.layout-divider{height:6px;margin:4px 0;cursor:row-resize}.layout-divider:hover{opacity:1;background:var(--harvestgold);box-shadow:0 0 8px color-mix(in srgb,var(--harvestgold) 60%,transparent)}.dag-canvas{flex:1 1 0;min-height:0;overflow:hidden;position:relative}.node-overlay{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;background:#000000eb;border-left:6px solid var(--harvestgold);opacity:0;transition:opacity .3s ease;overflow:hidden}.node-overlay-open{opacity:1}.node-overlay-header{display:flex;justify-content:space-between;gap:.6rem;padding:.3rem .6rem;color:var(--harvestgold);font-size:.72rem;letter-spacing:.08em;border-bottom:1px solid var(--pumpkin-pie);white-space:nowrap;overflow:hidden}.node-overlay-hint{color:var(--butter);opacity:.7}.node-overlay-body{flex:1;min-height:0;padding:.4rem 0 0 .6rem}.dag-node-tip{position:absolute;z-index:5;pointer-events:none;padding:.15rem .55rem;background:#000000d9;border:1px solid var(--pumpkin-pie);border-radius:.6rem .2rem;color:var(--butter);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}.dag-canvas canvas{display:block;width:100%!important;height:100%!important}body[data-zoom]:not([data-zoom=console]) .layout-leaf:not(.pane-zoomed),body[data-zoom]:not([data-zoom=console]) .layout-divider{display:none}body[data-zoom]:not([data-zoom=console]) .pane-zoomed-path,body[data-zoom]:not([data-zoom=console]) .pane-zoomed{flex:1 1 100%!important;width:100%!important;height:100%!important}body[data-zoom]:not([data-zoom=console]) .pane-zoomed-path>:not(.pane-zoomed,.pane-zoomed-path,.layout-divider){display:none}.dag-facts{position:absolute;left:.6rem;bottom:.5rem;z-index:3;max-width:46%;padding:.25rem .6rem;font-size:.75rem;background:#000000b8;border-left:4px solid var(--harvestgold);border-radius:0 10px 10px 0}.dag-facts:empty{display:none}.dag-subway{display:flex;align-items:center;margin-top:.35rem}.subway-stop{width:9px;height:9px;border-radius:50%;border:1px solid var(--pumpkin-pie);background:transparent;flex:none}.subway-stop.subway-passed{background:var(--harvestgold);border-color:var(--harvestgold)}.subway-stop.subway-here{background:var(--orange);border-color:var(--orange);box-shadow:0 0 7px var(--orange)}.subway-stop.subway-terminal.subway-done{background:var(--butter);border-color:var(--butter)}.subway-stop.subway-terminal.subway-failed{background:var(--state-error);border-color:var(--state-error);box-shadow:0 0 7px var(--state-error)}.subway-link{height:2px;flex:1 1 8px;min-width:8px;background:#cc550073}.subway-link.subway-passed{background:var(--harvestgold)}.dag-roster{display:none;position:relative;flex:1 1 0;min-height:0;padding-right:var(--spine-w)}.dag-roster.roster-shown{display:flex;flex-direction:column}.dag-feedlist{display:none;flex:1 1 0;min-height:0;flex-direction:column;overflow:hidden;font-size:.8rem}.dag-feedlist>.roster-order{position:static;z-index:auto;flex:none}.dag-feedlist .roster-order{margin-bottom:calc(var(--rule-h) + .3rem)}.feedlist-loading{padding:.5rem .6rem;color:var(--harvestgold);letter-spacing:.12em;animation:roster-breathe 1.2s ease-in-out infinite}.feedlist-refusal{padding:.5rem .9rem .15rem;color:var(--honey);font-family:var(--face-label);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase}.feedlist-warming{padding:.15rem .9rem .5rem;color:var(--daybreak);font-family:Share Tech Mono,monospace;font-size:.7rem}@keyframes roster-breathe{0%,to{opacity:.35}50%{opacity:1}}.feedlist-row:hover{background:#ff77002e}.feedlist-row.feedlist-arrived .feedlist-id,.feedlist-row.feedlist-arrived .feedlist-title{animation:roster-breathe 1.6s ease-in-out infinite}.feedlist-id{color:var(--daybreak);text-align:right}.feedlist-title{color:var(--butter);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.feedlist-status{color:var(--honey);font-size:.7rem}.feedlist-finishedWithError .feedlist-status,.feedlist-cancelled .feedlist-status{color:var(--state-error)}.feedlist-started .feedlist-status,.feedlist-running .feedlist-status{color:var(--orange)}.feedlist-owner,.feedlist-created{color:var(--daybreak);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}*{scrollbar-width:thin;scrollbar-color:var(--harvestgold) #000}*::-webkit-scrollbar{width:7px;height:7px}*::-webkit-scrollbar-track{background:#000}*::-webkit-scrollbar-thumb{background:var(--harvestgold);border-radius:4px}*::-webkit-scrollbar-button{display:none;height:0}.files-body,.image-body,.tags-body,.dag-canvas,.dag-roster,.pacs-listing{--frame-top: var(--mode-frame-top, 0px);--spine-w: 21px;--rule-h: 6px;--bar-w: 7.2rem;--elbow-h: 30px}.workspace-pane[data-modes=open] .files-body,.workspace-pane[data-modes=open] .image-body,.workspace-pane[data-modes=open] .tags-body,.workspace-pane[data-modes=open] .dag-canvas,.workspace-pane[data-modes=open] .dag-roster,.workspace-pane[data-modes=open] .pacs-listing{--spine-w: var(--bar-w)}.field-rule{position:absolute;top:var(--frame-top);left:0;right:var(--spine-w);height:var(--rule-h);background-color:var(--harvestgold);transition:right .22s ease-out;z-index:4;pointer-events:none}.mode-strip{color:#000;position:absolute;top:var(--frame-top);right:0;bottom:0;width:var(--spine-w);margin:0;padding:0;border:none;border-radius:0 0 4px 4px;background-color:var(--harvestgold);cursor:pointer;transition:width .22s ease-out;z-index:4}.mode-strip:hover{filter:brightness(1.18)}.mode-elbow{position:absolute;top:var(--frame-top);right:0;width:calc(var(--spine-w) + 36px);height:var(--elbow-h);background-color:var(--harvestgold);border-top-right-radius:22px;transition:width .22s ease-out;z-index:5;pointer-events:none}.mode-elbow:after{content:"";position:absolute;left:0;bottom:0;width:36px;height:calc(var(--elbow-h) - var(--rule-h));background-color:#000;border-top-right-radius:12px}.mode-frame{position:absolute;top:calc(var(--frame-top) + var(--elbow-h) + 3px);right:0;bottom:0;width:var(--spine-w);display:flex;flex-direction:column;gap:3px;background-color:#000;visibility:hidden;opacity:0;transition:opacity .12s ease-out,visibility 0s linear .12s;z-index:5}.workspace-pane[data-modes=open] .mode-frame{visibility:visible;opacity:1;transition:opacity .12s ease-out .16s,visibility 0s linear .16s}.mode-frame .strategy-pill{flex:none;width:100%;min-width:0;height:1.6rem;line-height:1.6rem;margin:0;padding:0 .6rem 0 .4rem;border:none;border-radius:0;background-color:var(--harvestgold);color:#000;text-align:right}.mode-frame .strategy-pill:hover{filter:brightness(1.18)}.mode-fill{flex:1 1 0;min-height:1rem;background-color:var(--daybreak);border-radius:0 0 4px 4px;cursor:pointer}.mode-fill:hover{filter:brightness(1.18)}.mode-frame .strategy-pill.rail-off{background-color:color-mix(in srgb,var(--harvestgold) 30%,transparent);color:var(--honey)}.mode-frame .strategy-pill.rail-na{background-color:color-mix(in srgb,var(--harvestgold) 30%,transparent);color:var(--honey);text-decoration:line-through}.files-body.content-view .field-rule,.files-body.content-view .mode-strip,.files-body.content-view .mode-elbow,.files-body.content-view .mode-frame,.dag-canvas:has(>.node-overlay)>.field-rule,.dag-canvas:has(>.node-overlay)>.mode-strip,.dag-canvas:has(>.node-overlay)>.mode-elbow,.dag-canvas:has(>.node-overlay)>.mode-frame{display:none}.strategy-pill{border:none;border-radius:.7rem;padding:0 .7rem;background-color:#000;color:var(--harvestgold);font-family:var(--face-label);font-weight:700;font-size:.65rem;letter-spacing:.1em;cursor:pointer}.strategy-pill:hover{filter:brightness(1.18)}#header-dag{gap:2rem}body:not([data-header]) #header-dag,body[data-header=dag] #header-dag{display:flex}#pipeline-cycler{position:relative;flex:0 1 30%;min-width:10rem;height:7.5rem}#header-dag-info{flex:1 1 68%;min-width:0;font-family:Share Tech Mono,monospace;font-size:.72rem}#index-instrument{column-span:all;margin-bottom:.35rem}#index-instrument .index-row{margin-bottom:.15rem}#index-instrument .index-bar{flex:0 1 16rem;min-width:6rem}#index-instrument .status-degraded .telemetry-value{color:var(--state-error)}#index-instrument .index-verb{flex:none;margin-left:.4rem;background-color:var(--state-error);color:var(--butter)}#about-rows{columns:3;column-gap:2rem}#pipeline-cycler canvas{display:block;width:100%!important;height:100%!important}#pipeline-cycler-name{position:absolute;bottom:.2rem;left:.6rem;color:var(--pumpkin-pie);font-family:var(--face-label);font-size:.65rem;letter-spacing:.12em;text-transform:uppercase}.files-panel{flex:1 1 0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.status-degraded{color:var(--state-error)}.listing-progress{display:block;position:relative;height:.45rem;min-width:2rem;border-radius:.25rem;background:color-mix(in srgb,var(--pumpkin-pie) 22%,transparent);overflow:hidden}.listing-progress-idle{background:var(--state-idle)}.listing-progress-fill{display:block;height:100%;border-radius:.25rem;transition:width .25s linear}.listing-progress-running .listing-progress-fill{background:var(--state-running)}.listing-progress-done .listing-progress-fill{background:var(--pumpkin-pie)}.listing-progress-failed .listing-progress-fill{background:var(--state-error)}.listing-actions{--listing-action-height: 1.35rem;box-sizing:border-box;display:flex;gap:.4rem;align-items:center;min-height:var(--listing-action-height)}.listing-action{box-sizing:border-box;height:var(--listing-action-height);border:none;border-radius:.8rem;padding:.1rem .9rem;background:var(--harvestgold);color:#000;font-family:var(--face-label);font-weight:700;font-size:.7rem;letter-spacing:.1em;cursor:pointer}.listing-action:hover:not(:disabled){filter:brightness(1.3);box-shadow:0 0 8px var(--harvestgold)}.listing-action:disabled{opacity:.35;cursor:default}.listing-readout{color:var(--honey);font-size:.7rem;letter-spacing:.06em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.files-row>.listing-actions{padding-block:0}.files-row-indicated .files-name,.files-row-indicated .files-glyph{color:var(--butter);text-shadow:0 0 8px rgb(255 238 204 / 60%)}.feedlist-row>.listing-actions{padding-block:0}.feedlist-row.listing-indicated .feedlist-title,.feedlist-row.listing-indicated .feedlist-id{color:var(--butter);text-shadow:0 0 8px rgb(255 238 204 / 60%)}.listing-row{display:grid;grid-template-columns:var(--roster-cols);align-items:center;column-gap:var(--roster-gap);padding:2px var(--roster-pad);font-size:.8rem}.listing-row>span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.listing-row>.listing-actions{padding-block:0}.listing-activatable{cursor:pointer}.listing-group{display:block}.listing-level{padding-left:0}.listing-indicated>span:first-child,.listing-indicated>span:nth-child(2){color:var(--butter);text-shadow:0 0 8px rgb(255 238 204 / 60%)}.listing-selected>span{color:var(--butter)}.files-row.files-denied{opacity:.55}.files-row.files-denied .files-glyph{color:var(--state-error)}.files-row.files-denied .files-name{text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--state-error) 70%,transparent)}.files-content-refused{color:var(--state-error)}.files-refused{padding:.6rem .2rem}.files-refused-lede{margin:0 0 .4rem;color:var(--state-error);font-family:var(--face-label);font-weight:700;letter-spacing:.12em}.files-refused-said{margin:0;color:var(--daybreak);font-family:Share Tech Mono,monospace;font-size:.8rem;white-space:pre-wrap;opacity:.9}.listing-field{flex:1 1 0;min-height:0;overflow-y:auto}.files-panel>.listing-field{padding-right:.5rem}.empty-shortcuts{display:flex;gap:.6rem;margin:.3rem 0 .6rem}.empty-promptline{display:flex;margin-bottom:.6rem}.empty-prompt{flex:1;background:#000;border:1px solid var(--pumpkin-pie);border-radius:.4rem;color:var(--daybreak);font-family:Share Tech Mono,monospace;font-size:.85rem;padding:.2rem .6rem;outline:none}.empty-prompt:focus{border-color:var(--harvestgold);box-shadow:0 0 6px color-mix(in srgb,var(--harvestgold) 40%,transparent)}.empty-result{flex:1 1 0;min-height:0;overflow:auto;font-family:Share Tech Mono,monospace;font-size:.8rem;color:var(--daybreak);white-space:pre-wrap}.files-empty{color:var(--honey);opacity:.6;font-size:.8rem;letter-spacing:.08em}.files-listing{margin-bottom:1rem}.files-path{position:sticky;top:0;z-index:2;background:#000;color:var(--orange);font-weight:700;letter-spacing:.05em;padding-bottom:.2rem;margin-bottom:calc(var(--rule-h, 6px) + .4rem);font-size:.9rem}.files-content-header{position:static;border-bottom:2px solid var(--orange);margin-bottom:.3rem}.files-row>span{padding:2px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.files-glyph{color:var(--harvestgold)}.files-name{color:var(--butter)}.files-type-dir .files-name,.files-type-vfs .files-name{color:var(--harvestgold);font-weight:700}.files-type-plugin .files-name,.files-type-pipeline .files-name{color:var(--honey)}.files-type{color:var(--honey);font-size:.7rem;letter-spacing:.04em;opacity:.85}.files-size,.files-owner,.files-date{color:var(--pumpkin-pie);text-align:right;white-space:nowrap}.files-activatable{cursor:pointer}.files-activatable:hover>span{background:#ff77002e}.files-content-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.files-close-pill{border:none;background:var(--mars);color:#000;font-family:inherit;font-size:.6rem;font-weight:700;letter-spacing:.1em;border-radius:.6rem;padding:.1rem .8rem;cursor:pointer}.files-close-pill:hover{filter:brightness(1.3)}.files-image{display:block;max-width:100%;max-height:60vh;margin:.5rem 0;border:1px solid var(--pumpkin-pie)}.files-body{position:relative;flex:1 1 0;min-height:0;display:flex;flex-direction:column;padding-right:var(--spine-w)}.files-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:.6rem;padding:.3rem .5rem .6rem 0}.files-card{background:linear-gradient(135deg,#161616,#070707);border:2px solid var(--october-sunset);border-radius:10px;padding:.55rem .7rem;min-width:0;transition:border-color .15s,transform .15s}.files-card.files-activatable{cursor:pointer}.files-cards.files-previews{grid-template-columns:repeat(auto-fill,minmax(13rem,1fr))}.files-card-thumb{height:6.5rem;margin:-.55rem -.7rem .45rem;border-radius:8px 8px 0 0;background-color:#000;display:flex;align-items:center;justify-content:center;overflow:hidden;color:var(--pumpkin-pie);font-family:var(--face-label);font-size:2rem}.files-card-thumb.thumb-wait{opacity:.45}.files-card-thumb svg{width:100%;height:100%;color:var(--harvestgold)}.files-card-thumb.thumb-count{font-size:.8rem;letter-spacing:.12em}.files-target{margin-left:.6em;opacity:.6;font-size:.85em}.files-card-target{margin-top:.25rem;color:var(--pumpkin-pie);font-family:Share Tech Mono,monospace;font-size:.62rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.files-card-thumb img{width:100%;height:100%;object-fit:cover}.files-card-thumb pre{margin:0;padding:.3rem .5rem;width:100%;height:100%;font:.55rem/1.3 Share Tech Mono,monospace;color:var(--honey);white-space:pre;overflow:auto;overscroll-behavior:contain;text-align:left}.files-card-thumb pre::-webkit-scrollbar{width:6px;height:6px}.files-card-thumb pre::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--honey) 45%,transparent);border-radius:3px}.files-card:hover .files-card-thumb pre::-webkit-scrollbar-thumb{background:var(--honey)}.files-card.files-activatable:hover{border-color:var(--honey);transform:translateY(-2px)}.files-card-up{display:flex;align-items:center;color:var(--pumpkin-pie);font-family:var(--face-label);letter-spacing:.08em}.files-card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.35rem}.files-card-badge{background:var(--harvestgold);color:#000;border-radius:9px;padding:0 .6rem;font-family:var(--face-label);font-size:.62rem;letter-spacing:.12em;line-height:1.6}.files-card.files-type-plugin .files-card-badge{background:var(--daybreak)}.files-card.files-type-pipeline .files-card-badge{background:var(--orange)}.files-card.files-type-dir .files-card-badge,.files-card.files-type-vfs .files-card-badge,.files-card.files-type-job .files-card-badge{background:var(--butter)}.files-card-size{color:var(--pumpkin-pie);font-family:Share Tech Mono,monospace;font-size:.68rem}.files-card-title{color:var(--honey);font-family:var(--face-label);font-size:.95rem;letter-spacing:.03em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-card-meta{display:flex;justify-content:space-between;margin-top:.3rem;color:var(--pumpkin-pie);font-family:Share Tech Mono,monospace;font-size:.66rem}.files-content-view{display:flex;flex-direction:column;min-height:100%}.dag-scene-canvas{display:block;width:100%!important;height:100%!important}.files-diagram{flex:1 1 0;min-height:14rem;position:relative;overflow:hidden}.files-diagram-empty{display:flex;align-items:center;justify-content:center;color:var(--pumpkin-pie);font-family:var(--face-label);letter-spacing:.1em}.man-head{color:var(--harvestgold);font-weight:600}.man-key{color:var(--honey)}.man-flag{color:var(--daybreak)}.man-str{color:var(--orange)}.files-content{margin:0;padding:.4rem 0;font-family:MesloLGS NF,Inconsolata,Courier New,monospace;font-size:.7rem;line-height:1.35;color:var(--butter);white-space:pre-wrap;word-break:break-word;text-shadow:0 0 5px rgb(255 238 204 / 30%)}.data-column{transition:filter .3s ease}.dc-sweep{filter:brightness(1.6)}.dc-sweep>div{color:var(--butter)!important;text-shadow:0 0 8px rgb(255 238 204 / 60%)}#data-cascade.dc-stale{filter:brightness(.45) saturate(.5)}.banner{font-size:clamp(1.1rem,1.4vw,1.8rem);padding-bottom:.2rem}.header-face{display:none;padding:.2rem .5rem;columns:3;column-gap:2rem;font-family:Share Tech Mono,monospace;font-size:.75rem;letter-spacing:.06em;max-height:19vh;overflow:hidden auto}body[data-header=stats] #header-telemetry{display:block}body[data-header=away] .wrap:not(#gap){translate:0 calc(-1 * var(--zoom-header-height, 100vh));margin-bottom:calc(-1 * var(--zoom-header-height, 0px))}#header-restore,body[data-zoom] .headtrim,body[data-zoom] .baseboard{display:none}body[data-zoom]:not([data-zoom=console]) #drawer-toggle,body[data-zoom]:not([data-zoom=console]) #status-strip,body[data-zoom]:not([data-zoom=console]) .right-frame:before{display:none}body[data-header=away]:not([data-zoom]) #gap,body[data-zoom]:not([data-zoom=console]) #gap{margin-top:12px}body[data-header=away] #header-restore,body[data-zoom] #header-restore{display:block;position:fixed;top:0;left:20%;right:20%;height:12px;z-index:1000;border-radius:0 0 6px 6px;background-color:var(--october-sunset);cursor:pointer;animation:beckon 3.5s ease-in-out infinite}#header-restore:hover{animation:none;background-color:var(--harvestgold);box-shadow:0 0 8px color-mix(in srgb,var(--harvestgold) 60%,transparent)}.header-controls{column-span:all;display:flex;gap:.7rem;margin-bottom:.3rem}.telemetry-row{display:flex;align-items:center;gap:.7rem;break-inside:avoid;margin-bottom:.2rem;min-width:0}.telemetry-label{flex:none;min-width:9.5rem;padding:0 .7rem;border-radius:.6rem 0 0 .6rem;background-color:var(--honey);color:#000;font-family:var(--face-label);font-weight:700;font-size:.7rem;line-height:1.2rem;letter-spacing:.08em;text-align:right;text-transform:uppercase}#header-about .telemetry-label{background-color:var(--october-sunset)}.telemetry-value{color:var(--daybreak);font-size:.9rem;min-width:0}#header-dag-info .telemetry-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.about-footer{column-span:all;margin-top:.15rem;padding-bottom:0;padding-left:0;font-size:.62rem;line-height:1.3;opacity:.75}.audio-pill,.theme-pill{padding:.1rem .9rem;border:none;border-radius:.8rem;color:#000;font-family:var(--face-label);font-weight:700;font-size:.75rem;letter-spacing:.1em;cursor:pointer}.audio-pill{background-color:var(--state-done)}.theme-pill{background-color:var(--harvestgold)}.audio-pill:hover,.theme-pill:hover{filter:brightness(1.3);box-shadow:0 0 8px currentcolor}.audio-pill.audio-off{background-color:var(--state-error)}.audio-pill.audio-off:after{content:" OFF"}:root[data-theme=gold]{--butter: #fff3cd;--daybreak: #fc3;--harvestgold: #ffd75e;--honey: #ffe49c;--october-sunset: #c99700;--orange: #e9b200;--pumpkin-pie: #a07800}:root[data-theme=medical]{--butter: #dff5fd;--daybreak: #7edcf7;--harvestgold: #1ebef0;--honey: #7fd9f7;--october-sunset: #164989;--orange: #1878b8;--pumpkin-pie: #0f3566}:root[data-theme=nemesis]{--butter: #f0e4fc;--daybreak: #cfa0ff;--harvestgold: #d0a8f0;--honey: #e0c8f8;--october-sunset: #8c5fc0;--orange: #b48ae0;--pumpkin-pie: #7a4ea8}:root[data-theme=pharos]{--butter: #dff5fd;--daybreak: #7edcf7;--harvestgold: #1ebef0;--honey: #7fd9f7;--october-sunset: #164989;--orange: #1878b8;--pumpkin-pie: #0f3566;--face-label: "Chakra Petch", "Arial Narrow", sans-serif;--face-data: "JetBrains Mono", "MesloLGS NF", monospace;--radius-top: 0;--radius-bottom: 0;--radius-content-top: 0;--radius-content-bottom: 0;--pharos-lit: rgba(255, 255, 255, .55);--pharos-cut: 9px;--pharos-cut-small: 5px;--pharos-inset: 18px;--pharos-flank: 26px}[data-theme=pharos] body{font-family:var(--face-label)}[data-theme=pharos] .listing-row,[data-theme=pharos] .roster-filter-input{font-family:var(--face-data)}[data-theme=pharos] .left-frame-top .panel-1,[data-theme=pharos] .left-frame-top .panel-2,[data-theme=pharos] .left-frame button[class^=panel-],[data-theme=pharos] .left-frame .panel-spacer,[data-theme=pharos] .lcars-bar-horizontal,[data-theme=pharos] .lcars-bar-end,[data-theme=pharos] .mode-strip,[data-theme=pharos] .mode-fill{box-shadow:inset 0 3px 0 var(--pharos-lit)}[data-theme=pharos] .left-frame button[class^=panel-]{clip-path:polygon(var(--pharos-cut) 0,100% 0,100% 100%,0 100%,0 var(--pharos-cut));transition:margin-left .18s ease-out,width .18s ease-out}[data-theme=pharos] .roster-cap,[data-theme=pharos] .roster-cap:first-of-type,[data-theme=pharos] .roster-cap:last-of-type,[data-theme=pharos] .strategy-pill,[data-theme=pharos] .listing-action,[data-theme=pharos] .pacs-capsule,[data-theme=pharos] .ask-capsule,[data-theme=pharos] .theme-pill,[data-theme=pharos] .audio-pill,[data-theme=pharos] .telemetry-label,[data-theme=pharos] .lamp-online,[data-theme=pharos] .lamp-host,[data-theme=pharos] .lamp-offline{border-radius:0;clip-path:polygon(0 0,calc(100% - var(--pharos-cut-small)) 0,100% var(--pharos-cut-small),100% 100%,0 100%)}[data-theme=pharos] .pacs-capsule,[data-theme=pharos] .listing-action,[data-theme=pharos] .strategy-pill{white-space:nowrap;letter-spacing:.04em}[data-theme=pharos] body[data-focus=files] #gutter-files,[data-theme=pharos] body[data-focus=dag] #gutter-runs,[data-theme=pharos] body[data-focus=pacs] #gutter-tools{margin-left:var(--pharos-inset);width:calc(var(--lfw) - var(--pharos-inset))}[data-theme=pharos] .left-frame-top{position:relative;overflow:hidden}[data-theme=pharos] .left-frame-top:after{content:"";position:absolute;left:0;bottom:0;width:78px;height:78px;pointer-events:none;background:radial-gradient(circle at 0 100%,var(--butter) 0 11px,transparent 11.5px),repeating-radial-gradient(circle at 0 100%,var(--butter) 0 2px,transparent 2px 9px);clip-path:circle(78px at 0 100%);animation:pharos-lamp 5s ease-in-out infinite}@keyframes pharos-lamp{0%,to{opacity:.55}50%{opacity:1}}[data-theme=pharos] .wrap-all{border-left:3px solid var(--october-sunset);border-radius:var(--pharos-flank) 0 0 var(--pharos-flank)}[data-theme=pharos] .left-frame-top{border-top-left-radius:calc(var(--pharos-flank) - 3px)}[data-theme=pharos] .left-frame>div:last-child .panel-7{clip-path:none;border-bottom-left-radius:calc(var(--pharos-flank) - 3px)}[data-theme=pharos] .lcars-bar-horizontal{border-radius:0}[data-theme=pharos] .lcars-bar-end{border-radius:0;clip-path:polygon(0 0,calc(100% - 12px) 0,100% 100%,0 100%)}[data-theme=pharos] .mode-elbow,[data-theme=pharos] .mode-elbow:after{border-top-right-radius:0}[data-theme=pharos] .mode-strip,[data-theme=pharos] .mode-fill{border-radius:0}[data-theme=pharos] .listing-indicated>span:first-child,[data-theme=pharos] .listing-indicated>span:nth-child(2){text-shadow:none}[data-theme=pharos] .listing-action:hover:not(:disabled),[data-theme=pharos] .audio-pill:hover,[data-theme=pharos] .theme-pill:hover,[data-theme=pharos] .pacs-capsule:hover{box-shadow:none;filter:brightness(1.15)}@media(prefers-reduced-motion:reduce){[data-theme=pharos] .left-frame-top:after{animation:none}[data-theme=pharos] .left-frame button[class^=panel-]{transition:none}}#drawer{display:flex;flex-direction:column;flex:none;height:28vh;min-height:0;overflow:hidden}#drawer.drawer-closed{height:0}.lcars-terminal-header-bar{flex:none;display:flex;height:28px;align-items:flex-end}.lcars-bar-horizontal{flex:1;height:28px;background-color:var(--harvestgold);display:flex;align-items:center;justify-content:space-between;padding-inline:1rem;color:#000;font-weight:700;text-transform:uppercase;font-family:var(--face-label);font-size:.8rem;letter-spacing:1px}.lcars-terminal-status{font-size:.6rem;opacity:.8;margin-left:1rem;font-family:Share Tech Mono,monospace;text-transform:none}.lcars-bar-end{width:60px;height:28px;background-color:var(--harvestgold);border-radius:0 14px 14px 0;margin-left:.5rem}#terminal{flex:1;min-height:0;display:flex}.argus-screen{flex:1;min-width:0;background-color:#000;padding:.8rem 1rem;display:flex;flex-direction:column;font-family:Share Tech Mono,MesloLGS NF,monospace;color:var(--daybreak)}.argus-output{flex:1;overflow-y:auto;margin-bottom:.5rem;font-size:.75rem;line-height:1.35;letter-spacing:1px;white-space:pre-wrap;word-break:break-word}.argus-line{min-height:1em}.argus-echo .user-input,.user-input{color:var(--butter);text-shadow:none}.argus-echo .prompt-glyph{color:var(--sky, #9cf)}.argus-result.error{color:#f24444}.argus-banner-line{opacity:.9}.dim{opacity:.45}.argus-progress{flex:none;font-size:.7rem;letter-spacing:0;text-shadow:none;line-height:1.6}.argus-progress-row{display:flex;align-items:center;gap:.5rem;color:var(--butter);opacity:.85}.argus-progress-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.argus-progress-counts{opacity:.6}.argus-progress-elapsed{flex:none;opacity:.5;font-variant-numeric:tabular-nums}.argus-progress-spin{flex:none;width:.6rem;height:.6rem;border:2px solid var(--pumpkin-pie);border-top-color:transparent;border-radius:50%;animation:argus-progress-turn .8s linear infinite}.argus-progress-bar{flex:2;height:.4rem;background:#ffffff1f;border-radius:.2rem;overflow:hidden}.argus-progress-fill{display:block;height:100%;width:0;background:var(--pumpkin-pie);transition:width .12s linear}@keyframes argus-progress-turn{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.argus-progress-spin{animation:none}.argus-progress-fill{transition:none}}.argus-prompt-bar{flex:none;font-size:.7rem;letter-spacing:0;text-shadow:none;line-height:1.5;white-space:pre;overflow-x:hidden}.argus-input-line{flex:none;display:flex;align-items:center;border-top:1px solid var(--pumpkin-pie);padding-top:.4rem;margin-top:.2rem;font-weight:700}.argus-input-glyph{color:#00d787;font-size:.8rem}.argus-input-line input{background:transparent;border:none;color:var(--butter);font-family:inherit;font-size:.75rem;letter-spacing:1px;flex:1;outline:none;margin-left:.6rem}#drawer-strip{flex:none;height:4px;margin:3px 0;background:var(--pumpkin-pie);border-radius:0;cursor:row-resize}#drawer-strip:hover,#drawer-strip:active{animation:none;background:var(--harvestgold);box-shadow:0 0 8px color-mix(in srgb,var(--harvestgold) 60%,transparent)}#drawer-toggle{cursor:pointer}@keyframes beckon{0%,to{filter:brightness(1)}50%{filter:brightness(1.2);box-shadow:0 0 8px #ff770073}}@keyframes beckon-mars{0%,to{filter:brightness(1);box-shadow:none}50%{filter:brightness(1.3);box-shadow:0 0 10px #f229}}.attach-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#000000e0;z-index:100}.attach-hidden{display:none}.attach-card{width:20rem;border:2px solid var(--orange);border-radius:1.2rem 0;padding:1.2rem 1.4rem;background:#000}.attach-card h1{margin:0 0 .3rem;color:var(--orange);letter-spacing:.2em}.attach-card p{margin:0 0 .7rem;font-size:.7rem;color:var(--honey)}.attach-card input{width:100%;background:#111;color:var(--butter);border:1px solid var(--harvestgold);border-radius:4px;padding:.4rem .5rem;font-family:inherit;font-size:.75rem;letter-spacing:.1em;margin-bottom:.6rem;box-sizing:border-box}.attach-card button{background:var(--orange);color:#000;border:none;border-radius:.65rem;padding:.4rem 1.1rem;font-family:inherit;font-size:.75rem;font-weight:700;letter-spacing:.1em;cursor:pointer}.attach-card button:hover{filter:brightness(1.15)}.attach-error{color:var(--state-error);min-height:1.2em;margin-top:.5rem}.domain-inert{opacity:.5}.pacs-study-progress{display:block;min-width:0}.pacs-fold{color:var(--harvestgold)}.pacs-fold:before{content:"▸"}.listing-group.listing-open>.listing-row>.pacs-fold:before{content:"▾"}.pacs-fold.pacs-fold-none:before{content:""}.pacs-capsule-study{background-color:var(--october-sunset);color:#000}.pacs-capsule-study:hover{box-shadow:0 0 8px var(--october-sunset)}.pacs-bar-full{min-width:2rem;height:.45rem;border-radius:.25rem;background:var(--state-done)}.pacs-waiting{display:flex;align-items:center;gap:.7rem;padding:.6rem .2rem}.pacs-waiting .pacs-bar{flex:0 0 12rem}.pacs-waiting-note{color:var(--harvestgold);font-family:var(--face-label);letter-spacing:.12em;font-size:.8rem}.pacs-bar{position:relative;flex:1 1 auto;min-width:2rem;height:.45rem;border-radius:.25rem;background:#ff77002e;overflow:hidden}.pacs-bar-fill{display:block;width:0;height:100%;border-radius:.25rem;background:var(--state-running);transition:width .25s linear}.pacs-bar-pacing .pacs-bar-fill{width:35%;animation:pacs-pace 1.4s ease-in-out infinite}@keyframes pacs-pace{0%{transform:translate(-100%)}to{transform:translate(300%)}}#lang-palette{position:fixed;top:0;left:50%;transform:translate(-50%);z-index:1200;display:flex;align-items:stretch;width:min(52rem,70vw);height:30px;background:#000}#lang-palette[hidden]{display:none}.lang-glyph{display:flex;align-items:center;padding:0 .9rem 0 1.1rem;background:var(--harvestgold);color:#000;font-family:var(--face-label);font-size:.8rem;letter-spacing:.12em;border-radius:0 0 0 14px}#lang-input{flex:1;background:transparent;border:none;border-bottom:2px solid var(--pumpkin-pie);outline:none;padding:0 .7rem;color:var(--butter);font-family:Share Tech Mono,monospace;font-size:.78rem;letter-spacing:.04em}#lang-palette:after{content:"";width:34px;background:var(--harvestgold);border-radius:0 0 14px}#lang-result{position:absolute;top:100%;left:0;right:0;padding:.25rem .9rem;color:var(--honey);font-family:Share Tech Mono,monospace;font-size:.72rem;white-space:pre-wrap;background:#000000eb;border-bottom:1px solid color-mix(in srgb,var(--orange) 55%,transparent)}#lang-result:empty{display:none}.left-frame .panel-lang{display:flex;justify-content:flex-end;height:auto;flex:1.2 1 0;min-height:2.4rem;padding:var(--left-frame-padding);background-color:var(--harvestgold);border-bottom:var(--panel-border)}.left-frame .panel-console{display:flex;justify-content:flex-end;height:auto;flex:2 1 0;min-height:3rem;padding:var(--left-frame-padding);background-color:var(--october-sunset);border-bottom:var(--panel-border)}.left-frame .panel-lang.lang-live{background-color:var(--butter)}#drawer~.bar-panel{flex-wrap:nowrap;cursor:pointer}#drawer~.bar-panel:hover .bar-10{filter:brightness(1.2)}#drawer.drawer-closed~.bar-panel .bar-10{animation:lid-beckon 3.5s ease-in-out infinite}@keyframes lid-beckon{0%,to{filter:brightness(1)}50%{filter:brightness(1.35)}}.feedlist-size,.feedlist-time{text-align:right;font-family:Share Tech Mono,monospace}.dag-roster .roster-cap[data-key=sizeBytes],.dag-roster .roster-cap[data-key=wallSeconds]{text-align:right}.files-body .diagram-strategy,.files-body .diagram-projection,.files-body .diagram-pulse,.files-body.diagram-shown .files-view,.files-body.diagram-shown .files-filter,.files-body.diagram-shown .files-home,.files-body.diagram-shown .files-back,.files-body.diagram-shown .files-mkdir,.files-body.diagram-shown .files-upload,.files-body.diagram-shown .files-select,.files-body.diagram-shown .files-selection-bar{display:none}.files-selection-bar{flex-wrap:wrap;margin-top:.35rem;padding:0 .2rem}.files-row-selected .files-name,.files-row-selected .files-glyph,.files-row-selected .files-type,.files-row-selected .files-size{background:color-mix(in srgb,var(--butter) 22%,transparent);color:var(--butter)}.files-body.diagram-shown .diagram-strategy,.files-body.diagram-shown .diagram-projection,.files-body.diagram-shown .diagram-pulse{display:block}.mode-frame .strategy-pill.diagram-pulse.pulse-running{background-color:var(--october-sunset);color:#000}.dag-facts-immersed{max-width:72%;max-height:70%;overflow-y:auto;border-left-color:var(--october-sunset)}.pacs-patient{margin-bottom:.9rem}.pacs-patient-row{padding-block:4px;color:var(--harvestgold);border-bottom:2px solid var(--harvestgold);cursor:pointer}.pacs-patient-row:hover{background:#ffcc661f}.pacs-patient-row>span{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.pacs-patient-name{color:var(--butter)}.pacs-patient-mrn{color:var(--harvestgold)}.pacs-patient-count,.pacs-patient-server,.pacs-patient-answered{color:var(--pumpkin-pie)}.pacs-unasked,.pacs-patient-unasked .pacs-patient-count{color:var(--mars)}.pacs-patient-progress{display:block;min-width:0}#pacs-results .listing-level[data-depth="1"]{box-shadow:inset 2px 0 #ffcc6659}#pacs-results .listing-level[data-depth="1"] .roster-caps{margin:.35rem 0 .3rem}#pacs-form .pacs-form-field{display:flex;flex-direction:column;gap:.15rem;min-width:0;color:var(--honey);font-family:var(--face-label);font-size:.66rem;letter-spacing:.12em}.pacs-server-cell{min-width:0;width:100%;background:#000;border:1px solid var(--pumpkin-pie);border-radius:.4rem;color:var(--butter);font-family:Share Tech Mono,monospace;font-size:.8rem;padding:.15rem .5rem;text-align:left;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer}.pacs-server-cell:hover,.pacs-server-open{border-color:var(--harvestgold);color:var(--harvestgold)}.pacs-server-many{color:var(--october-sunset);border-color:var(--october-sunset)}.pacs-server-strip{display:flex;flex-wrap:wrap;gap:.3rem;padding:.35rem var(--roster-pad) .5rem;margin-bottom:.4rem;border-bottom:2px solid var(--pumpkin-pie)}.pacs-server-segment{background:#000;border:1px solid var(--pumpkin-pie);border-radius:.9rem;color:var(--pumpkin-pie);font-family:var(--face-label);font-size:.7rem;letter-spacing:.1em;padding:.1rem .7rem;cursor:pointer}.pacs-server-segment:hover{color:var(--harvestgold);border-color:var(--harvestgold)}.pacs-server-chosen{background:var(--harvestgold);border-color:var(--harvestgold);color:#000}.argus-ask{color:var(--harvestgold)}.ask-glyph{color:var(--butter);margin-right:.35rem}.ask-answer,.argus-ask-answered .ask-glyph{color:var(--pumpkin-pie)}.ask-capsule{background:var(--harvestgold);border:none;border-radius:.9rem;color:#000;font-family:var(--face-label);font-size:.7rem;letter-spacing:.1em;padding:.1rem .9rem;cursor:pointer}.ask-capsule-no{background:var(--october-sunset)}.ask-capsule:hover{filter:brightness(1.3)}.errand-bar{display:flex;align-items:center;gap:.6rem;padding:.35rem .6rem;margin-bottom:.3rem;border-bottom:2px solid var(--october-sunset);flex:none}.errand-caption{color:var(--butter);font-family:var(--face-label);font-size:.7rem;letter-spacing:.1em;white-space:nowrap;align-self:center}.errand-path{flex:1 1 14em;min-width:0;background:#000;border:1px solid var(--pumpkin-pie);border-radius:.4rem;color:var(--daybreak);font-family:Share Tech Mono,monospace;font-size:.75rem;padding:.1rem .5rem;outline:none}.errand-path:focus{border-color:var(--harvestgold)}.errand-mkdir{background-color:var(--pumpkin-pie)}.errand-commit{background-color:var(--october-sunset)}.pacs-wrote{color:var(--pumpkin-pie);font-family:var(--face-label);font-size:.68rem;letter-spacing:.1em;align-self:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.pane-image{display:flex;flex-direction:column;min-height:0}.image-body{position:relative;flex:1 1 0;min-height:0;overflow:hidden}.pane-image[data-modality=MR] .image-body{--harvestgold: var(--daybreak)}.pane-image[data-modality=CT] .image-body{--harvestgold: var(--honey)}.pane-image[data-modality=PT] .image-body{--harvestgold: var(--tomato, #f77)}.pane-image[data-modality=NIFTI] .image-body{--harvestgold: var(--daybreak)}.image-field{position:absolute;top:calc(var(--frame-top) + var(--rule-h));left:0;right:var(--spine-w);bottom:0;background:#000;outline:none;transition:right .22s ease-out}.image-working{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:.5rem;min-width:14rem;padding:1rem 1.4rem;background:#000000b8;border-radius:.4rem;font-family:var(--face-label);letter-spacing:.12em;color:var(--harvestgold);font-size:.75rem;pointer-events:none;z-index:3}.image-working-track{width:100%;height:.35rem;border-radius:.2rem;background:color-mix(in srgb,var(--harvestgold) 22%,transparent);overflow:hidden}.image-working-fill{display:block;height:100%;width:0;border-radius:.2rem;background:var(--harvestgold);transition:width .12s linear}.image-working-fill.image-working-pacing{width:35%;animation:image-pacing 1.1s ease-in-out infinite}@keyframes image-pacing{0%{transform:translate(-100%)}to{transform:translate(285%)}}.image-working-count{font-size:.7rem;color:var(--honey)}.image-overlay-note{position:absolute;left:.8rem;top:.6rem;display:flex;flex-direction:column;gap:.05rem;font-family:var(--face-label);font-size:.62rem;letter-spacing:.09em;line-height:1.35;color:var(--honey);text-shadow:0 0 4px #000,0 0 2px #000;pointer-events:none;z-index:2}.pane-image.image-field-focused .image-field{box-shadow:inset 0 0 0 2px var(--harvestgold)}.image-viewport{position:absolute;inset:0}.image-mpr,.image-render{position:absolute;inset:0;display:grid;gap:2px}.image-mpr{grid-template-columns:1fr 1fr 1fr}.image-mpr .image-viewport,.image-render .image-viewport{position:relative;inset:auto;min-width:0;min-height:0}.image-canvas{display:block;width:100%!important;height:100%!important}.mode-frame .image-focus{text-align:right;padding:0 .6rem 0 .4rem;height:1.6rem;line-height:1.6rem;background-color:var(--harvestgold);color:#000}.pane-tags{display:flex;flex-direction:column;min-height:0}.tags-body{--roster-gap: 0px;--roster-pad: 0px;position:relative;flex:1 1 0;min-height:0;display:flex;flex-direction:column;padding-right:var(--spine-w)}.pane-tags[data-modality=MR] .tags-body{--harvestgold: var(--daybreak)}.pane-tags[data-modality=CT] .tags-body{--harvestgold: var(--honey)}.pane-tags[data-modality=PT] .tags-body{--harvestgold: var(--tomato, #f77)}.tags-panel{flex:1 1 0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.tags-panel>.roster-order{position:static;z-index:auto;flex:none}.tags-panel>.listing-field{padding-right:.5rem}.tags-fold{color:var(--harvestgold)}.tags-fold:before{content:"▸"}.listing-group.listing-open>.listing-row>.tags-fold:before{content:"▾"}.tags-fold.tags-fold-none:before{content:""}.tags-group-row{font-weight:700}.tags-tag,.tags-vr{opacity:.7;font-family:monospace}.tags-name,.tags-value-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.tags-decoded{opacity:.6}.tags-redacted .tags-phi .tags-value{letter-spacing:.15em;opacity:.6}.tags-note{padding:1rem;opacity:.7}.files-card-thumb.thumb-series{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.3rem}.thumb-series-mark{font-weight:700;letter-spacing:.1em;color:var(--harvestgold)}.thumb-series-text{font-size:.8em;opacity:.8;text-align:center;padding:0 .4rem}@keyframes lcars-breath{0%{filter:brightness(.82)}to{filter:brightness(1.28)}}#drawer-toggle,#header-restore,.mode-strip,.mode-fill{animation:lcars-breath 2.2s ease-in-out infinite alternate}@keyframes lcars-breath-spine{0%{filter:brightness(.45)}to{filter:brightness(1.6)}}.mode-strip{animation:lcars-breath-spine 1.6s ease-in-out infinite alternate}#header-restore{animation-duration:2s}#drawer-toggle:hover,#header-restore:hover,.mode-strip:hover,.mode-fill:hover{animation:none}@media(prefers-reduced-motion:reduce){#drawer-toggle,#header-restore,.mode-strip,.mode-fill,.image-working-fill.image-working-pacing{animation:none!important}}[data-theme=pharos] .left-frame-top,[data-theme=pharos] button.panel-2,[data-theme=pharos] button.panel-3{border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-right-radius:0}[data-theme=pharos] button.panel-3{border-top-left-radius:0}
@@ -1 +0,0 @@
1
- import{t as T,E as R,e as M,B as We,v as Ae,a as ne,b as N,s as ke,c as Ne,f as oe,d7 as ue,cK as Fe,c8 as P,aK as z,d8 as fe,aJ as Y,ag as se,V as G,d9 as ge,da as D,db as Ue,dc as Ge,dd as Be,bW as He,at as O,aO as ze,bk as B,de as me,bY as je,df as he,bv as $e,cc as qe,dg as ie,dh as b,di as H,dj as J,dk as L,dl as re,dm as Je,dn as Ke,dp as Xe,bM as pe,am as Q,b8 as ee,dq as Ze,dr as Ye,ai as Qe,ar as we,bo as te,i as Ie,L as Ve,bU as Se,ds as ve,bE as X,bQ as et,bc as Ee,bD as F,dt as ae,du as be,b_ as ye,dv as tt,d2 as nt,K as ot,dw as st,dx as it,cf as rt,dy as at,dz as ct,bh as lt,dA as dt,dB as ut,dC as ft,dD as gt,br as mt,dE as ht,dF as pt,dG as wt,dH as It,dI as Vt,dJ as St,dK as vt,dL as Et,bi as bt,dM as yt,av as Rt,dN as Ct,dO as Pt,H as Tt,b7 as xt,bm as Mt,dP as Dt,dQ as Ot,J as _t,dR as Lt,bq as Wt,dS as At,dT as kt,bs as Nt,dU as Ft,bu as Ut,dV as Gt,c0 as Bt,dW as Ht,dX as zt,bP as jt,bl as $t,dY as qt,bj as Jt,bp as Kt,dZ as Xt,d_ as Zt,d$ as Yt,e0 as Qt,e1 as en,e2 as tn,e3 as nn,e4 as on,bn as sn,cb as rn,e5 as an,c4 as cn,e6 as ln,c1 as dn,bx as un,bt as fn,d4 as gn,e7 as mn,e8 as hn,bS as pn,e9 as wn,M as In,ea as Vn,eb as Sn,bA as vn,ec as En,bN as bn,bT as yn,ed as Rn,ee as Cn,bX as Pn,ef as Tn,eg as xn,eh as Mn,ca as Dn}from"./Settings-B_WPNkCE.js";function On(e){return!!(e&&typeof e.setVolumes=="function"&&typeof e.addVolumes=="function")}async function _n(e,t,n,o=!1,i=!1){const s=n.map(r=>{const a=e.getViewport(r);if(!a)throw new Error(`Viewport with Id ${r} does not exist`);if(!On(a))throw new Error("setVolumesForViewports only supports viewports that implement setVolumes");return a});await Promise.all(s.map(r=>r.setVolumes(t,o,i)))}function Ln(e,t,n=0){const o=e.getOpenGLRenderWindow?.()?.getCanvas?.();o&&(o.addEventListener("webglcontextlost",()=>{console.warn(`CornerstoneRender: WebGL context lost (renderingEngine=${t}, context=${n})`),T(M,R.WEBGL_CONTEXT_LOST,{renderingEngineId:t,contextIndex:n})}),o.addEventListener("webglcontextrestored",()=>{T(M,R.WEBGL_CONTEXT_RESTORED,{renderingEngineId:t,contextIndex:n})}))}class Wn extends We{constructor(t){super(t),this._renderFlaggedViewports=()=>{this._throwIfDestroyed(),this.offscreenMultiRenderWindow&&this.performVtkDrawCall();const n=this._getViewportsAsArray(),o=[];for(let i=0;i<n.length;i++){const s=n[i];if(this._needsRender.has(s.id)){const r=this.renderViewportUsingCustomOrVtkPipeline(s);if(o.push(r),s.setRendered(),this._needsRender.delete(s.id),this._needsRender.size===0)break}}this._animationFrameSet=!1,this._animationFrameHandle=null,o.forEach(i=>{i?.element&&T(i.element,R.IMAGE_RENDERED,i)})},this.useCPURendering||this.ensureOffscreenResources()}ensureOffscreenResources(){this.offscreenMultiRenderWindow||(this.offscreenMultiRenderWindow=Ae.newInstance(),this.offScreenCanvasContainer=document.createElement("div"),this.offscreenMultiRenderWindow.setContainer(this.offScreenCanvasContainer),Ln(this.offscreenMultiRenderWindow,this.id))}enableVTKjsDrivenViewport(t){this.ensureOffscreenResources();const o=this._getViewportsAsArray().filter(l=>ne(l.type)===!1),i=o.map(l=>l.canvas),s=N(t.element);i.push(s);const{offScreenCanvasWidth:r,offScreenCanvasHeight:a}=this._resizeOffScreenCanvas(i),c=this._resize(o,r,a),d={...t,canvas:s};this.addVtkjsDrivenViewport(d,{offScreenCanvasWidth:r,offScreenCanvasHeight:a,xOffset:c})}addVtkjsDrivenViewport(t,n){this.ensureOffscreenResources();const{element:o,canvas:i,viewportId:s,type:r,defaultOptions:a}=t;o.tabIndex=-1,ke(o);const{offScreenCanvasWidth:c,offScreenCanvasHeight:d,xOffset:l}=n,{sxStartDisplayCoords:u,syStartDisplayCoords:f,sxEndDisplayCoords:m,syEndDisplayCoords:w,sx:V,sy:h,sWidth:g,sHeight:v}=this._getViewportCoordsOnOffScreenCanvas(t,c,d,l);this.offscreenMultiRenderWindow.addRenderer({viewport:[u,f,m,w],id:s,background:a.background?a.background:[0,0,0]});const S={id:s,element:o,renderingEngineId:this.id,type:r,canvas:i,sx:V,sy:h,sWidth:g,sHeight:v,defaultOptions:a||{}},E=Ne(t);if(!E)throw new Error(`Viewport Type ${r} is not supported`);const p=new E(S);p.requestedType=t.requestedType??r,this._viewports.set(s,p);const y={element:o,viewportId:s,renderingEngineId:this.id};p.suppressEvents||T(M,R.ELEMENT_ENABLED,y)}setVtkjsDrivenViewports(t){if(t.length){const n=t.map(r=>N(r.element));n.forEach(r=>{const a=window.devicePixelRatio||1,c=r.getBoundingClientRect();r.width=c.width*a,r.height=c.height*a});const{offScreenCanvasWidth:o,offScreenCanvasHeight:i}=this._resizeOffScreenCanvas(n);let s=0;for(let r=0;r<t.length;r++){const a=t[r],c=n[r],d={...a,canvas:c};this.addVtkjsDrivenViewport(d,{offScreenCanvasWidth:o,offScreenCanvasHeight:i,xOffset:s}),s+=c.width}}}_resizeVTKViewports(t,n=!0,o=!0){const i=t.map(s=>N(s.element));if(i.forEach(s=>{const r=window.devicePixelRatio||1;s.width=s.clientWidth*r,s.height=s.clientHeight*r}),i.length){const{offScreenCanvasWidth:s,offScreenCanvasHeight:r}=this._resizeOffScreenCanvas(i);this._resize(t,s,r)}t.forEach(s=>{const r=s.getCamera(),a=s.getRotation(),{flipHorizontal:c}=r,d=s;d.resetViewStateForResize?d.resetViewStateForResize():d.resetCameraForResize();const l=s.getDisplayArea();n&&(l?(c&&s.setCamera({flipHorizontal:c}),a&&s.setViewPresentation({rotation:a})):s.setCamera(r))}),o&&this.render()}performVtkDrawCall(){const{offscreenMultiRenderWindow:t}=this,n=t.getRenderWindow(),o=t.getRenderers();if(o.length){for(let i=0;i<o.length;i++){const{renderer:s,id:r}=o[i],a=r.split("::")[0];this._needsRender.has(a)?s.setDraw(!0):s.setDraw(!1)}n.render();for(let i=0;i<o.length;i++)o[i].renderer.setDraw(!1)}}renderViewportUsingCustomOrVtkPipeline(t){let n;if(t.sWidth<oe||t.sHeight<oe){console.warn("Viewport is too small",t.sWidth,t.sHeight);return}if(ne(t.type)===!0)n=t.customRenderViewportToCanvas();else{if(!this.offscreenMultiRenderWindow)throw new Error("GPU not available, and using a viewport with no custom render pipeline.");const{offscreenMultiRenderWindow:o}=this,r=o.getOpenGLRenderWindow().get3DContext().canvas;n=this._renderViewportFromVtkCanvasToOnscreenCanvas(t,r)}return n}_renderViewportFromVtkCanvasToOnscreenCanvas(t,n){const{element:o,canvas:i,sx:s,sy:r,sWidth:a,sHeight:c,id:d,renderingEngineId:l,suppressEvents:u}=t,{width:f,height:m}=i;return i.getContext("2d").drawImage(n,s,r,a,c,0,0,f,m),{element:o,suppressEvents:u,viewportId:d,renderingEngineId:l,viewportStatus:t.viewportStatus}}_resizeOffScreenCanvas(t){const{offScreenCanvasContainer:n,offscreenMultiRenderWindow:o}=this,i=Math.max(...t.map(r=>r.height));let s=0;return t.forEach(r=>{s+=r.width}),n.width=s,n.height=i,o.resize(),{offScreenCanvasWidth:s,offScreenCanvasHeight:i}}_resize(t,n,o){let i=0;for(let s=0;s<t.length;s++){const r=t[s],{sxStartDisplayCoords:a,syStartDisplayCoords:c,sxEndDisplayCoords:d,syEndDisplayCoords:l,sx:u,sy:f,sWidth:m,sHeight:w}=this._getViewportCoordsOnOffScreenCanvas(r,n,o,i);i+=r.canvas.width,r.sx=u,r.sy=f,r.sWidth=m,r.sHeight=w,this.offscreenMultiRenderWindow.getRenderer(r.id).setViewport(a,c,d,l)}return i}_getViewportCoordsOnOffScreenCanvas(t,n,o,i){const{canvas:s}=t,{width:r,height:a}=s,c=i,d=0,l=c/n,u=d+(o-a)/o,f=r/n,m=a/o;return{sxStartDisplayCoords:l,syStartDisplayCoords:u,sxEndDisplayCoords:l+f,syEndDisplayCoords:u+m,sx:c,sy:d,sWidth:r,sHeight:a}}}function ko(e){return!!(e&&typeof e.canvasToWorld=="function"&&typeof e.worldToCanvas=="function")}function No(e){return!!(e&&typeof e.getZoom=="function"&&typeof e.setZoom=="function")}function Fo(e){return!!(e&&typeof e.getPan=="function"&&typeof e.setPan=="function")}function An(e){return!!(e&&typeof e.getFrameOfReferenceUID=="function")}class kn{constructor(){this._targetsEventListeners=new Map}addEventListener(t,n,o,i){let s=this._targetsEventListeners.get(t);s||(s=new ue(t),this._targetsEventListeners.set(t,s)),s.addEventListener(n,o,i)}removeEventListener(t,n,o,i){const s=this._targetsEventListeners.get(t);s&&(s.removeEventListener(n,o,i),s.isEmpty&&this._targetsEventListeners.delete(t))}reset(){Array.from(this._targetsEventListeners.entries()).forEach(([t,n])=>{n.reset(),this._targetsEventListeners.delete(t)})}}const Nn=Object.freeze(Object.defineProperty({__proto__:null,MultiTargetEventListenerManager:kn,TargetEventListeners:ue},Symbol.toStringTag,{value:"Module"}));function Fn(e,t){const n=e.getSize();for(let o=0;o<n;o++){const i=[];e.getNodeValue(o,i),i[1]=i[1]*t,i[2]=i[2]*t,i[3]=i[3]*t,e.setNodeValue(o,i)}}const Un=Symbol("LastRuntimeId"),Gn={},Bn=4294967295,Hn="-";function zn(e,t,n){return jn(e!==null&&typeof e=="object"?e:Gn,Un,(typeof n=="number"&&n>0?n:Bn)>>>0).join(typeof t=="string"?t:Hn)}function jn(e,t,n){let o=e[t];o instanceof Array||(o=[0],Object.defineProperty(e,t,{value:o}));for(let i=!0,s=0;i&&s<o.length;++s){let r=o[s]|0;r<n?(i=!1,r=r+1):(r=0,s+1===o.length&&o.push(0)),o[s]=r}return o}const $n=Fe;function qn(e,t,n=1e-5){return Math.abs(e[0]+t[0])<n&&Math.abs(e[1]+t[1])<n&&Math.abs(e[2]+t[2])<n}function Jn(e,t){return!(e[0]<0||e[0]>=t[0]||e[1]<0||e[1]>=t[1]||e[2]<0||e[2]>=t[2])}function Kn(e,t){return!(e[0]<-P||e[0]>=t[0]+P||e[1]<-P||e[1]>=t[1]+P||e[2]<-P||e[2]>=t[2]+P)}function Xn(e,t){let n;t?n=[Y(t)]:n=z();const o=[];return n.forEach(i=>{const s=e.getActors(),r=i.getViewports().filter(fe);for(const a of r){const c=a.getActors();if(c.length!==s.length)continue;s.every(({uid:l})=>c.find(u=>l===u.uid))&&o.push(a)}}),o}function Re(e,t,n=void 0,o="_thumbnails",i={displayArea:{imageArea:[1,1]}}){if(!e||!(e instanceof HTMLCanvasElement))throw new Error("canvas element is required");const s=!t.imageId,r=!s&&t,a=s&&t,d=`renderGPUViewport-${r.imageId||a.volumeId}`,l=document.createElement("div"),u=window.devicePixelRatio||1;i.displayArea||(i.displayArea={imageArea:[1,1]});const f=e.width,m=e.height;l.style.width=`${f/u+se}px`,l.style.height=`${m/u+se}px`,l.style.visibility="hidden",l.style.position="absolute",document.body.appendChild(l);const w=d.split(":").join("-");l.setAttribute("viewport-id-for-remove",w);const V=N(l),h=Y(o)||new Wn(o);let g=h.getViewport(d);if(!g){const v={viewportId:d,type:s?G.ORTHOGRAPHIC:G.STACK,element:l,defaultOptions:{...i,suppressEvents:!0}};h.enableElement(v),g=h.getViewport(d)}return new Promise(v=>{let S=!1,{viewReference:E}=i;const p=y=>{if(S)return;if(E){const A=E;E=null,g.setViewReference(A),g.render();return}e.getContext("2d").drawImage(V,0,0,V.width,V.height,0,0,e.width,e.height);const I=g.canvasToWorld([0,0]),C=g.canvasToWorld([V.width/u,0]),$=g.canvasToWorld([0,V.height/u]),_=D([0,0,0],g.canvasToWorld([1/u,0]),I),W=D([0,0,0],g.canvasToWorld([0,1/u]),I),q=1;S=!0,l.removeEventListener(R.IMAGE_RENDERED,p),setTimeout(()=>{h.disableElement(d),document.querySelectorAll(`[viewport-id-for-remove="${w}"]`).forEach(Le=>{Le.remove()})},0),v({origin:I,bottomLeft:$,topRight:C,thicknessMm:q,rightVector:_,downVector:W})};l.addEventListener(R.IMAGE_RENDERED,p),s?g.setVolumes([a],!1,!0):g.renderImageObject(t),g.resetCamera(),n==="PT"&&!ge(r)&&g.setProperties({voiRange:{lower:r.minPixelValue,upper:r.maxPixelValue}}),g.render()})}function Ce(e,t,n,o,i){if(t.volumeId)throw new Error("Unsupported volume rendering for CPU");const r=t,a=Ue(e,r,n),c={canvas:e,viewport:a,image:r,renderingTools:{}};c.transform=Ge(c);const d=!0;return new Promise((l,u)=>{Be(c,d),l(null)})}function Zn(e){const{canvas:t,imageId:n,viewReference:o,requestType:i=He.Thumbnail,priority:s=-5,renderingEngineId:r="_thumbnails",useCPURendering:a=!1,thumbnail:c=!1,imageAspect:d=!1,viewportOptions:l}=e,u=o?.volumeId,f=u&&!n,m=o&&l?{...l,viewReference:o}:l,w=a?Ce:Re;return new Promise((V,h)=>{function g(p,y){const{modality:x}=B(me.GENERAL_SERIES,y)||{},I=!f&&p,C=f&&p;I&&(I.isPreScaled=I.isPreScaled||I.preScale?.scaled),c&&(t.height=256,t.width=256),d&&I&&(t.width=I&&t.height*I.width/I.height),t.style.width=`${t.width/devicePixelRatio}px`,t.style.height=`${t.height/devicePixelRatio}px`,C&&a&&h(new Error("CPU rendering of volume not supported")),w(t,p,x,r,m).then(V)}function v(p,y){console.error(p,y),h(p)}function S(p,y,x){return je(p,x).then(I=>{g.call(this,I,p)},I=>{v.call(this,I,p)})}const E={useRGBA:!!a,requestType:i};if(u){const p=O.getVolume(u);p||h(new Error(`Volume id ${u} not found in cache`));const y=p.imageIds[0];g(p,y)}else ze.addRequest(S.bind(null,n,null,E),i,{imageId:n},s)})}function Yn(e){const t=z(),n=[];return t.forEach(o=>{o.getViewports().filter(he).forEach(s=>{s.hasImageURI(e)&&n.push(s)})}),n}function Qn(e,t){const n=eo(e,t);return n?n.index:null}function eo(e,t){const n=t.getImageIds(),o=t.getCurrentImageIdIndex();if(n.length===0)return null;const i=c=>{const d=to(c);if(!d)return null;const l=$e(d.planeNormal,d.imagePositionPatient);return qe(l,e)},s={distance:i(n[o])??1/0,index:o},r=n.slice(o+1);for(let c=0;c<r.length;c++){const d=r[c],l=i(d);if(l!==null)if(l<=s.distance)s.distance=l,s.index=c+o+1;else break}const a=n.slice(0,o);for(let c=a.length-1;c>=0;c--){const d=a[c],l=i(d);if(!(l===null||l===s.distance))if(l<s.distance)s.distance=l,s.index=c;else break}return s.distance===1/0?null:s}function to(e){const t=B(me.IMAGE_PLANE,e);if(!t||!(t.rowCosines instanceof Array&&t.rowCosines.length===3)||!(t.columnCosines instanceof Array&&t.columnCosines.length===3)||!(t.imagePositionPatient instanceof Array&&t.imagePositionPatient.length===3))return null;const{rowCosines:n,columnCosines:o,imagePositionPatient:i}=t,s=ie(b(),...n),r=ie(b(),...o),a=H(b(),s,r);return{rowCosines:n,columnCosines:o,imagePositionPatient:i,planeNormal:a}}function no(e){const{width:t,height:n}=e.getCanvas(),{sliceToIndexMatrix:o,indexToSliceMatrix:i}=e.getSliceViewInfo(),s=J(e,[0,0]),r=J(e,[t-1,0]),a=J(e,[0,n-1]),c=D(b(),r,s),d=D(b(),a,s),l=H(b(),c,d);L(c,c),L(d,d),L(l,l);const u=Math.max(Math.abs(c[0]),Math.abs(c[1]),Math.abs(c[2])),f=Math.max(Math.abs(d[0]),Math.abs(d[1]),Math.abs(d[2]));if(!re(1,u)||!re(1,f))throw new Error("getCurrentVolumeViewportSlice is not available for rotate/oblique viewports");const{voxelManager:m}=e.getImageData(),w=e.getSliceViewInfo(),V=m.getSliceData(w);return{width:w.width,height:w.height,scalarData:V,sliceToIndexMatrix:o,indexToSliceMatrix:i}}const oo=.05;function so(e,t){const n=e.getSliceIndex(),o=t.getSliceIndex(),i=B("imagePlaneModule",n.toString()),s=B("imagePlaneModule",o.toString());if(!i||!s){console.log("Viewport spatial registration requires image plane module");return}const{imageOrientationPatient:r}=s;if(!i.imageOrientationPatient.every((f,m)=>Math.abs(f-r[m])<oo)){console.log("Viewport spatial registration only supported for same orientation (hence translation only) for now",i?.imageOrientationPatient,s?.imageOrientationPatient);return}const c=i.imagePositionPatient,d=s.imagePositionPatient,l=Je(b(),c,d),u=Ke(Xe(),l);pe.add([e.id,t.id],u)}function io(e){const{imageData:t,dimensions:n}=e.getImageData()||{};if(!t||!n)return[];const{canvas:o}=e,i=window.devicePixelRatio,s=[0,0],r=[o.width/i,0],a=[o.width/i,o.height/i],c=[0,o.height/i],d=e.canvasToWorld(s),l=e.canvasToWorld(r),u=e.canvasToWorld(a),f=e.canvasToWorld(c),m=t.worldToIndex(d),w=t.worldToIndex(l),V=t.worldToIndex(u),h=t.worldToIndex(f);return ro({dimensions:n,imageData:t,topLeftImage:m,topRightImage:w,bottomRightImage:V,bottomLeftImage:h,topLeftWorld:d,topRightWorld:l,bottomRightWorld:u,bottomLeftWorld:f})}function ro({dimensions:e,imageData:t,topLeftImage:n,topRightImage:o,bottomRightImage:i,bottomLeftImage:s,topLeftWorld:r,topRightWorld:a,bottomRightWorld:c,bottomLeftWorld:d}){const l=k(n,e)?r:t.indexToWorld([0,0,0]),u=k(o,e)?a:t.indexToWorld([e[0]-1,0,0]),f=k(i,e)?c:t.indexToWorld([e[0]-1,e[1]-1,0]),m=k(s,e)?d:t.indexToWorld([0,e[1]-1,0]);return[l,u,m,f]}function k(e,t){return e[0]>0||e[0]<t[0]-1||e[1]>0||e[1]<t[1]-1||e[2]>0||e[2]<t[2]-1}function j(e){if(!e)return;const{viewportUid:t,renderingEngineUid:n}=e.dataset;return Pe(t,n)}function Pe(e,t){if(!t||!e)return;const n=Y(t);if(!n||n.hasBeenDestroyed)return;const o=n.getViewport(e);if(!o)return;const i=An(o)?o.getFrameOfReferenceUID():void 0;return{viewport:o,renderingEngine:n,viewportId:e,renderingEngineId:t,FrameOfReferenceUID:i}}function Uo(e){const t=z();for(let n=0;n<t.length;n++){const o=t[n];if(o.getViewport(e))return Pe(e,o.id)}}function Go(){const e=[];return z().forEach(n=>{n.getViewports().forEach(({element:i})=>{e.push(j(i))})}),e}function ao(e){const t=j(e);if(!t)return;const{viewport:n}=t;if(!(n instanceof Q))throw new Error(`An image can only be fetched for a stack viewport and not for a viewport of type: ${n.type}`);return n.getCornerstoneImage()}async function co({viewport:e,options:t={}}){const n=e.getRenderingEngine();let o=t.volumeId||`${ee()}`;o.split(":").length===0&&(o=`${Ze()}:${o}`);const{id:i,element:s}=e,r=t.viewportId||i,a=e.getImageIds(),c=e.getViewPresentation(),d=e.getViewReference();n.enableElement({viewportId:r,type:G.ORTHOGRAPHIC,element:s,defaultOptions:{background:t.background,orientation:t.orientation}}),(await Ye(o,{imageIds:a})).load();const u=n.getViewport(r);await _n(n,[{volumeId:o}],[r]);const f=()=>{u.render(),s.removeEventListener(R.VOLUME_VIEWPORT_NEW_VOLUME,f)};return s.addEventListener(R.VOLUME_VIEWPORT_NEW_VOLUME,f),u.setViewPresentation(c),u.setViewReference(d),u.render(),u}async function lo({viewport:e,options:t}){const n=e,{id:o,element:i}=n,s=e.getRenderingEngine(),{background:r}=t,a=t.viewportId||o,c=O.getVolume(n.getVolumeId());if(!(c instanceof Qe))throw new Error("Currently, you cannot decache a volume that is not an ImageVolume. So, unfortunately, volumes such as nifti (which are basic Volume, without imageIds) cannot be decached.");const d={viewportId:a,type:G.STACK,element:i,defaultOptions:{background:r}},l=n.getViewReference();s.enableElement(d);const u=s.getViewport(a);return await u.setStack(c.imageIds),u.setViewReference(l),u.render(),u}function Te(e,t=2){if(Array.isArray(e))return e.map(i=>Te(i,t)).join(", ");if(e==null||e==="")return"NaN";e=Number(e);const n=Math.abs(e);if(n<1e-4)return`${e}`;const o=n>=100?t-2:n>=10?t-1:n>=1?t:n>=.1?t+1:n>=.01?t+2:n>=.001?t+3:t+4;return e.toFixed(o)}function uo(e){return Math.round(e/P)*P}function fo(e,t,n){const o=e.length===t*n*4,i=e.length===t*n*3;if(o||i){const s=new Float32Array(t*n);let r=0,a=0;const c=o?4:3;for(let d=0;d<t;d++)for(let l=0;l<n;l++){const u=e[r],f=e[r+1],m=e[r+2];s[a]=(u+f+m)/3,r+=c,a++}return s}else return e}function go(e){if(e instanceof we)return O.getVolume(e.getVolumeId()).imageIds;if(e.getImageIds)return e.getImageIds()}function mo(e,t){const n=[...e];return t>=n.length?(ce(n),n):(ce(n),n.slice(0,t))}function ce(e){for(let t=e.length-1;t>0;t--){const n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}}function K(e){const t=e.toString(16);return t.length==1?"0"+t:t}function ho(e,t,n){return"#"+K(e)+K(t)+K(n)}function po(e){const t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null}const wo=Object.freeze(Object.defineProperty({__proto__:null,hexToRgb:po,rgbToHex:ho},Symbol.toStringTag,{value:"Module"}));function Io(e,t){if(e===t)return!0;if(e==null||t==null)return!1;try{return JSON.stringify(e)===JSON.stringify(t)}catch(n){return console.debug("Error in JSON.stringify during deep comparison:",n),e===t}}function xe(e,t){const n=e,o=n.getActors?.()??[];return(t?o.find(s=>s.referencedId===t)??o.find(s=>s.referencedId?.endsWith(`:${t}`)):void 0)?.referencedId??(t?te(t):void 0)??n.getDefaultActor?.()?.referencedId}function Me(e,t,n){if(!n)throw new Error("getVolume is required, use the utilities export instead");if(Ie(e)){const o=xe(e,t),i=o?n(o):void 0,s=e.getImageData?.();return{modality:i?.metadata?.Modality??s?.metadata?.Modality,isPreScaled:le(i?.scaling)}}if(typeof e.setVolumes=="function"){const i=t?te(t):e.getVolumeId(),s=i?n(i):void 0;return{modality:s?.metadata?.Modality,isPreScaled:le(s?.scaling)}}if(typeof e.setStack=="function"){const o=e,{preScale:i}=o.getImageData()||{};return{modality:o.modality,isPreScaled:!!i?.scaled}}}function le(e){return!!e&&Object.keys(e).length>0}function Vo(e,t,n){const o=Me(e,t,n);if(!o)throw new Error("Invalid viewport type");return o.modality}function So(e){const{imageIdGroups:t,splittingTag:n}=Ve(e);return{isDynamicVolume:t.length>1,timePoints:t,splittingTag:n}}function vo(e,t){const n=e.length,{rescaleSlope:o,rescaleIntercept:i,suvbw:s}=t;if(t.modality==="PT"&&typeof s=="number")for(let r=0;r<n;r++)e[r]=s*(e[r]*o+i);else for(let r=0;r<n;r++)e[r]=e[r]*o+i;return e}function De(e,t,n){return Math.min(Math.max(t,e),n)}function Oe(e,t){if(!j(e.element))throw new Error("Scroll::Viewport is not enabled (it might be disabled)");if(e instanceof Q&&e.getImageIds().length===0)throw new Error("Scroll::Stack Viewport has no images");const{volumeId:o,delta:i,scrollSlabs:s}=t;if(e instanceof we)Eo(e,o,i,s);else{if(typeof e.getCurrentImageIdIndex!="function"||typeof e.scroll!="function")return;const r=e.getCurrentImageIdIndex();if(r+i>e.getImageIds().length-1||r+i<0){const a={imageIdIndex:r,direction:i};T(M,R.STACK_SCROLL_OUT_OF_BOUNDS,a)}e.scroll(i,t.debounceLoading,t.loop)}}function Eo(e,t,n,o=!1){const i=o,{numScrollSteps:s,currentStepIndex:r,sliceRangeInfo:a}=Se(e,t,i);if(s===0||!a)return;const{sliceRange:c,spacingInNormalDirection:d,camera:l}=a,{focalPoint:u,viewPlaneNormal:f,position:m}=l,{newFocalPoint:w,newPosition:V}=ve(u,m,c,f,d,n);e.setCamera({focalPoint:w,position:V}),e.render();const h=r+n,g={volumeId:t,viewport:e,delta:n,desiredStepIndex:h,currentStepIndex:r,numScrollSteps:s,currentImageId:e.getCurrentImageId()};(h>s||h<0)&&e.getCurrentImageId()?T(M,R.VOLUME_VIEWPORT_SCROLL_OUT_OF_BOUNDS,g):T(M,R.VOLUME_VIEWPORT_SCROLL,g)}async function bo(e,t={}){const{imageIndex:n,debounceLoading:o,volumeId:i}=t,s=j(e);if(!s)throw new Error("Element has been disabled");const{viewport:r}=s,{imageIndex:a,numberOfSlices:c}=yo(r,o),l=Ro(c,n)-a;Oe(r,{delta:l,debounceLoading:o,volumeId:i})}function yo(e,t){return e instanceof Q?{numberOfSlices:e.getImageIds().length,imageIndex:t?e.getTargetImageIdIndex():e.getCurrentImageIdIndex()}:{numberOfSlices:e.getNumberOfSlices(),imageIndex:e.getSliceIndex()}}function Ro(e,t){const n=e-1;return De(t,0,n)}function Co(e,t,n={}){const o=O.getVolume(e);if(!o)throw new Error(`Referenced volume with id ${e} does not exist.`);const{metadata:i,spacing:s,direction:r,dimensions:a}=o,{minX:c,maxX:d,minY:l,maxY:u,minZ:f,maxZ:m}=t,w=[Math.min(c,d),Math.min(l,u),Math.min(f,m)],V=X(o.imageData,w),h=[Math.abs(d-c)+1,Math.abs(u-l)+1,Math.abs(m-f)+1],{targetBuffer:g}=n,v={metadata:i,dimensions:h,spacing:s,origin:V,direction:r,targetBuffer:g,scalarData:g?.type==="Float32Array"?new Float32Array(h[0]*h[1]*h[2]):void 0},S=et(ee(),v),E=S.voxelManager.getCompleteScalarDataArray(),p=h[0]*h[1],y=a[0]*a[1],x=o.voxelManager.getCompleteScalarDataArray();for(let I=0;I<h[2];I++)for(let C=0;C<h[1];C++){const $=X(S.imageData,[0,C,I]),_=Ee(o.imageData,$),W=_[2]*y+_[1]*a[0]+_[0],q=x.slice(W,W+h[0]),A=I*p+C*h[0];E.set(q,A)}return S.voxelManager.setCompleteScalarDataArray(E),S}function Po(e,t){const{viewUp:n,viewPlaneNormal:o}=t,i=F(e,[0,0,0]),s=ae(b(),n),r=ae(b(),o),a=H(b(),s,r),c=D(b(),F(e,s),i),d=D(b(),F(e,r),i);L(c,c),L(d,d);const l=H(b(),c,d);return{worldVecRowDir:a,worldVecColDir:s,worldVecSliceDir:r,ijkVecRowDir:l,ijkVecColDir:c,ijkVecSliceDir:d}}function To(e,t,n,o){const[i,s,r]=t,a=i*s;let c=0,d=0,l=0;const[u,f,m]=n.map(Math.round);for(let g=m-o;g<=m+o;g++)if(!(g<0||g>=r)){for(let v=f-o;v<=f+o;v++)if(!(v<0||v>=s))for(let S=u-o;S<=u+o;S++){if(S<0||S>=i)continue;const E=g*a+v*i+S,p=e[E];c+=p,d+=p*p,l++}}if(l===0){const g=m*a+f*i+u;return g>=0&&g<e.length?{mean:e[g],stdDev:0,count:1}:{mean:0,stdDev:0,count:0}}const w=c/l,V=d/l-w*w,h=Math.sqrt(Math.max(0,V));return{mean:w,stdDev:h,count:l}}const de=1e-6;function xo(e,t){const{lower:n,upper:o}=t.voiRange,i=o-n,s=t.VOILUTFunction,r=a=>t.invert===!0?1-a:a;if(s===be.SAMPLED_SIGMOID||s==="SIGMOID"){const{windowCenter:a,windowWidth:c}=ye(n,o),d=Math.max(Math.abs(c),1e-12);return r(1/(1+Math.exp(-4*(e-a)/d)))}return i===0||!Number.isFinite(i)?r(0):r(U((e-n)/i))}function Z(e,t){const{lower:n,upper:o}=t.voiRange,i=t.VOILUTFunction,s=t.invert===!0?U(1-U(e)):U(e);if(i===be.SAMPLED_SIGMOID||i==="SIGMOID"){const{windowCenter:a,windowWidth:c}=ye(n,o),d=_e(s,de,1-de);return tt(d,a,c)}const r=o-n;return r===0||!Number.isFinite(r)?n:n+s*r}function Mo(e,t,n){const o=Math.min(e,t),i=Math.max(e,t),s=Z(o,n),r=Z(i,n);return{rawMin:Math.min(s,r),rawMax:Math.max(s,r)}}function U(e){return Number.isFinite(e)?_e(e,0,1):0}function _e(e,t,n){return Math.min(n,Math.max(t,e))}const{getPixelSpacingInformation:Do,calculateRadiographicPixelSpacing:Oo,getERMF:_o}=nt,Lo=(e,t)=>Vo(e,t,O.getVolume),Wo=(e,t)=>Me(e,t,O.getVolume),Bo=Object.freeze(Object.defineProperty({__proto__:null,ECGUtilities:ft,FrameRange:gt,HistoryMemo:mt,PointsManager:at,ProgressiveIterator:it,RLEVoxelMap:st,VideoUtilities:ht,VoxelManager:ot,WSIUtilities:pt,actorIsA:wt,applyPreset:It,asArray:Vt,autoLoad:St,buildMetadata:vt,calculateNeighborhoodStats:To,calculateRadiographicPixelSpacing:Oo,calculateSpacingBetweenImageIds:Et,calculateViewportsSpatialRegistration:so,calibratedPixelSpacingMetadataProvider:$n,clamp:ut,clip:De,clonePoint3:bt,color:wo,colormap:yt,convertColorArrayToRgbString:Rt,convertStackToVolumeViewport:co,convertToGrayscale:fo,convertVolumeToStackViewport:lo,createLinearRGBTransferFunction:Ct,createSigmoidRGBTransferFunction:Pt,createSubVolume:Co,decimate:Tt,deepClone:xt,deepEqual:Io,deepMerge:Mt,eventListener:Nn,fnv1aHash:Dt,generateFrameImageId:Ot,generateVolumePropsFromImageIds:_t,genericMetadataProvider:Lt,genericViewportDisplaySetMetadataProvider:Wt,getAcquisitionPlaneOrientation:At,getBufferConfiguration:kt,getClosestImageId:Nt,getClosestStackImageIndexForPoint:Qn,getCubeSizeInView:Ft,getCurrentVolumeViewportSlice:no,getDynamicVolumeInfo:So,getERMF:_o,getImageDataMetadata:Ut,getImageLegacy:ao,getImageSliceDataForVolumeViewport:Gt,getMinMax:Bt,getNormalizedAspectRatio:dt,getPixelSpacingInformation:Do,getRandomSampleFromArray:mo,getRuntimeId:zn,getScalingDescriptor:Wo,getScalingParameters:Ht,getSliceRange:zt,getSpacingInNormalDirection:jt,getTargetVolumeAndSpacingInNormalDir:$t,getVOIRangeFromWindowLevel:qt,getViewportContentMode:Jt,getViewportImageCornersInWorld:io,getViewportImageIds:go,getViewportModality:Lo,getViewportsWithImageURI:Yn,getViewportsWithVolumeId:Kt,getVoiFromSigmoidRGBTransferFunction:Xt,getVolumeActorCorners:Zt,getVolumeDirectionVectors:Po,getVolumeId:te,getVolumeSliceRangeInfo:Yt,getVolumeViewReferenceId:Qt,getVolumeViewportScrollInfo:Se,getVolumeViewportsContainingSameVolumes:Xn,handleMultiframe4D:en,hasFloatScalingParameters:tn,hasNaNValues:nn,hasOwn:on,imageIdToURI:sn,imageRetrieveMetadataProvider:ct,imageToWorldCoords:rn,indexAlmostWithinDimensions:Kn,indexWithinDimensions:Jn,invertRgbTransferFunction:an,isEqual:lt,isEqualAbs:cn,isEqualNegative:ln,isGenericViewport:Ie,isImageActor:dn,isNumber:un,isOpposite:qn,isPTPrescaledWithSUV:ge,isValidVolume:fn,isVideoTransferSyntax:gn,jumpToSlice:bo,loadImageToCanvas:Zn,logger:rt,makeVolumeMetadata:mn,mapMappedBandToRawRange:Mo,mapScalarToViewportVoiIntensity:xo,mapViewportVoiIntensityToScalar:Z,planar:hn,pointInShapeCallback:pn,renderToCanvasCPU:Ce,renderToCanvasGPU:Re,resolveGenericViewportVolumeId:xe,rotateToViewCoordinates:wn,roundNumber:Te,roundToPrecision:uo,scaleArray:vo,scaleRgbTransferFunction:Fn,scroll:Oe,snapFocalPointToSlice:ve,sortImageIdsAndGetSpacing:In,spatialRegistrationMetadataProvider:pe,splitImageIdsBy4DTags:Ve,transferFunctionUtils:Vn,transformIndexToWorld:X,transformWorldToIndex:Ee,transformWorldToIndexContinuous:F,triggerEvent:T,updatePlaneRestriction:Sn,updateVTKImageDataWithCornerstoneImage:vn,uuidv4:ee,viewportIsInStackMode:En,viewportIsInVolumeMode:bn,viewportSupportsDisplaySetPresentation:yn,viewportSupportsImageSlices:he,viewportSupportsStackCalibration:Rn,viewportSupportsStackCompatibility:Cn,viewportSupportsVolumeActors:fe,viewportSupportsVolumeCompatibility:Pn,viewportSupportsVolumeId:Tn,viewportSupportsVolumeURI:xn,windowLevel:Mn,worldToImageCoords:Dn},Symbol.toStringTag,{value:"Module"}));export{Oe as A,no as B,De as C,qn as D,io as E,fo as F,On as G,kn as M,Wn as T,Ln as a,Pe as b,Uo as c,Go as d,An as e,Fo as f,j as g,No as h,zn as i,Io as j,mo as k,Wo as l,Yn as m,Kn as n,Qn as o,so as p,bo as q,Te as r,_n as s,Jn as t,Bo as u,ko as v,uo as w,Po as x,Co as y,To as z};
@@ -1 +0,0 @@
1
- import{v as H,B as U,t as E,E as M,g as L,a as W,b as S,u as G,s as $,V as q,c as Z,e as y,i as F,d as k,f as v,R as O,h as J,j as K,k as Y,l as Q,m as X,n as ee,o as te,p as ne,r as se,q as oe,w as ie,x as ae,y as re,z as de,A as ce,C as le,D as ge,F as me,G as he,I as ue,H as pe,J as N,S as xe,K as j,L as we,M as fe,N as Ie,O as Ve,P as Ce,Q as Pe,W as De,T as Re,U as Se,X as ve,Y as Ee,Z as Me,_ as _e,$ as Ge,a0 as ye,a1 as be,a2 as ze,a3 as Te,a4 as We,a5 as Fe,a6 as ke,a7 as Oe,a8 as Ae,a9 as Le,aa as Ne,ab as je}from"./Settings-B_WPNkCE.js";import{ac as ht,ad as ut,ae as pt,af as xt,ag as wt,ah as ft,ai as It,aj as Vt,ak as Ct,al as Pt,am as Dt,an as Rt,ao as St,ap as vt,aq as Et,ar as Mt,as as _t,at as Gt,au as yt,av as bt,aw as zt,ax as Tt,ay as Wt,az as Ft,aA as kt,aB as Ot,aC as At,aD as Lt,aE as Nt,aF as jt,aG as Bt,aH as Ht,aI as Ut,aJ as $t,aK as qt,aL as Zt,aM as Jt,aN as Kt,aO as Yt,aP as Qt,aQ as Xt,aR as en,aS as tn,aT as nn,aU as sn,aV as on,aW as an,aX as rn,aY as dn,aZ as cn,aO as ln,a_ as gn,a$ as mn,b0 as hn,b1 as un,b2 as pn,b3 as xn,b4 as wn,b5 as fn,b6 as In}from"./Settings-B_WPNkCE.js";import{a as Be,T as He}from"./index-Ddoc1eo6.js";import{g as Cn,b as Pn,c as Dn,d as Rn,s as Sn,u as vn,v as En,e as Mn,f as _n,h as Gn}from"./index-Ddoc1eo6.js";import{a as bn}from"./addVolumesToViewports-kPbPUzG1.js";import"./_commonjsHelpers-CE1G-McA.js";import"./dcmjs.es-DfWkgqfk.js";function ot(l,e,t){for(const n of t){const o=l.getViewport(n);if(!o)throw new Error(`Viewport with Id ${n} does not exist`);if(!o.addImages){console.warn(`Viewport with Id ${n} does not have addImages. Cannot add image segmentation to this viewport.`);return}}t.forEach(n=>{l.getViewport(n).addImages(e)})}class Ue{constructor(e,t=""){this.contexts=[],this.offScreenCanvasContainers=[],this.viewportToContext=new Map,this.viewportSizes=new Map,this.contextMaxSizes=new Map;for(let n=0;n<e;n++){const o=H.newInstance(),s=document.createElement("div");o.setContainer(s),Be(o,t,n),this.contexts.push(o),this.offScreenCanvasContainers.push(s)}}getContextByIndex(e){return e>=0&&e<this.contexts.length?{context:this.contexts[e],container:this.offScreenCanvasContainers[e]}:null}assignViewportToContext(e,t){this.viewportToContext.set(e,t)}getContextIndexForViewport(e){return this.viewportToContext.get(e)}getAllContexts(){return this.contexts}getContextCount(){return this.contexts.length}updateViewportSize(e,t,n){const o=this.viewportToContext.get(e);if(o===void 0)return!1;this.viewportSizes.set(e,{width:t,height:n});const s=this.contextMaxSizes.get(o),i=this.calculateMaxSizeForContext(o);return this.contextMaxSizes.set(o,i),!s||s.width!==i.width||s.height!==i.height}getMaxSizeForContext(e){return this.contextMaxSizes.get(e)}calculateMaxSizeForContext(e){let t=0,n=0;return this.viewportToContext.forEach((o,s)=>{if(o===e){const i=this.viewportSizes.get(s);i&&(t=Math.max(t,i.width),n=Math.max(n,i.height))}}),{width:t,height:n}}removeViewport(e){const t=this.viewportToContext.get(e);if(this.viewportToContext.delete(e),this.viewportSizes.delete(e),t!==void 0){const n=this.calculateMaxSizeForContext(t);this.contextMaxSizes.set(t,n)}}destroy(){this.contexts.forEach(e=>{e.delete()}),this.contexts=[],this.offScreenCanvasContainers=[],this.viewportToContext.clear(),this.viewportSizes.clear(),this.contextMaxSizes.clear()}}class A extends U{constructor(e){super(e),this._renderFlaggedViewports=()=>{this._throwIfDestroyed();const n=this._getViewportsAsArray().filter(s=>this._needsRender.has(s.id));if(n.length===0){this._animationFrameSet=!1,this._animationFrameHandle=null;return}const o=n.map(s=>{const i=this.renderViewportUsingCustomOrVtkPipeline(s);return s.setRendered(),this._needsRender.delete(s.id),i});this._animationFrameSet=!1,this._animationFrameHandle=null,o.forEach(s=>{s?.element&&E(s.element,M.IMAGE_RENDERED,s)})},this.useCPURendering||this.ensureContextPool()}ensureContextPool(){if(!this.contextPool){const{rendering:e}=L(),{webGlContextCount:t}=e;this.contextPool=new Ue(t,this.id)}return this.contextPool}enableVTKjsDrivenViewport(e){const o=this._getViewportsAsArray().filter(a=>W(a.type)===!1).map(a=>a.canvas),s=S(e.element);G(s),o.push(s);const i={...e,canvas:s};this.addVtkjsDrivenViewport(i)}addVtkjsDrivenViewport(e){const t=this.ensureContextPool(),{element:n,canvas:o,viewportId:s,type:i,defaultOptions:a}=e;n.tabIndex=-1,$(n);let r=0;if(i===q.STACK){const u=t.getAllContexts();r=this._viewports.size%u.length}t.assignViewportToContext(s,r),t.updateViewportSize(s,o.width,o.height);const d=t.getContextByIndex(r),{context:g,container:m}=d,p=t.getMaxSizeForContext(r);m.width=p.width,m.height=p.height,g.resize(),g.addRenderer({viewport:[0,0,1,1],id:s,background:a.background?a.background:[0,0,0]});const x={id:s,element:n,renderingEngineId:this.id,type:i,canvas:o,sx:0,sy:0,sWidth:o.width,sHeight:o.height,defaultOptions:a||{}},f=Z(e);if(!f)throw new Error(`Viewport Type ${i} is not supported`);const h=new f(x);h.requestedType=e.requestedType??i,this._viewports.set(s,h);const c={element:n,viewportId:s,renderingEngineId:this.id};h.suppressEvents||E(y,M.ELEMENT_ENABLED,c)}setVtkjsDrivenViewports(e){if(e.length){const t=e.map(n=>S(n.element));t.forEach(n=>G(n));for(let n=0;n<e.length;n++){const o=e[n],s=t[n],i={...o,canvas:s};this.addVtkjsDrivenViewport(i)}}}_getDisplayedSize(e){const t=window.devicePixelRatio||1,n=F(e)?e.element:S(e.element);return{displayedWidth:Math.round(n.clientWidth*t),displayedHeight:Math.round(n.clientHeight*t)}}_resizeVTKViewports(e,t=!0,n=!0){const o=[];for(const s of e){const i=S(s.element),{displayedWidth:a,displayedHeight:r}=this._getDisplayedSize(s);if(a===0||r===0)continue;const d=i.width,g=i.height;a===d&&r===g||o.push(s)}if(o.length!==0){for(const s of o){const{displayedWidth:i,displayedHeight:a}=this._getDisplayedSize(s),r=Math.max(v,i),d=Math.max(v,a);s.sWidth=r,s.sHeight=d}this._animationFrameSet||(e.length&&this._resize(e),e.forEach(s=>{if(s.resize?.(),F(s))return;const i=s.getCamera(),a=s.getRotation?.()??0,{flipHorizontal:r}=i,d=s;d.resetViewStateForResize?d.resetViewStateForResize():d.resetCameraForResize?.();const g=s.getDisplayArea();t&&(g?(r&&s.setCamera({flipHorizontal:r}),a&&s.setViewPresentation({rotation:a})):s.setCamera(i))}),n&&this.render())}}renderViewportUsingCustomOrVtkPipeline(e){if(k(e))return e.customRenderViewportToCanvas();if(!this.contextPool)throw new Error("GPU not available, and using a viewport with no custom render pipeline.");const t=this.contextPool.getContextIndexForViewport(e.id),n=this.contextPool.getContextByIndex(t),{context:o,container:s}=n;return this._renderViewportWithContext(e,o,s)}_renderViewportWithContext(e,t,n){if(e.canvas.clientWidth===0||e.canvas.clientHeight===0)return;if(e.sWidth<v||e.sHeight<v){console.warn("Viewport is too small",e.sWidth,e.sHeight);return}if(k(e))return e.customRenderViewportToCanvas();if(!this.contextPool)throw new Error("GPU not available, and using a viewport with no custom render pipeline.");t.getRenderer(e.id)||t.addRenderer({viewport:[0,0,1,1],id:e.id,background:e.defaultOptions?.background||[0,0,0]});const o=t.getRenderWindow(),s=o.getViews()[0],i=s.getRenderPasses(),a=this.getViewportRenderPasses(e.id);a&&s.setRenderPasses(a),this._resizeOffScreenCanvasForViewport(e,n,t);const r=t.getRenderer(e.id),d=this.contextPool.getContextIndexForViewport(e.id),g=this.contextPool.getMaxSizeForContext(d),m=e.sWidth,p=e.sHeight,x=Math.min(1,m/g.width),f=Math.min(1,p/g.height);r.setViewport(0,0,x,f);const h=t.getRenderers();h.forEach(({renderer:w,id:V})=>{const _=V.split("::")[0];w.setDraw(_===e.id)});const c=this.getWidgetRenderers();c.forEach((w,V)=>{V.setDraw(w===e.id)}),o.render(),h.forEach(({renderer:w})=>w.setDraw(!1)),c.forEach((w,V)=>{V.setDraw(!1)}),i&&s.setRenderPasses(i);const I=t.getOpenGLRenderWindow().get3DContext().canvas;return this._copyToOnscreenCanvas(e,I)}_renderViewportFromVtkCanvasToOnscreenCanvas(e,t){return this._copyToOnscreenCanvas(e,t)}_resizeOffScreenCanvasForViewport(e,t,n){const o=this.contextPool.getContextIndexForViewport(e.id);if(o===void 0||!this.contextPool.updateViewportSize(e.id,e.sWidth,e.sHeight))return;const i=this.contextPool.getMaxSizeForContext(o);t.width===i.width&&t.height===i.height||(t.width=i.width,t.height=i.height,n.resize())}_copyToOnscreenCanvas(e,t){const{element:n,canvas:o,id:s,renderingEngineId:i,suppressEvents:a}=e,r=e.sWidth,d=e.sHeight;G(o,{width:r,height:d});const g=o.getContext("2d"),m=this.contextPool.getContextIndexForViewport(s),x=this.contextPool.getMaxSizeForContext(m).height-d;return g.drawImage(t,0,x,r,d,0,0,r,d),{element:n,suppressEvents:a,viewportId:s,renderingEngineId:i,viewportStatus:e.viewportStatus}}_resize(e){const t=new Set;for(const n of e){n.sx=0,n.sy=0;const o=this.contextPool.getContextIndexForViewport(n.id);this.contextPool.updateViewportSize(n.id,n.sWidth,n.sHeight)&&t.add(o);const i=this.contextPool.getContextByIndex(o),{context:a}=i,r=a.getRenderer(n.id),d=this.contextPool.getMaxSizeForContext(o),g=Math.min(1,n.sWidth/d.width),m=Math.min(1,n.sHeight/d.height);r.setViewport(0,0,g,m)}t.forEach(n=>{const o=this.contextPool.getContextByIndex(n);if(o){const{context:s,container:i}=o,a=this.contextPool.getMaxSizeForContext(n);i.width=a.width,i.height=a.height,s.resize()}})}getWidgetRenderers(){const e=this._getViewportsAsArray(),t=new Map;return e.forEach(n=>{(n.getWidgets?n.getWidgets():[]).forEach(s=>{const i=s.getRenderer?s.getRenderer():null;i&&t.set(i,n.id)})}),t}getViewportRenderPasses(e){const t=this.getViewport(e);return t?.getRenderPasses?t.getRenderPasses():null}getRenderer(e){const t=this.contextPool?.getContextIndexForViewport(e);if(t===void 0||!this.contextPool)return;const n=this.contextPool.getContextByIndex(t);if(!n)return;const{context:o}=n;return o.getRenderer(e)}disableElement(e){const t=this.getViewport(e);if(t&&(super.disableElement(e),!W(t.type)&&this.contextPool)){const n=this.contextPool.getContextIndexForViewport(e);if(n!==void 0){const o=this.contextPool.getContextByIndex(n);if(o){const{context:s}=o;s.removeRenderer(e)}}this.contextPool.removeViewport(e)}}destroy(){super.destroy(),this.contextPool&&this.contextPool.destroy()}getOffscreenMultiRenderWindow(e){if(!this.contextPool)throw new Error("Offscreen multi render window is not available.");const t=this.contextPool.getContextIndexForViewport(e);if(t===void 0)throw new Error(`Offscreen multi render window is not available for viewport ${e}.`);const n=this.contextPool.getContextByIndex(t);if(!n)throw new Error(`Offscreen multi render window is not available for viewport ${e}.`);return n.context}}class it{constructor(e){const n=L()?.rendering?.renderingEngineMode;switch(n){case O.Tiled:this._implementation=new He(e);break;case O.ContextPool:this._implementation=new A(e);break;default:console.warn(`RenderingEngine: Unknown rendering engine mode "${n}". Defaulting to Next rendering engine.`),this._implementation=new A(e);break}}get id(){return this._implementation.id}disableViewport(e){return this._implementation.disableElement(e)}enableElement(e){return this._implementation.enableElement(e)}disableElement(e){return this._implementation.disableElement(e)}setViewports(e){return this._implementation.setViewports(e)}resize(e=!0,t=!0){return this._implementation.resize(e,t)}getViewport(e){return this._implementation.getViewport(e)}getViewports(){return this._implementation.getViewports()}getRenderer(e){return this._implementation.getRenderer(e)}fillCanvasWithBackgroundColor(e,t){return this._implementation.fillCanvasWithBackgroundColor(e,t)}render(){return this._implementation.render()}renderViewports(e){return this._implementation.renderViewports(e)}renderViewport(e){return this._implementation.renderViewport(e)}destroy(){return this._implementation.destroy()}getOffscreenMultiRenderWindow(e){return this._implementation.getOffscreenMultiRenderWindow(e)}}const $e={adapter:K,getSnapshot:J},qe={adapter:Q,getSnapshot:Y},Ze={adapter:de,getSnapshot:re,getZoom:ae,getScale:ie,getPan:oe,resolveICamera:se,derivePresentation:ne,applyToRenderer:te,createImageSliceBasis:ee,createVolumeSliceBasis:X},Je={adapter:le,getSnapshot:ce},Ke={adapter:me,getSnapshot:ge},at="5.8.2";class Ye extends he{constructor(e,t){super(e,t),this._dimensionGroupNumber=1,this._loadedDimensionGroups=new Set,this._getImageIdRequests=(s,i)=>this.getImageIdsRequests(s,i),this.getImageLoadRequests=s=>{const i=this.getImageIdsToLoad();return this._getImageIdRequests(i,s)};const{imageIdGroups:n,splittingTag:o}=e;this._splittingTag=o,this._imageIdGroups=n,this.numDimensionGroups=this._imageIdGroups.length}_getImageIdsToLoad(){const e=this._imageIdGroups,t=this._dimensionGroupNumber-1,n=[...e[t]];let o=t-1,s=t+1;for(;o>=0||s<e.length;)o>=0&&n.push(...e[o--]),s<e.length&&n.push(...e[s++]);return n}getImageIdsToLoad(){return this._getImageIdsToLoad()}get dimensionGroupNumber(){return this._dimensionGroupNumber}set dimensionGroupNumber(e){this._dimensionGroupNumber!==e&&(this._dimensionGroupNumber=e,this.voxelManager.setDimensionGroupNumber(e),this.invalidateVolume(!0),E(y,M.DYNAMIC_VOLUME_DIMENSION_GROUP_CHANGED,{volumeId:this.volumeId,dimensionGroupNumber:e,numDimensionGroups:this.numDimensionGroups,imageIdGroupIndex:e-1,numImageIdGroups:this.numDimensionGroups,splittingTag:this.splittingTag}))}scroll(e){const t=this._dimensionGroupNumber+e;t<1?this.dimensionGroupNumber=this.numDimensionGroups:t>this.numDimensionGroups?this.dimensionGroupNumber=1:this.dimensionGroupNumber=t}getCurrentDimensionGroupImageIds(){return this._imageIdGroups[this._dimensionGroupNumber-1]}flatImageIdIndexToDimensionGroupNumber(e){return Math.floor(e/this._imageIdGroups[0].length)+1}flatImageIdIndexToImageIdIndex(e){return e%this._imageIdGroups[0].length}get splittingTag(){return this._splittingTag}isDimensionGroupLoaded(e){return this._loadedDimensionGroups.has(e)}markDimensionGroupAsLoaded(e){this._loadedDimensionGroups.add(e),E(y,M.DYNAMIC_VOLUME_DIMENSION_GROUP_LOADED,{volumeId:this.volumeId,dimensionGroupNumber:e})}checkDimensionGroupCompletion(e){const t=this.flatImageIdIndexToDimensionGroupNumber(e);this._imageIdGroups[t-1].every(s=>{const i=this.getImageIdIndex(s);return this.cachedFrames[i]===ue.FULL_RESOLUTION})&&!this.isDimensionGroupLoaded(t)&&this.markDimensionGroupAsLoaded(t)}}function Qe(l,e,t){return e.reduce((n,o)=>o.apply(n,t),l)}const Xe={name:"InPlaneDecimationModifier",apply(l,e){const[t=1,n=t]=e.options.ijkDecimation??[],o=Math.max(1,Math.floor(t)),s=Math.max(1,Math.floor(n));if(o===1&&s===1)return l;const[i,a]=l.dimensions,r=Math.max(1,Math.floor(i/o)),d=Math.max(1,Math.floor(a/s)),g=[r,d,l.dimensions[2]],m=[l.spacing[0]*o,l.spacing[1]*s,l.spacing[2]],p={...l.metadata,Columns:r,Rows:d,PixelSpacing:[m[1],m[0]]};return{...l,dimensions:g,spacing:m,metadata:p}}};function rt(l,e){if(!e||!e.imageIds||!e.imageIds.length)throw new Error("ImageIds must be provided to create a streaming image volume ");const[t=1,n=t,o=1]=e.ijkDecimation??[],s=Math.max(1,Math.floor(t)),i=n>1?Math.max(1,Math.floor(n)):s,a=Math.max(1,Math.floor(o)),r=s>1||i>1,d={ijkDecimation:[s,i,a]},g=[Xe];function m(c,u){return u===1?c:`${c}#decimation=${u}`}const p=Math.floor(e.imageIds.length/a),x=a>1&&e.imageIds.length<=p+1;if(a>1&&!x){const c=pe(e.imageIds,a),u=Array.isArray(c)&&c.length&&typeof c[0]=="number"?c.map(P=>e.imageIds[P]):c;e.imageIds=u}s>1&&(e.imageIds=e.imageIds.map(c=>m(c,s)));async function f(){const c=N(e.imageIds,l),u={volumeId:l,imageIds:e.imageIds,options:d},P=Qe(c,g,u),{dimensions:I,spacing:R,origin:w,direction:V,metadata:_,imageIds:b,dataType:B,numberOfComponents:z}=P,C=new xe({volumeId:l,metadata:_,dimensions:I,spacing:R,origin:w,direction:V,imageIds:b,dataType:B,numberOfComponents:z},{imageIds:b,loadStatus:{loaded:!1,loading:!1,cancelled:!1,cachedFrames:[],callbacks:[]}});if(r){const D=C.imageData;D&&(D.setDimensions(C.dimensions),D.setSpacing(C.spacing),D.modified());const T=j.createImageVolumeVoxelManager({dimensions:C.dimensions,imageIds:C.imageIds,numberOfComponents:z});C.voxelManager=T,D&&D.set({voxelManager:T})}return C}const h=f();return{promise:h,decache:()=>{h.then(c=>{c.destroy(),c=null})},cancel:()=>{h.then(c=>{c.cancelLoading()})}}}function dt(l,e){if(!e||!e.imageIds||!e.imageIds.length)throw new Error("ImageIds must be provided to create a 4D streaming image volume");const{imageIds:t}=e,{splittingTag:n,imageIdGroups:o}=we(t),s=Math.floor(o.length/2),i=N(o[s],l),{metadata:a,dimensions:r,spacing:d,direction:g,sizeInBytes:m,origin:p,numberOfComponents:x,dataType:f}=i,h=g.slice(6,9),c=o.map(R=>fe(R,h).sortedImageIds),u=c.flat(),P=j.createScalarDynamicVolumeVoxelManager({dimensions:r,imageIdGroups:c,dimensionGroupNumber:1,numberOfComponents:x});let I=new Ye({volumeId:l,metadata:a,dimensions:r,spacing:d,origin:p,direction:g,sizeInBytes:m,imageIds:u,imageIdGroups:c,splittingTag:n,voxelManager:P,numberOfComponents:x,dataType:f},{imageIds:u,loadStatus:{loaded:!1,loading:!1,cancelled:!1,cachedFrames:[],callbacks:[]}});return{promise:Promise.resolve(I),decache:()=>{I.destroy(),I=null},cancel:()=>{I.cancelLoading()}}}const ct={GenericViewport:je,DefaultRenderPathResolver:Ne,defaultRenderPathResolver:Le,ECGGenericViewport:Ae,createDefaultECGRenderPaths:Oe,createECGRenderPathResolver:ke,DefaultECGDataProvider:Fe,ecgProjection:$e,VideoGenericViewport:We,createDefaultVideoRenderPaths:Te,createVideoRenderPathResolver:ze,DefaultVideoDataProvider:be,videoProjection:qe,PlanarViewport:ye,createDefaultPlanarRenderPaths:Ge,createPlanarRenderPathResolver:_e,DefaultPlanarDataProvider:Me,planarProjection:Ze,VolumeViewport3D:Ee,createDefaultVolume3DRenderPaths:ve,createVolume3DRenderPathResolver:Se,DefaultVolume3DDataProvider:Re,volume3DProjection:Je,WSIGenericViewport:De,createDefaultWSIRenderPaths:Pe,createWSIRenderPathResolver:Ce,DefaultWSIDataProvider:Ve,wsiProjection:Ke},lt=Ie;export{ht as ActorRenderMode,U as BaseRenderingEngine,ut as BaseVolumeViewport,pt as CONSTANTS,A as ContextPoolRenderingEngine,Fe as DefaultECGDataProvider,Me as DefaultPlanarDataProvider,Ne as DefaultRenderPathResolver,be as DefaultVideoDataProvider,Re as DefaultVolume3DDataProvider,Ve as DefaultWSIDataProvider,Ae as ECGGenericViewport,xt as ECGViewport,wt as EPSILON,M as EVENTS,ft as Enums,je as GenericViewport,Ee as GenericVolumeViewport3D,It as ImageVolume,lt as LegacyVolumeViewport3D,ye as PlanarViewport,Vt as ProgressiveRetrieveImages,Ct as RenderBackends,it as RenderingEngine,Pt as Settings,Dt as StackViewport,Ye as StreamingDynamicImageVolume,xe as StreamingImageVolume,Rt as Surface,He as TiledRenderingEngine,We as VideoGenericViewport,St as VideoViewport,vt as Viewport,Et as ViewportProjectionService,Mt as VolumeViewport,Ie as VolumeViewport3D,De as WSIGenericViewport,_t as WSIViewport,ot as addImageSlicesToViewports,bn as addVolumesToViewports,Gt as cache,yt as canRenderFloatTextures,bt as convertColorArrayToRgbString,zt as convertMapperToNotSharedMapper,Tt as cornerstoneMeshLoader,dt as cornerstoneStreamingDynamicImageVolumeLoader,Wt as cornerstoneStreamingImageVolumeLoader,Ft as createCanvas,Oe as createDefaultECGRenderPaths,Ge as createDefaultPlanarRenderPaths,Te as createDefaultVideoRenderPaths,ve as createDefaultVolume3DRenderPaths,Pe as createDefaultWSIRenderPaths,ke as createECGRenderPathResolver,_e as createPlanarRenderPathResolver,ze as createVideoRenderPathResolver,kt as createViewportElement,Se as createVolume3DRenderPathResolver,Ot as createVolumeActor,At as createVolumeMapper,Ce as createWSIRenderPathResolver,rt as decimatedVolumeLoader,Le as defaultRenderPathResolver,Lt as detectRenderingCapabilities,$e as ecgProjection,y as eventTarget,Nt as geometryLoader,L as getConfiguration,jt as getEffectiveRenderBackend,Cn as getEnabledElement,Pn as getEnabledElementByIds,Dn as getEnabledElementByViewportId,Rn as getEnabledElements,S as getOrCreateCanvas,Bt as getProjectionScaleMatrix,Ht as getRenderBackend,Ut as getRenderingCapabilities,$t as getRenderingEngine,qt as getRenderingEngines,Zt as getShouldUseCPURendering,Jt as getUseGenericViewport,Kt as getWebWorkerManager,Yt as imageLoadPoolManager,Qt as imageLoader,Xt as imageRetrievalPoolManager,en as init,tn as isCornerstoneInitialized,nn as isRegisteredRenderBackend,sn as isRegisteredViewportType,on as metaData,an as peerImport,Ze as planarProjection,rn as registerImageLoader,dn as registerRenderBackend,cn as registerViewportType,ct as renderingEngineExportsV2,ln as requestPoolManager,gn as resetInitialization,mn as resetUseCPURendering,hn as setCanvasCreator,un as setConfiguration,pn as setPreferSizeOverAccuracy,xn as setRenderBackend,wn as setUseCPURendering,Sn as setVolumesForViewports,E as triggerEvent,G as updateCanvasSizeAndAspectRatio,vn as utilities,at as version,qe as videoProjection,En as viewportHasCanvasWorldTransform,Mn as viewportHasFrameOfReferenceUID,_n as viewportHasPan,Gn as viewportHasZoom,fn as viewportProjection,Je as volume3DProjection,In as volumeLoader,Ke as wsiProjection};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-BEqlmVJ8.js","./_commonjsHelpers-CE1G-McA.js","./index-B1IRr1ii.js","./index-BbgujRGq.css"])))=>i.map(i=>d[i]);
2
- import{_ as h}from"./index-B1IRr1ii.js";const u={gray:"gray",hot:"hot",jet:"jet",cool:"cool"},c={wl:"contrast",pan:"pan",length:"measurement",angle:"angle"};class p{name="niivue";host;path;nv=null;module=null;layout="mpr";tool="wl";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 h(()=>import("./index-BEqlmVJ8.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:`${location.origin}${this.host.source.url_of(this.path)}`,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)}`);return}if(this.host.progress_set(null),this.disposed)return;this.nv=i;const a=i.volumes[0]?.dims;this.slices=a?.[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 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.nv.setColormap(t.id,u[s]),!0)}tool_set(s){const t=c[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)}state_get(){return{engine:"niivue",layout:this.layout,slice:this.slice,slices:this.slices,tool:this.tool,refused:this.refused,annotations:0}}dispose(){this.disposed=!0,this.nv=null}}export{p as NiivueEngine};