/*! For license information please see viewer-bundle-vtk.js.LICENSE.txt */ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.GeomPackViewer=t():e.GeomPackViewer=t()}(globalThis,()=>(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function r(e,t,r){var n=Math.round(255*e),o=Math.round(255*t),i=Math.round(255*r);return"rgb(".concat(n,", ").concat(o,", ").concat(i,")")}function n(e){return 3===(e=e.replace(/^#/,"")).length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),[parseInt(e.substr(0,2),16)/255,parseInt(e.substr(2,2),16)/255,parseInt(e.substr(4,2),16)/255]}function o(e,t,r){var n=function(e){var t=Math.round(255*e).toString(16);return 1===t.length?"0"+t:t};return"#"+n(e)+n(t)+n(r)}e.r(t),e.d(t,{ActorManager:()=>Z,AxisIndicator:()=>xt,BaseViewer:()=>ir,BoundsUtils:()=>d,CameraController:()=>R,ColorUtils:()=>i,ControlTypes:()=>le,ControlsBar:()=>pe,DualLayoutMode:()=>Jr,DualViewer:()=>tn,FieldVisualization:()=>It,FormatTypes:()=>qe,GLTFLoader:()=>He,LoaderFactory:()=>ct,MessageHandler:()=>P,MessageTypes:()=>g,OBJLoader:()=>ke,Representation:()=>X,STLLoader:()=>me,ScreenshotCapture:()=>gt,SettingTypes:()=>te,SettingsPanel:()=>ie,StandardControls:()=>ue,StandardViewer:()=>Cr,TextureManager:()=>Ut,TexturedViewer:()=>Rr,VTPLoader:()=>_e,ViewerFactory:()=>sn,ViewerTypes:()=>an,combineBounds:()=>f,createDualViewer:()=>en,createMessageListener:()=>S,createStandardViewer:()=>Sr,createTexturedViewer:()=>Br,default:()=>cn,detectFormat:()=>Je,extractFilename:()=>C,getCenter:()=>c,getDimensions:()=>u,getLoaderConfig:()=>st,getMaxDimension:()=>l,hexToRgb:()=>n,isValidBounds:()=>p,loadMesh:()=>nt,loadMeshes:()=>it,requiresRenderer:()=>$e,rgbToHex:()=>o,rgbToString:()=>r,sendError:()=>m,sendMeshLoaded:()=>O,sendScreenshot:()=>w,sendToParent:()=>b,supportsFields:()=>et,supportsTextures:()=>Qe});const i={rgbToString:r,hexToRgb:n,rgbToHex:o};function a(e,t){if(e){if("string"==typeof e)return s(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,s=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return i=e.done,e},e:function(e){s=!0,o=e},f:function(){try{i||null==t.return||t.return()}finally{if(s)throw o}}}}(e);try{for(r.s();!(t=r.n()).done;){var n=t.value;if(!Number.isFinite(n))return!1}}catch(e){r.e(e)}finally{r.f()}return e[1]>=e[0]&&e[3]>=e[2]&&e[5]>=e[4]}const d={getCenter:c,getMaxDimension:l,getDimensions:u,combineBounds:f,isValidBounds:p};function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function v(e,t,r){return(t=function(e){var t=function(e){if("object"!=h(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=h(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==h(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var g={LOAD_MESH:"LOAD_MESH",LOAD_DUAL_MESH:"LOAD_DUAL_MESH",MESH_LOADED:"MESH_LOADED",MESH_ERROR:"MESH_ERROR",SCREENSHOT:"SCREENSHOT"};function b(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};window.parent&&window.parent!==window&&window.parent.postMessage(function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.renderer=t,this.renderWindow=r,this.config=x(x({},_),n),this.currentBounds=null},t=[{key:"getCamera",value:function(){return this.renderer.getActiveCamera()}},{key:"setBounds",value:function(e){this.currentBounds=e}},{key:"positionInitialCamera",value:function(e){this.currentBounds=e;var t=this.getCamera(),r=c(e),n=l(e)*this.config.distanceMultiplier,o=this.config.initialViewOffset,i=[r[0]+o[0]*n,r[1]+o[1]*n,r[2]+o[2]*n];t.setPosition.apply(t,i),t.setFocalPoint.apply(t,k(r)),t.setViewUp.apply(t,k(this.config.initialViewUp)),this.renderer.resetCamera(),this.renderWindow.render()}},{key:"setCameraView",value:function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:null)||this.currentBounds;if(t){var r=L[e];if(r){var n=this.getCamera(),o=c(t),i=l(t)*this.config.distanceMultiplier,a=[o[0]+r.offset[0]*i,o[1]+r.offset[1]*i,o[2]+r.offset[2]*i];n.setPosition.apply(n,a),n.setFocalPoint.apply(n,k(o)),n.setViewUp.apply(n,k(r.viewUp)),this.renderer.resetCamera(),this.renderWindow.render()}else console.warn("[CameraController] Unknown view direction: ".concat(e))}else console.warn("[CameraController] No bounds available for setCameraView")}},{key:"resetCamera",value:function(){this.currentBounds?this.renderer.resetCamera(this.currentBounds):this.renderer.resetCamera(),this.renderWindow.render()}},{key:"resetClippingRange",value:function(){this.renderer.resetCameraClippingRange(),this.renderWindow.render()}},{key:"setParallelProjection",value:function(e){this.getCamera().setParallelProjection(e),this.renderWindow.render()}},{key:"getParallelProjection",value:function(){return this.getCamera().getParallelProjection()}},{key:"synchronizeFrom",value:function(e){var t=this.getCamera();t.setPosition.apply(t,k(e.getPosition())),t.setFocalPoint.apply(t,k(e.getFocalPoint())),t.setViewUp.apply(t,k(e.getViewUp())),t.setParallelProjection(e.getParallelProjection()),t.setClippingRange.apply(t,k(e.getClippingRange())),t.setParallelScale(e.getParallelScale()),t.setViewAngle(e.getViewAngle())}},{key:"getState",value:function(){var e=this.getCamera();return{position:e.getPosition(),focalPoint:e.getFocalPoint(),viewUp:e.getViewUp(),parallelProjection:e.getParallelProjection(),clippingRange:e.getClippingRange(),parallelScale:e.getParallelScale(),viewAngle:e.getViewAngle()}}},{key:"setState",value:function(e){var t=this.getCamera();e.position&&t.setPosition.apply(t,k(e.position)),e.focalPoint&&t.setFocalPoint.apply(t,k(e.focalPoint)),e.viewUp&&t.setViewUp.apply(t,k(e.viewUp)),void 0!==e.parallelProjection&&t.setParallelProjection(e.parallelProjection),e.clippingRange&&t.setClippingRange.apply(t,k(e.clippingRange)),void 0!==e.parallelScale&&t.setParallelScale(e.parallelScale),void 0!==e.viewAngle&&t.setViewAngle(e.viewAngle),this.renderWindow.render()}},{key:"focusOnPoint",value:function(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.getCamera(),o=n.getFocalPoint(),i=n.getPosition(),a=[i[0]-o[0],i[1]-o[1],i[2]-o[2]],s=Math.sqrt(Math.pow(a[0],2)+Math.pow(a[1],2)+Math.pow(a[2],2));s>0?(a[0]/=s,a[1]/=s,a[2]/=s):(a[0]=0,a[1]=0,a[2]=1),t=null!==r?r*this.config.distanceMultiplier:this.currentBounds?.3*l(this.currentBounds):10;var c=[e[0]+a[0]*t,e[1]+a[1]*t,e[2]+a[2]*t];n.setFocalPoint.apply(n,k(e)),n.setPosition.apply(n,c),this.renderer.resetCameraClippingRange(),this.renderWindow.render()}}],t&&M(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();const R=B;function V(e){return V="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},V(e)}function I(e){return function(e){if(Array.isArray(e))return D(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return D(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?D(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function D(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r-1&&this.actors.splice(t,1)}},{key:"clearActors",value:function(){this.actors=[]}},{key:"setActors",value:function(e){var t=this;this.actors=Array.isArray(e)?e:[e],this.actors.forEach(function(e){return t.configureActor(e,t.settings)})}},{key:"configureActor",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=z(z({},this.settings),t),o=e.getProperty();if(o){if(r.color){var i="string"==typeof r.color?n(r.color):r.color;o.setColor.apply(o,I(i))}if(r.edgeColor){var a="string"==typeof r.edgeColor?n(r.edgeColor):r.edgeColor;o.setEdgeColor.apply(o,I(a))}void 0!==r.ambient&&o.setAmbient(r.ambient),void 0!==r.diffuse&&o.setDiffuse(r.diffuse),void 0!==r.specular&&o.setSpecular(r.specular),void 0!==r.specularPower&&o.setSpecularPower(r.specularPower),void 0!==r.edgeVisibility&&o.setEdgeVisibility(r.edgeVisibility),void 0!==r.lineWidth&&o.setLineWidth(r.lineWidth),void 0!==r.pointSize&&o.setPointSize(r.pointSize),void 0!==r.representation&&o.setRepresentation(r.representation),void 0!==r.opacity&&o.setOpacity(r.opacity)}else console.warn("[ActorManager] Actor has no property object")}},{key:"applySettings",value:function(e){var t=this,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.settings=z(z({},this.settings),e),this.actors.forEach(function(e){return t.configureActor(e,t.settings)}),r&&this.renderWindow.render()}},{key:"setEdgeVisibility",value:function(e){this.applySettings({edgeVisibility:e})}},{key:"setColor",value:function(e){this.applySettings({color:e})}},{key:"setOpacity",value:function(e){this.applySettings({opacity:e})}},{key:"setRepresentation",value:function(e){this.applySettings({representation:e})}},{key:"setLineWidth",value:function(e){this.applySettings({lineWidth:e})}},{key:"setPointSize",value:function(e){this.applySettings({pointSize:e})}},{key:"getSettings",value:function(){return z({},this.settings)}},{key:"applyPanelSettings",value:function(e){var t={};void 0!==e.meshColor&&(t.color=e.meshColor),void 0!==e.pointSize&&(t.pointSize=parseFloat(e.pointSize)),void 0!==e.edgeWidth&&(t.lineWidth=parseFloat(e.edgeWidth)),void 0!==e.representation&&(t.representation=parseInt(e.representation,10)),void 0!==e.opacity&&(t.opacity=parseFloat(e.opacity)),this.applySettings(t)}},{key:"configureForTexture",value:function(e){var t=e.getProperty(),r=e.getMapper();t&&("function"==typeof t.setMetallic&&t.setMetallic(0),"function"==typeof t.setRoughness&&t.setRoughness(1),"function"==typeof t.setInterpolation&&t.setInterpolation(2),"function"==typeof t.setRMTexture&&t.setRMTexture(null),"function"==typeof t.setMetallicRoughnessTexture&&t.setMetallicRoughnessTexture(null)),r&&(r.setScalarVisibility(!1),r.modified())}},{key:"setScalarVisibility",value:function(e,t){e&&(e.setScalarVisibility(t),e.modified())}}],t&&W(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();const Z=Y;function K(e){return K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},K(e)}function q(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function J(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.container=r.container||document.body,this.onApply=r.onApply||function(){},this.enabledSettings=r.enabledSettings||null,this.includeColormapSettings=r.includeColormapSettings||!1,this.panelElement=null,this.overlayElement=null,this.currentValues={},this.settingsConfig=this._buildSettingsConfig(),this.settingsConfig.forEach(function(e){t.currentValues[e.id]=e.default})},(t=[{key:"_buildSettingsConfig",value:function(){var e=this,t=[].concat(re);return this.includeColormapSettings&&(t=t.concat(ne)),this.enabledSettings&&(t=t.filter(function(t){return e.enabledSettings.includes(t.id)})),t}},{key:"generateHTML",value:function(){var e=this,t=null,r='\n
\n
\n

Appearance Settings

\n ';return this.settingsConfig.forEach(function(n){n.section&&n.section!==t&&(t=n.section,r+='\n
\n \n
\n ")),r+=e._generateSettingRow(n)}),r+='\n
\n \n \n
\n
\n '}},{key:"_generateSettingRow",value:function(e){var t="";switch(e.type){case te.NUMBER:t='\n \n ');break;case te.COLOR:t='');break;case te.SELECT:t='";break;case te.CHECKBOX:var r=e.default?"checked":"";return'\n
\n \n
\n ")}return'\n
\n \n ").concat(t,"\n
\n ")}},{key:"render",value:function(){var e=document.createElement("div");e.innerHTML=this.generateHTML(),this.overlayElement=e.querySelector("#settingsOverlay"),this.panelElement=e.querySelector("#settingsPanel"),this.container.appendChild(this.overlayElement),this.container.appendChild(this.panelElement),this._setupEventListeners()}},{key:"attachToExisting",value:function(e,t){this.panelElement=e,this.overlayElement=t,this._setupEventListeners()}},{key:"_setupEventListeners",value:function(){var e=this,t=this.panelElement.querySelector("#applySettings");t&&t.addEventListener("click",function(){return e._handleApply()});var r=this.panelElement.querySelector("#cancelSettings");r&&r.addEventListener("click",function(){return e.close()}),this.overlayElement&&this.overlayElement.addEventListener("click",function(){return e.close()})}},{key:"_handleApply",value:function(){var e=this.getValues();this.currentValues=J({},e),this.onApply(e),this.close()}},{key:"open",value:function(){this.setValues(this.currentValues),this.panelElement&&this.panelElement.classList.add("visible"),this.overlayElement&&this.overlayElement.classList.add("visible")}},{key:"close",value:function(){this.panelElement&&this.panelElement.classList.remove("visible"),this.overlayElement&&this.overlayElement.classList.remove("visible")}},{key:"getValues",value:function(){var e={};return this.settingsConfig.forEach(function(t){var r=document.getElementById(t.id);r&&(t.type===te.CHECKBOX?e[t.id]=r.checked:e[t.id]=r.value)}),e}},{key:"setValues",value:function(e){this.settingsConfig.forEach(function(t){var r=document.getElementById(t.id);r&&void 0!==e[t.id]&&(t.type===te.CHECKBOX?r.checked=e[t.id]:r.value=e[t.id])})}},{key:"updateCurrentValues",value:function(e){this.currentValues=J(J({},this.currentValues),e)}},{key:"getCurrentValues",value:function(){return J({},this.currentValues)}}])&&Q(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();const ie=oe;function ae(e){return ae="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ae(e)}function se(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.container=t.container,this.handlers=t.handlers||{},this.controls=t.controls||this._getDefaultControls(),this.elements={}},t=[{key:"_getDefaultControls",value:function(){return[ue.settingsButton,ue.divider,ue.edgesToggle,ue.divider,ue.cameraButtons,ue.divider,ue.fieldSelector,ue.colormapSelector,ue.screenshotButton,ue.saveMeshButton]}},{key:"generateHTML",value:function(){var e=this,t="";return this.controls.forEach(function(r){if(r)switch(r.type){case le.BUTTON:t+=e._generateButton(r);break;case le.CHECKBOX:t+=e._generateCheckbox(r);break;case le.SELECT:t+=e._generateSelect(r);break;case le.DIVIDER:t+='';break;case le.LABEL:t+=''.concat(r.text||"","");break;case"camera_group":t+=e._generateCameraGroup(r);break;default:"string"==typeof r.html&&(t+=r.html)}}),t}},{key:"_generateButton",value:function(e){var t=e.className||"",r="settingsButton"===e.id?"width:32px;height:32px;padding:0;font-size:16px;":"",n=r?'style="'.concat(r,'"'):"",o=t?'class="'.concat(t,'"'):"";return'")}},{key:"_generateCheckbox",value:function(e){var t=e.checked?"checked":"";return'\n \n ")}},{key:"_generateSelect",value:function(e){var t=e.wrapperClass||"",r=e.hidden?'style="display:none;"':"",n=(e.options||[]).map(function(e){return'")}).join("");return'\n \n ")}},{key:"_generateCameraGroup",value:function(e){return(e.buttons||["+X","-X","+Y","-Y","+Z","-Z"]).map(function(e){var t="view".concat(e.replace("+","Pos").replace("-","Neg"));return'")}).join("")}},{key:"render",value:function(){this.container?(this.container.innerHTML=this.generateHTML(),this._cacheElements(),this._setupEventListeners()):console.warn("[ControlsBar] No container specified")}},{key:"_cacheElements",value:function(){var e=this;this.controls.forEach(function(t){t&&t.id&&(e.elements[t.id]=document.getElementById(t.id))}),["viewPosX","viewNegX","viewPosY","viewNegY","viewPosZ","viewNegZ"].forEach(function(t){var r=document.getElementById(t);r&&(e.elements[t]=r)})}},{key:"_setupEventListeners",value:function(){var e=this;Object.keys(this.handlers).forEach(function(t){var r=e.elements[t],n=e.handlers[t];r&&n&&("checkbox"===r.type?r.addEventListener("change",function(e){return n(e.target.checked,e)}):"SELECT"===r.tagName?r.addEventListener("change",function(e){return n(e.target.value,e)}):r.addEventListener("click",n))}),this.handlers.cameraView&&["+X","-X","+Y","-Y","+Z","-Z"].forEach(function(t){var r="view".concat(t.replace("+","Pos").replace("-","Neg")),n=e.elements[r];n&&n.addEventListener("click",function(){return e.handlers.cameraView(t)})})}},{key:"getElement",value:function(e){return this.elements[e]||document.getElementById(e)}},{key:"show",value:function(e){var t=document.getElementById("".concat(e,"Label"))||this.elements[e];t&&(t.style.display="flex")}},{key:"hide",value:function(e){var t=document.getElementById("".concat(e,"Label"))||this.elements[e];t&&(t.style.display="none")}},{key:"enable",value:function(e){var t=this.elements[e];t&&(t.disabled=!1)}},{key:"disable",value:function(e){var t=this.elements[e];t&&(t.disabled=!0)}},{key:"setButtonText",value:function(e,t){var r=this.elements[e];r&&(r.textContent=t)}},{key:"setButtonStyle",value:function(e,t){var r=this.elements[e];r&&Object.assign(r.style,t)}},{key:"populateSelect",value:function(e,t){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=this.elements[e]||document.getElementById(e);n&&"SELECT"===n.tagName&&(r&&(n.innerHTML=""),t.forEach(function(e){var t=document.createElement("option");t.value=e.value,t.textContent=e.label,e.selected&&(t.selected=!0),e.disabled&&(t.disabled=!0),n.appendChild(t)}))}},{key:"addHandler",value:function(e,t){this.handlers[e]=t;var r=this.elements[e];r&&("checkbox"===r.type?r.addEventListener("change",function(e){return t(e.target.checked,e)}):"SELECT"===r.tagName?r.addEventListener("change",function(e){return t(e.target.value,e)}):r.addEventListener("click",t))}}],t&&se(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();const pe=fe;function de(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var c=n&&n.prototype instanceof s?n:s,l=Object.create(c.prototype);return he(l,"_invoke",function(r,n,o){var i,s,c,l=0,u=o||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return i=t,s=0,c=e,p.n=r,a}};function d(r,n){for(s=r,c=n,t=0;!f&&l&&!o&&t3?(o=h===n)&&(c=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&dn||n>h)&&(i[4]=r,i[5]=n,p.n=h,s=0))}if(o||r>1)return a;throw f=!0,n}return function(o,u,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===u&&d(u,h),s=u,c=h;(t=s<2?e:c)||!f;){i||(s?s<3?(s>1&&(p.n=-1),d(s,c)):p.n=c:p.v=c);try{if(l=2,i){if(s||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=i.return)&&t.call(i),s<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),s=1);i=e}else if((t=(f=p.n<0)?c:r.call(n,p))!==a)break}catch(t){i=e,s=1,c=t}finally{l=1}}return{value:t,done:f}}}(r,o,i),!0),l}var a={};function s(){}function c(){}function l(){}t=Object.getPrototypeOf;var u=[][n]?t(t([][n]())):(he(t={},n,function(){return this}),t),f=l.prototype=s.prototype=Object.create(u);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,he(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=l,he(f,"constructor",l),he(l,"constructor",c),c.displayName="GeneratorFunction",he(l,o,"GeneratorFunction"),he(f),he(f,o,"Generator"),he(f,n,function(){return this}),he(f,"toString",function(){return"[object Generator]"}),(de=function(){return{w:i,m:p}})()}function he(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}he=function(e,t,r,n){function i(t,r){he(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},he(e,t,r,n)}function ye(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function ve(e,t){return ge.apply(this,arguments)}function ge(){var e;return e=de().m(function e(t,r){var n,o,i,a,s;return de().w(function(e){for(;;)switch(e.n){case 0:if(n=r.IO.Geometry.vtkSTLReader,o=r.Filters.Core.vtkPolyDataNormals,(i=n.newInstance()).parseAsArrayBuffer(t),i.getOutputData()){e.n=1;break}throw new Error("Failed to parse STL data");case 1:return(a=o.newInstance()).setInputConnection(i.getOutputPort()),a.update(),s=a.getOutputData(),e.a(2,{polyData:s,reader:i,normalsFilter:a,outputPort:a.getOutputPort(),metadata:{format:"STL",numPoints:s.getNumberOfPoints(),numPolys:s.getNumberOfPolys(),bounds:s.getBounds()}})}},e)}),ge=function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){ye(i,n,o,a,s,"next",e)}function s(e){ye(i,n,o,a,s,"throw",e)}a(void 0)})},ge.apply(this,arguments)}function be(e){return e.toLowerCase().includes(".stl")}const me={load:ve,canLoad:be,format:"STL"};function we(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var c=n&&n.prototype instanceof s?n:s,l=Object.create(c.prototype);return Oe(l,"_invoke",function(r,n,o){var i,s,c,l=0,u=o||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return i=t,s=0,c=e,p.n=r,a}};function d(r,n){for(s=r,c=n,t=0;!f&&l&&!o&&t3?(o=h===n)&&(c=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&dn||n>h)&&(i[4]=r,i[5]=n,p.n=h,s=0))}if(o||r>1)return a;throw f=!0,n}return function(o,u,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===u&&d(u,h),s=u,c=h;(t=s<2?e:c)||!f;){i||(s?s<3?(s>1&&(p.n=-1),d(s,c)):p.n=c:p.v=c);try{if(l=2,i){if(s||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=i.return)&&t.call(i),s<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),s=1);i=e}else if((t=(f=p.n<0)?c:r.call(n,p))!==a)break}catch(t){i=e,s=1,c=t}finally{l=1}}return{value:t,done:f}}}(r,o,i),!0),l}var a={};function s(){}function c(){}function l(){}t=Object.getPrototypeOf;var u=[][n]?t(t([][n]())):(Oe(t={},n,function(){return this}),t),f=l.prototype=s.prototype=Object.create(u);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,Oe(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=l,Oe(f,"constructor",l),Oe(l,"constructor",c),c.displayName="GeneratorFunction",Oe(l,o,"GeneratorFunction"),Oe(f),Oe(f,o,"Generator"),Oe(f,n,function(){return this}),Oe(f,"toString",function(){return"[object Generator]"}),(we=function(){return{w:i,m:p}})()}function Oe(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}Oe=function(e,t,r,n){function i(t,r){Oe(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},Oe(e,t,r,n)}function Se(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function Ce(e,t){return Pe.apply(this,arguments)}function Pe(){var e;return e=we().m(function e(t,r){var n,o,i,a,s,c;return we().w(function(e){for(;;)switch(e.n){case 0:if(n=r.IO.Misc.vtkOBJReader,o=r.Filters.Core.vtkPolyDataNormals,i=n.newInstance(),a=(new TextDecoder).decode(t),i.parseAsText(a),i.getOutputData()){e.n=1;break}throw new Error("Failed to parse OBJ data");case 1:return(s=o.newInstance()).setInputConnection(i.getOutputPort()),s.update(),c=s.getOutputData(),e.a(2,{polyData:c,reader:i,normalsFilter:s,outputPort:s.getOutputPort(),metadata:{format:"OBJ",numPoints:c.getNumberOfPoints(),numPolys:c.getNumberOfPolys(),bounds:c.getBounds()}})}},e)}),Pe=function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){Se(i,n,o,a,s,"next",e)}function s(e){Se(i,n,o,a,s,"throw",e)}a(void 0)})},Pe.apply(this,arguments)}function Te(e){return e.toLowerCase().includes(".obj")}const ke={load:Ce,canLoad:Te,format:"OBJ"};function Ee(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var c=n&&n.prototype instanceof s?n:s,l=Object.create(c.prototype);return je(l,"_invoke",function(r,n,o){var i,s,c,l=0,u=o||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return i=t,s=0,c=e,p.n=r,a}};function d(r,n){for(s=r,c=n,t=0;!f&&l&&!o&&t3?(o=h===n)&&(c=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&dn||n>h)&&(i[4]=r,i[5]=n,p.n=h,s=0))}if(o||r>1)return a;throw f=!0,n}return function(o,u,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===u&&d(u,h),s=u,c=h;(t=s<2?e:c)||!f;){i||(s?s<3?(s>1&&(p.n=-1),d(s,c)):p.n=c:p.v=c);try{if(l=2,i){if(s||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=i.return)&&t.call(i),s<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),s=1);i=e}else if((t=(f=p.n<0)?c:r.call(n,p))!==a)break}catch(t){i=e,s=1,c=t}finally{l=1}}return{value:t,done:f}}}(r,o,i),!0),l}var a={};function s(){}function c(){}function l(){}t=Object.getPrototypeOf;var u=[][n]?t(t([][n]())):(je(t={},n,function(){return this}),t),f=l.prototype=s.prototype=Object.create(u);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,je(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=l,je(f,"constructor",l),je(l,"constructor",c),c.displayName="GeneratorFunction",je(l,o,"GeneratorFunction"),je(f),je(f,o,"Generator"),je(f,n,function(){return this}),je(f,"toString",function(){return"[object Generator]"}),(Ee=function(){return{w:i,m:p}})()}function je(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}je=function(e,t,r,n){function i(t,r){je(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},je(e,t,r,n)}function xe(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function Ae(e){for(var t=e.getPointData(),r=e.getCellData(),n=[],o=[],i=0;i0||o.length>0}}function Me(e,t){return Fe.apply(this,arguments)}function Fe(){var e;return e=Ee().m(function e(t,r){var n,o,i,a,s,c,l;return Ee().w(function(e){for(;;)switch(e.n){case 0:if(n=r.IO.XML.vtkXMLPolyDataReader,o=r.Filters.Core.vtkPolyDataNormals,(i=n.newInstance()).parseAsArrayBuffer(t),a=i.getOutputData()){e.n=1;break}throw new Error("Failed to parse VTP data");case 1:return Ae(a),(s=o.newInstance()).setInputConnection(i.getOutputPort()),s.update(),c=s.getOutputData(),l=Ae(c),e.a(2,{polyData:c,reader:i,normalsFilter:s,outputPort:s.getOutputPort(),fields:l,metadata:{format:"VTP",numPoints:c.getNumberOfPoints(),numPolys:c.getNumberOfPolys(),bounds:c.getBounds(),pointFields:l.pointFields.map(function(e){return e.name}),cellFields:l.cellFields.map(function(e){return e.name}),hasFields:l.hasFields}})}},e)}),Fe=function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){xe(i,n,o,a,s,"next",e)}function s(e){xe(i,n,o,a,s,"throw",e)}a(void 0)})},Fe.apply(this,arguments)}function Le(e){return e.toLowerCase().includes(".vtp")}const _e={load:Me,canLoad:Le,format:"VTP"};function Be(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var c=n&&n.prototype instanceof s?n:s,l=Object.create(c.prototype);return Re(l,"_invoke",function(r,n,o){var i,s,c,l=0,u=o||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return i=t,s=0,c=e,p.n=r,a}};function d(r,n){for(s=r,c=n,t=0;!f&&l&&!o&&t3?(o=h===n)&&(c=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&dn||n>h)&&(i[4]=r,i[5]=n,p.n=h,s=0))}if(o||r>1)return a;throw f=!0,n}return function(o,u,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===u&&d(u,h),s=u,c=h;(t=s<2?e:c)||!f;){i||(s?s<3?(s>1&&(p.n=-1),d(s,c)):p.n=c:p.v=c);try{if(l=2,i){if(s||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=i.return)&&t.call(i),s<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),s=1);i=e}else if((t=(f=p.n<0)?c:r.call(n,p))!==a)break}catch(t){i=e,s=1,c=t}finally{l=1}}return{value:t,done:f}}}(r,o,i),!0),l}var a={};function s(){}function c(){}function l(){}t=Object.getPrototypeOf;var u=[][n]?t(t([][n]())):(Re(t={},n,function(){return this}),t),f=l.prototype=s.prototype=Object.create(u);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,Re(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=l,Re(f,"constructor",l),Re(l,"constructor",c),c.displayName="GeneratorFunction",Re(l,o,"GeneratorFunction"),Re(f),Re(f,o,"Generator"),Re(f,n,function(){return this}),Re(f,"toString",function(){return"[object Generator]"}),(Be=function(){return{w:i,m:p}})()}function Re(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}Re=function(e,t,r,n){function i(t,r){Re(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},Re(e,t,r,n)}function Ve(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function Ie(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){Ve(i,n,o,a,s,"next",e)}function s(e){Ve(i,n,o,a,s,"throw",e)}a(void 0)})}}function De(e){try{return void 0!==e.IO.Geometry.vtkGLTFImporter}catch(e){return!1}}function Ge(e,t,r){return ze.apply(this,arguments)}function ze(){return ze=Ie(Be().m(function e(t,r,n){var o,i,a,s,c,l,u,f,p,d,h,y,v,g,b,m=arguments;return Be().w(function(e){for(;;)switch(e.n){case 0:if(i=(o=m.length>3&&void 0!==m[3]?m[3]:{}).applyTextureFixes,a=void 0===i||i,s=o.twoSidedLighting,c=void 0===s||s,l=r.IO.Geometry.vtkGLTFImporter){e.n=1;break}throw new Error("GLTFImporter not available in this VTK.js version");case 1:return c&&n.setTwoSidedLighting&&n.setTwoSidedLighting(!0),(u=l.newInstance()).setRenderer(n),u.setUrl(t),e.n=2,new Promise(function(e,t){u.onReady(function(){e()}),u.loadData().catch(t)});case 2:return u.importActors(),f=u.getActors(),p=Array.from(f.values()),d=!1,h=!1,y=!1,a&&p.forEach(function(e,t){var r=e.getMapper(),n=e.getProperty(),o=null==r?void 0:r.getInputData();if(o&&o.getNumberOfPoints()>0){var i=o.getPointData(),a=null==i?void 0:i.getScalars();if(!a&&i)for(var s=i.getNumberOfArrays(),c=0;c=3){a=l,i.setScalars(l);break}}if(a&&a.getNumberOfComponents()>=3&&(y=!0,console.log("[GLTFLoader] Found vertex colors:",a.getName(),"components:",a.getNumberOfComponents())),n){"function"==typeof n.setRMTexture&&n.setRMTexture(null),"function"==typeof n.setMetallicRoughnessTexture&&n.setMetallicRoughnessTexture(null);var u=null;"function"==typeof n.getBaseColorTexture&&(u=n.getBaseColorTexture()),u||"function"!=typeof n.getDiffuseTexture||(u=n.getDiffuseTexture()),u||"function"!=typeof n.getTexture||(u=n.getTexture()),u&&(d=!0,e.addTexture(u)),void 0===n.getMetallic&&void 0===n.getRoughness||(h=!0),"function"==typeof n.setMetallic&&n.setMetallic(0),"function"==typeof n.setRoughness&&n.setRoughness(1),"function"==typeof n.setInterpolation&&n.setInterpolation(2)}r&&(console.log("[GLTFLoader] Configuring mapper - hasVertexColors:",y,"hasTexture:",d),y&&!d?(console.log("[GLTFLoader] Enabling vertex color rendering"),r.setScalarVisibility(!0),r.setScalarModeToUsePointData(),r.setColorModeToDirectScalars(),n&&(console.log("[GLTFLoader] Setting actor color to white"),n.setColor(1,1,1),"function"==typeof n.setBaseColorFactor&&(console.log("[GLTFLoader] Setting PBR baseColorFactor to white"),n.setBaseColorFactor([1,1,1,1])),"function"==typeof n.setDiffuseColor&&n.setDiffuseColor(1,1,1),"function"==typeof n.setAmbientColor&&n.setAmbientColor(1,1,1),"function"==typeof n.setAmbient&&n.setAmbient(.2),"function"==typeof n.setDiffuse&&n.setDiffuse(.8))):r.setScalarVisibility(!1),r.modified())}}),v=null,p.length>0&&(v=[1/0,-1/0,1/0,-1/0,1/0,-1/0],p.forEach(function(e){var t=e.getBounds();v[0]=Math.min(v[0],t[0]),v[1]=Math.max(v[1],t[1]),v[2]=Math.min(v[2],t[2]),v[3]=Math.max(v[3],t[3]),v[4]=Math.min(v[4],t[4]),v[5]=Math.max(v[5],t[5])})),g=0,b=0,p.forEach(function(e){var t=e.getMapper(),r=null==t?void 0:t.getInputData();r&&(g+=r.getNumberOfPoints(),b+=r.getNumberOfPolys())}),e.a(2,{actors:p,importer:u,bounds:v,hasTexture:d,hasVertexColors:y,metadata:{format:"GLTF",numActors:p.length,numPoints:g,numPolys:b,bounds:v,hasTexture:d,hasVertexColors:y,hasMaterial:h}})}},e)})),ze.apply(this,arguments)}function Ne(e,t){return We.apply(this,arguments)}function We(){return(We=Ie(Be().m(function e(t,r){var n,o,i;return Be().w(function(e){for(;;)switch(e.n){case 0:if(n=r.IO.Geometry.vtkGLTFImporter){e.n=1;break}throw new Error("GLTFImporter not available");case 1:return(o=n.newInstance()).parseAsArrayBuffer(t),e.n=2,o.update();case 2:if(i=o.getOutputData()){e.n=3;break}throw new Error("Failed to extract polydata from GLTF");case 3:return e.a(2,{polyData:i,importer:o,metadata:{format:"GLTF",numPoints:i.getNumberOfPoints(),numPolys:i.getNumberOfPolys(),bounds:i.getBounds()}})}},e)}))).apply(this,arguments)}function Ue(e){var t=e.toLowerCase();return t.includes(".glb")||t.includes(".gltf")}const He={load:Ge,loadSimple:Ne,canLoad:Ue,isSupported:De,format:"GLTF"};function Xe(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var c=n&&n.prototype instanceof s?n:s,l=Object.create(c.prototype);return Ye(l,"_invoke",function(r,n,o){var i,s,c,l=0,u=o||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return i=t,s=0,c=e,p.n=r,a}};function d(r,n){for(s=r,c=n,t=0;!f&&l&&!o&&t3?(o=h===n)&&(c=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&dn||n>h)&&(i[4]=r,i[5]=n,p.n=h,s=0))}if(o||r>1)return a;throw f=!0,n}return function(o,u,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===u&&d(u,h),s=u,c=h;(t=s<2?e:c)||!f;){i||(s?s<3?(s>1&&(p.n=-1),d(s,c)):p.n=c:p.v=c);try{if(l=2,i){if(s||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=i.return)&&t.call(i),s<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),s=1);i=e}else if((t=(f=p.n<0)?c:r.call(n,p))!==a)break}catch(t){i=e,s=1,c=t}finally{l=1}}return{value:t,done:f}}}(r,o,i),!0),l}var a={};function s(){}function c(){}function l(){}t=Object.getPrototypeOf;var u=[][n]?t(t([][n]())):(Ye(t={},n,function(){return this}),t),f=l.prototype=s.prototype=Object.create(u);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,Ye(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=l,Ye(f,"constructor",l),Ye(l,"constructor",c),c.displayName="GeneratorFunction",Ye(l,o,"GeneratorFunction"),Ye(f),Ye(f,o,"Generator"),Ye(f,n,function(){return this}),Ye(f,"toString",function(){return"[object Generator]"}),(Xe=function(){return{w:i,m:p}})()}function Ye(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}Ye=function(e,t,r,n){function i(t,r){Ye(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},Ye(e,t,r,n)}function Ze(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function Ke(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){Ze(i,n,o,a,s,"next",e)}function s(e){Ze(i,n,o,a,s,"throw",e)}a(void 0)})}}var qe={STL:"STL",OBJ:"OBJ",VTP:"VTP",GLTF:"GLTF",GLB:"GLB"};function Je(e){var t=e.toLowerCase();return t.includes(".stl")?qe.STL:t.includes(".obj")?qe.OBJ:t.includes(".vtp")?qe.VTP:t.includes(".glb")?qe.GLB:t.includes(".gltf")?qe.GLTF:null}function $e(e){return e===qe.GLTF||e===qe.GLB}function Qe(e){return e===qe.GLTF||e===qe.GLB}function et(e){return e===qe.VTP}function tt(e){return rt.apply(this,arguments)}function rt(){return(rt=Ke(Xe().m(function e(t){var r;return Xe().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,fetch(t);case 1:if((r=e.v).ok){e.n=2;break}throw new Error("HTTP ".concat(r.status,": ").concat(r.statusText));case 2:return e.a(2,r.arrayBuffer())}},e)}))).apply(this,arguments)}function nt(e,t){return ot.apply(this,arguments)}function ot(){return ot=Ke(Xe().m(function e(t,r){var n,o,i,a,s,c,l,u,f,p,d=arguments;return Xe().w(function(e){for(;;)switch(e.n){case 0:if(o=(n=d.length>2&&void 0!==d[2]?d[2]:{}).renderer,i=void 0===o?null:o,a=n.withTextures,s=void 0===a||a,c=n.twoSidedLighting,l=void 0===c||c,u=Je(t)){e.n=1;break}throw new Error("Unsupported file format: ".concat(t));case 1:if(console.log("[LoaderFactory] Loading ".concat(u," file:"),t),u!==qe.GLTF&&u!==qe.GLB||!s||!i){e.n=2;break}return e.a(2,Ge(t,r,i,{applyTextureFixes:!0,twoSidedLighting:l}));case 2:return e.n=3,tt(t);case 3:f=e.v,p=u,e.n=p===qe.STL?4:p===qe.OBJ?5:p===qe.VTP?6:p===qe.GLTF||p===qe.GLB?7:8;break;case 4:return e.a(2,ve(f,r));case 5:return e.a(2,Ce(f,r));case 6:return e.a(2,Me(f,r));case 7:return e.a(2,Ne(f,r));case 8:throw new Error("No loader available for format: ".concat(u));case 9:return e.a(2)}},e)})),ot.apply(this,arguments)}function it(e,t){return at.apply(this,arguments)}function at(){return at=Ke(Xe().m(function e(t,r){var n,o=arguments;return Xe().w(function(e){for(;;)if(0===e.n)return n=o.length>2&&void 0!==o[2]?o[2]:{},e.a(2,Promise.all(t.map(function(e){return nt(e,r,n)})))},e)})),at.apply(this,arguments)}function st(e){switch(e){case qe.STL:return{load:ve,canLoad:be,requiresRenderer:!1,supportsTextures:!1,supportsFields:!1};case qe.OBJ:return{load:Ce,canLoad:Te,requiresRenderer:!1,supportsTextures:!1,supportsFields:!1};case qe.VTP:return{load:Me,canLoad:Le,requiresRenderer:!1,supportsTextures:!1,supportsFields:!0};case qe.GLTF:case qe.GLB:return{load:Ge,loadSimple:Ne,canLoad:Ue,isSupported:De,requiresRenderer:!0,supportsTextures:!0,supportsFields:!1};default:return null}}const ct={loadMesh:nt,loadMeshes:it,detectFormat:Je,requiresRenderer:$e,supportsTextures:Qe,supportsFields:et,getLoaderConfig:st,FormatTypes:qe};function lt(e){return lt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},lt(e)}function ut(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var c=n&&n.prototype instanceof s?n:s,l=Object.create(c.prototype);return ft(l,"_invoke",function(r,n,o){var i,s,c,l=0,u=o||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return i=t,s=0,c=e,p.n=r,a}};function d(r,n){for(s=r,c=n,t=0;!f&&l&&!o&&t3?(o=h===n)&&(c=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&dn||n>h)&&(i[4]=r,i[5]=n,p.n=h,s=0))}if(o||r>1)return a;throw f=!0,n}return function(o,u,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===u&&d(u,h),s=u,c=h;(t=s<2?e:c)||!f;){i||(s?s<3?(s>1&&(p.n=-1),d(s,c)):p.n=c:p.v=c);try{if(l=2,i){if(s||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=i.return)&&t.call(i),s<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),s=1);i=e}else if((t=(f=p.n<0)?c:r.call(n,p))!==a)break}catch(t){i=e,s=1,c=t}finally{l=1}}return{value:t,done:f}}}(r,o,i),!0),l}var a={};function s(){}function c(){}function l(){}t=Object.getPrototypeOf;var u=[][n]?t(t([][n]())):(ft(t={},n,function(){return this}),t),f=l.prototype=s.prototype=Object.create(u);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,ft(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=l,ft(f,"constructor",l),ft(l,"constructor",c),c.displayName="GeneratorFunction",ft(l,o,"GeneratorFunction"),ft(f),ft(f,o,"Generator"),ft(f,n,function(){return this}),ft(f,"toString",function(){return"[object Generator]"}),(ut=function(){return{w:i,m:p}})()}function ft(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}ft=function(e,t,r,n){function i(t,r){ft(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},ft(e,t,r,n)}function pt(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function dt(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){pt(i,n,o,a,s,"next",e)}function s(e){pt(i,n,o,a,s,"throw",e)}a(void 0)})}}function ht(e,t){for(var r=0;r0&&void 0!==i[0]?i[0]:"screenshot.png",e.p=1,e.n=2,this.capture();case 2:r=e.v,(n=document.createElement("a")).href=r,n.download=t,n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n),console.log("[ScreenshotCapture] Screenshot downloaded:",t),e.n=4;break;case 3:throw e.p=3,o=e.v,console.error("[ScreenshotCapture] Error downloading screenshot:",o),o;case 4:return e.a(2)}},e,this,[[1,3]])})),function(){return o.apply(this,arguments)})},{key:"captureAsBlob",value:(n=dt(ut().m(function e(){var t,r;return ut().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,this.capture();case 1:return t=e.v,e.n=2,fetch(t);case 2:return r=e.v,e.a(2,r.blob())}},e,this)})),function(){return n.apply(this,arguments)})}],r=[{key:"generateFilename",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"screenshot",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"png",r=(new Date).toISOString().replace(/[:.]/g,"-").replace("T","_").slice(0,19);return"".concat(e,"_").concat(r,".").concat(t)}}],t&&ht(e.prototype,t),r&&ht(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t,r,n,o,i,a}();const gt=vt;function bt(e){return bt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},bt(e)}function mt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function wt(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.vtk=t,this.interactor=r,this.config=wt(wt({},Et),n),this.vtkOrientationMarkerWidget=t.Interaction.Widgets.vtkOrientationMarkerWidget,this.vtkAnnotatedCubeActor=t.Rendering.Core.vtkAnnotatedCubeActor,this.widget=null,this.cubeActor=null,this.enabled=this.config.enabled,this._createWidget()},(t=[{key:"_createWidget",value:function(){this.cubeActor=this.vtkAnnotatedCubeActor.newInstance(),this.cubeActor.setDefaultStyle({text:"+X",fontStyle:"bold",fontFamily:"Arial",fontColor:"white",fontSizeScale:function(e){return e/2},faceColor:this.config.faceColor,faceRotation:0,edgeThickness:.1,edgeColor:"white",resolution:400}),this.cubeActor.setXPlusFaceProperty({text:"+X",faceColor:Pt}),this.cubeActor.setXMinusFaceProperty({text:"-X",faceColor:Pt}),this.cubeActor.setYPlusFaceProperty({text:"+Y",faceColor:Tt}),this.cubeActor.setYMinusFaceProperty({text:"-Y",faceColor:Tt}),this.cubeActor.setZPlusFaceProperty({text:"+Z",faceColor:kt}),this.cubeActor.setZMinusFaceProperty({text:"-Z",faceColor:kt}),this.widget=this.vtkOrientationMarkerWidget.newInstance({actor:this.cubeActor,interactor:this.interactor}),this._applyCornerConfig(),this.widget.setViewportSize(this.config.viewportSize),this.widget.setMinPixelSize(this.config.minPixelSize),this.widget.setMaxPixelSize(this.config.maxPixelSize),this.widget.setEnabled(this.enabled)}},{key:"_applyCornerConfig",value:function(){var e=this.vtkOrientationMarkerWidget.Corners,t={BOTTOM_LEFT:e.BOTTOM_LEFT,BOTTOM_RIGHT:e.BOTTOM_RIGHT,TOP_LEFT:e.TOP_LEFT,TOP_RIGHT:e.TOP_RIGHT}[this.config.corner]||e.BOTTOM_LEFT;this.widget.setViewportCorner(t)}},{key:"enable",value:function(){this.enabled=!0,this.widget&&this.widget.setEnabled(!0)}},{key:"disable",value:function(){this.enabled=!1,this.widget&&this.widget.setEnabled(!1)}},{key:"toggle",value:function(){return this.enabled?this.disable():this.enable(),this.enabled}},{key:"setEnabled",value:function(e){e?this.enable():this.disable()}},{key:"isEnabled",value:function(){return this.enabled}},{key:"setCorner",value:function(e){this.config.corner=e,this._applyCornerConfig()}},{key:"setViewportSize",value:function(e){this.config.viewportSize=e,this.widget&&this.widget.setViewportSize(e)}},{key:"setAxisColors",value:function(e){e.x&&(this.cubeActor.setXPlusFaceProperty({faceColor:e.x}),this.cubeActor.setXMinusFaceProperty({faceColor:e.x})),e.y&&(this.cubeActor.setYPlusFaceProperty({faceColor:e.y}),this.cubeActor.setYMinusFaceProperty({faceColor:e.y})),e.z&&(this.cubeActor.setZPlusFaceProperty({faceColor:e.z}),this.cubeActor.setZMinusFaceProperty({faceColor:e.z}))}},{key:"getWidget",value:function(){return this.widget}},{key:"getCubeActor",value:function(){return this.cubeActor}},{key:"destroy",value:function(){this.widget&&(this.widget.setEnabled(!1),this.widget.delete(),this.widget=null),this.cubeActor&&(this.cubeActor.delete(),this.cubeActor=null)}}])&&St(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();const xt=jt;function At(e){return At="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},At(e)}function Mt(e){return function(e){if(Array.isArray(e))return Lt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Ft(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ft(e,t){if(e){if("string"==typeof e)return Lt(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Lt(e,t):void 0}}function Lt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r0}}},{key:"applyField",value:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=n.range,i=void 0===o?null:o,a=n.colormap,s=void 0===a?this.currentColormap:a,c=n.render,l=void 0===c||c;if(r&&"none"!==r&&t){var u=r.startsWith("cell:"),f=u?r.substring(5):r.startsWith("point:")?r.substring(6):r,p=u?t.getCellData():t.getPointData(),d=p.getArrayByName(f);if(!d)return console.warn('[FieldVisualization] Field "'.concat(f,'" not found')),void this.disableScalarVisualization(e,l);var h=d.getRange(),y=function(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||Ft(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(i||(this.autoRange?h:this.manualRange),2),v=y[0],g=y[1];if(Math.abs(g-v)<1e-10&&!i)return console.warn('[FieldVisualization] Field "'.concat(f,'" has zero-width range')),void this.disableScalarVisualization(e,l);p.setActiveScalars(f),e.setScalarVisibility(!0),u?e.setScalarModeToUseCellData():e.setScalarModeToUsePointData(),e.setScalarRange(v,g),this.applyColormap(e,s,v,g),this.currentField=r,this.currentColormap=s,e.update(),l&&this.renderWindow.render(),console.log('[FieldVisualization] Applied field "'.concat(f,'" with range [').concat(v.toFixed(3),", ").concat(g.toFixed(3),"]"))}else this.disableScalarVisualization(e,l)}},{key:"applyColormap",value:function(e,t,r,n){try{var o=this.vtkColorTransferFunction.newInstance(),i=this.vtkColorMaps.getPresetByName(t);i?(o.applyColorMap(i),o.setMappingRange(r,n),o.updateRange(),e.setLookupTable(o)):console.warn('[FieldVisualization] Colormap "'.concat(t,'" not found'))}catch(e){console.error("[FieldVisualization] Error applying colormap:",e)}}},{key:"disableScalarVisualization",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&e.setScalarVisibility(!1),this.currentField=null,t&&this.renderWindow.render()}},{key:"getColormapOptions",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.vtkColorMaps.rgbPresetNames||[],r=[];return e?(Rt.forEach(function(e){t.includes(e)&&r.push({value:e,label:e,isPopular:!0})}),r.push({value:"",label:"----------",disabled:!0}),t.filter(function(e){return!Rt.includes(e)}).sort().forEach(function(e){r.push({value:e,label:e,isPopular:!1})})):t.sort().forEach(function(e){r.push({value:e,label:e,isPopular:Rt.includes(e)})}),r}},{key:"setAutoRange",value:function(e){this.autoRange=e}},{key:"setManualRange",value:function(e,t){this.manualRange=[e,t]}},{key:"calculateSynchronizedRange",value:function(e,t){var r=1/0,n=-1/0,o=t.startsWith("cell:"),i=o?t.substring(5):t.startsWith("point:")?t.substring(6):t;return e.forEach(function(e){if(e){var t=o?e.getCellData():e.getPointData(),a=null==t?void 0:t.getArrayByName(i);if(a){var s=a.getRange();r=Math.min(r,s[0]),n=Math.max(n,s[1])}}}),r===1/0||n===-1/0?[0,1]:[r,n]}},{key:"findCommonFields",value:function(e){var t=this;if(!e||0===e.length)return{commonPointFields:[],commonCellFields:[],commonAllFields:[]};for(var r=this.extractFields(e[0]),n=r.pointFields.map(function(e){return e.name}),o=r.cellFields.map(function(e){return e.name}),i=function(){var r=t.extractFields(e[a]),i=r.pointFields.map(function(e){return e.name}),s=r.cellFields.map(function(e){return e.name});n=n.filter(function(e){return i.includes(e)}),o=o.filter(function(e){return s.includes(e)})},a=1;ae.length)&&(t=e.length);for(var r=0,n=Array(t);r1&&void 0!==arguments[1]?arguments[1]:[1,1,1],r=e.getProperty(),n=e.getMapper();r&&r.setColor.apply(r,function(e){return function(e){if(Array.isArray(e))return Gt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return Gt(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Gt(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t)),n&&n.setScalarVisibility(!1)}},{key:"getTextureInfo",value:function(e){var t=e.getProperty(),r={hasTexture:!1,hasMaterial:!1,textureType:null};return t?("function"==typeof t.getBaseColorTexture&&t.getBaseColorTexture()?(r.hasTexture=!0,r.textureType="baseColor"):"function"==typeof t.getDiffuseTexture&&t.getDiffuseTexture()?(r.hasTexture=!0,r.textureType="diffuse"):"function"==typeof t.getTexture&&t.getTexture()&&(r.hasTexture=!0,r.textureType="generic"),"function"!=typeof t.getMetallic&&"function"!=typeof t.getRoughness||(r.hasMaterial=!0),r):r}},{key:"isTextureSupported",value:function(){try{return void 0!==this.vtk.IO.Geometry.vtkGLTFImporter}catch(e){return!1}}}],t&&zt(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();const Ut=Wt;function Ht(e){return Ht="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ht(e)}function Xt(e){return function(e){if(Array.isArray(e))return Yt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return Yt(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Yt(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Yt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r3?(o=h===n)&&(c=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&dn||n>h)&&(i[4]=r,i[5]=n,p.n=h,s=0))}if(o||r>1)return a;throw f=!0,n}return function(o,u,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===u&&d(u,h),s=u,c=h;(t=s<2?e:c)||!f;){i||(s?s<3?(s>1&&(p.n=-1),d(s,c)):p.n=c:p.v=c);try{if(l=2,i){if(s||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=i.return)&&t.call(i),s<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),s=1);i=e}else if((t=(f=p.n<0)?c:r.call(n,p))!==a)break}catch(t){i=e,s=1,c=t}finally{l=1}}return{value:t,done:f}}}(r,o,i),!0),l}var a={};function s(){}function c(){}function l(){}t=Object.getPrototypeOf;var u=[][n]?t(t([][n]())):(Kt(t={},n,function(){return this}),t),f=l.prototype=s.prototype=Object.create(u);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,Kt(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=l,Kt(f,"constructor",l),Kt(l,"constructor",c),c.displayName="GeneratorFunction",Kt(l,o,"GeneratorFunction"),Kt(f),Kt(f,o,"Generator"),Kt(f,n,function(){return this}),Kt(f,"toString",function(){return"[object Generator]"}),(Zt=function(){return{w:i,m:p}})()}function Kt(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}Kt=function(e,t,r,n){function i(t,r){Kt(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},Kt(e,t,r,n)}function qt(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function Jt(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){qt(i,n,o,a,s,"next",e)}function s(e){qt(i,n,o,a,s,"throw",e)}a(void 0)})}}function $t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Qt(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.container=t,this.config=Qt(Qt({},nr),r),this.vtk=null,this.renderWindow=null,this.renderer=null,this.interactor=null,this.openGLRenderWindow=null,this.cameraController=null,this.actorManager=null,this.settingsPanel=null,this.controlsBar=null,this.screenshotCapture=null,this.axisIndicator=null,this.fieldVisualization=null,this.textureManager=null,this.actors=[],this.polyDatas=[],this.currentFilename=null,this.isInitialized=!1,this.loadingOverlay=null,this.infoOverlay=null,this._messageCleanup=null},t=[{key:"initialize",value:(o=Jt(Zt().m(function e(){return Zt().w(function(e){for(;;)switch(e.n){case 0:if(!this.isInitialized){e.n=1;break}return console.warn("[BaseViewer] Already initialized"),e.a(2);case 1:if(this.vtk=window.vtk,this.vtk){e.n=2;break}throw new Error("VTK.js not loaded. Include vtk-gltf.js before initializing viewer.");case 2:this._createRenderingPipeline(),this._initializeFeatures(),this._createUI(),this._setupResizeHandler(),this._setupMessageListener(),this.isInitialized=!0,console.log("[BaseViewer] Initialized");case 3:return e.a(2)}},e,this)})),function(){return o.apply(this,arguments)})},{key:"_createRenderingPipeline",value:function(){var e;this.renderWindow=this.vtk.Rendering.Core.vtkRenderWindow.newInstance(),this.renderer=this.vtk.Rendering.Core.vtkRenderer.newInstance(),(e=this.renderer).setBackground.apply(e,Xt(this.config.backgroundColor)),this.renderWindow.addRenderer(this.renderer),this.config.twoSidedLighting&&this.renderer.setTwoSidedLighting(!0),this.openGLRenderWindow=this.vtk.Rendering.OpenGL.vtkRenderWindow.newInstance(),this.openGLRenderWindow.setContainer(this.container),this.renderWindow.addView(this.openGLRenderWindow),this.interactor=this.vtk.Rendering.Core.vtkRenderWindowInteractor.newInstance(),this.interactor.setView(this.openGLRenderWindow),this.interactor.initialize(),this.interactor.bindEvents(this.container);var t=this.vtk.Interaction.Style.vtkInteractorStyleTrackballCamera.newInstance();this.interactor.setInteractorStyle(t);var r=this.container.getBoundingClientRect(),n=r.width,o=r.height;this.openGLRenderWindow.setSize(n,o)}},{key:"_initializeFeatures",value:function(){this.cameraController=new B(this.renderer,{distanceMultiplier:this.config.cameraDistanceMultiplier,parallelProjection:this.config.parallelProjection}),this.actorManager=new Y(this.vtk,{defaultColor:this.config.defaultMeshColor,edgeColor:this.config.edgeColor,edgeWidth:this.config.edgeWidth,showEdges:this.config.showEdges}),this.config.enableScreenshot&&(this.screenshotCapture=new vt(this.renderWindow)),this.config.enableAxisIndicator&&(this.axisIndicator=new jt(this.vtk,this.interactor,{enabled:!0})),this.config.enableFields&&(this.fieldVisualization=new Vt(this.vtk,this.renderWindow)),this.config.enableTextures&&(this.textureManager=new Wt(this.vtk,this.renderWindow))}},{key:"_createUI",value:function(){var e=this;this.config.showLoadingOverlay&&(this.loadingOverlay=this._createLoadingOverlay()),this.config.showInfoOverlay&&(this.infoOverlay=this._createInfoOverlay()),this.config.enableSettings&&this.config.settingsConfig&&(this.settingsPanel=new oe(this.config.settingsConfig),this.settingsPanel.onApply(function(t){return e._onSettingsApply(t)})),this.config.enableControls&&this.config.controlsConfig&&(this.controlsBar=new fe(this.config.controlsConfig),this._setupControlsHandlers())}},{key:"_createLoadingOverlay",value:function(){var e=document.createElement("div");return e.id="loading",e.className="loading",e.innerHTML='\n
\n
Loading mesh...
\n ',this.container.parentElement.appendChild(e),e}},{key:"_createInfoOverlay",value:function(){var e=document.createElement("div");return e.id="meshInfo",e.className="mesh-info",this.container.parentElement.appendChild(e),e}},{key:"_setupResizeHandler",value:function(){var e=this,t=new ResizeObserver(function(){var t=e.container.getBoundingClientRect(),r=t.width,n=t.height;r>0&&n>0&&(e.openGLRenderWindow.setSize(r,n),e.renderWindow.render())});t.observe(this.container),this._resizeObserver=t}},{key:"_setupMessageListener",value:function(){var e=this;this._messageCleanup=S(function(t){"loadMesh"===t.type&&t.url?e.loadMesh(t.url):"screenshot"===t.type&&e.captureScreenshot()})}},{key:"_setupControlsHandlers",value:function(){var e=this;this.controlsBar&&(this.controlsBar.onAction("camera-view",function(t){e.setCameraView(t)}),this.controlsBar.onAction("screenshot",function(){e.captureScreenshot()}),this.controlsBar.onAction("settings",function(){e.settingsPanel&&e.settingsPanel.open()}),this.controlsBar.onAction("edges-toggle",function(t){e.setEdgeVisibility(t)}))}},{key:"_onSettingsApply",value:function(e){var t;this.actorManager&&this.actorManager.applySettings(this.actors,e),e.backgroundColor&&(t=this.renderer).setBackground.apply(t,Xt(e.backgroundColor)),this.render()}},{key:"loadMesh",value:(n=Jt(Zt().m(function e(t){var r,n,o=this;return Zt().w(function(e){for(;;)switch(e.p=e.n){case 0:return this.showLoading(!0),e.p=1,this.clearScene(),e.n=2,nt(t,this.vtk,{renderer:this.renderer});case 2:return r=e.v,this.actors=r.actors,this.polyDatas=r.polyData?[r.polyData]:[],this.currentFilename=C(t),r.actors.forEach(function(e){o.renderer.addActor(e)}),this._configureLoadedActors(r),this._setupCameraForMesh(),this._updateInfoOverlay(r),this.showLoading(!1),O((this.currentFilename,r.format,r.actors.length,r.hasTexture,r.hasVertexColors,r.fields)),this.render(),e.a(2,r);case 3:throw e.p=3,n=e.v,console.error("[BaseViewer] Error loading mesh:",n),this.showLoading(!1),m(n.message),n;case 4:return e.a(2)}},e,this,[[1,3]])})),function(e){return n.apply(this,arguments)})},{key:"_configureLoadedActors",value:function(e){var t=this;this.config.enableTextures&&this.textureManager&&e.hasTexture?(this.textureManager.applyTextureFixesMultiple(this.actors),this.textureManager.configureRenderer(this.renderer)):e.hasVertexColors?this.actors.forEach(function(e){var r=e.getProperty();r&&t.config.showEdges&&(r.setEdgeVisibility(!0),t.config.edgeColor&&r.setEdgeColor.apply(r,Xt(t.config.edgeColor)))}):this.actorManager.configureActors(this.actors,{color:this.config.defaultMeshColor,showEdges:this.config.showEdges,edgeColor:this.config.edgeColor})}},{key:"_setupCameraForMesh",value:function(){if(0!==this.actors.length){for(var e=this.actors[0].getBounds(),t=1;t")}}},{key:"clearScene",value:function(){var e=this;this.actors.forEach(function(t){e.renderer.removeActor(t)}),this.actors=[],this.polyDatas=[]}},{key:"setCameraView",value:function(e){if(0!==this.actors.length){var t=this.actors[0].getBounds();this.cameraController.setCameraView(e,t),this.render()}}},{key:"setEdgeVisibility",value:function(e){var t=this;this.actors.forEach(function(r){t.actorManager.setEdgeVisibility(r,e)}),this.render()}},{key:"captureScreenshot",value:(r=Jt(Zt().m(function e(){return Zt().w(function(e){for(;;)switch(e.n){case 0:if(!this.screenshotCapture){e.n=1;break}return e.a(2,this.screenshotCapture.captureAndSend());case 1:return e.a(2)}},e,this)})),function(){return r.apply(this,arguments)})},{key:"showLoading",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Loading mesh...";if(this.loadingOverlay){this.loadingOverlay.style.display=e?"flex":"none";var r=this.loadingOverlay.querySelector(".loading-text");r&&(r.textContent=t)}}},{key:"render",value:function(){this.renderWindow.render()}},{key:"resize",value:function(e,t){this.openGLRenderWindow.setSize(e,t),this.render()}},{key:"getActors",value:function(){return this.actors}},{key:"getRenderer",value:function(){return this.renderer}},{key:"destroy",value:function(){this._messageCleanup&&this._messageCleanup(),this._resizeObserver&&this._resizeObserver.disconnect(),this.axisIndicator&&this.axisIndicator.destroy(),this.clearScene(),this.interactor&&this.interactor.unbindEvents(),this.openGLRenderWindow&&this.openGLRenderWindow.delete(),this.renderWindow&&this.renderWindow.delete(),this.loadingOverlay&&this.loadingOverlay.parentElement&&this.loadingOverlay.parentElement.removeChild(this.loadingOverlay),this.infoOverlay&&this.infoOverlay.parentElement&&this.infoOverlay.parentElement.removeChild(this.infoOverlay),console.log("[BaseViewer] Destroyed")}}],t&&tr(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t,r,n,o}();const ir=or;function ar(e){return ar="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ar(e)}function sr(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var c=n&&n.prototype instanceof s?n:s,l=Object.create(c.prototype);return cr(l,"_invoke",function(r,n,o){var i,s,c,l=0,u=o||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return i=t,s=0,c=e,p.n=r,a}};function d(r,n){for(s=r,c=n,t=0;!f&&l&&!o&&t3?(o=h===n)&&(c=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&dn||n>h)&&(i[4]=r,i[5]=n,p.n=h,s=0))}if(o||r>1)return a;throw f=!0,n}return function(o,u,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===u&&d(u,h),s=u,c=h;(t=s<2?e:c)||!f;){i||(s?s<3?(s>1&&(p.n=-1),d(s,c)):p.n=c:p.v=c);try{if(l=2,i){if(s||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=i.return)&&t.call(i),s<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),s=1);i=e}else if((t=(f=p.n<0)?c:r.call(n,p))!==a)break}catch(t){i=e,s=1,c=t}finally{l=1}}return{value:t,done:f}}}(r,o,i),!0),l}var a={};function s(){}function c(){}function l(){}t=Object.getPrototypeOf;var u=[][n]?t(t([][n]())):(cr(t={},n,function(){return this}),t),f=l.prototype=s.prototype=Object.create(u);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,cr(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=l,cr(f,"constructor",l),cr(l,"constructor",c),c.displayName="GeneratorFunction",cr(l,o,"GeneratorFunction"),cr(f),cr(f,o,"Generator"),cr(f,n,function(){return this}),cr(f,"toString",function(){return"[object Generator]"}),(sr=function(){return{w:i,m:p}})()}function cr(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}cr=function(e,t,r,n){function i(t,r){cr(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},cr(e,t,r,n)}function lr(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function ur(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function fr(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,r){return t=br(t),function(e,t){if(t&&("object"==ar(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,yr()?Reflect.construct(t,r||[],br(e).constructor):t.apply(e,r))}(this,t,[e,fr(fr(fr({},wr),n),{},{settingsConfig:{title:"Settings",fields:[{type:te.COLOR,id:"meshColor",label:"Mesh Color",defaultValue:n.defaultMeshColor||wr.defaultMeshColor},{type:te.CHECKBOX,id:"showEdges",label:"Show Edges",defaultValue:n.showEdges||wr.showEdges},{type:te.COLOR,id:"edgeColor",label:"Edge Color",defaultValue:n.edgeColor||[.2,.2,.2]},{type:te.COLOR,id:"backgroundColor",label:"Background",defaultValue:n.backgroundColor||wr.backgroundColor}]},controlsConfig:{controls:[ue.CAMERA_VIEWS,ue.SCREENSHOT,ue.SETTINGS]}})])).currentField=null,r.currentColormap="erdc_rainbow_bright",r.availableFields=[],r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&mr(e,t)}(t,e),r=t,n=[{key:"loadMesh",value:function(){var e,r=(e=sr().m(function e(r){var n,o,i;return sr().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,vr(t,"loadMesh",this,3)([r]);case 1:return n=e.v,this.fieldVisualization&&this.polyDatas.length>0&&(o=this.fieldVisualization.extractFields(this.polyDatas[0]),this.availableFields=o.allFields,this.availableFields.length>0&&(null===(i=window.parent)||void 0===i||i.postMessage({type:"fieldsAvailable",fields:this.availableFields.map(function(e){return{name:e.fullName,displayName:e.displayName,type:e.type,range:e.range}})},"*"))),e.a(2,n)}},e,this)}),function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){lr(i,n,o,a,s,"next",e)}function s(e){lr(i,n,o,a,s,"throw",e)}a(void 0)})});return function(e){return r.apply(this,arguments)}}()},{key:"applyField",value:function(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.fieldVisualization&&0!==this.polyDatas.length){var n=null===(t=this.actors[0])||void 0===t?void 0:t.getMapper();n&&(this.fieldVisualization.applyField(n,this.polyDatas[0],e,{colormap:r.colormap||this.currentColormap,range:r.range,render:!0}),this.currentField=e,r.colormap&&(this.currentColormap=r.colormap))}else console.warn("[StandardViewer] Field visualization not available")}},{key:"setColormap",value:function(e){this.currentColormap=e,this.currentField&&this.applyField(this.currentField,{colormap:e})}},{key:"clearField",value:function(){if(this.actors.length>0){var e,t=this.actors[0].getMapper();t&&(null===(e=this.fieldVisualization)||void 0===e||e.disableScalarVisualization(t,!0))}this.currentField=null}},{key:"getColormapOptions",value:function(){var e;return(null===(e=this.fieldVisualization)||void 0===e?void 0:e.getColormapOptions())||[]}},{key:"getAvailableFields",value:function(){return this.availableFields}},{key:"_setupMessageListener",value:function(){var e=this;vr(t,"_setupMessageListener",this,3)([]),window.addEventListener("message",function(t){var r=t.data;if(r&&r.type)switch(r.type){case"setField":e.applyField(r.field,{colormap:r.colormap,range:r.range});break;case"setColormap":e.setColormap(r.colormap);break;case"clearField":e.clearField()}})}}],n&&dr(r.prototype,n),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n}(or);function Sr(e){var t=new Or(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{});return t.initialize(),t}const Cr=Or;function Pr(e){return Pr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Pr(e)}function Tr(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function kr(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,r){return t=Mr(t),function(e,t){if(t&&("object"==Pr(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,Ar()?Reflect.construct(t,r||[],Mr(e).constructor):t.apply(e,r))}(this,t,[e,kr(kr(kr({},Lr),n),{},{settingsConfig:{title:"Settings",fields:[{type:te.COLOR,id:"backgroundColor",label:"Background",defaultValue:n.backgroundColor||Lr.backgroundColor},{type:te.CHECKBOX,id:"showEdges",label:"Show Edges",defaultValue:!1}]},controlsConfig:{controls:[ue.CAMERA_VIEWS,ue.SCREENSHOT,ue.SETTINGS]}})])).textureInfo=null,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Fr(e,t)}(t,e),r=t,(n=[{key:"_configureLoadedActors",value:function(e){var t=this;this.textureManager&&e.actors.length>0&&(this.textureInfo=this.textureManager.applyTextureFixesMultiple(e.actors),this.textureManager.configureRenderer(this.renderer),console.log("[TexturedViewer] Texture info:",this.textureInfo),this.textureInfo.hasTexture||e.actors.forEach(function(e){t.textureManager.setActorColor(e,t.config.defaultMeshColor)}))}},{key:"_updateInfoOverlay",value:function(e){if(this.infoOverlay){var t=["File: ".concat(this.currentFilename)];e.actors&&t.push("Actors: ".concat(e.actors.length)),this.textureInfo&&(t.push("Textured: ".concat(this.textureInfo.hasTexture?"Yes":"No")),this.textureInfo.texturedActors>0&&t.push("Textured actors: ".concat(this.textureInfo.texturedActors))),this.infoOverlay.innerHTML=t.join("
")}}},{key:"getTextureInfo",value:function(){return this.textureInfo}},{key:"hasTextures",value:function(){var e;return(null===(e=this.textureInfo)||void 0===e?void 0:e.hasTexture)||!1}}])&&jr(r.prototype,n),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n}(or);function Br(e){var t=new _r(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{});return t.initialize(),t}const Rr=_r;function Vr(e){return Vr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Vr(e)}function Ir(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||Gr(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Dr(e){return function(e){if(Array.isArray(e))return zr(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Gr(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Gr(e,t){if(e){if("string"==typeof e)return zr(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?zr(e,t):void 0}}function zr(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r3?(o=h===n)&&(c=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&dn||n>h)&&(i[4]=r,i[5]=n,p.n=h,s=0))}if(o||r>1)return a;throw f=!0,n}return function(o,u,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===u&&d(u,h),s=u,c=h;(t=s<2?e:c)||!f;){i||(s?s<3?(s>1&&(p.n=-1),d(s,c)):p.n=c:p.v=c);try{if(l=2,i){if(s||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=i.return)&&t.call(i),s<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),s=1);i=e}else if((t=(f=p.n<0)?c:r.call(n,p))!==a)break}catch(t){i=e,s=1,c=t}finally{l=1}}return{value:t,done:f}}}(r,o,i),!0),l}var a={};function s(){}function c(){}function l(){}t=Object.getPrototypeOf;var u=[][n]?t(t([][n]())):(Wr(t={},n,function(){return this}),t),f=l.prototype=s.prototype=Object.create(u);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,Wr(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=l,Wr(f,"constructor",l),Wr(l,"constructor",c),c.displayName="GeneratorFunction",Wr(l,o,"GeneratorFunction"),Wr(f),Wr(f,o,"Generator"),Wr(f,n,function(){return this}),Wr(f,"toString",function(){return"[object Generator]"}),(Nr=function(){return{w:i,m:p}})()}function Wr(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}Wr=function(e,t,r,n){function i(t,r){Wr(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},Wr(e,t,r,n)}function Ur(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function Hr(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){Ur(i,n,o,a,s,"next",e)}function s(e){Ur(i,n,o,a,s,"throw",e)}a(void 0)})}}function Xr(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Yr(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.containerA=t,this.containerB=r,this.config=Yr(Yr({},$r),n),this.vtk=null,this.viewportA=null,this.viewportB=null,this.actorManager=null,this.fieldVisualization=null,this.layout=this.config.layout,this.syncCameras=this.config.syncCameras,this.syncFields=this.config.syncFields,this.isInitialized=!1,this._cameraObserver=null,this._isUpdatingCamera=!1,this._messageCleanup=null},t=[{key:"initialize",value:(o=Hr(Nr().m(function e(){return Nr().w(function(e){for(;;)switch(e.n){case 0:if(!this.isInitialized){e.n=1;break}return e.a(2);case 1:if(this.vtk=window.vtk,this.vtk){e.n=2;break}throw new Error("VTK.js not loaded");case 2:this.viewportA=this._createViewport(this.containerA,"A"),this.viewportB=this._createViewport(this.containerB,"B"),this.actorManager=new Y(this.vtk,{defaultColor:this.config.defaultMeshColorA}),this.fieldVisualization=new Vt(this.vtk,this.viewportA.renderWindow),this.syncCameras&&this._setupCameraSync(),this._setupResizeHandlers(),this._setupMessageListener(),this.isInitialized=!0,console.log("[DualViewer] Initialized");case 3:return e.a(2)}},e,this)})),function(){return o.apply(this,arguments)})},{key:"_createViewport",value:function(e,t){var r=this.vtk.Rendering.Core.vtkRenderWindow.newInstance(),n=this.vtk.Rendering.Core.vtkRenderer.newInstance();n.setBackground.apply(n,Dr(this.config.backgroundColor)),r.addRenderer(n);var o=this.vtk.Rendering.OpenGL.vtkRenderWindow.newInstance();o.setContainer(e),r.addView(o);var i=this.vtk.Rendering.Core.vtkRenderWindowInteractor.newInstance();i.setView(o),i.initialize(),i.bindEvents(e);var a=this.vtk.Interaction.Style.vtkInteractorStyleTrackballCamera.newInstance();i.setInteractorStyle(a);var s=e.getBoundingClientRect(),c=s.width,l=s.height;return o.setSize(c,l),{id:t,container:e,renderWindow:r,renderer:n,openGLRenderWindow:o,interactor:i,interactorStyle:a,cameraController:new B(n,{distanceMultiplier:this.config.cameraDistanceMultiplier}),textureManager:new Wt(this.vtk,r),actors:[],polyData:null,filename:null}}},{key:"_setupCameraSync",value:function(){var e=this,t=function(t,r){if(!e._isUpdatingCamera){e._isUpdatingCamera=!0;var n=t.renderer.getActiveCamera(),o=r.renderer.getActiveCamera();o.setPosition.apply(o,Dr(n.getPosition())),o.setFocalPoint.apply(o,Dr(n.getFocalPoint())),o.setViewUp.apply(o,Dr(n.getViewUp())),o.setParallelScale(n.getParallelScale()),r.renderWindow.render(),e._isUpdatingCamera=!1}},r=this.viewportA.renderer.getActiveCamera(),n=this.viewportB.renderer.getActiveCamera();r.onModified(function(){e.syncCameras&&t(e.viewportA,e.viewportB)}),n.onModified(function(){e.syncCameras&&t(e.viewportB,e.viewportA)})}},{key:"_setupResizeHandlers",value:function(){var e=this,t=function(e){var t=e.container.getBoundingClientRect(),r=t.width,n=t.height;r>0&&n>0&&(e.openGLRenderWindow.setSize(r,n),e.renderWindow.render())};this._resizeObserverA=new ResizeObserver(function(){return t(e.viewportA)}),this._resizeObserverB=new ResizeObserver(function(){return t(e.viewportB)}),this._resizeObserverA.observe(this.viewportA.container),this._resizeObserverB.observe(this.viewportB.container)}},{key:"_setupMessageListener",value:function(){var e=this;this._messageCleanup=S(function(t){switch(t.type){case"loadMeshA":e.loadMesh("A",t.url);break;case"loadMeshB":e.loadMesh("B",t.url);break;case"loadMesh":t.viewport?e.loadMesh(t.viewport,t.url):e.loadMesh("A",t.url);break;case"setLayout":e.setLayout(t.layout);break;case"setCameraSync":e.setCameraSync(t.enabled);break;case"setField":e.applyField(t.field,t.options);break;case"screenshot":e.captureScreenshot()}})}},{key:"loadMesh",value:(n=Hr(Nr().m(function e(t,r){var n,o,i,a,s=this;return Nr().w(function(e){for(;;)switch(e.p=e.n){case 0:return n="A"===t?this.viewportA:this.viewportB,o="A"===t?this.config.defaultMeshColorA:this.config.defaultMeshColorB,e.p=1,n.actors.forEach(function(e){return n.renderer.removeActor(e)}),n.actors=[],e.n=2,nt(r,this.vtk,{renderer:n.renderer});case 2:return i=e.v,n.actors=i.actors,n.polyData=i.polyData,n.filename=C(r),i.actors.forEach(function(e){n.renderer.addActor(e)}),i.hasTexture&&this.config.enableTextures?(n.textureManager.applyTextureFixesMultiple(i.actors),n.textureManager.configureRenderer(n.renderer)):i.hasVertexColors?i.actors.forEach(function(e){var t=e.getProperty();t&&s.config.showEdges&&t.setEdgeVisibility(!0)}):this.actorManager.configureActors(i.actors,{color:o,showEdges:this.config.showEdges}),this._positionCameraForViewport(n),n.renderWindow.render(),O((n.filename,i.format,i.hasTexture,i.hasVertexColors)),e.a(2,i);case 3:throw e.p=3,a=e.v,console.error("[DualViewer] Error loading mesh ".concat(t,":"),a),m("Failed to load mesh ".concat(t,": ").concat(a.message)),a;case 4:return e.a(2)}},e,this,[[1,3]])})),function(e,t){return n.apply(this,arguments)})},{key:"_positionCameraForViewport",value:function(e){if(0!==e.actors.length){for(var t=e.actors[0].getBounds(),r=1;r1&&void 0!==arguments[1]?arguments[1]:{};if(this.config.enableFields){var r=t.range;if(this.syncFields&&!r){var n=[this.viewportA.polyData,this.viewportB.polyData].filter(Boolean);n.length>0&&(r=this.fieldVisualization.calculateSynchronizedRange(n,e))}if(this.viewportA.polyData&&this.viewportA.actors.length>0){var o=this.viewportA.actors[0].getMapper();this.fieldVisualization.applyField(o,this.viewportA.polyData,e,Yr(Yr({},t),{},{range:r,render:!1}))}if(this.viewportB.polyData&&this.viewportB.actors.length>0){var i=this.viewportB.actors[0].getMapper();new Vt(this.vtk,this.viewportB.renderWindow).applyField(i,this.viewportB.polyData,e,Yr(Yr({},t),{},{range:r,render:!1}))}this.render()}}},{key:"setLayout",value:function(e){this.layout=e,console.log("[DualViewer] Layout set to: ".concat(e))}},{key:"setCameraSync",value:function(e){this.syncCameras=e,console.log("[DualViewer] Camera sync: ".concat(e))}},{key:"setFieldSync",value:function(e){this.syncFields=e}},{key:"setCameraView",value:function(e){var t=[].concat(Dr(this.viewportA.actors),Dr(this.viewportB.actors));if(0!==t.length){for(var r=t[0].getBounds(),n=1;n2&&void 0!==arguments[2]?arguments[2]:{});return r.initialize(),r}const tn=Qr;function rn(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var c=n&&n.prototype instanceof s?n:s,l=Object.create(c.prototype);return nn(l,"_invoke",function(r,n,o){var i,s,c,l=0,u=o||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return i=t,s=0,c=e,p.n=r,a}};function d(r,n){for(s=r,c=n,t=0;!f&&l&&!o&&t3?(o=h===n)&&(c=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&dn||n>h)&&(i[4]=r,i[5]=n,p.n=h,s=0))}if(o||r>1)return a;throw f=!0,n}return function(o,u,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===u&&d(u,h),s=u,c=h;(t=s<2?e:c)||!f;){i||(s?s<3?(s>1&&(p.n=-1),d(s,c)):p.n=c:p.v=c);try{if(l=2,i){if(s||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=i.return)&&t.call(i),s<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),s=1);i=e}else if((t=(f=p.n<0)?c:r.call(n,p))!==a)break}catch(t){i=e,s=1,c=t}finally{l=1}}return{value:t,done:f}}}(r,o,i),!0),l}var a={};function s(){}function c(){}function l(){}t=Object.getPrototypeOf;var u=[][n]?t(t([][n]())):(nn(t={},n,function(){return this}),t),f=l.prototype=s.prototype=Object.create(u);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,nn(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=l,nn(f,"constructor",l),nn(l,"constructor",c),c.displayName="GeneratorFunction",nn(l,o,"GeneratorFunction"),nn(f),nn(f,o,"Generator"),nn(f,n,function(){return this}),nn(f,"toString",function(){return"[object Generator]"}),(rn=function(){return{w:i,m:p}})()}function nn(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}nn=function(e,t,r,n){function i(t,r){nn(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},nn(e,t,r,n)}function on(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}var an={STANDARD:"standard",TEXTURED:"textured",DUAL:"dual"},sn={create:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};switch(console.log("[GeomPack Viewer] Creating ".concat(e," viewer")),e){case an.STANDARD:case"standard":return new Cr(t,r);case an.TEXTURED:case"textured":return new Rr(t,r);case an.DUAL:case"dual":if(Array.isArray(t))return new tn(t[0],t[1],r);if(r.containerB)return new tn(t,r.containerB,r);throw new Error("DualViewer requires two containers");default:return console.warn("[GeomPack Viewer] Unknown viewer type: ".concat(e,", falling back to standard")),new Cr(t,r)}},createAndInit:function(e,t){var r,n=arguments,o=this;return(r=rn().m(function r(){var i,a;return rn().w(function(r){for(;;)switch(r.n){case 0:return i=n.length>2&&void 0!==n[2]?n[2]:{},a=o.create(e,t,i),r.n=1,a.initialize();case 1:return r.a(2,a)}},r)}),function(){var e=this,t=arguments;return new Promise(function(n,o){var i=r.apply(e,t);function a(e){on(i,n,o,a,s,"next",e)}function s(e){on(i,n,o,a,s,"throw",e)}a(void 0)})})()}};const cn={ColorUtils:i,BoundsUtils:d,MessageHandler:P,CameraController:R,ActorManager:Z,Representation:X,BaseViewer:ir,SettingsPanel:ie,SettingTypes:te,ControlsBar:pe,ControlTypes:le,StandardControls:ue,LoaderFactory:ct,FormatTypes:qe,STLLoader:me,OBJLoader:ke,VTPLoader:_e,GLTFLoader:He,FieldVisualization:It,TextureManager:Ut,ScreenshotCapture:gt,AxisIndicator:xt,StandardViewer:Cr,TexturedViewer:Rr,DualViewer:tn,DualLayoutMode:Jr,ViewerTypes:an,createStandardViewer:Sr,createTexturedViewer:Br,createDualViewer:en,ViewerFactory:sn};return t})());