!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("babylonjs"),require("babylonjs-loaders")):"function"==typeof define&&define.amd?define("babylonjs-sandbox",["babylonjs","babylonjs-loaders"],t):"object"==typeof exports?exports["babylonjs-sandbox"]=t(require("babylonjs"),require("babylonjs-loaders")):e.SANDBOX=t(e.BABYLON,e.BABYLON)}("undefined"!=typeof self?self:"undefined"!=typeof global?global:this,(function(e,t){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=8)}([function(e,t,n){"use strict";e.exports=n(10)},function(t,n){t.exports=e},function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var o=(l=r,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(l))))+" */"),i=r.sources.map((function(e){return"/*# sourceURL="+r.sourceRoot+e+" */"}));return[n].concat(i).concat([o]).join("\n")}var l;return[n].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+n+"}":n})).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},o=0;o=0&&f.splice(t,1)}function v(e){var t=document.createElement("style");return void 0===e.attrs.type&&(e.attrs.type="text/css"),y(t,e.attrs),m(e,t),t}function y(e,t){Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])}))}function b(e,t){var n,r,o,i;if(t.transform&&e.css){if(!(i=t.transform(e.css)))return function(){};e.css=i}if(t.singleton){var l=c++;n=s||(s=v(t)),r=x.bind(null,n,l,!1),o=x.bind(null,n,l,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(e){var t=document.createElement("link");return void 0===e.attrs.type&&(e.attrs.type="text/css"),e.attrs.rel="stylesheet",y(t,e.attrs),m(e,t),t}(t),r=C.bind(null,n,t),o=function(){g(n),n.href&&URL.revokeObjectURL(n.href)}):(n=v(t),r=k.bind(null,n),o=function(){g(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else o()}}e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(t=t||{}).attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=l()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=h(e,t);return p(n,t),function(e){for(var r=[],o=0;o0&&this.props.globalState.onError.notifyObservers({scene:this._scene,message:"Scene loaded but several errors were found"});var e=this._scene.activeCamera;e.keysUp&&(e.keysUp.push(90),e.keysUp.push(87),e.keysDown.push(83),e.keysLeft.push(65),e.keysLeft.push(81),e.keysRight.push(69),e.keysRight.push(68))}},t.prototype.prepareLighting=function(){if("gltf"===this._currentPluginName)this._scene.environmentTexture||(this._scene.environmentTexture=f.LoadSkyboxPathTexture(this._scene)),this._scene.environmentTexture&&this._scene.createDefaultSkybox(this._scene.environmentTexture,!0,(this._scene.activeCamera.maxZ-this._scene.activeCamera.minZ)/2,.3,!1);else{for(var e=!1,t=0;t0&&e.props.globalState.showDebugLayer()}))})),this.initEngine())},t.prototype.shouldComponentUpdate=function(e){var t=this;return e.expanded!==this.props.expanded&&(setTimeout((function(){return t._engine.resize()})),!0)},t.prototype.render=function(){return i.createElement("div",{id:"canvasZone",className:this.props.expanded?"expanded":""},i.createElement("canvas",{id:"renderCanvas","touch-action":"none",onContextMenu:function(e){return e.preventDefault()}}))},t}(i.Component),p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.render=function(){var e=this;return this.props.enabled?i.createElement("div",{className:"button",onClick:function(){return e.props.onClick()}},i.createElement("img",{src:this.props.icon,alt:this.props.label,title:this.props.label})):null},t}(i.Component),h=n(17),m=n(18),g=function(e){function t(t){var n=e.call(this,t)||this;return n.state={isOpen:!1},n._onClickInterceptorClickedObserver=t.globalState.onClickInterceptorClicked.add((function(){n.setState({isOpen:!1})})),n}return o(t,e),t.prototype.componentWillUnmount=function(){this.props.globalState.onClickInterceptorClicked.remove(this._onClickInterceptorClickedObserver)},t.prototype.switchDropUp=function(){this.props.globalState.onRequestClickInterceptor.notifyObservers(),this.setState({isOpen:!this.state.isOpen})},t.prototype.clickOption=function(e){this.switchDropUp(),this.props.onOptionPicked(e)},t.prototype.render=function(){var e=this;return this.props.enabled?i.createElement("div",{className:"dropup"},this.props.icon&&i.createElement("div",{className:"button"+(this.state.isOpen?" active":""),onClick:function(){return e.switchDropUp()}},i.createElement("img",{src:this.props.icon,alt:this.props.label,title:this.props.label})),this.props.selectedOption&&i.createElement("div",{className:"button long"+(this.state.isOpen?" active":""),onClick:function(){return e.switchDropUp()}},this.state.isOpen&&i.createElement("img",{className:"button-icon",src:m,alt:"Close the list",title:"Close the list"}),!this.state.isOpen&&i.createElement("img",{className:"button-icon",src:h,alt:"Open the list",title:"Open the list"}),i.createElement("div",{className:"button-text",title:this.props.selectedOption},this.props.selectedOption)),this.state.isOpen&&i.createElement("div",{className:"dropup-content"+(this.props.selectedOption?" long-mode":"")},this.props.options.map((function(t){return i.createElement("div",{key:t,onClick:function(){return e.clickOption(t)}},t)})))):null},t}(i.Component),v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.onFilePicked=function(e){this.props.onFilesPicked(e.nativeEvent,e.target.files)},t.prototype.render=function(){var e=this;return this.props.enabled?i.createElement("div",{className:"custom-upload",title:this.props.label},i.createElement("img",{src:this.props.icon}),i.createElement("input",{type:"file",id:"files",multiple:!0,onChange:function(t){return e.onFilePicked(t)}})):null},t}(i.Component),y=n(19),b=n(20);n(21);var w=function(e){function t(t){var n=e.call(this,t)||this;return n._sliderRef=i.createRef(),n.state={groupIndex:0},t.globalState.onSceneLoaded.add((function(e){n.registerBeforeRender(e.scene)})),n.props.globalState.currentScene&&n.registerBeforeRender(n.props.globalState.currentScene),n}return o(t,e),t.prototype.getCurrentPosition=function(){if(!this._currentGroup)return"0";if(this._currentGroup.targetedAnimations.length>0){var e=this._currentGroup.targetedAnimations[0].animation.runtimeAnimations;if(e.length>0)return e[0].currentFrame.toString()}return"0"},t.prototype.registerBeforeRender=function(e){var t=this;this._currentScene&&this._currentScene.onBeforeRenderObservable.remove(this._sliderSyncObserver),this._currentScene=e,this._sliderSyncObserver=this._currentScene.onBeforeRenderObservable.add((function(){t._currentGroup&&t._sliderRef.current&&(t._sliderRef.current.value=t.getCurrentPosition(),t._currentPlayingState!==t._currentGroup.isPlaying&&t.forceUpdate())}))},t.prototype.pause=function(){this._currentGroup&&(this._currentGroup.pause(),this.forceUpdate())},t.prototype.play=function(){this._currentGroup&&(this._currentGroup.play(),this.forceUpdate())},t.prototype.sliderInput=function(e){if(this._currentGroup){var t=parseFloat(e.target.value);this._currentGroup.isPlaying?this._currentGroup.goToFrame(t):(this._currentGroup.play(!0),this._currentGroup.goToFrame(t),this._currentGroup.pause())}},t.prototype.render=function(){var e=this;if(!this.props.enabled)return this._currentGroup=null,null;var t=this.props.globalState.currentScene;if(0===t.animationGroups.length)return this._currentGroup=null,null;var n=t.animationGroups.map((function(e){return e.name}));return this._currentGroup=t.animationGroups[this.state.groupIndex],this._currentPlayingState=this._currentGroup.isPlaying,i.createElement("div",{className:"animationBar"},i.createElement("div",{className:"row"},i.createElement("button",{id:"playBtn"},this._currentGroup.isPlaying&&i.createElement("img",{id:"pauseImg",src:b,onClick:function(){return e.pause()}}),!this._currentGroup.isPlaying&&i.createElement("img",{id:"playImg",src:y,onClick:function(){return e.play()}})),i.createElement("input",{ref:this._sliderRef,className:"slider",type:"range",onInput:function(t){return e.sliderInput(t)},min:this._currentGroup.from,max:this._currentGroup.to,onChange:function(){},value:this.getCurrentPosition(),step:"any"})),i.createElement(g,{globalState:this.props.globalState,label:"Active animation group",options:n,selectedOption:this._currentGroup.name,onOptionPicked:function(r){e._currentGroup.stop();var o=n.indexOf(r);e.setState({groupIndex:o}),t.animationGroups[o].play(!0)},enabled:!0}))},t}(i.Component);n(23);var E=n(25),x=n(26),k=n(27),C=n(28),_=function(e){function t(t){var n=e.call(this,t)||this;return t.globalState.onSceneLoaded.add((function(e){n.forceUpdate()})),n}return o(t,e),t.prototype.showInspector=function(){this.props.globalState.currentScene&&(this.props.globalState.currentScene.debugLayer.isVisible()?this.props.globalState.hideDebugLayer():this.props.globalState.showDebugLayer())},t.prototype.render=function(){var e=this;return i.createElement("div",{id:"footer",className:"footer"},i.createElement("div",{className:"footerLeft"},i.createElement("img",{id:"logoImg",src:E})),i.createElement(w,{globalState:this.props.globalState,enabled:!!this.props.globalState.currentScene}),i.createElement("div",{className:"footerRight"},i.createElement(v,{globalState:this.props.globalState,enabled:!0,icon:k,onFilesPicked:function(t,n){e.props.globalState.filesInput.loadFiles(t)},label:"Open your scene from your hard drive (.babylon, .gltf, .glb, .obj)"}),i.createElement(g,{globalState:this.props.globalState,icon:C,label:"Select environment",options:f.SkyboxesNames,onOptionPicked:function(t){return e.props.globalState.onEnvironmentChanged.notifyObservers(t)},enabled:!!this.props.globalState.currentScene}),i.createElement(p,{globalState:this.props.globalState,icon:x,label:"Display inspector",onClick:function(){return e.showInspector()},enabled:!!this.props.globalState.currentScene})))},t}(i.Component);n(29);var S=n(31),T=function(e){function t(t){var n=e.call(this,t)||this;return n._globalState=new u,n._logoRef=i.createRef(),n._dropTextRef=i.createRef(),n._clickInterceptorRef=i.createRef(),n.state={isFooterVisible:!0,errorMessage:""},n.checkUrl(),f.HookWithEnvironmentChange(n._globalState),n._globalState.onSceneLoaded.add((function(e){document.title="Babylon.js - "+e.filename,n._globalState.currentScene=e.scene,0===n._globalState.currentScene.meshes.length&&1===n._globalState.currentScene.clearColor.r&&0===n._globalState.currentScene.clearColor.g&&0===n._globalState.currentScene.clearColor.b?n._logoRef.current.className="":(n._logoRef.current.className="hidden",n._dropTextRef.current.className="hidden")})),n._globalState.onError.add((function(e){e.scene&&n._globalState.showDebugLayer(),e.message&&n.setState({errorMessage:e.message})})),n._globalState.onRequestClickInterceptor.add((function(){var e=n._clickInterceptorRef.current;e.classList.contains("hidden")?e.classList.remove("hidden"):e.classList.add("hidden")})),window.addEventListener("keydown",(function(e){32===e.keyCode&&e.target&&"INPUT"!==e.target.nodeName&&n.setState({isFooterVisible:!n.state.isFooterVisible})})),n}return o(t,e),t.prototype.checkUrl=function(){var e=location.href.indexOf("?");if(-1!==e)for(var t=location.href.substr(e+1).split("&"),n=0;nM.length&&M.push(e)}function U(e,t,n){return null==e?0:function e(t,n,r,o){var a=typeof t;"undefined"!==a&&"boolean"!==a||(t=null);var u=!1;if(null===t)u=!0;else switch(a){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case i:case l:u=!0}}if(u)return r(o,t,""===n?"."+z(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var s=0;sthis.eventPool.length&&this.eventPool.push(e)}function de(e){e.eventPool=[],e.getPooled=ce,e.release=fe}o(se.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=ae)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=ae)},persist:function(){this.isPersistent=ae},isPersistent:ue,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=ue,this._dispatchInstances=this._dispatchListeners=null}}),se.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},se.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var i=new t;return o(i,n.prototype),n.prototype=i,n.prototype.constructor=n,n.Interface=o({},r.Interface,e),n.extend=r.extend,de(n),n},de(se);var pe=se.extend({data:null}),he=se.extend({data:null}),me=[9,13,27,32],ge=$&&"CompositionEvent"in window,ve=null;$&&"documentMode"in document&&(ve=document.documentMode);var ye=$&&"TextEvent"in window&&!ve,be=$&&(!ge||ve&&8=ve),we=String.fromCharCode(32),Ee={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},xe=!1;function ke(e,t){switch(e){case"keyup":return-1!==me.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function Ce(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var _e=!1;var Se={eventTypes:Ee,extractEvents:function(e,t,n,r){var o=void 0,i=void 0;if(ge)e:{switch(e){case"compositionstart":o=Ee.compositionStart;break e;case"compositionend":o=Ee.compositionEnd;break e;case"compositionupdate":o=Ee.compositionUpdate;break e}o=void 0}else _e?ke(e,n)&&(o=Ee.compositionEnd):"keydown"===e&&229===n.keyCode&&(o=Ee.compositionStart);return o?(be&&"ko"!==n.locale&&(_e||o!==Ee.compositionStart?o===Ee.compositionEnd&&_e&&(i=le()):(oe="value"in(re=r)?re.value:re.textContent,_e=!0)),o=pe.getPooled(o,t,n,r),i?o.data=i:null!==(i=Ce(n))&&(o.data=i),Z(o),i=o):i=null,(e=ye?function(e,t){switch(e){case"compositionend":return Ce(t);case"keypress":return 32!==t.which?null:(xe=!0,we);case"textInput":return(e=t.data)===we&&xe?null:e;default:return null}}(e,n):function(e,t){if(_e)return"compositionend"===e||!ge&&ke(e,t)?(e=le(),ie=oe=re=null,_e=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1