@ohif/app 3.8.0-beta.92 → 3.8.0-beta.93

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 (37) hide show
  1. package/dist/{117.bundle.a18b236cfb25b1daa254.js → 117.bundle.77cc4e62d0de5d843e2e.js} +3 -3
  2. package/dist/{164.bundle.0860b89ac7bde6ee83b0.js → 164.bundle.b101cb64d04a22453984.js} +7 -4
  3. package/dist/{206.bundle.7b4b08331eec7dcc259b.js → 206.bundle.167521fec17384ca82bf.js} +2 -2
  4. package/dist/{236.bundle.7c88c873c95bac8610f3.js → 236.bundle.f774cdc955890e6cdac9.js} +4 -1
  5. package/dist/{321.bundle.506a5b5c6b8f5fb72014.js → 321.bundle.2a5d0ec994ec8d68685d.js} +49 -27
  6. package/dist/{416.bundle.a043517360b314eff829.js → 416.bundle.9b0d7559344fd02c9e08.js} +389 -223
  7. package/dist/{473.bundle.f6804e7ac014a561eff8.js → 473.bundle.11f707c8170ade2eb56a.js} +4 -1
  8. package/dist/{574.bundle.a17af135ea650e98d81c.js → 574.bundle.4b059c95cd34efdc9cb3.js} +18 -4
  9. package/dist/{633.bundle.e0dd840d8f1dae9f9d24.js → 633.bundle.cfdc3e0d026d42ec02ac.js} +8 -20
  10. package/dist/{699.bundle.9d8f7ac047524db16187.js → 699.bundle.33cb12a34f86ed7f7c80.js} +11 -19
  11. package/dist/{724.bundle.a56489507de343782981.js → 724.bundle.f24477fbbedb55f4a79b.js} +0 -12
  12. package/dist/{94.bundle.78374907fe8caf9aa3f8.js → 94.bundle.409068694ec9449ad313.js} +0 -12
  13. package/dist/{app.bundle.1771c17053a9d31620f5.js → app.bundle.2fbf30e7580d827a9588.js} +533 -248
  14. package/dist/app.bundle.css +1 -1
  15. package/dist/index.html +1 -1
  16. package/dist/{polySeg.bundle.59eaa458d4cdb967e0d4.js → polySeg.bundle.4442dd3318266fddf4d0.js} +1 -1
  17. package/dist/{suv-peak-worker.bundle.426c2e139a25c02d2451.js → suv-peak-worker.bundle.348c016f7f973d05f2d2.js} +1 -1
  18. package/dist/sw.js +1 -1
  19. package/package.json +18 -18
  20. /package/dist/{188.bundle.e92f9feb82ac5a007ed9.js → 188.bundle.0ac4a3cc5fe776803e7b.js} +0 -0
  21. /package/dist/{203.bundle.846a90d1ede185c941b0.js → 203.bundle.3581da3a32a0b720d3a7.js} +0 -0
  22. /package/dist/{325.bundle.425742d4a926c9611bbc.js → 325.bundle.6a21e6669ba356c10db3.js} +0 -0
  23. /package/dist/{41.bundle.20a35c0c178c2eb2932b.js → 41.bundle.973e2ac247f8ce68d557.js} +0 -0
  24. /package/dist/{448.bundle.2cc5f694c2b649f71da4.js → 448.bundle.d3684e8fe6e589241663.js} +0 -0
  25. /package/dist/{483.bundle.9263b25c34b349aae80e.js → 483.bundle.581b242d7b90866fdfb9.js} +0 -0
  26. /package/dist/{487.bundle.fb1b06e3df4fceba34da.js → 487.bundle.47d5719b6292b25fe08f.js} +0 -0
  27. /package/dist/{544.bundle.1b6998bb61d6f8f88da9.js → 544.bundle.3542927ec15c3f688c8d.js} +0 -0
  28. /package/dist/{594.bundle.cea96199bc0c0d1f3788.js → 594.bundle.d5c4c9d86ad885067f4c.js} +0 -0
  29. /package/dist/{669.bundle.fdb4bc855d3928c611f5.js → 669.bundle.d9800c500db3c7506923.js} +0 -0
  30. /package/dist/{7.bundle.6217bd76d0e172d6c2ec.js → 7.bundle.43265474d1b1e3a2e807.js} +0 -0
  31. /package/dist/{722.bundle.05e8759e64d484f4554d.js → 722.bundle.52eb61926d08a08793fe.js} +0 -0
  32. /package/dist/{783.bundle.7f3178f6834b10682c37.js → 783.bundle.8801ce765a23c521603e.js} +0 -0
  33. /package/dist/{862.bundle.4be5d148c2b1adf4dbf3.js → 862.bundle.9897a9b748078d53f9ab.js} +0 -0
  34. /package/dist/{889.bundle.466a8946346a3092ecb9.js → 889.bundle.e5576c74f9e3be4735c3.js} +0 -0
  35. /package/dist/{905.bundle.7d33a9d6baed122cde34.js → 905.bundle.922f97dd2430233ca0df.js} +0 -0
  36. /package/dist/{907.bundle.32f72275dcb472f13dc9.js → 907.bundle.2036aa494fadddd85254.js} +0 -0
  37. /package/dist/{961.bundle.d8feb064efc2f3f474d9.js → 961.bundle.91bc4c2b3f412147e127.js} +0 -0
@@ -1004,8 +1004,8 @@ function WorkList({
1004
1004
  };
1005
1005
  });
1006
1006
  const hasStudies = numOfStudies > 0;
1007
- const versionNumber = "3.8.0-beta.92";
1008
- const commitHash = "c09311d3b7df05fcd00a9f36a7233e9d7e5589d0";
1007
+ const versionNumber = "3.8.0-beta.93";
1008
+ const commitHash = "f1a736d1934733a434cb87b2c284907a3122403f";
1009
1009
  const menuOptions = [{
1010
1010
  title: t('Header:About'),
1011
1011
  icon: 'info',
@@ -1408,11 +1408,12 @@ function Local({
1408
1408
  className: "flex h-screen w-screen items-center justify-center "
1409
1409
  }, /*#__PURE__*/react.createElement("div", {
1410
1410
  className: "bg-secondary-dark mx-auto space-y-2 rounded-lg py-8 px-8 drop-shadow-md"
1411
- }, /*#__PURE__*/react.createElement("img", {
1412
- className: "mx-auto block h-14",
1413
- src: "./ohif-logo.svg",
1414
- alt: "OHIF"
1415
- }), /*#__PURE__*/react.createElement("div", {
1411
+ }, /*#__PURE__*/react.createElement("div", {
1412
+ className: "flex items-center justify-center"
1413
+ }, /*#__PURE__*/react.createElement(ui_src/* Icon */.In, {
1414
+ name: "logo-dark-background",
1415
+ className: "h-28"
1416
+ })), /*#__PURE__*/react.createElement("div", {
1416
1417
  className: "space-y-2 pt-4 text-center"
1417
1418
  }, dropInitiated ? /*#__PURE__*/react.createElement("div", {
1418
1419
  className: "flex flex-col items-center justify-center pt-48"
@@ -6615,7 +6616,7 @@ const detectionOptions = {
6615
6616
  }
6616
6617
  });
6617
6618
  ;// CONCATENATED MODULE: ../../i18n/package.json
6618
- const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"3.8.0-beta.91"}');
6619
+ const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"3.8.0-beta.92"}');
6619
6620
  ;// CONCATENATED MODULE: ../../i18n/src/utils.js
6620
6621
  const languagesMap = {
6621
6622
  ar: 'Arabic',
@@ -8079,6 +8080,37 @@ logoOhifSmall.defaultProps = {
8079
8080
  height: "24",
8080
8081
  viewBox: "0 0 24 24"
8081
8082
  };
8083
+ var logoDarkBackGround = function logoDarkBackGround(props) {
8084
+ return /*#__PURE__*/react.createElement("svg", props, /*#__PURE__*/react.createElement("g", {
8085
+ fill: "none",
8086
+ fillRule: "evenodd"
8087
+ }, /*#__PURE__*/react.createElement("path", {
8088
+ d: "M0 0h320v81H0z"
8089
+ }), /*#__PURE__*/react.createElement("path", {
8090
+ d: "M90.714 33.741c4.564 0 7.874-3.527 7.874-9.184 0-5.657-3.31-9.184-7.874-9.184S82.84 18.9 82.84 24.557c0 5.657 3.31 9.184 7.874 9.184Zm.188-1.874c-3.256 0-5.812-2.502-5.812-7.122 0-4.621 2.556-7.122 5.812-7.122 3.256 0 5.811 2.501 5.811 7.122 0 4.62-2.555 7.122-5.811 7.122Zm13.084 6.372v-6.995h.171c.446.723 1.303 2.309 3.84 2.309 3.292 0 5.59-2.654 5.59-6.858 0-4.17-2.298-6.823-5.624-6.823-2.572 0-3.36 1.585-3.806 2.274h-.24v-2.102h-1.954v18.195h2.023Zm3.942-6.372c-2.398 0-3.716-2.087-3.716-5.113 0-2.99 1.284-5.008 3.716-5.008 2.533 0 3.783 2.191 3.783 5.008 0 2.852-1.283 5.113-3.783 5.113Zm14.438 1.874c2.683 0 4.643-1.363 5.262-3.389l-1.96-.559c-.516 1.398-1.711 2.096-3.302 2.096-2.381 0-4.023-1.563-4.118-4.436h9.586v-.874c0-4.996-2.923-6.707-5.674-6.707-3.576 0-5.95 2.864-5.95 6.987 0 4.122 2.34 6.882 6.156 6.882Zm3.593-8.247h-7.499c.138-1.982 1.586-3.748 3.9-3.748 2.194 0 3.6 1.592 3.6 3.748Zm7.287 7.872v-8.013c0-2.325 1.433-3.643 3.385-3.643 1.89 0 3.039 1.24 3.039 3.33v8.326h2.037v-8.464c0-3.4-1.804-5.03-4.49-5.03-2.002 0-3.246.902-3.867 2.255h-.173v-2.082h-1.968v13.321h2.037Zm21.126 0v-7.88h9.54v7.88h2.167V15.748h-2.167v7.846h-9.54v-7.846h-2.166v17.618h2.166Zm21.237.375c2.682 0 4.642-1.363 5.261-3.389l-1.96-.559c-.516 1.398-1.71 2.096-3.301 2.096-2.382 0-4.024-1.563-4.118-4.436h9.586v-.874c0-4.996-2.923-6.707-5.674-6.707-3.577 0-5.95 2.864-5.95 6.987 0 4.122 2.339 6.882 6.156 6.882Zm3.593-8.247h-7.499c.137-1.982 1.586-3.748 3.9-3.748 2.193 0 3.599 1.592 3.599 3.748Zm8.98 8.247c2.29 0 3.487-1.255 3.898-2.126h.102v1.812h2.018v-8.816c0-4.251-3.18-4.74-4.856-4.74-1.984 0-4.24.698-5.266 3.137l1.915.697c.444-.976 1.496-2.021 3.42-2.021 1.854 0 2.77 1.002 2.77 2.718v.07c0 .993-.992.906-3.386 1.22-2.437.322-5.096.87-5.096 3.937 0 2.614 1.984 4.112 4.48 4.112Zm.5-1.874c-1.584 0-2.731-.74-2.731-2.184 0-1.585 1.383-2.078 2.934-2.29.843-.105 3.103-.351 3.44-.774v1.902c0 1.69-1.281 3.346-3.642 3.346Zm11.517 1.5V15.747h-1.875v17.618h1.875Zm8.227.374c.76 0 1.245-.137 1.522-.24l-.415-1.817c-.173.034-.45.102-.9.102-.899 0-1.763-.274-1.763-1.988v-7.681h2.836v-1.715h-2.836v-3.154h-2.04v3.154h-2.006v1.715h2.006v8.23c0 2.297 1.867 3.394 3.596 3.394Zm6.532-.375v-7.949c0-2.305 1.458-3.613 3.443-3.613 1.892 0 3.034 1.205 3.034 3.304v8.258h2.01V24.97c0-3.398-1.789-4.99-4.464-4.99-2.063 0-3.239.87-3.852 2.237h-.17v-6.469h-2.012v17.618h2.011ZM85.84 63.73V46.11h-2.25v17.618h2.25Zm6.187 0v-8.326c0-1.951 1.434-3.33 3.042-3.33 1.565 0 2.658 1.015 2.658 2.532v9.124h2.098v-8.673c0-1.717 1.083-2.983 2.972-2.983 1.468 0 2.727.772 2.727 2.74v8.916h2.063v-8.916c0-3.13-1.696-4.579-4.091-4.579-1.923 0-3.33.876-4.021 2.255h-.14c-.664-1.422-1.836-2.255-3.601-2.255-1.749 0-3.042.833-3.602 2.255h-.175v-2.081h-1.993v13.32h2.063Zm23.04.375c2.29 0 3.487-1.255 3.898-2.126h.102v1.812h2.018v-8.816c0-4.252-3.18-4.74-4.856-4.74-1.983 0-4.24.697-5.266 3.137l1.915.696c.444-.975 1.496-2.02 3.42-2.02 1.855 0 2.77 1.001 2.77 2.717v.07c0 .993-.992.906-3.386 1.22-2.437.322-5.096.871-5.096 3.938 0 2.613 1.984 4.112 4.48 4.112Zm.126-1.875c-1.585 0-2.732-.74-2.732-2.183 0-1.585 1.383-2.078 2.934-2.29.843-.105 3.103-.352 3.44-.775v1.902c0 1.691-1.281 3.346-3.642 3.346Zm14.823 6.748c3.155 0 5.692-1.455 5.692-4.885V50.407h-1.954v2.114h-.206c-.446-.693-1.269-2.287-3.84-2.287-3.326 0-5.623 2.668-5.623 6.756 0 4.157 2.4 6.513 5.588 6.513 2.572 0 3.395-1.524 3.84-2.252h.172v2.702c0 2.217-1.543 3.222-3.669 3.222-2.391 0-3.231-1.273-3.771-2.01l-1.612 1.144c.823 1.394 2.443 2.668 5.383 2.668Zm.102-7.122c-2.5 0-3.784-1.97-3.784-4.786 0-2.744 1.25-4.96 3.784-4.96 2.432 0 3.715 2.04 3.715 4.96 0 2.991-1.317 4.786-3.715 4.786Zm10.464-13.495c.822 0 1.5-.59 1.5-1.312 0-.722-.678-1.312-1.5-1.312-.821 0-1.5.59-1.5 1.312 0 .722.679 1.312 1.5 1.312Zm1.125 15.369v-13.12h-1.875v13.12h1.875Zm5.787 0v-8.014c0-2.324 1.433-3.642 3.385-3.642 1.89 0 3.039 1.24 3.039 3.33v8.326h2.037v-8.465c0-3.4-1.804-5.03-4.49-5.03-2.002 0-3.246.902-3.867 2.255h-.173v-2.081h-1.968v13.32h2.037Zm17.392 5.248c3.155 0 5.692-1.455 5.692-4.885V50.407h-1.954v2.114h-.206c-.446-.693-1.269-2.287-3.84-2.287-3.326 0-5.623 2.668-5.623 6.756 0 4.157 2.4 6.513 5.589 6.513 2.571 0 3.394-1.524 3.84-2.252h.171v2.702c0 2.217-1.543 3.222-3.669 3.222-2.391 0-3.231-1.273-3.771-2.01l-1.612 1.144c.823 1.394 2.443 2.668 5.383 2.668Zm.102-7.122c-2.5 0-3.784-1.97-3.784-4.786 0-2.744 1.25-4.96 3.784-4.96 2.432 0 3.715 2.04 3.715 4.96 0 2.991-1.317 4.786-3.715 4.786Zm18.959 1.874v-7.88h7.592v-1.893h-7.592v-5.953h8.378v-1.892h-10.498v17.618h2.12Zm17.002.375c3.586 0 6-2.76 6-6.918 0-4.192-2.414-6.952-6-6.952s-6 2.76-6 6.952c0 4.158 2.414 6.918 6 6.918Zm.187-1.875c-2.704 0-3.937-2.365-3.937-5.043s1.233-5.078 3.937-5.078c2.705 0 3.937 2.4 3.937 5.078 0 2.678-1.232 5.043-3.937 5.043Zm13.512 1.875c2.023 0 3.348-1.076 3.976-2.429h.14v2.255h2.057V50.61h-2.058v7.874c0 2.497-1.918 3.642-3.453 3.642-1.709 0-2.93-1.249-2.93-3.191v-8.326h-2.057v8.465c0 3.4 1.813 5.03 4.325 5.03Zm11.585-.375v-8.014c0-2.324 1.433-3.642 3.385-3.642 1.89 0 3.039 1.24 3.039 3.33v8.326h2.037v-8.465c0-3.4-1.804-5.03-4.49-5.03-2.002 0-3.245.902-3.867 2.255h-.173v-2.081h-1.968v13.32h2.037Zm17.425.375c2.537 0 3.394-1.592 3.84-2.319h.24v2.042h1.954V46.11h-2.023v6.54h-.171c-.446-.692-1.234-2.284-3.806-2.284-3.326 0-5.623 2.664-5.623 6.85 0 4.222 2.297 6.887 5.589 6.887Zm.069-1.875c-2.5 0-3.783-2.26-3.783-5.112 0-2.817 1.25-5.009 3.783-5.009 2.432 0 3.716 2.018 3.716 5.009 0 3.026-1.318 5.112-3.716 5.112Zm13.82 1.875c2.29 0 3.488-1.255 3.898-2.126h.103v1.812h2.017v-8.816c0-4.252-3.18-4.74-4.856-4.74-1.983 0-4.24.697-5.266 3.137l1.915.696c.445-.975 1.496-2.02 3.42-2.02 1.855 0 2.77 1.001 2.77 2.717v.07c0 .993-.992.906-3.386 1.22-2.436.322-5.095.871-5.095 3.938 0 2.613 1.983 4.112 4.48 4.112Zm.501-1.875c-1.585 0-2.732-.74-2.732-2.183 0-1.585 1.383-2.078 2.935-2.29.843-.105 3.102-.352 3.44-.775v1.902c0 1.691-1.282 3.346-3.643 3.346Zm13.744 1.875c.761 0 1.245-.138 1.522-.24l-.415-1.818c-.173.035-.45.103-.9.103-.898 0-1.763-.274-1.763-1.989v-7.68h2.836v-1.715h-2.836V47.61h-2.04v3.155h-2.006v1.714h2.006v8.23c0 2.297 1.867 3.395 3.596 3.395Zm5.646-15.744c.822 0 1.5-.59 1.5-1.312 0-.722-.678-1.312-1.5-1.312-.82 0-1.5.59-1.5 1.312 0 .722.68 1.312 1.5 1.312Zm.75 15.369v-13.12h-1.874v13.12h1.874Zm9.374.375c3.586 0 6-2.76 6-6.918 0-4.192-2.414-6.952-6-6.952s-6 2.76-6 6.952c0 4.158 2.414 6.918 6 6.918Zm-.187-1.875c-2.705 0-3.937-2.365-3.937-5.043s1.232-5.078 3.937-5.078c2.704 0 3.936 2.4 3.936 5.078 0 2.678-1.232 5.043-3.936 5.043Zm11.223 1.5v-8.014c0-2.324 1.433-3.642 3.385-3.642 1.89 0 3.039 1.24 3.039 3.33v8.326h2.037v-8.465c0-3.4-1.804-5.03-4.49-5.03-2.002 0-3.245.902-3.867 2.255h-.173v-2.081h-1.968v13.32h2.037Z",
8091
+ fill: "#FFF",
8092
+ fillRule: "nonzero"
8093
+ }), /*#__PURE__*/react.createElement("g", {
8094
+ fill: "#5ACCE6",
8095
+ fillRule: "nonzero"
8096
+ }, /*#__PURE__*/react.createElement("path", {
8097
+ d: "M59.786 15.503H45.014a3.65 3.65 0 0 0-3.65 3.65v14.771a3.65 3.65 0 0 0 3.65 3.65h14.772a3.65 3.65 0 0 0 3.649-3.65V19.152a3.65 3.65 0 0 0-3.65-3.65Zm-14.772 1.46h14.772c1.209 0 2.19.98 2.19 2.19v14.771c0 1.21-.981 2.19-2.19 2.19H45.014a2.19 2.19 0 0 1-2.19-2.19V19.152c0-1.21.98-2.19 2.19-2.19Z"
8098
+ }), /*#__PURE__*/react.createElement("path", {
8099
+ d: "M59.786 15.21a3.942 3.942 0 0 1 3.942 3.942v14.772a3.942 3.942 0 0 1-3.942 3.942H45.014a3.942 3.942 0 0 1-3.942-3.942V19.152a3.942 3.942 0 0 1 3.942-3.942h14.772Zm0 .585H45.014a3.357 3.357 0 0 0-3.357 3.357v14.772a3.357 3.357 0 0 0 3.357 3.357h14.772a3.357 3.357 0 0 0 3.357-3.357V19.152a3.357 3.357 0 0 0-3.357-3.357Zm0 .875a2.482 2.482 0 0 1 2.482 2.482v14.772a2.482 2.482 0 0 1-2.482 2.482H45.014a2.482 2.482 0 0 1-2.483-2.482V19.152a2.482 2.482 0 0 1 2.483-2.482h14.772Zm0 .585H45.014c-1.048 0-1.898.85-1.898 1.897v14.772c0 1.048.85 1.897 1.898 1.897h14.772c1.047 0 1.897-.85 1.897-1.897V19.152c0-1.048-.85-1.897-1.897-1.897ZM31.584 15.503H16.812a3.65 3.65 0 0 0-3.65 3.65v14.771a3.65 3.65 0 0 0 3.65 3.65h14.772a3.65 3.65 0 0 0 3.65-3.65V19.152a3.65 3.65 0 0 0-3.65-3.65Zm-14.772 1.46h14.772c1.21 0 2.19.98 2.19 2.19v14.771c0 1.21-.98 2.19-2.19 2.19H16.812a2.19 2.19 0 0 1-2.19-2.19V19.152c0-1.21.98-2.19 2.19-2.19Z"
8100
+ }), /*#__PURE__*/react.createElement("path", {
8101
+ d: "M31.584 15.21a3.942 3.942 0 0 1 3.942 3.942v14.772a3.942 3.942 0 0 1-3.942 3.942H16.812a3.942 3.942 0 0 1-3.942-3.942V19.152a3.942 3.942 0 0 1 3.942-3.942h14.772Zm0 .585H16.812a3.357 3.357 0 0 0-3.357 3.357v14.772a3.357 3.357 0 0 0 3.357 3.357h14.772a3.357 3.357 0 0 0 3.357-3.357V19.152a3.357 3.357 0 0 0-3.357-3.357Zm0 .875a2.482 2.482 0 0 1 2.482 2.482v14.772a2.482 2.482 0 0 1-2.482 2.482H16.812a2.482 2.482 0 0 1-2.482-2.482V19.152a2.482 2.482 0 0 1 2.482-2.482h14.772Zm0 .585H16.812c-1.048 0-1.897.85-1.897 1.897v14.772c0 1.048.85 1.897 1.897 1.897h14.772c1.048 0 1.897-.85 1.897-1.897V19.152c0-1.048-.85-1.897-1.897-1.897ZM59.786 43.704H45.014a3.65 3.65 0 0 0-3.65 3.65v14.772a3.65 3.65 0 0 0 3.65 3.649h14.772a3.65 3.65 0 0 0 3.649-3.65V47.355a3.65 3.65 0 0 0-3.65-3.65Zm-14.772 1.46h14.772c1.209 0 2.19.98 2.19 2.19v14.772c0 1.209-.981 2.19-2.19 2.19H45.014a2.19 2.19 0 0 1-2.19-2.19V47.354c0-1.21.98-2.19 2.19-2.19Z"
8102
+ }), /*#__PURE__*/react.createElement("path", {
8103
+ d: "M59.786 43.412a3.942 3.942 0 0 1 3.942 3.942v14.772a3.942 3.942 0 0 1-3.942 3.942H45.014a3.942 3.942 0 0 1-3.942-3.942V47.354a3.942 3.942 0 0 1 3.942-3.942h14.772Zm0 .585H45.014a3.357 3.357 0 0 0-3.357 3.357v14.772a3.357 3.357 0 0 0 3.357 3.357h14.772a3.357 3.357 0 0 0 3.357-3.357V47.354a3.357 3.357 0 0 0-3.357-3.357Zm0 .874a2.482 2.482 0 0 1 2.482 2.483v14.772a2.482 2.482 0 0 1-2.482 2.482H45.014a2.482 2.482 0 0 1-2.483-2.482V47.354a2.482 2.482 0 0 1 2.483-2.483h14.772Zm0 .585H45.014c-1.048 0-1.898.85-1.898 1.898v14.772c0 1.047.85 1.897 1.898 1.897h14.772c1.047 0 1.897-.85 1.897-1.897V47.354c0-1.048-.85-1.898-1.897-1.898ZM31.584 43.704H16.812a3.65 3.65 0 0 0-3.65 3.65v14.772a3.65 3.65 0 0 0 3.65 3.649h14.772a3.65 3.65 0 0 0 3.65-3.65V47.355a3.65 3.65 0 0 0-3.65-3.65Zm-14.772 1.46h14.772c1.21 0 2.19.98 2.19 2.19v14.772c0 1.209-.98 2.19-2.19 2.19H16.812a2.19 2.19 0 0 1-2.19-2.19V47.354c0-1.21.98-2.19 2.19-2.19Z"
8104
+ }), /*#__PURE__*/react.createElement("path", {
8105
+ d: "M31.584 43.412a3.942 3.942 0 0 1 3.942 3.942v14.772a3.942 3.942 0 0 1-3.942 3.942H16.812a3.942 3.942 0 0 1-3.942-3.942V47.354a3.942 3.942 0 0 1 3.942-3.942h14.772Zm0 .585H16.812a3.357 3.357 0 0 0-3.357 3.357v14.772a3.357 3.357 0 0 0 3.357 3.357h14.772a3.357 3.357 0 0 0 3.357-3.357V47.354a3.357 3.357 0 0 0-3.357-3.357Zm0 .874a2.482 2.482 0 0 1 2.482 2.483v14.772a2.482 2.482 0 0 1-2.482 2.482H16.812a2.482 2.482 0 0 1-2.482-2.482V47.354a2.482 2.482 0 0 1 2.482-2.483h14.772Zm0 .585H16.812c-1.048 0-1.897.85-1.897 1.898v14.772c0 1.047.85 1.897 1.897 1.897h14.772c1.048 0 1.897-.85 1.897-1.897V47.354c0-1.048-.85-1.898-1.897-1.898Z"
8106
+ }))));
8107
+ };
8108
+ logoDarkBackGround.defaultProps = {
8109
+ width: "320",
8110
+ height: "81",
8111
+ viewBox: "0 0 320 81",
8112
+ xmlns: "http://www.w3.org/2000/svg"
8113
+ };
8082
8114
  var magnifier = function magnifier(props) {
8083
8115
  return /*#__PURE__*/react.createElement("svg", props, /*#__PURE__*/react.createElement("g", {
8084
8116
  fill: "none",
@@ -11381,6 +11413,7 @@ const ICONS = {
11381
11413
  'list-bullets': listBullets,
11382
11414
  lock: lock,
11383
11415
  'logo-ohif-small': logoOhifSmall,
11416
+ 'logo-dark-background': logoDarkBackGround,
11384
11417
  magnifier: magnifier,
11385
11418
  exclamation: exclamation,
11386
11419
  'notificationwarning-diamond': notificationwarningDiamond,
@@ -20779,6 +20812,12 @@ const Tooltip = ({
20779
20812
  handleMouseOverDebounced.cancel();
20780
20813
  handleMouseOutDebounced();
20781
20814
  };
20815
+ (0,react.useEffect)(() => {
20816
+ return () => {
20817
+ handleMouseOverDebounced.cancel();
20818
+ handleMouseOutDebounced.cancel();
20819
+ };
20820
+ }, [handleMouseOverDebounced, handleMouseOutDebounced]);
20782
20821
  (0,react.useEffect)(() => {
20783
20822
  if (!isOpen && onHide) {
20784
20823
  onHide();
@@ -60096,7 +60135,7 @@ const renderDoubleRangeSetting = option => {
60096
60135
  className: "flex w-full items-center",
60097
60136
  key: option.id
60098
60137
  }, /*#__PURE__*/react.createElement(components_InputDoubleRange, {
60099
- values: option.values,
60138
+ values: option.value,
60100
60139
  onChange: option.commands,
60101
60140
  minValue: option.min,
60102
60141
  maxValue: option.max,
@@ -62555,6 +62594,13 @@ function ToolboxUI_extends() { ToolboxUI_extends = Object.assign ? Object.assign
62555
62594
 
62556
62595
 
62557
62596
  const ItemsPerRow = 4;
62597
+ function usePrevious(value) {
62598
+ const ref = (0,react.useRef)();
62599
+ (0,react.useEffect)(() => {
62600
+ ref.current = value;
62601
+ });
62602
+ return ref.current;
62603
+ }
62558
62604
 
62559
62605
  /**
62560
62606
  * Just refactoring from the toolbox component to make it more readable
@@ -62569,6 +62615,26 @@ function ToolboxUI(props) {
62569
62615
  title,
62570
62616
  useCollapsedPanel = true
62571
62617
  } = props;
62618
+ const prevToolOptions = usePrevious(activeToolOptions);
62619
+ (0,react.useEffect)(() => {
62620
+ if (!activeToolOptions) {
62621
+ return;
62622
+ }
62623
+ activeToolOptions.forEach((option, index) => {
62624
+ const prevOption = prevToolOptions ? prevToolOptions[index] : undefined;
62625
+ if (!prevOption || option.value !== prevOption.value) {
62626
+ const isOptionValid = option.condition ? option.condition({
62627
+ options: activeToolOptions
62628
+ }) : true;
62629
+ if (isOptionValid) {
62630
+ const {
62631
+ commands
62632
+ } = option;
62633
+ commands(option.value);
62634
+ }
62635
+ }
62636
+ });
62637
+ }, [activeToolOptions]);
62572
62638
  const render = () => {
62573
62639
  return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
62574
62640
  className: "flex flex-col bg-black"
@@ -62590,7 +62656,8 @@ function ToolboxUI(props) {
62590
62656
  id,
62591
62657
  commands
62592
62658
  }) => {
62593
- handleToolSelect(itemId || id);
62659
+ const idToUse = itemId || id;
62660
+ handleToolSelect(idToUse);
62594
62661
  props.onInteraction({
62595
62662
  itemId,
62596
62663
  commands
@@ -62658,6 +62725,7 @@ function Toolbox({
62658
62725
  buttonSection: buttonSectionId
62659
62726
  });
62660
62727
  const prevButtonIdsRef = (0,react.useRef)();
62728
+ const prevToolboxStateRef = (0,react.useRef)();
62661
62729
  (0,react.useEffect)(() => {
62662
62730
  const currentButtonIdsStr = JSON.stringify(toolbarButtons.map(button => {
62663
62731
  const {
@@ -62669,10 +62737,17 @@ function Toolbox({
62669
62737
  }
62670
62738
  return `${id}-${componentProps.disabled}`;
62671
62739
  }));
62672
- if (prevButtonIdsRef.current === currentButtonIdsStr) {
62740
+ const currentToolBoxStateStr = JSON.stringify(Object.keys(toolboxState.toolOptions).map(tool => {
62741
+ const options = toolboxState.toolOptions[tool];
62742
+ if (Array.isArray(options)) {
62743
+ return options?.map(option => `${option.id}-${option.value}`);
62744
+ }
62745
+ }));
62746
+ if (prevButtonIdsRef.current === currentButtonIdsStr && prevToolboxStateRef.current === currentToolBoxStateStr) {
62673
62747
  return;
62674
62748
  }
62675
62749
  prevButtonIdsRef.current = currentButtonIdsStr;
62750
+ prevToolboxStateRef.current = currentToolBoxStateStr;
62676
62751
  const initializeOptionsWithEnhancements = toolbarButtons.reduce((accumulator, toolbarButton) => {
62677
62752
  const {
62678
62753
  id: buttonId,
@@ -62684,9 +62759,11 @@ function Toolbox({
62684
62759
  if (typeof option.optionComponent === 'function') {
62685
62760
  return option;
62686
62761
  }
62762
+ const value = toolboxState.toolOptions?.[parentId]?.find(prop => prop.id === option.id)?.value ?? option.value;
62763
+ const updatedOptions = toolboxState.toolOptions?.[parentId];
62687
62764
  return {
62688
62765
  ...option,
62689
- value: toolboxState.toolOptions?.[parentId]?.find(prop => prop.id === option.id)?.value ?? option.value,
62766
+ value,
62690
62767
  commands: value => {
62691
62768
  api.handleToolOptionChange(parentId, option.id, value);
62692
62769
  const {
@@ -62707,14 +62784,16 @@ function Toolbox({
62707
62784
  commandOptions: {
62708
62785
  ...command.commandOptions,
62709
62786
  ...option,
62710
- value
62787
+ value,
62788
+ options: updatedOptions
62711
62789
  }
62712
62790
  });
62713
62791
  } else if (isFunction) {
62714
62792
  command({
62715
62793
  value,
62716
62794
  commandsManager,
62717
- servicesManager
62795
+ servicesManager,
62796
+ options: updatedOptions
62718
62797
  });
62719
62798
  }
62720
62799
  });
@@ -62741,7 +62820,7 @@ function Toolbox({
62741
62820
  return accumulator;
62742
62821
  }, {});
62743
62822
  api.initializeToolOptions(initializeOptionsWithEnhancements);
62744
- }, [toolbarButtons, api]);
62823
+ }, [toolbarButtons, api, toolboxState]);
62745
62824
  const handleToolOptionChange = (toolName, optionName, newValue) => {
62746
62825
  api.handleToolOptionChange(toolName, optionName, newValue);
62747
62826
  };
@@ -65145,7 +65224,7 @@ class ToolbarService extends pubSubServiceInterface/* PubSubService */.R {
65145
65224
  }
65146
65225
  const itemId = interaction.itemId ?? interaction.id;
65147
65226
  interaction.itemId = itemId;
65148
- const commands = Array.isArray(interaction.commands) ? interaction.commands : [interaction.commands];
65227
+ let commands = Array.isArray(interaction.commands) ? interaction.commands : [interaction.commands];
65149
65228
  if (!commands?.length) {
65150
65229
  this.refreshToolbarState({
65151
65230
  ...options?.refreshProps,
@@ -65157,6 +65236,24 @@ class ToolbarService extends pubSubServiceInterface/* PubSubService */.R {
65157
65236
  ...options,
65158
65237
  ...interaction
65159
65238
  };
65239
+ commands = commands.map(command => {
65240
+ if (typeof command === 'function') {
65241
+ return () => {
65242
+ command({
65243
+ ...commandOptions,
65244
+ commandsManager: this._commandsManager,
65245
+ servicesManager: this._servicesManager
65246
+ });
65247
+ };
65248
+ }
65249
+ return command;
65250
+ });
65251
+
65252
+ // if still no commands, return
65253
+ commands = commands.filter(Boolean);
65254
+ if (!commands.length) {
65255
+ return;
65256
+ }
65160
65257
 
65161
65258
  // Loop through commands and run them with the combined options
65162
65259
  this._commandsManager.run(commands, commandOptions);
@@ -65372,6 +65469,26 @@ class ToolbarService extends pubSubServiceInterface/* PubSubService */.R {
65372
65469
  }) || [];
65373
65470
  }
65374
65471
 
65472
+ /**
65473
+ * Retrieves the tool name for a given button.
65474
+ * @param button - The button object.
65475
+ * @returns The tool name associated with the button.
65476
+ */
65477
+ getToolNameForButton(button) {
65478
+ const {
65479
+ props
65480
+ } = button;
65481
+ const commands = props?.commands || button.commands;
65482
+ const commandsArray = Array.isArray(commands) ? commands : [commands];
65483
+ const firstCommand = commandsArray[0];
65484
+ if (firstCommand?.commandOptions) {
65485
+ return firstCommand.commandOptions.toolName ?? props?.id ?? button.id;
65486
+ }
65487
+
65488
+ // use id as a fallback for toolName
65489
+ return props?.id ?? button.id;
65490
+ }
65491
+
65375
65492
  /**
65376
65493
  *
65377
65494
  * @param {*} btn
@@ -69626,18 +69743,23 @@ class CommandsManager {
69626
69743
 
69627
69744
  // Execute each command in the array
69628
69745
  let result;
69629
- commands.forEach(({
69630
- commandName,
69631
- commandOptions,
69632
- context
69633
- }) => {
69746
+ commands.forEach(command => {
69747
+ const {
69748
+ commandName,
69749
+ commandOptions,
69750
+ context
69751
+ } = command;
69634
69752
  if (commandName) {
69635
69753
  result = this.runCommand(commandName, {
69636
69754
  ...commandOptions,
69637
69755
  ...options
69638
69756
  }, context);
69639
69757
  } else {
69640
- console.warn('No command name supplied in', toRun);
69758
+ if (typeof command === 'function') {
69759
+ result = command();
69760
+ } else {
69761
+ console.warn('No command name supplied in', toRun);
69762
+ }
69641
69763
  }
69642
69764
  });
69643
69765
  return result;
@@ -72558,14 +72680,14 @@ webpackContext.id = 64692;
72558
72680
  /* harmony import */ var _eventTarget__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(51884);
72559
72681
  /* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(71702);
72560
72682
  /* harmony import */ var _loaders_volumeLoader__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(82041);
72561
- /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(42781);
72683
+ /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(35678);
72562
72684
  /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(90601);
72563
72685
  /* harmony import */ var _helpers_volumeNewImageEventDispatcher__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(46820);
72564
72686
  /* harmony import */ var _Viewport__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(11512);
72565
72687
  /* harmony import */ var _vtkClasses_vtkSlabCamera__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(65280);
72566
72688
  /* harmony import */ var _utilities_transformWorldToIndex__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(58237);
72567
- /* harmony import */ var _utilities_transferFunctionUtils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(22350);
72568
- /* harmony import */ var _utilities_colormap__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(51539);
72689
+ /* harmony import */ var _utilities_colormap__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(51539);
72690
+ /* harmony import */ var _utilities_transferFunctionUtils__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(22350);
72569
72691
 
72570
72692
 
72571
72693
 
@@ -72662,7 +72784,7 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_14__/* ["def
72662
72784
  const voiRange = volumeId
72663
72785
  ? voiRanges.find((range) => range.volumeId === volumeId)?.voiRange
72664
72786
  : voiRanges[0]?.voiRange;
72665
- const volumeColormap = this.getColormap(applicableVolumeActorInfo);
72787
+ const volumeColormap = this.getColormap(volumeId);
72666
72788
  const colormap = volumeId && volumeColormap ? volumeColormap : latestColormap;
72667
72789
  return {
72668
72790
  colormap: colormap,
@@ -72675,7 +72797,11 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_14__/* ["def
72675
72797
  preset,
72676
72798
  };
72677
72799
  };
72678
- this.getColormap = (applicableVolumeActorInfo) => {
72800
+ this.getColormap = (volumeId) => {
72801
+ const applicableVolumeActorInfo = this._getApplicableVolumeActor(volumeId);
72802
+ if (!applicableVolumeActorInfo) {
72803
+ return;
72804
+ }
72679
72805
  const { volumeActor } = applicableVolumeActorInfo;
72680
72806
  const cfun = volumeActor.getProperty().getRGBTransferFunction(0);
72681
72807
  const { nodes } = cfun.getState();
@@ -72683,37 +72809,8 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_14__/* ["def
72683
72809
  acc.push(node.x, node.r, node.g, node.b);
72684
72810
  return acc;
72685
72811
  }, []);
72686
- const colormapsVTK = _kitware_vtk_js_Rendering_Core_ColorTransferFunction_ColorMaps__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.rgbPresetNames.map((presetName) => _kitware_vtk_js_Rendering_Core_ColorTransferFunction_ColorMaps__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.getPresetByName(presetName));
72687
- const colormapsCS3D = (0,_utilities_colormap__WEBPACK_IMPORTED_MODULE_18__.getColormapNames)().map((colormapName) => (0,_utilities_colormap__WEBPACK_IMPORTED_MODULE_18__.getColormap)(colormapName));
72688
- const colormaps = colormapsVTK.concat(colormapsCS3D);
72689
- const matchedColormap = colormaps.find((colormap) => {
72690
- const { RGBPoints: presetRGBPoints } = colormap;
72691
- if (presetRGBPoints.length !== RGBPoints.length) {
72692
- return false;
72693
- }
72694
- for (let i = 0; i < presetRGBPoints.length; i += 4) {
72695
- if (!(0,_utilities__WEBPACK_IMPORTED_MODULE_11__.isEqual)(presetRGBPoints.slice(i + 1, i + 4), RGBPoints.slice(i + 1, i + 4))) {
72696
- return false;
72697
- }
72698
- }
72699
- return true;
72700
- });
72701
- if (!matchedColormap) {
72702
- return null;
72703
- }
72704
- const opacityPoints = volumeActor
72705
- .getProperty()
72706
- .getScalarOpacity(0)
72707
- .getDataPointer();
72708
- const opacity = [];
72709
- for (let i = 0; i < opacityPoints.length; i += 2) {
72710
- opacity.push({ value: opacityPoints[i], opacity: opacityPoints[i + 1] });
72711
- }
72712
- const colormap = {
72713
- name: matchedColormap.Name,
72714
- opacity: opacity,
72715
- };
72716
- return colormap;
72812
+ const matchedColormap = (0,_utilities_colormap__WEBPACK_IMPORTED_MODULE_17__.findMatchingColormap)(RGBPoints, volumeActor);
72813
+ return matchedColormap;
72717
72814
  };
72718
72815
  this.getRotation = () => {
72719
72816
  const { viewUp: currentViewUp, viewPlaneNormal, flipVertical, } = this.getCamera();
@@ -72943,20 +73040,39 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_14__/* ["def
72943
73040
  const volumeIdToUse = applicableVolumeActorInfo.volumeId;
72944
73041
  const cfun = this._getOrCreateColorTransferFunction(volumeIdToUse);
72945
73042
  (0,_utilities__WEBPACK_IMPORTED_MODULE_11__.invertRgbTransferFunction)(cfun);
72946
- const { voiRange, VOILUTFunction } = this.getProperties(volumeIdToUse);
72947
73043
  this.viewportProperties.invert = inverted;
72948
73044
  if (!suppressEvents) {
72949
73045
  const eventDetail = {
72950
- viewportId: this.id,
72951
- range: voiRange,
72952
- volumeId: volumeIdToUse,
72953
- VOILUTFunction: VOILUTFunction,
72954
- invert: inverted,
73046
+ ...this.getVOIModifiedEventDetail(volumeIdToUse),
72955
73047
  invertStateChanged: true,
72956
73048
  };
72957
73049
  (0,_utilities__WEBPACK_IMPORTED_MODULE_11__.triggerEvent)(this.element, _enums__WEBPACK_IMPORTED_MODULE_6__.Events.VOI_MODIFIED, eventDetail);
72958
73050
  }
72959
73051
  }
73052
+ getVOIModifiedEventDetail(volumeId) {
73053
+ const applicableVolumeActorInfo = this._getApplicableVolumeActor(volumeId);
73054
+ if (!applicableVolumeActorInfo) {
73055
+ throw new Error(`No actor found for the given volumeId: ${volumeId}`);
73056
+ }
73057
+ const volumeActor = applicableVolumeActorInfo.volumeActor;
73058
+ const transferFunction = volumeActor
73059
+ .getProperty()
73060
+ .getRGBTransferFunction(0);
73061
+ const range = transferFunction.getMappingRange();
73062
+ const matchedColormap = this.getColormap(volumeId);
73063
+ const { VOILUTFunction, invert } = this.getProperties(volumeId);
73064
+ return {
73065
+ viewportId: this.id,
73066
+ range: {
73067
+ lower: range[0],
73068
+ upper: range[1],
73069
+ },
73070
+ volumeId: applicableVolumeActorInfo.volumeId,
73071
+ VOILUTFunction: VOILUTFunction,
73072
+ colormap: matchedColormap,
73073
+ invert,
73074
+ };
73075
+ }
72960
73076
  _getOrCreateColorTransferFunction(volumeId) {
72961
73077
  const applicableVolumeActorInfo = this._getApplicableVolumeActor(volumeId);
72962
73078
  if (!applicableVolumeActorInfo) {
@@ -73008,20 +73124,10 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_14__/* ["def
73008
73124
  .getProperty()
73009
73125
  .getRGBTransferFunction(0)
73010
73126
  .setRange(lower, upper);
73011
- if (!this.initialTransferFunctionNodes) {
73012
- const transferFunction = volumeActor
73013
- .getProperty()
73014
- .getRGBTransferFunction(0);
73015
- this.initialTransferFunctionNodes =
73016
- (0,_utilities_transferFunctionUtils__WEBPACK_IMPORTED_MODULE_17__.getTransferFunctionNodes)(transferFunction);
73017
- }
73018
73127
  }
73019
73128
  if (!suppressEvents) {
73020
73129
  const eventDetail = {
73021
- viewportId: this.id,
73022
- range: voiRange,
73023
- volumeId: volumeIdToUse,
73024
- VOILUTFunction: VOILUTFunction,
73130
+ ...this.getVOIModifiedEventDetail(volumeIdToUse),
73025
73131
  };
73026
73132
  (0,_utilities__WEBPACK_IMPORTED_MODULE_11__.triggerEvent)(this.element, _enums__WEBPACK_IMPORTED_MODULE_6__.Events.VOI_MODIFIED, eventDetail);
73027
73133
  }
@@ -73189,6 +73295,7 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_14__/* ["def
73189
73295
  }
73190
73296
  this._setVolumeActors(volumeActors);
73191
73297
  this.viewportStatus = _enums__WEBPACK_IMPORTED_MODULE_6__.ViewportStatus.PRE_RENDER;
73298
+ this.initializeColorTransferFunction(volumeInputArray);
73192
73299
  (0,_utilities__WEBPACK_IMPORTED_MODULE_11__.triggerEvent)(this.element, _enums__WEBPACK_IMPORTED_MODULE_6__.Events.VOLUME_VIEWPORT_NEW_VOLUME, {
73193
73300
  viewportId: this.id,
73194
73301
  volumeActors,
@@ -73219,6 +73326,7 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_14__/* ["def
73219
73326
  });
73220
73327
  }
73221
73328
  this.addActors(volumeActors);
73329
+ this.initializeColorTransferFunction(volumeInputArray);
73222
73330
  if (immediate) {
73223
73331
  this.render();
73224
73332
  }
@@ -73232,6 +73340,13 @@ class BaseVolumeViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_14__/* ["def
73232
73340
  setOrientation(orientation, immediate = true) {
73233
73341
  console.warn('Method "setOrientation" needs implementation');
73234
73342
  }
73343
+ initializeColorTransferFunction(volumeInputArray) {
73344
+ const selectedVolumeId = volumeInputArray[0].volumeId;
73345
+ const colorTransferFunction = this._getOrCreateColorTransferFunction(selectedVolumeId);
73346
+ if (!this.initialTransferFunctionNodes) {
73347
+ this.initialTransferFunctionNodes = (0,_utilities_transferFunctionUtils__WEBPACK_IMPORTED_MODULE_18__.getTransferFunctionNodes)(colorTransferFunction);
73348
+ }
73349
+ }
73235
73350
  _getApplicableVolumeActor(volumeId) {
73236
73351
  if (volumeId !== undefined && !this.getActor(volumeId)) {
73237
73352
  return;
@@ -74304,8 +74419,8 @@ var metaData = __webpack_require__(55692);
74304
74419
  // EXTERNAL MODULE: ../../../node_modules/lodash.clonedeep/index.js
74305
74420
  var lodash_clonedeep = __webpack_require__(48463);
74306
74421
  var lodash_clonedeep_default = /*#__PURE__*/__webpack_require__.n(lodash_clonedeep);
74307
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 72 modules
74308
- var utilities = __webpack_require__(42781);
74422
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 70 modules
74423
+ var utilities = __webpack_require__(35678);
74309
74424
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/Viewport.js
74310
74425
  var Viewport = __webpack_require__(11512);
74311
74426
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/cpuFallback/colors/index.js + 2 modules
@@ -74454,6 +74569,8 @@ var transferFunctionUtils = __webpack_require__(22350);
74454
74569
 
74455
74570
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/transform.js
74456
74571
  var transform = __webpack_require__(18714);
74572
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/colormap.js
74573
+ var colormap = __webpack_require__(51539);
74457
74574
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/StackViewport.js
74458
74575
 
74459
74576
 
@@ -74484,6 +74601,7 @@ var transform = __webpack_require__(18714);
74484
74601
 
74485
74602
 
74486
74603
 
74604
+
74487
74605
 
74488
74606
 
74489
74607
  const EPSILON = 1;
@@ -75090,6 +75208,14 @@ class StackViewport extends Viewport/* default */.A {
75090
75208
  }
75091
75209
  const transferFunction = this.getTransferFunction();
75092
75210
  (0,transferFunctionUtils.setTransferFunctionNodes)(transferFunction, this.initialTransferFunctionNodes);
75211
+ const nodes = (0,transferFunctionUtils.getTransferFunctionNodes)(transferFunction);
75212
+ const RGBPoints = nodes.reduce((acc, node) => {
75213
+ acc.push(node[0], node[1], node[2], node[3]);
75214
+ return acc;
75215
+ }, []);
75216
+ const defaultActor = this.getDefaultActor();
75217
+ const matchedColormap = (0,colormap.findMatchingColormap)(RGBPoints, defaultActor.actor);
75218
+ this.setColormap(matchedColormap);
75093
75219
  }
75094
75220
  resetToDefaultProperties() {
75095
75221
  this.cpuRenderingInvalidated = true;
@@ -76244,8 +76370,8 @@ var enums = __webpack_require__(50002);
76244
76370
  var metaData = __webpack_require__(55692);
76245
76371
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/transform.js
76246
76372
  var rendering_transform = __webpack_require__(18714);
76247
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 72 modules
76248
- var utilities = __webpack_require__(42781);
76373
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 70 modules
76374
+ var utilities = __webpack_require__(35678);
76249
76375
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/Viewport.js
76250
76376
  var Viewport = __webpack_require__(11512);
76251
76377
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/index.js + 5 modules
@@ -77151,7 +77277,7 @@ class VideoViewport extends Viewport/* default */.A {
77151
77277
  /* harmony import */ var _enums_ViewportStatus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(17702);
77152
77278
  /* harmony import */ var _enums_ViewportType__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(21432);
77153
77279
  /* harmony import */ var _renderingEngineCache__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(94070);
77154
- /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(42781);
77280
+ /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(35678);
77155
77281
  /* harmony import */ var _utilities_hasNaNValues__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(73139);
77156
77282
  /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(88903);
77157
77283
  /* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(71702);
@@ -78085,7 +78211,7 @@ class Viewport {
78085
78211
  /* harmony import */ var _cache__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13320);
78086
78212
  /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(88903);
78087
78213
  /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50002);
78088
- /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(42781);
78214
+ /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(35678);
78089
78215
  /* harmony import */ var _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6203);
78090
78216
  /* harmony import */ var _helpers_setDefaultVolumeVOI__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(83853);
78091
78217
  /* harmony import */ var _utilities_transferFunctionUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(22350);
@@ -78261,7 +78387,7 @@ class VolumeViewport extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__/*
78261
78387
  actorEntries.forEach((actorEntry) => {
78262
78388
  const { actor } = actorEntry;
78263
78389
  const mapper = actor.getMapper();
78264
- mapper.setBlendMode(blendMode);
78390
+ mapper.setBlendMode?.(blendMode);
78265
78391
  });
78266
78392
  if (immediate) {
78267
78393
  this.render();
@@ -78345,21 +78471,13 @@ class VolumeViewport extends _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_6__/*
78345
78471
  }
78346
78472
  (0,_helpers_setDefaultVolumeVOI__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)(volumeActor.actor, imageVolume, false);
78347
78473
  if ((0,_utilities__WEBPACK_IMPORTED_MODULE_5__.isImageActor)(volumeActor)) {
78348
- (0,_utilities_transferFunctionUtils__WEBPACK_IMPORTED_MODULE_8__.setTransferFunctionNodes)(volumeActor.actor
78474
+ const transferFunction = volumeActor.actor
78349
78475
  .getProperty()
78350
- .getRGBTransferFunction(0), this.initialTransferFunctionNodes);
78476
+ .getRGBTransferFunction(0);
78477
+ (0,_utilities_transferFunctionUtils__WEBPACK_IMPORTED_MODULE_8__.setTransferFunctionNodes)(transferFunction, this.initialTransferFunctionNodes);
78351
78478
  }
78352
- const range = volumeActor.actor
78353
- .getProperty()
78354
- .getRGBTransferFunction(0)
78355
- .getMappingRange();
78356
78479
  const eventDetails = {
78357
- viewportId: volumeActor.uid,
78358
- range: {
78359
- lower: range[0],
78360
- upper: range[1],
78361
- },
78362
- volumeId: volumeActor.uid,
78480
+ ...super.getVOIModifiedEventDetail(volumeId),
78363
78481
  };
78364
78482
  const resetPan = true;
78365
78483
  const resetZoom = true;
@@ -79731,8 +79849,8 @@ function storedPixelDataToCanvasImageDataPseudocolorLUTPET(image, lutFunction, c
79731
79849
  }
79732
79850
  /* harmony default export */ const rendering_storedPixelDataToCanvasImageDataPseudocolorLUTPET = (storedPixelDataToCanvasImageDataPseudocolorLUTPET);
79733
79851
 
79734
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 72 modules
79735
- var utilities = __webpack_require__(42781);
79852
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 70 modules
79853
+ var utilities = __webpack_require__(35678);
79736
79854
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/renderPseudoColorImage.js
79737
79855
 
79738
79856
 
@@ -80788,8 +80906,8 @@ function createVolumeMapper(imageData, vtkOpenGLTexture) {
80788
80906
  return volumeMapper;
80789
80907
  }
80790
80908
 
80791
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 72 modules
80792
- var utilities = __webpack_require__(42781);
80909
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 70 modules
80910
+ var utilities = __webpack_require__(35678);
80793
80911
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 5 modules
80794
80912
  var enums = __webpack_require__(50002);
80795
80913
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.js
@@ -80902,7 +81020,7 @@ var addImageSlicesToViewports = __webpack_require__(25271);
80902
81020
  /* harmony export */ });
80903
81021
  /* harmony import */ var _loaders_imageLoader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79220);
80904
81022
  /* harmony import */ var _metaData__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55692);
80905
- /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42781);
81023
+ /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(35678);
80906
81024
  /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(50002);
80907
81025
  /* harmony import */ var _cache__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(13320);
80908
81026
 
@@ -81050,7 +81168,7 @@ function _isCurrentImagePTPrescaled(modality, imageVolume) {
81050
81168
  /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__),
81051
81169
  /* harmony export */ g: () => (/* binding */ resetVolumeNewImageState)
81052
81170
  /* harmony export */ });
81053
- /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(42781);
81171
+ /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(35678);
81054
81172
  /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(50002);
81055
81173
  /* harmony import */ var _getRenderingEngine__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49184);
81056
81174
  /* harmony import */ var _BaseVolumeViewport__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6203);
@@ -81120,8 +81238,8 @@ var Events = __webpack_require__(11731);
81120
81238
  var renderingEngineCache = __webpack_require__(94070);
81121
81239
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/eventTarget.js
81122
81240
  var eventTarget = __webpack_require__(51884);
81123
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 72 modules
81124
- var utilities = __webpack_require__(42781);
81241
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 70 modules
81242
+ var utilities = __webpack_require__(35678);
81125
81243
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/vtkClasses/index.js + 27 modules
81126
81244
  var vtkClasses = __webpack_require__(69585);
81127
81245
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ViewportType.js
@@ -82021,6 +82139,14 @@ function vtkRenderWindow(publicAPI, model) {
82021
82139
  macros2.m.setImmediate(publicAPI.render);
82022
82140
  return model._views.map(view => view.captureNextImage ? view.captureNextImage(format, opts) : undefined).filter(i => !!i);
82023
82141
  };
82142
+ publicAPI.addRenderWindow = child => {
82143
+ if (model.childRenderWindows.includes(child)) {
82144
+ return false;
82145
+ }
82146
+ model.childRenderWindows.push(child);
82147
+ publicAPI.modified();
82148
+ return true;
82149
+ };
82024
82150
  }
82025
82151
 
82026
82152
  // ----------------------------------------------------------------------------
@@ -82033,7 +82159,8 @@ const DEFAULT_VALUES = {
82033
82159
  views: [],
82034
82160
  interactor: null,
82035
82161
  neverRendered: true,
82036
- numberOfLayers: 1
82162
+ numberOfLayers: 1,
82163
+ childRenderWindows: []
82037
82164
  };
82038
82165
 
82039
82166
  // ----------------------------------------------------------------------------
@@ -82046,7 +82173,7 @@ function extend(publicAPI, model) {
82046
82173
  macros2.m.obj(publicAPI, model);
82047
82174
  macros2.m.setGet(publicAPI, model, ['interactor', 'numberOfLayers', '_views', 'defaultViewAPI']);
82048
82175
  macros2.m.get(publicAPI, model, ['neverRendered']);
82049
- macros2.m.getArray(publicAPI, model, ['renderers']);
82176
+ macros2.m.getArray(publicAPI, model, ['renderers', 'childRenderWindows']);
82050
82177
  macros2.m.moveToProtected(publicAPI, model, ['views']);
82051
82178
  macros2.m.event(publicAPI, model, 'completion');
82052
82179
 
@@ -82516,11 +82643,11 @@ function vtkForwardPass(publicAPI, model) {
82516
82643
  const numlayers = viewNode.getRenderable().getNumberOfLayers();
82517
82644
 
82518
82645
  // iterate over renderers
82519
- const renderers = viewNode.getChildren();
82646
+ const renderers = viewNode.getRenderable().getRenderersByReference();
82520
82647
  for (let i = 0; i < numlayers; i++) {
82521
82648
  for (let index = 0; index < renderers.length; index++) {
82522
- const renNode = renderers[index];
82523
- const ren = viewNode.getRenderable().getRenderers()[index];
82649
+ const ren = renderers[index];
82650
+ const renNode = viewNode.getViewNodeFor(ren);
82524
82651
  if (ren.getDraw() && ren.getLayer() === i) {
82525
82652
  // check for both opaque and volume actors
82526
82653
  model.opaqueActorCount = 0;
@@ -84066,6 +84193,7 @@ const SCREENSHOT_PLACEHOLDER = {
84066
84193
  width: '100%',
84067
84194
  height: '100%'
84068
84195
  };
84196
+ const parentMethodsToProxy = ['activateTexture', 'deactivateTexture', 'disableCullFace', 'enableCullFace', 'get3DContext', 'getActiveFramebuffer', 'getContext', 'getDefaultTextureByteSize', 'getDefaultTextureInternalFormat', 'getDefaultToWebgl2', 'getGLInformations', 'getGraphicsMemoryInfo', 'getGraphicsResourceForObject', 'getHardwareMaximumLineWidth', 'getPixelData', 'getShaderCache', 'getTextureUnitForTexture', 'getTextureUnitManager', 'getWebgl2', 'makeCurrent', 'releaseGraphicsResources', 'releaseGraphicsResourcesForObject', 'restoreContext', 'setActiveFramebuffer', 'setContext', 'setDefaultToWebgl2', 'setGraphicsResourceForObject'];
84069
84197
  function checkRenderTargetSupport(gl, format, type) {
84070
84198
  // create temporary frame buffer and texture
84071
84199
  const framebuffer = gl.createFramebuffer();
@@ -84115,7 +84243,15 @@ function _preventDefault(e) {
84115
84243
  function vtkOpenGLRenderWindow(publicAPI, model) {
84116
84244
  // Set our className
84117
84245
  model.classHierarchy.push('vtkOpenGLRenderWindow');
84118
- const cachingContextHandler = createContextProxyHandler();
84246
+
84247
+ // Only create a cachingContextHandler if needed
84248
+ let cachingContextHandler;
84249
+ function getCachingContextHandler() {
84250
+ if (!cachingContextHandler) {
84251
+ cachingContextHandler = createContextProxyHandler();
84252
+ }
84253
+ return cachingContextHandler;
84254
+ }
84119
84255
  publicAPI.getViewNodeFactory = () => model.myFactory;
84120
84256
 
84121
84257
  // prevent default context lost handler
@@ -84162,24 +84298,40 @@ function vtkOpenGLRenderWindow(publicAPI, model) {
84162
84298
  }
84163
84299
  publicAPI.prepareNodes();
84164
84300
  publicAPI.addMissingNodes(model.renderable.getRenderersByReference());
84301
+ publicAPI.addMissingNodes(model.renderable.getChildRenderWindowsByReference());
84165
84302
  publicAPI.removeUnusedNodes();
84166
84303
  publicAPI.initialize();
84167
84304
  model.children.forEach(child => {
84168
- child.setOpenGLRenderWindow(publicAPI);
84305
+ // Children can be openGl renderer or openGl render windows
84306
+ // Only openGl renderers have a method setOpenGLRenderWindow
84307
+ child.setOpenGLRenderWindow?.(publicAPI);
84169
84308
  });
84170
84309
  }
84171
84310
  };
84172
84311
  publicAPI.initialize = () => {
84173
84312
  if (!model.initialized) {
84174
- model.context = publicAPI.get3DContext();
84175
- model.textureUnitManager = vtkTextureUnitManager.newInstance();
84176
- model.textureUnitManager.setContext(model.context);
84177
- model.shaderCache.setContext(model.context);
84178
- // initialize blending for transparency
84179
- const gl = model.context;
84180
- gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
84181
- gl.depthFunc(gl.LEQUAL);
84182
- gl.enable(gl.BLEND);
84313
+ // Set root parent if there is one
84314
+ // Some methods of the root parent are proxied (see parentMethodsToProxy)
84315
+ model.rootOpenGLRenderWindow = publicAPI.getLastAncestorOfType('vtkOpenGLRenderWindow');
84316
+ if (model.rootOpenGLRenderWindow) {
84317
+ // Initialize a 2D context that will copy the content of the root parent
84318
+ model.context2D = publicAPI.get2DContext();
84319
+ } else {
84320
+ // Initialize a 3D context that may be used by child render windows
84321
+ model.context = publicAPI.get3DContext();
84322
+ publicAPI.resizeFromChildRenderWindows();
84323
+ if (model.context) {
84324
+ createGLContext();
84325
+ }
84326
+ model.textureUnitManager = vtkTextureUnitManager.newInstance();
84327
+ model.textureUnitManager.setContext(model.context);
84328
+ model.shaderCache.setContext(model.context);
84329
+ // initialize blending for transparency
84330
+ const gl = model.context;
84331
+ gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
84332
+ gl.depthFunc(gl.LEQUAL);
84333
+ gl.enable(gl.BLEND);
84334
+ }
84183
84335
  model.initialized = true;
84184
84336
  }
84185
84337
  };
@@ -84258,7 +84410,11 @@ function vtkOpenGLRenderWindow(publicAPI, model) {
84258
84410
  vtkDebugMacro('using webgl1');
84259
84411
  result = model.canvas.getContext('webgl', options) || model.canvas.getContext('experimental-webgl', options);
84260
84412
  }
84261
- return new Proxy(result, cachingContextHandler);
84413
+ return new Proxy(result, getCachingContextHandler());
84414
+ };
84415
+ publicAPI.get2DContext = function () {
84416
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
84417
+ return model.canvas.getContext('2d', options);
84262
84418
  };
84263
84419
  publicAPI.restoreContext = () => {
84264
84420
  const rp = vtkRenderPass$1.newInstance();
@@ -84590,6 +84746,37 @@ function vtkOpenGLRenderWindow(publicAPI, model) {
84590
84746
  if (model.notifyStartCaptureImage) {
84591
84747
  getCanvasDataURL();
84592
84748
  }
84749
+ publicAPI.copyParentContent();
84750
+ const childrenRW = model.renderable.getChildRenderWindowsByReference();
84751
+ for (let i = 0; i < childrenRW.length; ++i) {
84752
+ publicAPI.getViewNodeFor(childrenRW[i])?.traverseAllPasses();
84753
+ }
84754
+ };
84755
+ publicAPI.copyParentContent = () => {
84756
+ const rootParent = model.rootOpenGLRenderWindow;
84757
+ if (!rootParent || !model.context2D) {
84758
+ return;
84759
+ }
84760
+ const parentCanvas = rootParent.getCanvas();
84761
+ const selfCanvas = model.canvas;
84762
+ model.context2D.drawImage(parentCanvas, 0, parentCanvas.height - selfCanvas.height,
84763
+ // source y axis is inverted
84764
+ selfCanvas.width, selfCanvas.height, 0, 0, selfCanvas.width, selfCanvas.height);
84765
+ };
84766
+ publicAPI.resizeFromChildRenderWindows = () => {
84767
+ // Adapt the size of the parent render window to the child render windows
84768
+ const childrenRW = model.renderable.getChildRenderWindowsByReference();
84769
+ if (childrenRW.length > 0) {
84770
+ const maxSize = [0, 0];
84771
+ for (let i = 0; i < childrenRW.length; ++i) {
84772
+ const childSize = publicAPI.getViewNodeFor(childrenRW[i])?.getSize();
84773
+ if (childSize) {
84774
+ maxSize[0] = childSize[0] > maxSize[0] ? childSize[0] : maxSize[0];
84775
+ maxSize[1] = childSize[1] > maxSize[1] ? childSize[1] : maxSize[1];
84776
+ }
84777
+ }
84778
+ publicAPI.setSize(...maxSize);
84779
+ }
84593
84780
  };
84594
84781
  publicAPI.disableCullFace = () => {
84595
84782
  if (model.cullFaceEnabled) {
@@ -84638,7 +84825,11 @@ function vtkOpenGLRenderWindow(publicAPI, model) {
84638
84825
  model.canvas.removeEventListener('webglcontextlost', _preventDefault);
84639
84826
  model.canvas.removeEventListener('webglcontextrestored', publicAPI.restoreContext);
84640
84827
  }
84641
- publicAPI.delete = macros2.m.chain(clearEvents, publicAPI.delete, publicAPI.setViewStream, deleteGLContext);
84828
+ publicAPI.delete = macros2.m.chain(() => {
84829
+ if (model.context) {
84830
+ deleteGLContext();
84831
+ }
84832
+ }, clearEvents, publicAPI.delete, publicAPI.setViewStream);
84642
84833
 
84643
84834
  // Do not trigger modified for performance reasons
84644
84835
  publicAPI.setActiveFramebuffer = newActiveFramebuffer => {
@@ -84707,6 +84898,20 @@ function vtkOpenGLRenderWindow(publicAPI, model) {
84707
84898
  glRen?.releaseGraphicsResources();
84708
84899
  });
84709
84900
  };
84901
+
84902
+ // Proxy some methods if needed
84903
+ const publicAPIBeforeProxy = {
84904
+ ...publicAPI
84905
+ };
84906
+ parentMethodsToProxy.forEach(methodName => {
84907
+ publicAPI[methodName] = function () {
84908
+ if (model.rootOpenGLRenderWindow) {
84909
+ // Proxy only methods when the render window has a parent
84910
+ return model.rootOpenGLRenderWindow[methodName](...arguments);
84911
+ }
84912
+ return publicAPIBeforeProxy[methodName](...arguments);
84913
+ };
84914
+ });
84710
84915
  }
84711
84916
 
84712
84917
  // ----------------------------------------------------------------------------
@@ -84718,6 +84923,7 @@ const RenderWindow_DEFAULT_VALUES = {
84718
84923
  shaderCache: null,
84719
84924
  initialized: false,
84720
84925
  context: null,
84926
+ context2D: null,
84721
84927
  canvas: null,
84722
84928
  cursorVisibility: true,
84723
84929
  cursor: 'pointer',
@@ -84745,9 +84951,10 @@ function RenderWindow_extend(publicAPI, model) {
84745
84951
  vtkRenderWindowViewNode$1.extend(publicAPI, model, initialValues);
84746
84952
 
84747
84953
  // Create internal instances
84748
- model.canvas = document.createElement('canvas');
84749
- model.canvas.style.width = '100%';
84750
- createGLContext();
84954
+ if (!model.canvas) {
84955
+ model.canvas = document.createElement('canvas');
84956
+ model.canvas.style.width = '100%';
84957
+ }
84751
84958
  if (!model.selector) {
84752
84959
  model.selector = HardwareSelector_vtkHardwareSelector.newInstance();
84753
84960
  model.selector.setOpenGLRenderWindow(publicAPI);
@@ -84766,21 +84973,17 @@ function RenderWindow_extend(publicAPI, model) {
84766
84973
  model._graphicsResourceHash = new Map();
84767
84974
  model._glInformation = null;
84768
84975
  model.myFactory = ViewNodeFactory/* default.newInstance */.Ay.newInstance();
84769
- /* eslint-disable no-use-before-define */
84770
- model.myFactory.registerOverride('vtkRenderWindow', RenderWindow_newInstance);
84771
- /* eslint-enable no-use-before-define */
84772
-
84773
84976
  model.shaderCache = vtkShaderCache$1.newInstance();
84774
84977
  model.shaderCache.setOpenGLRenderWindow(publicAPI);
84775
84978
 
84776
84979
  // setup default forward pass rendering
84777
84980
  model.renderPasses[0] = vtkForwardPass$1.newInstance();
84778
- macros2.m.event(publicAPI, model, 'imageReady');
84779
84981
 
84780
84982
  // Build VTK API
84781
- macros2.m.get(publicAPI, model, ['shaderCache', 'textureUnitManager', 'webgl2', 'useBackgroundImage', 'activeFramebuffer']);
84782
- macros2.m.setGet(publicAPI, model, ['initialized', 'context', 'canvas', 'renderPasses', 'notifyStartCaptureImage', 'defaultToWebgl2', 'cursor', 'useOffScreen']);
84983
+ macros2.m.get(publicAPI, model, ['shaderCache', 'textureUnitManager', 'webgl2', 'useBackgroundImage', 'activeFramebuffer', 'rootOpenGLRenderWindow']);
84984
+ macros2.m.setGet(publicAPI, model, ['initialized', 'context', 'context2D', 'canvas', 'renderPasses', 'notifyStartCaptureImage', 'defaultToWebgl2', 'cursor', 'useOffScreen']);
84783
84985
  macros2.m.setGetArray(publicAPI, model, ['size'], 2);
84986
+ macros2.m.event(publicAPI, model, 'imageReady');
84784
84987
  macros2.m.event(publicAPI, model, 'windowResizeEvent');
84785
84988
 
84786
84989
  // Object methods
@@ -84806,6 +85009,9 @@ var RenderWindow_vtkRenderWindow = {
84806
85009
  popMonitorGLContextCount
84807
85010
  };
84808
85011
 
85012
+ // Register ourself to OpenGL backend if imported
85013
+ (0,ViewNodeFactory/* registerOverride */.c9)('vtkRenderWindow', RenderWindow_newInstance);
85014
+
84809
85015
 
84810
85016
 
84811
85017
  // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Rendering/OpenGL/Actor.js
@@ -86087,6 +86293,10 @@ const vtkStreamingOpenGLVolumeMapper_newInstance = macros/* default.newInstance
86087
86293
 
86088
86294
 
86089
86295
 
86296
+ const CLASS_MAPPING = Object.create(null);
86297
+ function registerOverride(className, fn) {
86298
+ CLASS_MAPPING[className] = fn;
86299
+ }
86090
86300
  function vtkStreamingOpenGLViewNodeFactory(publicAPI, model) {
86091
86301
  model.classHierarchy.push('vtkStreamingOpenGLViewNodeFactory');
86092
86302
  publicAPI.createNode = (dataObject) => {
@@ -86113,6 +86323,7 @@ function vtkStreamingOpenGLViewNodeFactory(publicAPI, model) {
86113
86323
  vn.setMyFactory(publicAPI);
86114
86324
  return vn;
86115
86325
  };
86326
+ model.overrides = CLASS_MAPPING;
86116
86327
  model.getModelInitialValues = (dataObject) => {
86117
86328
  const initialValues = {};
86118
86329
  const className = dataObject.getClassName();
@@ -86127,22 +86338,22 @@ function vtkStreamingOpenGLViewNodeFactory_extend(publicAPI, model, initialValue
86127
86338
  Object.assign(model, vtkStreamingOpenGLViewNodeFactory_DEFAULT_VALUES, initialValues);
86128
86339
  SceneGraph_ViewNodeFactory/* default.extend */.Ay.extend(publicAPI, model, initialValues);
86129
86340
  vtkStreamingOpenGLViewNodeFactory(publicAPI, model);
86130
- publicAPI.registerOverride('vtkActor', Actor/* default.newInstance */.Ay.newInstance);
86131
- publicAPI.registerOverride('vtkActor2D', Actor2D/* default.newInstance */.Ay.newInstance);
86132
- publicAPI.registerOverride('vtkCamera', Camera/* default.newInstance */.Ay.newInstance);
86133
- publicAPI.registerOverride('vtkGlyph3DMapper', vtkGlyph3DMapper.newInstance);
86134
- publicAPI.registerOverride('vtkImageMapper', ImageMapper/* default.newInstance */.Ay.newInstance);
86135
- publicAPI.registerOverride('vtkImageSlice', ImageSlice/* default.newInstance */.Ay.newInstance);
86136
- publicAPI.registerOverride('vtkMapper', PolyDataMapper/* default.newInstance */.Ay.newInstance);
86137
- publicAPI.registerOverride('vtkPixelSpaceCallbackMapper', PixelSpaceCallbackMapper/* default.newInstance */.Ay.newInstance);
86138
- publicAPI.registerOverride('vtkRenderer', Renderer/* default.newInstance */.Ay.newInstance);
86139
- publicAPI.registerOverride('vtkSkybox', Skybox/* default.newInstance */.Ay.newInstance);
86140
- publicAPI.registerOverride('vtkSphereMapper', vtkSphereMapper.newInstance);
86141
- publicAPI.registerOverride('vtkStickMapper', vtkStickMapper.newInstance);
86142
- publicAPI.registerOverride('vtkTexture', Texture/* default.newInstance */.Ay.newInstance);
86143
- publicAPI.registerOverride('vtkVolume', Volume/* default.newInstance */.Ay.newInstance);
86144
- publicAPI.registerOverride('vtkVolumeMapper', VolumeMapper/* default.newInstance */.Ay.newInstance);
86145
- publicAPI.registerOverride('vtkSharedVolumeMapper', vtkClasses_vtkStreamingOpenGLVolumeMapper.newInstance);
86341
+ registerOverride('vtkActor', Actor/* default.newInstance */.Ay.newInstance);
86342
+ registerOverride('vtkActor2D', Actor2D/* default.newInstance */.Ay.newInstance);
86343
+ registerOverride('vtkCamera', Camera/* default.newInstance */.Ay.newInstance);
86344
+ registerOverride('vtkGlyph3DMapper', vtkGlyph3DMapper.newInstance);
86345
+ registerOverride('vtkImageMapper', ImageMapper/* default.newInstance */.Ay.newInstance);
86346
+ registerOverride('vtkImageSlice', ImageSlice/* default.newInstance */.Ay.newInstance);
86347
+ registerOverride('vtkMapper', PolyDataMapper/* default.newInstance */.Ay.newInstance);
86348
+ registerOverride('vtkPixelSpaceCallbackMapper', PixelSpaceCallbackMapper/* default.newInstance */.Ay.newInstance);
86349
+ registerOverride('vtkRenderer', Renderer/* default.newInstance */.Ay.newInstance);
86350
+ registerOverride('vtkSkybox', Skybox/* default.newInstance */.Ay.newInstance);
86351
+ registerOverride('vtkSphereMapper', vtkSphereMapper.newInstance);
86352
+ registerOverride('vtkStickMapper', vtkStickMapper.newInstance);
86353
+ registerOverride('vtkTexture', Texture/* default.newInstance */.Ay.newInstance);
86354
+ registerOverride('vtkVolume', Volume/* default.newInstance */.Ay.newInstance);
86355
+ registerOverride('vtkVolumeMapper', VolumeMapper/* default.newInstance */.Ay.newInstance);
86356
+ registerOverride('vtkSharedVolumeMapper', vtkClasses_vtkStreamingOpenGLVolumeMapper.newInstance);
86146
86357
  }
86147
86358
  const vtkStreamingOpenGLViewNodeFactory_newInstance = macros/* default.newInstance */.Ay.newInstance(vtkStreamingOpenGLViewNodeFactory_extend, 'vtkStreamingOpenGLViewNodeFactory');
86148
86359
  /* harmony default export */ const vtkClasses_vtkStreamingOpenGLViewNodeFactory = ({ newInstance: vtkStreamingOpenGLViewNodeFactory_newInstance, extend: vtkStreamingOpenGLViewNodeFactory_extend });
@@ -86158,7 +86369,7 @@ function vtkStreamingOpenGLRenderWindow_extend(publicAPI, model, initialValues =
86158
86369
  Object.assign(model, initialValues);
86159
86370
  RenderWindow_vtkRenderWindow.extend(publicAPI, model, initialValues);
86160
86371
  model.myFactory = vtkClasses_vtkStreamingOpenGLViewNodeFactory.newInstance();
86161
- model.myFactory.registerOverride('vtkRenderWindow', vtkStreamingOpenGLRenderWindow_newInstance);
86372
+ registerOverride('vtkRenderWindow', vtkStreamingOpenGLRenderWindow_newInstance);
86162
86373
  vtkStreamingOpenGLRenderWindow(publicAPI, model);
86163
86374
  }
86164
86375
  const vtkStreamingOpenGLRenderWindow_newInstance = macros/* default.newInstance */.Ay.newInstance(vtkStreamingOpenGLRenderWindow_extend, 'vtkStreamingOpenGLRenderWindow');
@@ -88018,7 +88229,7 @@ Settings.getDefaultSettings().set('useCursors', true);
88018
88229
  /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
88019
88230
  /* harmony export */ });
88020
88231
  /* unused harmony export Cache */
88021
- /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(42781);
88232
+ /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(35678);
88022
88233
  /* harmony import */ var _eventTarget__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(51884);
88023
88234
  /* harmony import */ var _enums_Events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11731);
88024
88235
  /* harmony import */ var _classes_ImageVolume__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(77076);
@@ -88500,8 +88711,8 @@ function isTypedArray(obj) {
88500
88711
  obj instanceof Float64Array);
88501
88712
  }
88502
88713
 
88503
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 72 modules
88504
- var utilities = __webpack_require__(42781);
88714
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 70 modules
88715
+ var utilities = __webpack_require__(35678);
88505
88716
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/vtkClasses/index.js + 27 modules
88506
88717
  var vtkClasses = __webpack_require__(69585);
88507
88718
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/cache/cache.js
@@ -96575,8 +96786,8 @@ async function createAndCacheGeometry(geometryId, options) {
96575
96786
 
96576
96787
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/loaders/ProgressiveRetrieveImages.js + 4 modules
96577
96788
  var ProgressiveRetrieveImages = __webpack_require__(71090);
96578
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 72 modules
96579
- var utilities = __webpack_require__(42781);
96789
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 70 modules
96790
+ var utilities = __webpack_require__(35678);
96580
96791
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/triggerEvent.js
96581
96792
  var triggerEvent = __webpack_require__(13292);
96582
96793
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/index.js + 5 modules
@@ -96644,8 +96855,8 @@ function e(e,t,r,n){return new(r||(r=Promise))((function(o,a){function i(e){try{
96644
96855
  var enums = __webpack_require__(50002);
96645
96856
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/getRenderingEngine.js
96646
96857
  var getRenderingEngine = __webpack_require__(49184);
96647
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 72 modules
96648
- var utilities = __webpack_require__(42781);
96858
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 70 modules
96859
+ var utilities = __webpack_require__(35678);
96649
96860
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/webWorkerManager/webWorkerManager.js
96650
96861
  var webWorkerManager = __webpack_require__(61874);
96651
96862
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/init.js
@@ -96967,8 +97178,8 @@ const interleavedRetrieveConfiguration = [
96967
97178
 
96968
97179
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/loaders/imageLoader.js
96969
97180
  var imageLoader = __webpack_require__(79220);
96970
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 72 modules
96971
- var utilities = __webpack_require__(42781);
97181
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 70 modules
97182
+ var utilities = __webpack_require__(35678);
96972
97183
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/requestPool/imageLoadPoolManager.js
96973
97184
  var imageLoadPoolManager = __webpack_require__(775);
96974
97185
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/cache/index.js
@@ -97269,7 +97480,7 @@ __webpack_require__.r(__webpack_exports__);
97269
97480
  /* harmony import */ var _cache__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13320);
97270
97481
  /* harmony import */ var _enums_Events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11731);
97271
97482
  /* harmony import */ var _eventTarget__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(51884);
97272
- /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42781);
97483
+ /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(35678);
97273
97484
  /* harmony import */ var _requestPool_imageLoadPoolManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(775);
97274
97485
  /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(92136);
97275
97486
 
@@ -97539,7 +97750,7 @@ __webpack_require__.r(__webpack_exports__);
97539
97750
  /* harmony import */ var _utilities_triggerEvent__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(13292);
97540
97751
  /* harmony import */ var lodash_clonedeep__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(48463);
97541
97752
  /* harmony import */ var lodash_clonedeep__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_clonedeep__WEBPACK_IMPORTED_MODULE_8__);
97542
- /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(42781);
97753
+ /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(35678);
97543
97754
  /* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(71702);
97544
97755
  /* harmony import */ var _utilities_cacheUtils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(51631);
97545
97756
 
@@ -97927,7 +98138,7 @@ imageLoadPoolManager.setMaxSimultaneousRequests(_enums_RequestType__WEBPACK_IMPO
97927
98138
  /* harmony export */ R: () => (/* binding */ RequestPoolManager)
97928
98139
  /* harmony export */ });
97929
98140
  /* harmony import */ var _enums_RequestType__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15453);
97930
- /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42781);
98141
+ /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(35678);
97931
98142
 
97932
98143
 
97933
98144
  class RequestPoolManager {
@@ -98085,6 +98296,25 @@ class RequestPoolManager {
98085
98296
 
98086
98297
 
98087
98298
 
98299
+ /***/ }),
98300
+
98301
+ /***/ 37319:
98302
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
98303
+
98304
+ "use strict";
98305
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
98306
+ /* harmony export */ N: () => (/* binding */ actorIsA),
98307
+ /* harmony export */ e: () => (/* binding */ isImageActor)
98308
+ /* harmony export */ });
98309
+ function isImageActor(actorEntry) {
98310
+ return (actorIsA(actorEntry, 'vtkVolume') || actorIsA(actorEntry, 'vtkImageSlice'));
98311
+ }
98312
+ function actorIsA(actorEntry, actorType) {
98313
+ const actorToCheck = 'isA' in actorEntry ? actorEntry : actorEntry.actor;
98314
+ return !!actorToCheck.isA(actorType);
98315
+ }
98316
+
98317
+
98088
98318
  /***/ }),
98089
98319
 
98090
98320
  /***/ 51631:
@@ -98188,10 +98418,17 @@ function _updateImageWithScalarDataView(image, scalarData, offset) {
98188
98418
  "use strict";
98189
98419
  __webpack_require__.r(__webpack_exports__);
98190
98420
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
98421
+ /* harmony export */ findMatchingColormap: () => (/* binding */ findMatchingColormap),
98191
98422
  /* harmony export */ getColormap: () => (/* binding */ getColormap),
98192
98423
  /* harmony export */ getColormapNames: () => (/* binding */ getColormapNames),
98193
98424
  /* harmony export */ registerColormap: () => (/* binding */ registerColormap)
98194
98425
  /* harmony export */ });
98426
+ /* harmony import */ var _kitware_vtk_js_Rendering_Core_ColorTransferFunction_ColorMaps__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12882);
98427
+ /* harmony import */ var _isEqual__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65342);
98428
+ /* harmony import */ var _actorCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(37319);
98429
+
98430
+
98431
+
98195
98432
  const _colormaps = new Map();
98196
98433
  function registerColormap(colormap) {
98197
98434
  _colormaps.set(colormap.Name, colormap);
@@ -98202,6 +98439,47 @@ function getColormap(name) {
98202
98439
  function getColormapNames() {
98203
98440
  return Array.from(_colormaps.keys());
98204
98441
  }
98442
+ function findMatchingColormap(rgbPoints, actor) {
98443
+ const colormapsVTK = _kitware_vtk_js_Rendering_Core_ColorTransferFunction_ColorMaps__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.rgbPresetNames.map((presetName) => _kitware_vtk_js_Rendering_Core_ColorTransferFunction_ColorMaps__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.getPresetByName(presetName));
98444
+ const colormapsCS3D = getColormapNames().map((colormapName) => getColormap(colormapName));
98445
+ const colormaps = colormapsVTK.concat(colormapsCS3D);
98446
+ const matchedColormap = colormaps.find((colormap) => {
98447
+ const { RGBPoints: presetRGBPoints } = colormap;
98448
+ if (presetRGBPoints.length !== rgbPoints.length) {
98449
+ return false;
98450
+ }
98451
+ for (let i = 0; i < presetRGBPoints.length; i += 4) {
98452
+ if (!(0,_isEqual__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(presetRGBPoints.slice(i + 1, i + 4), rgbPoints.slice(i + 1, i + 4))) {
98453
+ return false;
98454
+ }
98455
+ }
98456
+ return true;
98457
+ });
98458
+ if (!matchedColormap) {
98459
+ return null;
98460
+ }
98461
+ const opacity = [];
98462
+ if ((0,_actorCheck__WEBPACK_IMPORTED_MODULE_2__/* .actorIsA */ .N)(actor, 'vtkVolume')) {
98463
+ const opacityPoints = actor
98464
+ .getProperty()
98465
+ .getScalarOpacity(0)
98466
+ .getDataPointer();
98467
+ if (!opacityPoints) {
98468
+ return {
98469
+ name: matchedColormap.Name,
98470
+ };
98471
+ }
98472
+ for (let i = 0; i < opacityPoints.length; i += 2) {
98473
+ opacity.push({
98474
+ value: opacityPoints[i],
98475
+ opacity: opacityPoints[i + 1],
98476
+ });
98477
+ }
98478
+ }
98479
+ return {
98480
+ name: matchedColormap.Name,
98481
+ };
98482
+ }
98205
98483
 
98206
98484
 
98207
98485
 
@@ -98523,7 +98801,7 @@ function hasNaNValues(input) {
98523
98801
 
98524
98802
  /***/ }),
98525
98803
 
98526
- /***/ 42781:
98804
+ /***/ 35678:
98527
98805
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
98528
98806
 
98529
98807
  "use strict";
@@ -98535,7 +98813,7 @@ __webpack_require__.d(__webpack_exports__, {
98535
98813
  PointsManager: () => (/* reexport */ PointsManager),
98536
98814
  ProgressiveIterator: () => (/* reexport */ ProgressiveIterator),
98537
98815
  VoxelManager: () => (/* reexport */ VoxelManager),
98538
- actorIsA: () => (/* reexport */ actorIsA),
98816
+ actorIsA: () => (/* reexport */ actorCheck/* actorIsA */.N),
98539
98817
  applyPreset: () => (/* reexport */ applyPreset),
98540
98818
  cacheUtils: () => (/* reexport */ cacheUtils),
98541
98819
  calculateViewportsSpatialRegistration: () => (/* reexport */ utilities_calculateViewportsSpatialRegistration),
@@ -98589,8 +98867,8 @@ __webpack_require__.d(__webpack_exports__, {
98589
98867
  imageToWorldCoords: () => (/* reexport */ imageToWorldCoords),
98590
98868
  indexWithinDimensions: () => (/* reexport */ indexWithinDimensions),
98591
98869
  invertRgbTransferFunction: () => (/* reexport */ invertRgbTransferFunction),
98592
- isEqual: () => (/* reexport */ isEqual),
98593
- isImageActor: () => (/* reexport */ isImageActor),
98870
+ isEqual: () => (/* reexport */ isEqual/* default */.A),
98871
+ isImageActor: () => (/* reexport */ actorCheck/* isImageActor */.e),
98594
98872
  isOpposite: () => (/* reexport */ isOpposite),
98595
98873
  isPTPrescaledWithSUV: () => (/* reexport */ utilities_isPTPrescaledWithSUV),
98596
98874
  isValidVolume: () => (/* reexport */ isValidVolume),
@@ -98993,40 +99271,8 @@ function clamp(value, min, max) {
98993
99271
  }
98994
99272
 
98995
99273
 
98996
- ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/isEqual.js
98997
- function areNumbersEqualWithTolerance(num1, num2, tolerance) {
98998
- return Math.abs(num1 - num2) <= tolerance;
98999
- }
99000
- function areArraysEqual(arr1, arr2, tolerance = 1e-5) {
99001
- if (arr1.length !== arr2.length) {
99002
- return false;
99003
- }
99004
- for (let i = 0; i < arr1.length; i++) {
99005
- if (!areNumbersEqualWithTolerance(arr1[i], arr2[i], tolerance)) {
99006
- return false;
99007
- }
99008
- }
99009
- return true;
99010
- }
99011
- function isNumberType(value) {
99012
- return typeof value === 'number';
99013
- }
99014
- function isNumberArrayLike(value) {
99015
- return 'length' in value && typeof value[0] === 'number';
99016
- }
99017
- function isEqual(v1, v2, tolerance = 1e-5) {
99018
- if (typeof v1 !== typeof v2 || v1 === null || v2 === null) {
99019
- return false;
99020
- }
99021
- if (isNumberType(v1) && isNumberType(v2)) {
99022
- return areNumbersEqualWithTolerance(v1, v2, tolerance);
99023
- }
99024
- if (isNumberArrayLike(v1) && isNumberArrayLike(v2)) {
99025
- return areArraysEqual(v1, v2, tolerance);
99026
- }
99027
- return false;
99028
- }
99029
-
99274
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/isEqual.js
99275
+ var isEqual = __webpack_require__(65342);
99030
99276
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/isOpposite.js
99031
99277
  function isOpposite(v1, v2, tolerance = 1e-5) {
99032
99278
  return (Math.abs(v1[0] + v2[0]) < tolerance &&
@@ -99540,15 +99786,8 @@ function snapFocalPointToSlice(focalPoint, position, sliceRange, viewPlaneNormal
99540
99786
 
99541
99787
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/getImageSliceDataForVolumeViewport.js
99542
99788
  var getImageSliceDataForVolumeViewport = __webpack_require__(97508);
99543
- ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/actorCheck.js
99544
- function isImageActor(actorEntry) {
99545
- return (actorIsA(actorEntry, 'vtkVolume') || actorIsA(actorEntry, 'vtkImageSlice'));
99546
- }
99547
- function actorIsA(actorEntry, actorType) {
99548
- const actor = actorEntry.actor;
99549
- return !!actor.isA(actorType);
99550
- }
99551
-
99789
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/actorCheck.js
99790
+ var actorCheck = __webpack_require__(37319);
99552
99791
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/getViewportsWithImageURI.js
99553
99792
 
99554
99793
 
@@ -100406,8 +100645,8 @@ function isValidVolume(imageIds) {
100406
100645
  modality === baseMetadata.modality &&
100407
100646
  columns === baseMetadata.columns &&
100408
100647
  rows === baseMetadata.rows &&
100409
- isEqual(imageOrientationPatient, baseMetadata.imageOrientationPatient) &&
100410
- isEqual(pixelSpacing, baseMetadata.pixelSpacing));
100648
+ (0,isEqual/* default */.A)(imageOrientationPatient, baseMetadata.imageOrientationPatient) &&
100649
+ (0,isEqual/* default */.A)(pixelSpacing, baseMetadata.pixelSpacing));
100411
100650
  });
100412
100651
  return validVolume;
100413
100652
  }
@@ -101240,7 +101479,7 @@ class VoxelManager {
101240
101479
  return [scalarData[index++], scalarData[index++], scalarData[index++]];
101241
101480
  }, (index, v) => {
101242
101481
  index *= 3;
101243
- const isChanged = !isEqual(scalarData[index], v);
101482
+ const isChanged = !(0,isEqual/* default */.A)(scalarData[index], v);
101244
101483
  scalarData[index++] = v[0];
101245
101484
  scalarData[index++] = v[1];
101246
101485
  scalarData[index++] = v[2];
@@ -101594,6 +101833,49 @@ function hexToRgb(hex) {
101594
101833
 
101595
101834
 
101596
101835
 
101836
+
101837
+
101838
+ /***/ }),
101839
+
101840
+ /***/ 65342:
101841
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
101842
+
101843
+ "use strict";
101844
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
101845
+ /* harmony export */ A: () => (/* binding */ isEqual)
101846
+ /* harmony export */ });
101847
+ function areNumbersEqualWithTolerance(num1, num2, tolerance) {
101848
+ return Math.abs(num1 - num2) <= tolerance;
101849
+ }
101850
+ function areArraysEqual(arr1, arr2, tolerance = 1e-5) {
101851
+ if (arr1.length !== arr2.length) {
101852
+ return false;
101853
+ }
101854
+ for (let i = 0; i < arr1.length; i++) {
101855
+ if (!areNumbersEqualWithTolerance(arr1[i], arr2[i], tolerance)) {
101856
+ return false;
101857
+ }
101858
+ }
101859
+ return true;
101860
+ }
101861
+ function isNumberType(value) {
101862
+ return typeof value === 'number';
101863
+ }
101864
+ function isNumberArrayLike(value) {
101865
+ return 'length' in value && typeof value[0] === 'number';
101866
+ }
101867
+ function isEqual(v1, v2, tolerance = 1e-5) {
101868
+ if (typeof v1 !== typeof v2 || v1 === null || v2 === null) {
101869
+ return false;
101870
+ }
101871
+ if (isNumberType(v1) && isNumberType(v2)) {
101872
+ return areNumbersEqualWithTolerance(v1, v2, tolerance);
101873
+ }
101874
+ if (isNumberArrayLike(v1) && isNumberArrayLike(v2)) {
101875
+ return areArraysEqual(v1, v2, tolerance);
101876
+ }
101877
+ return false;
101878
+ }
101597
101879
 
101598
101880
 
101599
101881
  /***/ }),
@@ -133442,8 +133724,8 @@ function vtkOpenGLImageMapper(publicAPI, model) {
133442
133724
  // Assuming labelOutlineThicknessArray contains the thickness for each segment
133443
133725
  for (let i = 0; i < lWidth; ++i) {
133444
133726
  // Retrieve the thickness value for the current segment index.
133445
- // If the value is undefined, null, or 0, use the first element's value as a default.
133446
- const thickness = labelOutlineThicknessArray[i] || labelOutlineThicknessArray[0];
133727
+ // If the value is undefined, use the first element's value as a default, otherwise use the value (even if 0)
133728
+ const thickness = typeof labelOutlineThicknessArray[i] !== 'undefined' ? labelOutlineThicknessArray[i] : labelOutlineThicknessArray[0];
133447
133729
  lTable[i] = thickness;
133448
133730
  }
133449
133731
  model.labelOutlineThicknessTexture.releaseGraphicsResources(model._openGLRenderWindow);
@@ -135177,13 +135459,13 @@ function vtkOpenGLRenderer(publicAPI, model) {
135177
135459
  if (!model.renderable.getTransparent()) {
135178
135460
  const background = model.renderable.getBackgroundByReference();
135179
135461
  // renderable ensures that background has 4 entries.
135180
- model.context.clearColor(background[0], background[1], background[2], background[3]);
135462
+ gl.clearColor(background[0], background[1], background[2], background[3]);
135181
135463
  clearMask |= gl.COLOR_BUFFER_BIT;
135182
135464
  }
135183
135465
  if (!model.renderable.getPreserveDepthBuffer()) {
135184
135466
  gl.clearDepth(1.0);
135185
135467
  clearMask |= gl.DEPTH_BUFFER_BIT;
135186
- model.context.depthMask(true);
135468
+ gl.depthMask(true);
135187
135469
  }
135188
135470
  gl.colorMask(true, true, true, true);
135189
135471
  const ts = publicAPI.getTiledSizeAndOrigin();
@@ -139439,7 +139721,7 @@ function vtkOpenGLVolumeMapper(publicAPI, model) {
139439
139721
  const tex = model._openGLRenderWindow.getGraphicsResourceForObject(scalars);
139440
139722
  // rebuild the scalarTexture if the data has changed
139441
139723
  toString = `${image.getMTime()}A${scalars.getMTime()}`;
139442
- const reBuildTex = !tex?.vtkObj || tex?.hash !== toString || model.scalarTextureString !== toString;
139724
+ const reBuildTex = !tex?.vtkObj || tex?.hash !== toString;
139443
139725
  if (reBuildTex) {
139444
139726
  // Build the textures
139445
139727
  const dims = image.getDimensions();
@@ -139448,13 +139730,11 @@ function vtkOpenGLVolumeMapper(publicAPI, model) {
139448
139730
  model.scalarTexture.releaseGraphicsResources(model._openGLRenderWindow);
139449
139731
  model.scalarTexture.resetFormatAndType();
139450
139732
  model.scalarTexture.create3DFilterableFromDataArray(dims[0], dims[1], dims[2], scalars, model.renderable.getPreferSizeOverAccuracy());
139451
- model.scalarTextureString = toString;
139452
139733
  if (scalars) {
139453
- model._openGLRenderWindow.setGraphicsResourceForObject(scalars, model.scalarTexture, model.scalarTextureString);
139734
+ model._openGLRenderWindow.setGraphicsResourceForObject(scalars, model.scalarTexture, toString);
139454
139735
  }
139455
139736
  } else {
139456
139737
  model.scalarTexture = tex.vtkObj;
139457
- model.scalarTextureString = tex.hash;
139458
139738
  }
139459
139739
  if (!model.tris.getCABO().getElementCount()) {
139460
139740
  // build the CABO
@@ -139534,8 +139814,8 @@ function vtkOpenGLVolumeMapper(publicAPI, model) {
139534
139814
  // Assuming labelOutlineThicknessArray contains the thickness for each segment
139535
139815
  for (let i = 0; i < lWidth; ++i) {
139536
139816
  // Retrieve the thickness value for the current segment index.
139537
- // If the value is undefined, null, or 0, use the first element's value as a default.
139538
- const thickness = labelOutlineThicknessArray[i] || labelOutlineThicknessArray[0];
139817
+ // If the value is undefined, use the first element's value as a default, otherwise use the value (even if 0)
139818
+ const thickness = typeof labelOutlineThicknessArray[i] !== 'undefined' ? labelOutlineThicknessArray[i] : labelOutlineThicknessArray[0];
139539
139819
  lTable[i] = thickness;
139540
139820
  }
139541
139821
  model.labelOutlineThicknessTexture.releaseGraphicsResources(model._openGLRenderWindow);
@@ -142860,27 +143140,44 @@ function vtkViewNode(publicAPI, model) {
142860
143140
  }
142861
143141
  return model._parent.getFirstAncestorOfType(type);
142862
143142
  };
143143
+ publicAPI.getLastAncestorOfType = type => {
143144
+ if (!model._parent) {
143145
+ return null;
143146
+ }
143147
+ const lastAncestor = model._parent.getLastAncestorOfType(type);
143148
+ if (lastAncestor) {
143149
+ return lastAncestor;
143150
+ }
143151
+ if (model._parent.isA(type)) {
143152
+ return model._parent;
143153
+ }
143154
+ return null;
143155
+ };
142863
143156
 
142864
143157
  // add a missing node/child for the passed in renderables. This should
142865
143158
  // be called only in between prepareNodes and removeUnusedNodes
142866
143159
  publicAPI.addMissingNode = dobj => {
142867
143160
  if (!dobj) {
142868
- return;
143161
+ return undefined;
142869
143162
  }
142870
- const result = model._renderableChildMap.get(dobj);
143163
+
142871
143164
  // if found just mark as visited
143165
+ const result = model._renderableChildMap.get(dobj);
142872
143166
  if (result !== undefined) {
142873
143167
  result.setVisited(true);
142874
- } else {
142875
- // otherwise create a node
142876
- const newNode = publicAPI.createViewNode(dobj);
142877
- if (newNode) {
142878
- newNode.setParent(publicAPI);
142879
- newNode.setVisited(true);
142880
- model._renderableChildMap.set(dobj, newNode);
142881
- model.children.push(newNode);
142882
- }
143168
+ return result;
143169
+ }
143170
+
143171
+ // otherwise create a node
143172
+ const newNode = publicAPI.createViewNode(dobj);
143173
+ if (newNode) {
143174
+ newNode.setParent(publicAPI);
143175
+ newNode.setVisited(true);
143176
+ model._renderableChildMap.set(dobj, newNode);
143177
+ model.children.push(newNode);
143178
+ return newNode;
142883
143179
  }
143180
+ return undefined;
142884
143181
  };
142885
143182
 
142886
143183
  // add missing nodes/children for the passed in renderables. This should
@@ -142891,20 +143188,7 @@ function vtkViewNode(publicAPI, model) {
142891
143188
  }
142892
143189
  for (let index = 0; index < dataObjs.length; ++index) {
142893
143190
  const dobj = dataObjs[index];
142894
- const result = model._renderableChildMap.get(dobj);
142895
- // if found just mark as visited
142896
- if (result !== undefined) {
142897
- result.setVisited(true);
142898
- } else {
142899
- // otherwise create a node
142900
- const newNode = publicAPI.createViewNode(dobj);
142901
- if (newNode) {
142902
- newNode.setParent(publicAPI);
142903
- newNode.setVisited(true);
142904
- model._renderableChildMap.set(dobj, newNode);
142905
- model.children.push(newNode);
142906
- }
142907
- }
143191
+ publicAPI.addMissingNode(dobj);
142908
143192
  }
142909
143193
  };
142910
143194
 
@@ -142922,6 +143206,10 @@ function vtkViewNode(publicAPI, model) {
142922
143206
  if (cindex === -1) {
142923
143207
  child.setParent(publicAPI);
142924
143208
  model.children.push(child);
143209
+ const childRenderable = child.getRenderable();
143210
+ if (childRenderable) {
143211
+ model._renderableChildMap.set(childRenderable, child);
143212
+ }
142925
143213
  }
142926
143214
  child.setVisited(true);
142927
143215
  }
@@ -143065,9 +143353,6 @@ function vtkViewNodeFactory(publicAPI, model) {
143065
143353
  vn.setMyFactory(publicAPI);
143066
143354
  return vn;
143067
143355
  };
143068
- publicAPI.registerOverride = (className, func) => {
143069
- model.overrides[className] = func;
143070
- };
143071
143356
  }
143072
143357
 
143073
143358
  // ----------------------------------------------------------------------------
@@ -257757,7 +258042,7 @@ var selectOrdinal = function selectOrdinal() {
257757
258042
  /******/ // This function allow to reference async chunks
257758
258043
  /******/ __webpack_require__.u = (chunkId) => {
257759
258044
  /******/ // return url for filenames based on template
257760
- /******/ return "" + ({"54":"histogram-worker","525":"dicom-microscopy-viewer","572":"polySeg","584":"suv-peak-worker"}[chunkId] || chunkId) + ".bundle." + {"7":"6217bd76d0e172d6c2ec","41":"20a35c0c178c2eb2932b","54":"829e14ec12c2b41a4323","94":"78374907fe8caf9aa3f8","109":"b4fee2a22b622839baf5","121":"47f05840a5b3cdf75543","188":"e92f9feb82ac5a007ed9","203":"846a90d1ede185c941b0","206":"7b4b08331eec7dcc259b","236":"7c88c873c95bac8610f3","295":"c935ed0430aa026f7591","297":"194d8985ab974839b5b6","321":"506a5b5c6b8f5fb72014","325":"425742d4a926c9611bbc","342":"36ee082163b01284eeba","445":"38c6d2af64e41cd7c614","448":"2cc5f694c2b649f71da4","473":"f6804e7ac014a561eff8","481":"a2b01ffe06a262fa9375","483":"9263b25c34b349aae80e","487":"fb1b06e3df4fceba34da","525":"d3a56dc9f62df5e11019","530":"207b38c15c4c01e4db0e","544":"1b6998bb61d6f8f88da9","572":"59eaa458d4cdb967e0d4","574":"a17af135ea650e98d81c","584":"426c2e139a25c02d2451","594":"cea96199bc0c0d1f3788","633":"e0dd840d8f1dae9f9d24","644":"1e77691d2eeb96a423b0","669":"fdb4bc855d3928c611f5","699":"9d8f7ac047524db16187","722":"05e8759e64d484f4554d","724":"a56489507de343782981","726":"c8de818cf1a3ff0cf7d2","783":"7f3178f6834b10682c37","835":"4c0eaa2c1a427ee41817","862":"4be5d148c2b1adf4dbf3","889":"466a8946346a3092ecb9","905":"7d33a9d6baed122cde34","907":"32f72275dcb472f13dc9","931":"d270a1fda9a2836c3cc5","939":"9d93b2e47c52338747a2","961":"d8feb064efc2f3f474d9"}[chunkId] + ".js";
258045
+ /******/ return "" + ({"54":"histogram-worker","525":"dicom-microscopy-viewer","572":"polySeg","584":"suv-peak-worker"}[chunkId] || chunkId) + ".bundle." + {"7":"43265474d1b1e3a2e807","41":"973e2ac247f8ce68d557","54":"829e14ec12c2b41a4323","94":"409068694ec9449ad313","109":"b4fee2a22b622839baf5","121":"47f05840a5b3cdf75543","188":"0ac4a3cc5fe776803e7b","203":"3581da3a32a0b720d3a7","206":"167521fec17384ca82bf","236":"f774cdc955890e6cdac9","295":"c935ed0430aa026f7591","297":"194d8985ab974839b5b6","321":"2a5d0ec994ec8d68685d","325":"6a21e6669ba356c10db3","342":"36ee082163b01284eeba","445":"38c6d2af64e41cd7c614","448":"d3684e8fe6e589241663","473":"11f707c8170ade2eb56a","481":"a2b01ffe06a262fa9375","483":"581b242d7b90866fdfb9","487":"47d5719b6292b25fe08f","525":"d3a56dc9f62df5e11019","530":"207b38c15c4c01e4db0e","544":"3542927ec15c3f688c8d","572":"4442dd3318266fddf4d0","574":"4b059c95cd34efdc9cb3","584":"348c016f7f973d05f2d2","594":"d5c4c9d86ad885067f4c","633":"cfdc3e0d026d42ec02ac","644":"1e77691d2eeb96a423b0","669":"d9800c500db3c7506923","699":"33cb12a34f86ed7f7c80","722":"52eb61926d08a08793fe","724":"f24477fbbedb55f4a79b","726":"c8de818cf1a3ff0cf7d2","783":"8801ce765a23c521603e","835":"4c0eaa2c1a427ee41817","862":"9897a9b748078d53f9ab","889":"e5576c74f9e3be4735c3","905":"922f97dd2430233ca0df","907":"2036aa494fadddd85254","931":"d270a1fda9a2836c3cc5","939":"9d93b2e47c52338747a2","961":"91bc4c2b3f412147e127"}[chunkId] + ".js";
257761
258046
  /******/ };
257762
258047
  /******/ })();
257763
258048
  /******/