@xeokit/xeokit-sdk
Version:
3D BIM IFC Viewer SDK for AEC engineering applications. Open Source JavaScript Toolkit based on pure WebGL for top performance, real-world coordinates and full double precision
7 lines (6 loc) • 1.73 MB
JavaScript
/**
* xeokit-sdk v2.6.107
* Commit: a1558d52a694d6b8435eb85661f0d13b0a1a6fea
* Built: 2026-03-12T09:09:01.366Z
*/
var e,t,n,r=A().mark(Th),i=A().mark(Ph),s=A().mark(gv);function a(e){var t="function"==typeof Map?new Map:void 0;return a=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return o(e,arguments,C(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),y(r,e)},a(e)}function o(e,t,n){return o=B()?Reflect.construct.bind():function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&y(i,n.prototype),i},o.apply(null,arguments)}function A(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */A=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},i=r.iterator||"@@iterator",s=r.asyncIterator||"@@asyncIterator",a=r.toStringTag||"@@toStringTag";function o(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{o({},"")}catch(e){o=function(e,t,n){return e[t]=n}}function c(e,t,n,r){var i=t&&t.prototype instanceof h?t:h,s=Object.create(i.prototype),a=new C(r||[]);return s._invoke=function(e,t,n){var r="suspendedStart";return function(i,s){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===i)throw s;return E()}for(n.method=i,n.arg=s;;){var a=n.delegate;if(a){var o=b(a,n);if(o){if(o===u)continue;return o}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var A=l(e,t,n);if("normal"===A.type){if(r=n.done?"completed":"suspendedYield",A.arg===u)continue;return{value:A.arg,done:n.done}}"throw"===A.type&&(r="completed",n.method="throw",n.arg=A.arg)}}}(e,n,a),s}function l(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var u={};function h(){}function d(){}function f(){}var p={};o(p,i,(function(){return this}));var v=Object.getPrototypeOf,g=v&&v(v(k([])));g&&g!==t&&n.call(g,i)&&(p=g);var m=f.prototype=h.prototype=Object.create(p);function y(e){["next","throw","return"].forEach((function(t){o(e,t,(function(e){return this._invoke(t,e)}))}))}function _(e,t){function r(i,s,a,o){var A=l(e[i],e,s);if("throw"!==A.type){var c=A.arg,u=c.value;return u&&"object"==M(u)&&n.call(u,"__await")?t.resolve(u.__await).then((function(e){r("next",e,a,o)}),(function(e){r("throw",e,a,o)})):t.resolve(u).then((function(e){c.value=e,a(c)}),(function(e){return r("throw",e,a,o)}))}o(A.arg)}var i;this._invoke=function(e,n){function s(){return new t((function(t,i){r(e,n,t,i)}))}return i=i?i.then(s,s):s()}}function b(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,b(e,t),"throw"===t.method))return u;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return u}var r=l(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,u;var i=r.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function w(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function B(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function C(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(w,this),this.reset(!0)}function k(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,s=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return s.next=s}}return{next:E}}function E(){return{value:void 0,done:!0}}return d.prototype=f,o(m,"constructor",f),o(f,"constructor",d),d.displayName=o(f,a,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===d||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,f):(e.__proto__=f,o(e,a,"GeneratorFunction")),e.prototype=Object.create(m),e},e.awrap=function(e){return{__await:e}},y(_.prototype),o(_.prototype,s,(function(){return this})),e.AsyncIterator=_,e.async=function(t,n,r,i,s){void 0===s&&(s=Promise);var a=new _(c(t,n,r,i),s);return e.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},y(m),o(m,a,"Generator"),o(m,i,(function(){return this})),o(m,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},e.values=k,C.prototype={constructor:C,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(B),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return a.type="throw",a.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var i=this.tryEntries.length-1;i>=0;--i){var s=this.tryEntries[i],a=s.completion;if("root"===s.tryLoc)return r("end");if(s.tryLoc<=this.prev){var o=n.call(s,"catchLoc"),A=n.call(s,"finallyLoc");if(o&&A){if(this.prev<s.catchLoc)return r(s.catchLoc,!0);if(this.prev<s.finallyLoc)return r(s.finallyLoc)}else if(o){if(this.prev<s.catchLoc)return r(s.catchLoc,!0)}else{if(!A)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return r(s.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var s=i;break}}s&&("break"===e||"continue"===e)&&s.tryLoc<=t&&t<=s.finallyLoc&&(s=null);var a=s?s.completion:{};return a.type=e,a.arg=t,s?(this.method="next",this.next=s.finallyLoc,u):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),u},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),B(n),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;B(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:k(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),u}},e}function c(e,t,n,r,i,s,a){try{var o=e[s](a),A=o.value}catch(e){return void n(e)}o.done?t(A):Promise.resolve(A).then(r,i)}function l(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var s=e.apply(t,n);function a(e){c(s,r,i,a,o,"next",e)}function o(e){c(s,r,i,a,o,"throw",e)}a(void 0)}))}}function u(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=E(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}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 s,a=!0,o=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){o=!0,s=e},f:function(){try{a||null==n.return||n.return()}finally{if(o)throw s}}}}function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?h(Object(n),!0).forEach((function(t){f(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e){return function(e){if(Array.isArray(e))return F(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||E(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 v(){return v="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=g(e,t);if(r){var i=Object.getOwnPropertyDescriptor(r,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},v.apply(this,arguments)}function g(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=C(e)););return e}function m(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&&y(e,t)}function y(e,t){return y=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},y(e,t)}function _(e){var t=B();return function(){var n,r=C(e);if(t){var i=C(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return b(this,n)}}function b(e,t){if(t&&("object"===M(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return w(e)}function w(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function B(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function C(e){return C=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},C(e)}function M(e){return M="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},M(e)}function k(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,s=[],a=!0,o=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(s.push(r.value),!t||s.length!==t);a=!0);}catch(e){o=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(o)throw i}}return s}(e,t)||E(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 E(e,t){if(e){if("string"==typeof e)return F(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?F(e,t):void 0}}function F(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function x(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function U(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function I(e,t,n){return t&&U(e.prototype,t),n&&U(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function T(e){return new D(e)}function P(e){return function(){return new S(e.apply(this,arguments))}}function S(e){var t,n;function r(t,n){try{var s=e[t](n),a=s.value,o=a instanceof D;Promise.resolve(o?a.wrapped:a).then((function(e){o?r("return"===t?"return":"next",e):i(s.done?"return":"normal",e)}),(function(e){r("throw",e)}))}catch(e){i("throw",e)}}function i(e,i){switch(e){case"return":t.resolve({value:i,done:!0});break;case"throw":t.reject(i);break;default:t.resolve({value:i,done:!1})}(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(e,i){return new Promise((function(s,a){var o={key:e,arg:i,resolve:s,reject:a,next:null};n?n=n.next=o:(t=n=o,r(e,i))}))},"function"!=typeof e.return&&(this.return=void 0)}function D(e){this.wrapped=e}function Q(e){var t,n,r,i=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,r=Symbol.iterator);i--;){if(n&&null!=(t=e[n]))return t.call(e);if(r&&null!=(t=e[r]))return new R(t.call(e));n="@@asyncIterator",r="@@iterator"}throw new TypeError("Object is not async iterable")}function R(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return R=function(e){this.s=e,this.n=e.next},R.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new R(e)}S.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},S.prototype.next=function(e){return this._invoke("next",e)},S.prototype.throw=function(e){return this._invoke("throw",e)},S.prototype.return=function(e){return this._invoke("return",e)},"undefined"!=typeof window&&(window.__XEOKIT__={version:"2.6.107",commit:"a1558d52a694d6b8435eb85661f0d13b0a1a6fea",built:"2026-03-12T09:09:01.366Z"});var O=function(){function e(t,n){x(this,e),this.items=t||[],this._lastUniqueId=(n||0)+1}return I(e,[{key:"addItem",value:function(){var e;if(2===arguments.length){var t=arguments[0];if(e=arguments[1],this.items[t])throw"ID clash: '"+t+"'";return this.items[t]=e,t}for(e=arguments[0]||{};;){var n=this._lastUniqueId++;if(!this.items[n])return this.items[n]=e,n}}},{key:"removeItem",value:function(e){var t=this.items[e];return delete this.items[e],t}}]),e}(),V=new O,L=I((function e(t){x(this,e),this.id=t,this.parentItem=null,this.groups=[],this.menuElement=null,this.shown=!1,this.mouseOver=0})),H=I((function e(){x(this,e),this.items=[]})),N=I((function e(t,n,r,i,s){x(this,e),this.id=t,this.getTitle=n,this.doAction=r,this.getEnabled=i,this.getShown=s,this.itemElement=null,this.subMenu=null,this.enabled=!0})),G=function(){function e(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};x(this,e),this._id=V.addItem(),this._context=null,this._enabled=!1,this._itemsCfg=[],this._rootMenu=null,this._menuList=[],this._menuMap={},this._itemList=[],this._itemMap={},this._shown=!1,this._nextId=0,this._parentNode=n.parentNode||document.body,this._offsetParent=this._parentNode instanceof ShadowRoot?this._parentNode.host:this._parentNode,this._eventSubs={},!1!==n.hideOnMouseDown&&(this._parentNode.addEventListener("mousedown",(function(e){e.target.classList.contains("xeokit-context-menu-item")||t.hide()})),this._parentNode.addEventListener("touchstart",this._canvasTouchStartHandler=function(e){e.target.classList.contains("xeokit-context-menu-item")||t.hide()})),n.items&&(this.items=n.items),this._hideOnAction=!1!==n.hideOnAction,this.context=n.context,this.enabled=!1!==n.enabled,this.hide()}return I(e,[{key:"on",value:function(e,t){var n=this._eventSubs[e];n||(n=[],this._eventSubs[e]=n),n.push(t)}},{key:"fire",value:function(e,t){var n=this._eventSubs[e];if(n)for(var r=0,i=n.length;r<i;r++)n[r](t)}},{key:"items",get:function(){return this._itemsCfg},set:function(e){this._clear(),this._itemsCfg=e||[],this._parseItems(e),this._createUI()}},{key:"enabled",get:function(){return this._enabled},set:function(e){(e=!!e)!==this._enabled&&(this._enabled=e,this._enabled||this.hide())}},{key:"context",get:function(){return this._context},set:function(e){this._context=e}},{key:"show",value:function(e,t){this._context?this._enabled&&(this._shown||(this._hideAllMenus(),this._updateItemsTitles(),this._updateItemsEnabledStatus(),this._showMenu(this._rootMenu.id,e,t),this._updateSubMenuInfo(),this._shown=!0,this.fire("shown",{}))):console.error("ContextMenu cannot be shown without a context - set context first")}},{key:"shown",get:function(){return this._shown}},{key:"hide",value:function(){this._enabled&&this._shown&&(this._hideAllMenus(),this._shown=!1,this.fire("hidden",{}))}},{key:"destroy",value:function(){this._context=null,this._clear(),null!==this._id&&(V.removeItem(this._id),this._id=null)}},{key:"_clear",value:function(){for(var e=0,t=this._menuList.length;e<t;e++){this._menuList[e].menuElement.remove()}this._itemsCfg=[],this._rootMenu=null,this._menuList=[],this._menuMap={},this._itemList=[],this._itemMap={}}},{key:"_parseItems",value:function(e){var t=this;this._rootMenu=function e(n){for(var r=t._getNextId(),i=new L(r),s=0,a=n.length;s<a;s++){var o=n[s],A=new H;i.groups.push(A);for(var c=function(n,r){var s=o[n],a=s.items,c=a&&a.length>0,l=t._getNextId(),u=s.getTitle||function(){return s.title||""},h=s.doAction||s.callback||function(){},d=s.getEnabled||function(){return!0},f=s.getShown||function(){return!0},p=new N(l,u,h,d,f);if(p.parentMenu=i,A.items.push(p),c){var v=e(a);p.subMenu=v,v.parentItem=p}t._itemList.push(p),t._itemMap[p.id]=p},l=0,u=o.length;l<u;l++)c(l)}return t._menuList.push(i),t._menuMap[i.id]=i,i}(e)}},{key:"_getNextId",value:function(){return"ContextMenu_"+this._id+"_"+this._nextId++}},{key:"_createUI",value:function(){var e=this;!function t(n){e._createMenuUI(n);for(var r=n.groups,i=0,s=r.length;i<s;i++)for(var a=r[i].items,o=0,A=a.length;o<A;o++){var c=a[o].subMenu;c&&t(c)}}(this._rootMenu)}},{key:"_createMenuUI",value:function(e){var t=this,n=e.groups,r=[],i=document.createElement("div");if(i.classList.add("xeokit-context-menu",e.id),i.style.zIndex=3e5,i.style.position="absolute",r.push("<ul>"),n)for(var s=0,a=n.length;s<a;s++){var o=s,A=a,c=n[s].items;if(c)for(var l=0,u=c.length;l<u;l++){var h=c[l],d=h.subMenu,f=h.title||"";d?(r.push('<li id="'+h.id+'" class="xeokit-context-menu-item xeokit-context-menu-submenu">'+f+"</li>"),o===A-1||l<u-1||r.push('<li id="'+h.id+'" class="xeokit-context-menu-item-separator"></li>')):(r.push('<li id="'+h.id+'" class="xeokit-context-menu-item">'+f+"</li>"),o===A-1||l<u-1||r.push('<li id="'+h.id+'" class="xeokit-context-menu-item-separator"></li>'))}}r.push("</ul>");var p=r.join("");i.innerHTML=p,this._parentNode.appendChild(i),e.menuElement=i,i.style["border-radius"]="4px",i.style.display="none",i.style["z-index"]=3e5,i.style.background="white",i.style.border="1px solid black",i.style["box-shadow"]="0 4px 5px 0 gray",i.oncontextmenu=function(e){e.preventDefault()};var v=this,g=null;if(n)for(var m=0,y=n.length;m<y;m++){var _=n[m].items;if(_)for(var b=function(e,n){var r=_[e],i=r.subMenu;if(r.itemElement=t._parentNode.querySelector("#".concat(r.id)),!r.itemElement)return console.error("ContextMenu item element not found: "+r.id),"continue";r.itemElement.addEventListener("mouseenter",(function(e){e.preventDefault();var t=r.subMenu;if(t){if(g&&g.id!==t.id&&(v._hideMenu(g.id),g=null),!1!==r.enabled){var n=r.itemElement,i=t.menuElement,s=n.getBoundingClientRect();i.getBoundingClientRect();var a=v._offsetParent.getBoundingClientRect(),o=200,A=s.right+o<a.right,c=s.left-o>a.left;if(A)v._showMenu(t.id,s.right+window.scrollX-5,s.top+window.scrollY-1);else if(c)v._showMenu(t.id,s.left-o+window.scrollX,s.top+window.scrollY-1);else{var l=s.left-a.left,u=a.right-s.right;u>l?v._showMenu(t.id,s.right-5-(o-u),s.top+window.scrollY-1):v._showMenu(t.id,s.left-l,s.top+window.scrollY-1)}g=t}}else g&&(v._hideMenu(g.id),g=null)})),i||(r.itemElement.addEventListener("click",(function(e){e.preventDefault(),v._context&&!1!==r.enabled&&(r.doAction&&r.doAction(v._context),t._hideOnAction?v.hide():(v._updateItemsTitles(),v._updateItemsEnabledStatus()))})),r.itemElement.addEventListener("mouseup",(function(e){3===e.which&&(e.preventDefault(),v._context&&!1!==r.enabled&&(r.doAction&&r.doAction(v._context),t._hideOnAction?v.hide():(v._updateItemsTitles(),v._updateItemsEnabledStatus())))})),r.itemElement.addEventListener("mouseenter",(function(e){e.preventDefault(),!1!==r.enabled&&r.doHover&&r.doHover(v._context)})))},w=0,B=_.length;w<B;w++)b(w)}}},{key:"_updateItemsTitles",value:function(){if(this._context)for(var e=0,t=this._itemList.length;e<t;e++){var n=this._itemList[e],r=n.itemElement;if(r){var i=n.getShown;if(i&&i(this._context)){var s=n.getTitle(this._context);n.subMenu,r.innerText=s}}}}},{key:"_updateItemsEnabledStatus",value:function(){if(this._context)for(var e=0,t=this._itemList.length;e<t;e++){var n=this._itemList[e],r=n.itemElement;if(r){var i=n.getEnabled;if(i){var s=n.getShown;if(s){var a=s(this._context);if(n.shown=a,a){r.style.display="";var o=i(this._context);n.enabled=o,o?r.classList.remove("disabled"):r.classList.add("disabled")}else r.style.display="none"}}}}}},{key:"_updateSubMenuInfo",value:function(){var e,t,n,r,i,s;this._context&&this._itemList.forEach((function(a){a.subMenu&&(e=a.itemElement,t=e.getBoundingClientRect(),n=a.subMenu.menuElement,r={visibility:n.style.visibility,display:n.style.display},n.style.display="block",n.style.visibility="hidden",s=a.subMenu.menuElement.getBoundingClientRect().width,n.style.visibility=r.visibility,n.style.display=r.display,i=t.right+s>window.innerWidth,e.setAttribute("data-submenuposition",i?"left":"right"))}))}},{key:"_showMenu",value:function(e,t,n){var r=this._menuMap[e];if(r){if(!r.shown){var i=r.menuElement;i&&(this._showMenuElement(i,t,n),r.shown=!0)}}else console.error("Menu not found: "+e)}},{key:"_hideMenu",value:function(e){var t=this._menuMap[e];if(t){if(t.shown){var n=t.menuElement;n&&(this._hideMenuElement(n),t.shown=!1)}}else console.error("Menu not found: "+e)}},{key:"_hideAllMenus",value:function(){for(var e=0,t=this._menuList.length;e<t;e++){var n=this._menuList[e];this._hideMenu(n.id)}}},{key:"_showMenuElement",value:function(e,t,n){e.style.display="block";var r=e.offsetHeight,i=e.offsetWidth,s=this._offsetParent.getBoundingClientRect(),a=this._offsetParent===window.document.body&&0===s.bottom?window.innerHeight:s.bottom+window.scrollY,o=s.right+window.scrollX;n+r>a&&(n=a-r),t+i>o&&(t=o-i),e.style.left=t-s.left-window.scrollX+"px",e.style.top=n-s.top-window.scrollY+"px"}},{key:"_hideMenuElement",value:function(e){e.style.display="none"}}]),e}(),j=function(){function e(t){var n=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};x(this,e),this.viewer=t,this.scene=this.viewer.scene,this._lensCursorDiv=document.createElement("div"),this._lensParams={canvasSize:300,cursorBorder:2,cursorSize:10},this._lensCursorDiv.style.borderRadius="50%",this._lensCursorDiv.style.width=this._lensParams.cursorSize+"px",this._lensCursorDiv.style.height=this._lensParams.cursorSize+"px",this._lensCursorDiv.style.zIndex="100000",this._lensCursorDiv.style.position="absolute",this._lensCursorDiv.style.pointerEvents="none",this._lensContainer=document.createElement("div"),this._lensContainerId=r.containerId||"xeokit-lens",this._lensContainer.setAttribute("id",this._lensContainerId),this._lensContainer.style.border="1px solid black",this._lensContainer.style.background="white",this._lensContainer.style.borderRadius="50%",this._lensContainer.style.width=this._lensParams.canvasSize+"px",this._lensContainer.style.height=this._lensParams.canvasSize+"px",this._lensContainer.style.zIndex="15000",this._lensContainer.style.position="absolute",this._lensContainer.style.pointerEvents="none",this._lensContainer.style.visibility="hidden",this._lensCanvas=document.createElement("canvas"),this._lensCanvas.id="".concat(this._lensContainerId,"-canvas"),this._lensCanvas.style.borderRadius="50%",this._lensCanvas.style.width=this._lensParams.canvasSize+"px",this._lensCanvas.style.height=this._lensParams.canvasSize+"px",this._lensCanvas.style.zIndex="15000",this._lensCanvas.style.pointerEvents="none",document.body.appendChild(this._lensContainer),this._lensContainer.appendChild(this._lensCanvas),this._lensContainer.appendChild(this._lensCursorDiv),this._lensCanvasContext=this._lensCanvas.getContext("2d"),this._canvasElement=this.viewer.scene.canvas.canvas,this._canvasPos=null,this._snappedCanvasPos=null,this._lensPosToggle=r.lensPosToggle||!0,this._lensPosToggleAmount=r.lensPosToggleAmount||85,this._lensPosMarginLeft=r.lensPosMarginLeft||85,this._lensPosMarginTop=r.lensPosMarginTop||25,this._lensContainer.style.marginTop="".concat(this._lensPosMarginTop,"px"),this._lensContainer.style.marginLeft="".concat(this._lensPosMarginLeft,"px"),this._zoomLevel=r.zoomLevel||2,this._active=!1!==r.active,this._visible=!1,this.snapped=!1,this._onViewerRendering=this.viewer.scene.on("rendering",(function(){n._active&&n._visible&&n.update()}))}return I(e,[{key:"update",value:function(){if(this._active&&this._visible&&this._canvasPos){var e=this._lensContainer.getBoundingClientRect(),t=this._canvasElement.getBoundingClientRect(),n=this._canvasPos[0]<e.right&&this._canvasPos[0]>e.left&&this._canvasPos[1]<e.bottom&&this._canvasPos[1]>e.top;this._lensContainer.style.marginLeft="".concat(this._lensPosMarginLeft,"px"),n&&(this._lensPosToggle?this._lensContainer.style.marginTop="".concat(t.bottom-t.top-this._lensCanvas.height-this._lensPosToggleAmount,"px"):this._lensContainer.style.marginTop="".concat(this._lensPosMarginTop,"px"),this._lensPosToggle=!this._lensPosToggle),this._lensCanvasContext.clearRect(0,0,this._lensCanvas.width,this._lensCanvas.height);var r=Math.max(this._lensCanvas.width,this._lensCanvas.height)/this._zoomLevel;this._lensCanvasContext.drawImage(this._canvasElement,this._canvasPos[0]-r/2,this._canvasPos[1]-r/2,r,r,0,0,this._lensCanvas.width,this._lensCanvas.height);var i=this._lensParams.canvasSize/2-this._lensParams.cursorSize/2-this._lensParams.cursorBorder,s=this._snappedCanvasPos?this._snappedCanvasPos[0]-this._canvasPos[0]:0,a=this._snappedCanvasPos?this._snappedCanvasPos[1]-this._canvasPos[1]:0;this._lensCursorDiv.style.left="".concat(i+s*this._zoomLevel,"px"),this._lensCursorDiv.style.top="".concat(i+a*this._zoomLevel,"px")}}},{key:"zoomFactor",get:function(){return this._zoomFactor},set:function(e){this._zoomFactor=e,this.update()}},{key:"canvasPos",get:function(){return this._canvasPos},set:function(e){this._canvasPos=e,this.update()}},{key:"snappedCanvasPos",get:function(){return this._snappedCanvasPos},set:function(e){this._snappedCanvasPos=e,this.update()}},{key:"snapped",get:function(){return this._snapped},set:function(e){this._snapped=e;var t=k(e?["greenyellow","green"]:["pink","red"],2),n=t[0],r=t[1];this._lensCursorDiv.style.background=n,this._lensCursorDiv.style.border=this._lensParams.cursorBorder+"px solid "+r}},{key:"_updateActiveVisible",value:function(){this._lensContainer.style.visibility=this._active&&this._visible?"visible":"hidden",this.update()}},{key:"active",get:function(){return this._active},set:function(e){this._active=e,this._updateActiveVisible()}},{key:"visible",get:function(){return this._visible},set:function(e){this._visible=e,this._updateActiveVisible()}},{key:"destroy",value:function(){this._destroyed||(this.viewer.scene.off(this._onViewerRendering),this._lensContainer.removeChild(this._lensCanvas),document.body.removeChild(this._lensContainer),this._destroyed=!0)}}]),e}();function W(e,t){var n,r,i,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2,a=t&&t.length,o=a?t[0]*s:e.length,A=z(e,0,o,s,!0),c=[];if(!A||A.next===A.prev)return c;if(a&&(A=$(e,t,A,s)),e.length>80*s){n=1/0,r=1/0;for(var l=-1/0,u=-1/0,h=s;h<o;h+=s){var d=e[h],f=e[h+1];d<n&&(n=d),f<r&&(r=f),d>l&&(l=d),f>u&&(u=f)}i=0!==(i=Math.max(l-n,u-r))?32767/i:0}return K(A,c,s,n,r,i,0),c}function z(e,t,n,r,i){var s;if(i===function(e,t,n,r){for(var i=0,s=t,a=n-r;s<n;s+=r)i+=(e[a]-e[s])*(e[s+1]+e[a+1]),a=s;return i}(e,t,n,r)>0)for(var a=t;a<n;a+=r)s=pe(a/r|0,e[a],e[a+1],s);else for(var o=n-r;o>=t;o-=r)s=pe(o/r|0,e[o],e[o+1],s);return s&&ce(s,s.next)&&(ve(s),s=s.next),s}function X(e,t){if(!e)return e;t||(t=e);var n,r=e;do{if(n=!1,r.steiner||!ce(r,r.next)&&0!==Ae(r.prev,r,r.next))r=r.next;else{if(ve(r),(r=t=r.prev)===r.next)break;n=!0}}while(n||r!==t);return t}function K(e,t,n,r,i,s,a){if(e){!a&&s&&function(e,t,n,r){var i=e;do{0===i.z&&(i.z=re(i.x,i.y,t,n,r)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==e);i.prevZ.nextZ=null,i.prevZ=null,function(e){var t,n=1;do{var r=e,i=void 0;e=null;var s=null;for(t=0;r;){t++;for(var a=r,o=0,A=0;A<n&&(o++,a=a.nextZ);A++);for(var c=n;o>0||c>0&&a;)0!==o&&(0===c||!a||r.z<=a.z)?(i=r,r=r.nextZ,o--):(i=a,a=a.nextZ,c--),s?s.nextZ=i:e=i,i.prevZ=s,s=i;r=a}s.nextZ=null,n*=2}while(t>1)}(i)}(e,r,i,s);for(var o=e;e.prev!==e.next;){var A=e.prev,c=e.next;if(s?J(e,r,i,s):Z(e))t.push(A.i,e.i,c.i),ve(e),e=c.next,o=c.next;else if((e=c)===o){a?1===a?K(e=Y(X(e),t),t,n,r,i,s,2):2===a&&q(e,t,n,r,i,s):K(X(e),t,n,r,i,s,1);break}}}}function Z(e){var t=e.prev,n=e,r=e.next;if(Ae(t,n,r)>=0)return!1;for(var i=t.x,s=n.x,a=r.x,o=t.y,A=n.y,c=r.y,l=Math.min(i,s,a),u=Math.min(o,A,c),h=Math.max(i,s,a),d=Math.max(o,A,c),f=r.next;f!==t;){if(f.x>=l&&f.x<=h&&f.y>=u&&f.y<=d&&ae(i,o,s,A,a,c,f.x,f.y)&&Ae(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function J(e,t,n,r){var i=e.prev,s=e,a=e.next;if(Ae(i,s,a)>=0)return!1;for(var o=i.x,A=s.x,c=a.x,l=i.y,u=s.y,h=a.y,d=Math.min(o,A,c),f=Math.min(l,u,h),p=Math.max(o,A,c),v=Math.max(l,u,h),g=re(d,f,t,n,r),m=re(p,v,t,n,r),y=e.prevZ,_=e.nextZ;y&&y.z>=g&&_&&_.z<=m;){if(y.x>=d&&y.x<=p&&y.y>=f&&y.y<=v&&y!==i&&y!==a&&ae(o,l,A,u,c,h,y.x,y.y)&&Ae(y.prev,y,y.next)>=0)return!1;if(y=y.prevZ,_.x>=d&&_.x<=p&&_.y>=f&&_.y<=v&&_!==i&&_!==a&&ae(o,l,A,u,c,h,_.x,_.y)&&Ae(_.prev,_,_.next)>=0)return!1;_=_.nextZ}for(;y&&y.z>=g;){if(y.x>=d&&y.x<=p&&y.y>=f&&y.y<=v&&y!==i&&y!==a&&ae(o,l,A,u,c,h,y.x,y.y)&&Ae(y.prev,y,y.next)>=0)return!1;y=y.prevZ}for(;_&&_.z<=m;){if(_.x>=d&&_.x<=p&&_.y>=f&&_.y<=v&&_!==i&&_!==a&&ae(o,l,A,u,c,h,_.x,_.y)&&Ae(_.prev,_,_.next)>=0)return!1;_=_.nextZ}return!0}function Y(e,t){var n=e;do{var r=n.prev,i=n.next.next;!ce(r,i)&&le(r,n,n.next,i)&&de(r,i)&&de(i,r)&&(t.push(r.i,n.i,i.i),ve(n),ve(n.next),n=e=i),n=n.next}while(n!==e);return X(n)}function q(e,t,n,r,i,s){var a=e;do{for(var o=a.next.next;o!==a.prev;){if(a.i!==o.i&&oe(a,o)){var A=fe(a,o);return a=X(a,a.next),A=X(A,A.next),K(a,t,n,r,i,s,0),void K(A,t,n,r,i,s,0)}o=o.next}a=a.next}while(a!==e)}function $(e,t,n,r){for(var i=[],s=0,a=t.length;s<a;s++){var o=z(e,t[s]*r,s<a-1?t[s+1]*r:e.length,r,!1);o===o.next&&(o.steiner=!0),i.push(ie(o))}i.sort(ee);for(var A=0;A<i.length;A++)n=te(i[A],n);return n}function ee(e,t){var n=e.x-t.x;0===n&&(0===(n=e.y-t.y)&&(n=(e.next.y-e.y)/(e.next.x-e.x)-(t.next.y-t.y)/(t.next.x-t.x)));return n}function te(e,t){var n=function(e,t){var n,r=t,i=e.x,s=e.y,a=-1/0;if(ce(e,r))return r;do{if(ce(e,r.next))return r.next;if(s<=r.y&&s>=r.next.y&&r.next.y!==r.y){var o=r.x+(s-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(o<=i&&o>a&&(a=o,n=r.x<r.next.x?r:r.next,o===i))return n}r=r.next}while(r!==t);if(!n)return null;var A=n,c=n.x,l=n.y,u=1/0;r=n;do{if(i>=r.x&&r.x>=c&&i!==r.x&&se(s<l?i:a,s,c,l,s<l?a:i,s,r.x,r.y)){var h=Math.abs(s-r.y)/(i-r.x);de(r,e)&&(h<u||h===u&&(r.x>n.x||r.x===n.x&&ne(n,r)))&&(n=r,u=h)}r=r.next}while(r!==A);return n}(e,t);if(!n)return t;var r=fe(n,e);return X(r,r.next),X(n,n.next)}function ne(e,t){return Ae(e.prev,e,t.prev)<0&&Ae(t.next,e,e.next)<0}function re(e,t,n,r,i){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-n)*i|0)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*i|0)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function ie(e){var t=e,n=e;do{(t.x<n.x||t.x===n.x&&t.y<n.y)&&(n=t),t=t.next}while(t!==e);return n}function se(e,t,n,r,i,s,a,o){return(i-a)*(t-o)>=(e-a)*(s-o)&&(e-a)*(r-o)>=(n-a)*(t-o)&&(n-a)*(s-o)>=(i-a)*(r-o)}function ae(e,t,n,r,i,s,a,o){return!(e===a&&t===o)&&se(e,t,n,r,i,s,a,o)}function oe(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&le(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}(e,t)&&(de(e,t)&&de(t,e)&&function(e,t){var n=e,r=!1,i=(e.x+t.x)/2,s=(e.y+t.y)/2;do{n.y>s!=n.next.y>s&&n.next.y!==n.y&&i<(n.next.x-n.x)*(s-n.y)/(n.next.y-n.y)+n.x&&(r=!r),n=n.next}while(n!==e);return r}(e,t)&&(Ae(e.prev,e,t.prev)||Ae(e,t.prev,t))||ce(e,t)&&Ae(e.prev,e,e.next)>0&&Ae(t.prev,t,t.next)>0)}function Ae(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function ce(e,t){return e.x===t.x&&e.y===t.y}function le(e,t,n,r){var i=he(Ae(e,t,n)),s=he(Ae(e,t,r)),a=he(Ae(n,r,e)),o=he(Ae(n,r,t));return i!==s&&a!==o||(!(0!==i||!ue(e,n,t))||(!(0!==s||!ue(e,r,t))||(!(0!==a||!ue(n,e,r))||!(0!==o||!ue(n,t,r)))))}function ue(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function he(e){return e>0?1:e<0?-1:0}function de(e,t){return Ae(e.prev,e,e.next)<0?Ae(e,t,e.next)>=0&&Ae(e,e.prev,t)>=0:Ae(e,t,e.prev)<0||Ae(e,e.next,t)<0}function fe(e,t){var n=ge(e.i,e.x,e.y),r=ge(t.i,t.x,t.y),i=e.next,s=t.prev;return e.next=t,t.prev=e,n.next=i,i.prev=n,r.next=n,n.prev=r,s.next=r,r.prev=s,r}function pe(e,t,n,r){var i=ge(e,t,n);return r?(i.next=r.next,i.prev=r,r.next.prev=i,r.next=i):(i.prev=i,i.next=i),i}function ve(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function ge(e,t,n){return{i:e,x:t,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}var me,ye,_e,be,we,Be,Ce,Me,ke,Ee,Fe,xe=!0,Ue=xe?Float64Array:Float32Array,Ie=new Ue(3),Te=new Ue(16),Pe=new Ue(16),Se=new Ue(4),De={setDoublePrecisionEnabled:function(e){Ue=(xe=e)?Float64Array:Float32Array},getDoublePrecisionEnabled:function(){return xe},MIN_DOUBLE:-Number.MAX_SAFE_INTEGER,MAX_DOUBLE:Number.MAX_SAFE_INTEGER,MAX_INT:1e7,DEGTORAD:.0174532925,RADTODEG:57.295779513,unglobalizeObjectId:function(e,t){var n=t.indexOf("#");return n===e.length&&t.startsWith(e)?t.substring(n+1):t},globalizeObjectId:function(e,t){return e+"#"+t},safeInv:function(e){var t=1/e;return isNaN(t)||!isFinite(t)?1:t},vec2:function(e){return new Ue(e||2)},vec3:function(e){return new Ue(e||3)},vec4:function(e){return new Ue(e||4)},mat3:function(e){return new Ue(e||9)},mat3ToMat4:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Ue(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=0,t[4]=e[3],t[5]=e[4],t[6]=e[5],t[7]=0,t[8]=e[6],t[9]=e[7],t[10]=e[8],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},mat4:function(e){return new Ue(e||16)},mat4ToMat3:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Ue(9);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t},doublesToFloats:function(e,t,n){for(var r=new Ue(2),i=0,s=e.length;i<s;i++)De.splitDouble(e[i],r),t[i]=r[0],n[i]=r[1]},splitDouble:function(e,t){var n=Ue.from([e])[0],r=e-n;t[0]=n,t[1]=r},createUUID:function(){for(var e=[],t=0;t<256;t++)e[t]=(t<16?"0":"")+t.toString(16);return function(){var t=4294967295*Math.random()|0,n=4294967295*Math.random()|0,r=4294967295*Math.random()|0,i=4294967295*Math.random()|0;return"".concat(e[255&t]+e[t>>8&255]+e[t>>16&255]+e[t>>24&255],"-").concat(e[255&n]).concat(e[n>>8&255],"-").concat(e[n>>16&15|64]).concat(e[n>>24&255],"-").concat(e[63&r|128]).concat(e[r>>8&255],"-").concat(e[r>>16&255]).concat(e[r>>24&255]).concat(e[255&i]).concat(e[i>>8&255]).concat(e[i>>16&255]).concat(e[i>>24&255])}}(),clamp:function(e,t,n){return Math.max(t,Math.min(n,e))},fmod:function(e,t){if(e<t)return console.error("math.fmod : Attempting to find modulus within negative range - would be infinite loop - ignoring"),e;for(;t<=e;)e-=t;return e},compareVec2:function(e,t){return e[0]===t[0]&&e[1]===t[1]},compareVec3:function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]},compareVec4:function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]},negateVec3:function(e,t){return t||(t=e),t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t},negateVec4:function(e,t){return t||(t=e),t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t},addVec4:function(e,t,n){return n||(n=e),n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n},addVec4Scalar:function(e,t,n){return n||(n=e),n[0]=e[0]+t,n[1]=e[1]+t,n[2]=e[2]+t,n[3]=e[3]+t,n},addVec2:function(e,t,n){return n||(n=e),n[0]=e[0]+t[0],n[1]=e[1]+t[1],n},addVec3:function(e,t,n){return n||(n=e),n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n},addVec3Scalar:function(e,t,n){return n||(n=e),n[0]=e[0]+t,n[1]=e[1]+t,n[2]=e[2]+t,n},subVec4:function(e,t,n){return n||(n=e),n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n},subVec3:function(e,t,n){return n||(n=e),n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n},subVec2:function(e,t,n){return n||(n=e),n[0]=e[0]-t[0],n[1]=e[1]-t[1],n},geometricMeanVec2:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var r=new Ue(t[0]),i=1;i<t.length;i++)r[0]+=t[i][0],r[1]+=t[i][1];return r[0]/=t.length,r[1]/=t.length,r},subVec4Scalar:function(e,t,n){return n||(n=e),n[0]=e[0]-t,n[1]=e[1]-t,n[2]=e[2]-t,n[3]=e[3]-t,n},subScalarVec4:function(e,t,n){return n||(n=e),n[0]=t-e[0],n[1]=t-e[1],n[2]=t-e[2],n[3]=t-e[3],n},mulVec2:function(e,t,n){return n||(n=e),n[0]=e[0]*t[0],n[1]=e[1]*t[1],n},mulVec3:function(e,t,n){return n||(n=e),n[0]=e[0]*t[0],n[1]=e[1]*t[1],n[2]=e[2]*t[2],n},mulVec4:function(e,t,n){return n||(n=e),n[0]=e[0]*t[0],n[1]=e[1]*t[1],n[2]=e[2]*t[2],n[3]=e[3]*t[3],n},mulVec4Scalar:function(e,t,n){return n||(n=e),n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n},mulVec3Scalar:function(e,t,n){return n||(n=e),n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n},mulVec2Scalar:function(e,t,n){return n||(n=e),n[0]=e[0]*t,n[1]=e[1]*t,n},divVec3:function(e,t,n){return n||(n=e),n[0]=e[0]/t[0],n[1]=e[1]/t[1],n[2]=e[2]/t[2],n},divVec4:function(e,t,n){return n||(n=e),n[0]=e[0]/t[0],n[1]=e[1]/t[1],n[2]=e[2]/t[2],n[3]=e[3]/t[3],n},divScalarVec3:function(e,t,n){return n||(n=t),n[0]=e/t[0],n[1]=e/t[1],n[2]=e/t[2],n},divVec3Scalar:function(e,t,n){return n||(n=e),n[0]=e[0]/t,n[1]=e[1]/t,n[2]=e[2]/t,n},divVec4Scalar:function(e,t,n){return n||(n=e),n[0]=e[0]/t,n[1]=e[1]/t,n[2]=e[2]/t,n[3]=e[3]/t,n},divScalarVec4:function(e,t,n){return n||(n=t),n[0]=e/t[0],n[1]=e/t[1],n[2]=e/t[2],n[3]=e/t[3],n},dotVec4:function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]},cross3Vec4:function(e,t){var n=e[0],r=e[1],i=e[2],s=t[0],a=t[1],o=t[2];return[r*o-i*a,i*s-n*o,n*a-r*s,0]},cross3Vec3:function(e,t,n){n||(n=e);var r=e[0],i=e[1],s=e[2],a=t[0],o=t[1],A=t[2];return n[0]=i*A-s*o,n[1]=s*a-r*A,n[2]=r*o-i*a,n},sqLenVec4:function(e){return De.dotVec4(e,e)},lenVec4:function(e){return Math.sqrt(De.sqLenVec4(e))},dotVec3:function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]},dotVec2:function(e,t){return e[0]*t[0]+e[1]*t[1]},sqLenVec3:function(e){return De.dotVec3(e,e)},sqLenVec2:function(e){return De.dotVec2(e,e)},lenVec3:function(e){return Math.sqrt(De.sqLenVec3(e))},distVec3:(Fe=new Ue(3),function(e,t){return De.lenVec3(De.subVec3(e,t,Fe))}),lenVec2:function(e){return Math.sqrt(De.sqLenVec2(e))},distVec2:function(){var e=new Ue(2);return function(t,n){return De.lenVec2(De.subVec2(t,n,e))}}(),rcpVec3:function(e,t){return De.divScalarVec3(1,e,t)},normalizeVec4:function(e,t){var n=1/De.lenVec4(e);return De.mulVec4Scalar(e,n,t)},normalizeVec3:function(e,t){var n=1/De.lenVec3(e);return De.mulVec3Scalar(e,n,t)},normalizeVec2:function(e,t){var n=1/De.lenVec2(e);return De.mulVec2Scalar(e,n,t)},angleVec3:function(e,t){var n=De.dotVec3(e,t)/Math.sqrt(De.sqLenVec3(e)*De.sqLenVec3(t));return n=n<-1?-1:n>1?1:n,Math.acos(n)},vec3FromMat4Scale:function(){var e=new Ue(3);return function(t,n){return e[0]=t[0],e[1]=t[1],e[2]=t[2],n[0]=De.lenVec3(e),e[0]=t[4],e[1]=t[5],e[2]=t[6],n[1]=De.lenVec3(e),e[0]=t[8],e[1]=t[9],e[2]=t[10],n[2]=De.lenVec3(e),n}}(),vecToArray:function(){function e(e){return Math.round(1e5*e)/1e5}return function(t){for(var n=0,r=(t=Array.prototype.slice.call(t)).length;n<r;n++)t[n]=e(t[n]);return t}}(),xyzArrayToObject:function(e){return{x:e[0],y:e[1],z:e[2]}},xyzObjectToArray:function(e,t){return(t=t||De.vec3())[0]=e.x,t[1]=e.y,t[2]=e.z,t},dupMat4:function(e){return e.slice(0,16)},mat4To3:function(e){return[e[0],e[1],e[2],e[4],e[5],e[6],e[8],e[9],e[10]]},m4s:function(e){return[e,e,e,e,e,e,e,e,e,e,e,e,e,e,e,e]},setMat4ToZeroes:function(){return De.m4s(0)},setMat4ToOnes:function(){return De.m4s(1)},diagonalMat4v:function(e){return new Ue([e[0],0,0,0,0,e[1],0,0,0,0,e[2],0,0,0,0,e[3]])},diagonalMat4c:function(e,t,n,r){return De.diagonalMat4v([e,t,n,r])},diagonalMat4s:function(e){return De.diagonalMat4c(e,e,e,e)},identityMat4:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Ue(16);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},identityMat3:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Ue(9);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e},isIdentityMat4:function(e){return 1===e[0]&&0===e[1]&&0===e[2]&&0===e[3]&&0===e[4]&&1===e[5]&&0===e[6]&&0===e[7]&&0===e[8]&&0===e[9]&&1===e[10]&&0===e[11]&&0===e[12]&&0===e[13]&&0===e[14]&&1===e[15]},negateMat4:function(e,t){return t||(t=e),t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t},addMat4:function(e,t,n){return n||(n=e),n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n},addMat4Scalar:function(e,t,n){return n||(n=e),n[0]=e[0]+t,n[1]=e[1]+t,n[2]=e[2]+t,n[3]=e[3]+t,n[4]=e[4]+t,n[5]=e[5]+t,n[6]=e[6]+t,n[7]=e[7]+t,n[8]=e[8]+t,n[9]=e[9]+t,n[10]=e[10]+t,n[11]=e[11]+t,n[12]=e[12]+t,n[13]=e[13]+t,n[14]=e[14]+t,n[15]=e[15]+t,n},addScalarMat4:function(e,t,n){return De.addMat4Scalar(t,e,n)},subMat4:function(e,t,n){return n||(n=e),n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n},subMat4Scalar:function(e,t,n){return n||(n=e),n[0]=e[0]-t,n[1]=e[1]-t,n[2]=e[2]-t,n[3]=e[3]-t,n[4]=e[4]-t,n[5]=e[5]-t,n[6]=e[6]-t,n[7]=e[7]-t,n[8]=e[8]-t,n[9]=e[9]-t,n[10]=e[10]-t,n[11]=e[11]-t,n[12]=e[12]-t,n[13]=e[13]-t,n[14]=e[14]-t,n[15]=e[15]-t,n},subScalarMat4:function(e,t,n){return n||(n=t),n[0]=e-t[0],n[1]=e-t[1],n[2]=e-t[2],n[3]=e-t[3],n[4]=e-t[4],n[5]=e-t[5],n[6]=e-t[6],n[7]=e-t[7],n[8]=e-t[8],n[9]=e-t[9],n[10]=e-t[10],n[11]=e-t[11],n[12]=e-t[12],n[13]=e-t[13],n[14]=e-t[14],n[15]=e-t[15],n},mulMat4:function(e,t,n){n||(n=e);var r=e[0],i=e[1],s=e[2],a=e[3],o=e[4],A=e[5],c=e[6],l=e[7],u=e[8],h=e[9],d=e[10],f=e[11],p=e[12],v=e[13],g=e[14],m=e[15],y=t[0],_=t[1],b=t[2],w=t[3],B=t[4],C=t[5],M=t[6],k=t[7],E=t[8],F=t[9],x=t[10],U=t[11],I=t[12],T=t[13],P=t[14],S=t[15];return n[0]=y*r+_*o+b*u+w*p,n[1]=y*i+_*A+b*h+w*v,n[2]=y*s+_*c+b*d+w*g,n[3]=y*a+_*l+b*f+w*m,n[4]=B*r+C*o+M*u+k*p,n[5]=B*i+C*A+M*h+k*v,n[6]=B*s+C*c+M*d+k*g,n[7]=B*a+C*l+M*f+k*m,n[8]=E*r+F*o+x*u+U*p,n[9]=E*i+F*A+x*h+U*v,n[10]=E*s+F*c+x*d+U*g,n[11]=E*a+F*l+x*f+U*m,n[12]=I*r+T*o+P*u+S*p,n[13]=I*i+T*A+P*h+S*v,n[14]=I*s+T*c+P*d+S*g,n[15]=I*a+T*l+P*f+S*m,n},mulMat3:function(e,t,n){n||(n=new Ue(9));var r=e[0],i=e[3],s=e[6],a=e[1],o=e[4],A=e[7],c=e[2],l=e[5],u=e[8],h=t[0],d=t[3],f=t[6],p=t[1],v=t[4],g=t[7],m=t[2],y=t[5],_=t[8];return n[0]=r*h+i*p+s*m,n[3]=r*d+i*v+s*y,n[6]=r*f+i*g+s*_,n[1]=a*h+o*p+A*m,n[4]=a*d+o*v+A*y,n[7]=a*f+o*g+A*_,n[2]=c*h+l*p+u*m,n[5]=c*d+l*v+u*y,n[8]=c*f+l*g+u*_,n},mulMat4Scalar:function(e,t,n){return n||(n=e),n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n},mulMat4v4:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:De.vec4(),r=t[0],i=t[1],s=t[2],a=t[3];return n[0]=e[0]*r+e[4]*i+e[8]*s+e[12]*a,n[1]=e[1]*r+e[5]*i+e[9]*s+e[13]*a,n[2]=e[2]*r+e[6]*i+e[10]*s+e[14]*a,n[3]=e[3]*r+e[7]*i+e[11]*s+e[15]*a,n},transposeMat4:function(e,t){var n=e[4],r=e[14],i=e[8],s=e[13],a=e[12],o=e[9];if(!t||e===t){var A=e[1],c=e[2],l=e[3],u=e[6],h=e[7],d=e[11];return e[1]=n,e[2]=i,e[3]=a,e[4]=A,e[6]=o,e[7]=s,e[8]=c,e[9]=u,e[11]=r,e[12]=l,e[13]=h,e[14]=d,e}return t[0]=e[0],t[1]=n,t[2]=i,t[3]=a,t[4]=e[1],t[5]=e[5],t[6]=o,t[7]=s,t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=r,t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t},transposeMat3:function(e,t){if(t===e){var n=e[1],r=e[2],i=e[5];t[1]=e[3],t[2]=e[6],t[3]=n,t[5]=e[7],t[6]=r,t[7]=i}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t},determinantMat4:function(e){var t=e[0],n=e[1],r=e[2],i=e[3],s=e[4],a=e[5],o=e[6],A=e[7],c=e[8],l=e[9],u=e[10],h=e[11],d=e[12],f=e[13],p=e[14],v=e[15];return d*l*o*i-c*f*o*i-d*a*u*i+s*f*u*i+c*a*p*i-s*l*p*i-d*l*r*A+c*f*r*A+d*n*u*A-t*f*u*A-c*n*p*A+t*l*p*A+d*a*r*h-s*f*r*h-d*n*o*h+t*f*o*h+s*n*p*h-t*a*p*h-c*a*r*v+s*l*r*v+c*n*o*v-t*l*o*v-s*n*u*v+t*a*u*v},inverseMat4:function(e,t){t||(t=e);var n=e[0],r=e[1],i=e[2],s=e[3],a=e[4],o=e[5],A=e[6],c=e[7],l=e[8],u=e[9],h=e[10],d=e[11],f=e[12],p=e[13],v=e[14],g=e[15],m=n*o-r*a,y=n*A-i*a,_=n*c-s*a,b=r*A-i*o,w=r*c-s*o,B=i*c-s*A,C=l*p-u*f,M=l*v-h*f,k=l*g-d*f,E=u*v-h*p,F=u*g-d*p,x=h*g-d*v,U=1/(m*x-y*F+_*E+b*k-w*M+B*C);return t[0]=(o*x-A*F+c*E)*U,t[1]=(-r*x+i*F-s*E)*U,t[2]=(p*B-v*w+g*b)*U,t[3]=(-u*B+h*w-d*b)*U,t[4]=(-a*x+A*k-c*M)*U,t[5]=(n*x-i*k+s*M)*U,t[6]=(-f*B+v*_-g*y)*U,t[7]=(l*B-h*_+d*y)*U,t[8]=(a*F-o*k+c*C)*U,t[9]=(-n*F+r*k-s*C)*U,t[10]=(f*w-p*_+g*m)*U,t[11]=(-l*w+u*_-d*m)*U,t[12]=(-a*E+o*M-A*C)*U,t[13]=(n*E-r*M+i*C)*U,t[14]=(-f*b+p*y-v*m)*U,t[15]=(l*b-u*y+h*m)*U,t},traceMat4:function(e){return e[0]+e[5]+e[10]+e[15]},translationMat4v:function(e,t){var n=t||De.identityMat4();return n[12]=e[0],n[13]=e[1],n[14]=e[2],n},translationMat3v:function(e,t){var n=t||De.identityMat3();return n[6]=e[0],n[7]=e[1],n},translationMat4c:(Ee=new Ue(3),function(e,t,n,r){return Ee[0]=e,Ee[1]=t,Ee[2]=n,De.translationMat4v(Ee,r)}),translationMat4s:function(e,t){return De.translationMat4c(e,e,e,t)},translateMat4v:function(e,t){return De.translateMat4c(e[0],e[1],e[2],t)},translateMat4c:function(e,t,n,r){var i=r[3];r[0]+=i*e,r[1]+=i*t,r[2]+=i*n;var s=r[7];r[4]+=s*e,r[5]+=s*t,r[6]+=s*n;var a=r[11];r[8]+=a*e,r[9]+=a*t,r[10]+=a*n;var o=r[15];return r[12]+=o*e,r[13]+=o*t,r[14]+=o*n,r},setMat4Translation:function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t[0],n[13]=t[1],n[14]=t[2],n[15]=e[15],n},rotationMat4v:function(e,t,n){var r,i,s,a,o,A,c=De.normalizeVec4([t[0],t[1],t[2],0],[]),l=Math.sin(e),u=Math.cos(e),h=1-u,d=c[0],f=c[1],p=c[2];return r=d*f,i=f*p,s=p*d,a=d*l,o=f*l,A=p*l,(n=n||De.mat4())[0]=h*d*d+u,n[1]=h*r+A,n[2]=h*s-o,n[3]=0,n[4]=h*r-A,n[5]=h*f*f+u,n[6]=h*i+a,n[7]=0,n[8]=h*s+o,n[9]=h*i-a,n[10]=h*p*p+u,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n},rotationMat4c:function(e,t,n,r,i){return De.rotationMat4v(e,[t,n,r],i)},scalingMat4v:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:De.identityMat4();return t[0]=e[0],t[5]=e[1],t[10]=e[2],t},scalingMat3v:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:De.identityMat3();return t[0]=e[0],t[4]=e[1],t},scalingMat4c:function(){var e=new Ue(3);return function(t,n,r,i){return e[0]=t,e[1]=n,e[2]=r,De.scalingMat4v(e,i)}}(),scaleMat4c:function(e,t,n,r){return r[0]*=e,r[4]*=t,r[8]*=n,r[1]*=e,r[5]*=t,r[9]*=n,r[2]*=e,r[6]*=t,r[10]*=n,r[3]*=e,r[7]*=t,r[11]*=n,r},scaleMat4v:function(e,t){var n=e[0],r=e[1],i=e[2];return t[0]*=n,t[4]*=r,t[8]*=i,t[1]*=n,t[5]*=r,t[9]*=i,t[2]*=n,t[6]*=r,t[10]*=i,t[3]*=n,t[7]*=r,t[11]*=i,t},scalingMat4s:function(e){return De.scalingMat4c(e,e,e)},rotationTranslationMat4:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:De.mat4(),r=e[0],i=e[1],s=e[2],a=e[3],o=r+r,A=i+i,c=s+s,l=r*o,u=r*A,h=r*c,d=i*A,f=i*c,p=s*c,v=a*o,g=a*A,m=a*c;return n[0]=1-(d+p),n[1]=u+m,n[2]=h-g,n[3]=0,n[4]=u-m,n[5]=1-(l+p),n[6]=f+v,n[7]=0,n[8]=h+g,n[9]=f-v,n[10]=1-(l+d),n[11]=0,n[12]=t[0],n[13]=t[1],n[14]=t[2],n[15]=1,n},mat4ToEuler:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:De.vec4(),r=De.clamp,i=e[0],s=e[4],a=e[8],o=e[1],A=e[5],c=e[9],l=e[2],u=e[6],h=e[10];return"XYZ"===t?(n[1]=Math.asin(r(a,-1,1)),Math.abs(a)<.99999?(n[0]=Math.atan2(-c,h),n[2]=Math.atan2(-s,i)):(n[0]=Math.atan2(u,A),n[2]=0)):"YXZ"===t?(n[0]=Math.asin(-r(c,-1,1)),Math.abs(c)<.99999?(n[1]=Math.atan2(a,h),n[2]=Math.atan2(o,A)):(n[1]=Math.atan2(-l,i),n[2]=0)):"ZXY"===t?(n[0]=Math.asin(r(u,-1,1)),Math.abs(u)<.99999?(n[1]=Math.atan2(-l,h),n[2