Socket
Socket
Sign inDemoInstall

@lumiscaphe/viewer

Package Overview
Dependencies
Maintainers
1
Versions
112
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@lumiscaphe/viewer - npm Package Compare versions

Comparing version 0.2.3 to 0.2.4

2

dist/index.js

@@ -1,1 +0,1 @@

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("lodash.debounce"),require("twgl.js")):"function"==typeof define&&define.amd?define(["lodash.debounce","twgl.js"],e):t.viewer=e(t.debounce,t.twgl)}(this,function(t,e){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var i="default"in e?e.default:e,n=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},s=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}(),o=function(){function t(){n(this,t)}return s(t,null,[{key:"fit",value:function(t,e,i,n){var s=t.width/t.height,o=e/i,a=0,r=0;switch(n){case"contain":a=o<s?e:i*s,r=o<s?e/s:i;break;case"cover":default:a=o<s?i*s:e,r=o<s?i:e/s;break;case"fill":a=e,r=i}return{width:Math.round(a),height:Math.round(r),top:Math.round((i-r)/2),left:Math.round((e-a)/2)}}},{key:"getStandardQuality",value:function(t){return t<=240?240:t<=360?360:t<=480?480:t<=720?720:1080}},{key:"getStandardResolution",value:function(e,i){if(0===e||0===i)return{width:0,height:0};if(e<i){var n=e/i<.75?9/16:.75,s=t.getStandardQuality(i*n);return{width:Math.round(s),height:Math.round(s/n)}}var o=e/i>4/3?16/9:4/3,a=t.getStandardQuality(e/o);return{width:Math.round(a*o),height:Math.round(a)}}}]),t}(),a=function(){function t(){n(this,t),this.element=document.createElement("canvas"),this.element.classList.add("ls-viewer-canvas"),this.element.style.opacity=0,this.context=this.element.getContext("2d"),this.requestAnimationId=null}return s(t,[{key:"show",value:function(){this.element.style.opacity=1}},{key:"hide",value:function(){this.element.style.opacity=0}},{key:"resize",value:function(t,e,i){var n=o.fit(i,t,e,"cover");this.element.style.width=n.width+"px",this.element.style.height=n.height+"px",this.element.style.top=n.top+"px",this.element.style.left=n.left+"px",i.width===this.element.width&&i.height===this.element.height||(this.element.width=i.width,this.element.height=i.height)}},{key:"draw",value:function(t,e,i){t&&(this.requestAnimationId&&(cancelAnimationFrame(this.requestAnimationId),this.requestAnimationId=null),e?(this.context.globalAlpha=0,this.fadeInLoop(t,i)):(this.context.globalAlpha=1,this.context.drawImage(t,0,0,this.element.width,this.element.height)))}},{key:"fadeInLoop",value:function(t,e){var i=this;if(this.context.globalAlpha>1)return cancelAnimationFrame(this.requestAnimationId),void(this.requestAnimationId=null);this.context.globalAlpha+=e,this.context.drawImage(t,0,0,this.element.width,this.element.height),this.requestAnimationId=requestAnimationFrame(function(){i.fadeInLoop(t,e)})}}]),t}(),r=function(){function t(){n(this,t),this.element=document.createElement("canvas"),this.element.classList.add("ls-viewer-canvas"),this.element.style.opacity=0,this.context=i.getContext(this.element),this.requestAnimationId=null}return s(t,[{key:"show",value:function(){this.element.style.opacity=1}},{key:"hide",value:function(){this.element.style.opacity=0}},{key:"resize",value:function(t,e,i){this.element.style.width="100%",this.element.style.height="100%",this.element.style.top=0,this.element.style.left=0,i.width===this.element.width&&i.height===this.element.height||(this.element.width=i.width,this.element.height=i.height)}}]),t}(),h=function(){function t(e){n(this,t),this.server=e}return s(t,[{key:"image",value:function(e){var i={};Object.assign(i,t.sceneParameters(e)),Object.assign(i,{bookmarkSet:e.view.camera.split("/")[0],bookmark:e.view.camera.split("/")[1],background:e.view.background}),Object.assign(i,t.renderParameters(e)),Object.assign(i,t.encoderParameters(e));var n=t.buildQuery(i);return Promise.resolve(this.server+"/ImageFromBookmark?"+n)}},{key:"vrCube",value:function(e){var i={};Object.assign(i,t.sceneParameters(e)),Object.assign(i,{bookmarkSet:e.view.camera.split("/")[0],bookmark:e.view.camera.split("/")[1],background:e.view.background}),Object.assign(i,t.renderParameters(e)),Object.assign(i,t.encoderParameters(e)),i.width=Math.max(i.width,i.height),i.height=Math.max(i.width,i.height);var n=t.buildQuery(i);return t.fetch(this.server+"/CubeFromBookmark?"+n)}},{key:"vrObject",value:function(e){var i={};Object.assign(i,t.sceneParameters(e)),Object.assign(i,{bookmarkSet:e.view.camera,background:e.view.background}),Object.assign(i,t.renderParameters(e)),Object.assign(i,t.encoderParameters(e));var n=t.buildQuery(i);return t.fetch(this.server+"/ImagesFromBookmarkSet?"+n)}},{key:"animation",value:function(e){var i={};Object.assign(i,t.sceneParameters(e)),Object.assign(i,{animation:e.view.animation,bookmarkSet:e.view.camera.split("/")[0],bookmark:e.view.camera.split("/")[1],frames:e.view.frames,loop:e.view.loop,background:e.view.background}),Object.assign(i,t.renderParameters(e)),Object.assign(i,t.encoderParameters(e));var n=t.buildQuery(i);return t.fetch(this.server+"/ImagesFromAnimation?"+n)}}],[{key:"buildQuery",value:function(t){return Object.keys(t).map(function(e){return e+"="+t[e]}).join("&")}},{key:"sceneParameters",value:function(t){var e=t.scene,i={},n=e.length>1?e.find(function(t){return t.master})||e[0]:null;if(n){var s=e.find(function(t){return t!==n});i.databaseId=s.database,i.configuration=s.configuration,i.decorDatabaseId=n.database,i.decorDeltaAltitude=n.translation.y}else{var o=e[0];i.databaseId=o.database,i.configuration=o.configuration}return i}},{key:"renderParameters",value:function(t){var e=t.parameters;return{width:e.width,height:e.height,softwareAntialiasing:e.antialiasing,superSampling:e.superSampling}}},{key:"encoderParameters",value:function(t){var e=t.encoder;return{imageFormat:e.format,imageQuality:e.quality}}},{key:"fetch",value:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}(function(t){return fetch(t).then(function(t){return t.text()}).then(function(t){var e=t.replace(/&amp;/g,"&").match(/directUrl="([^"]*)"/g);return e?e.map(function(t){return t.replace(/directUrl="([^"]*)"/g,"$1")}):Promise.reject()})})}]),t}(),c=function(){function t(e,i){n(this,t),this.webrender=new h(e),this.loadingId=0,this.loaded=0,this.total=0,this.onLoadStart=i.onLoadStart||function(){},this.onLoadProgress=i.onLoadProgress||function(){},this.onLoadEnd=i.onLoadEnd||function(){}}return s(t,[{key:"loadImage",value:function(t,e){var i=this,n=new Image;n.crossOrigin="anonymous";var s=new Promise(function(t,s){n.addEventListener("load",function(){e===i.loadingId&&(i.loaded+=1,i.onLoadProgress(i.progress),t(n))}),n.addEventListener("error",function(t){e===i.loadingId&&s(t)})});return n.src=t,s}},{key:"loadVideoFrames",value:function(t,e,i,n){var s=this,o=1/i/2,a=[],r=document.createElement("video");r.autoplay=!0,r.muted=!0,r.playsinline=!0,r.preload="auto";var h=new Promise(function(t,h){r.addEventListener("loadeddata",function(){n===s.loadingId&&(r.currentTime=o)}),r.addEventListener("seeked",function(){if(n===s.loadingId){var h=document.createElement("canvas");h.width=r.videoWidth,h.height=r.videoHeight,h.getContext("2d").drawImage(r,0,0),a.push(h),s.loaded+=1,s.onLoadProgress(s.progress),(o+=1/i)<=e/i?r.currentTime=o:t(a)}}),r.addEventListener("error",function(t){n===s.loadingId&&h(t)})});return r.src=t,h}},{key:"loadImageSnapshot",value:function(t){var e=this;this.loadingId+=1,this.loaded=0,this.total=1,this.onLoadStart(this.progress);var i=this.loadingId;return this.webrender.image(t).then(function(t){return e.loadImage(t,i)}).then(function(t){return e.onLoadEnd(e.progress),t})}},{key:"loadVRCubeSnapshot",value:function(t){var e=this;this.loadingId+=1,this.loaded=0,this.total=0,this.onLoadStart(this.progress);var i=this.loadingId;return this.webrender.vrCube(t).then(function(t){return e.total=t.length,Promise.all(t.map(function(t){return e.loadImage(t,i)}))}).then(function(t){return e.onLoadEnd(e.progress),t})}},{key:"loadVRObjectSnapshot",value:function(t){var e=this;this.loaded=0,this.total=0,this.onLoadStart(this.progress);var i=this.loadingId,n=t.view.animation?"animation":"vrObject";return this.webrender[n](t).then(function(t){return e.total=t.length,Promise.all(t.map(function(t){return e.loadImage(t,i)}))}).then(function(t){return e.onLoadEnd(e.progress),t})}},{key:"progress",get:function(){return this.total?this.loaded/this.total:0}}]),t}(),u=function(){function t(e,i,s){n(this,t),this.container=e,this.canvas=i,this.loader=s,this.image=null,this.onStart=function(){},this.onEnter=function(){},this.onMove=function(){},this.onEnd=function(){},this.onDeviceOrientation=function(){}}return s(t,[{key:"load",value:function(t,e,i){var n=this,s=JSON.stringify(t);return s===this.hash?(this.canvas.draw(this.image,i,.01),Promise.resolve()):(this.hash=s,this.loader.loadImageSnapshot(t).then(function(t){n.image=t,n.canvas.draw(n.image,i,.01)}))}}]),t}(),l=function(){function t(){n(this,t)}return s(t,null,[{key:"point",value:function(t){if("touchmove"===t.type||"touchstart"===t.type||"touchend"===t.type){var e=t.targetTouches[0]||t.changedTouches[0];return{x:e.screenX,y:e.screenY}}return{x:t.screenX,y:t.screenY}}}]),t}(),d=function(){function t(){n(this,t);for(var i=arguments.length,s=Array(i),o=0;o<i;o++)s[o]=arguments[o];3===s.length?(this.u=s[0],this.v=s[1],this.o=s[2],this.w=e.v3.cross(this.u,this.v)):(this.u=[1,0,0],this.v=[0,1,0],this.w=[0,0,1],this.o=[0,0,0])}return s(t,[{key:"localToGlobalMatrix",get:function(){var t=[this.u[0],this.u[1],this.u[2],0],e=[this.v[0],this.v[1],this.v[2],0],i=[this.w[0],this.w[1],this.w[2],0],n=[this.o[0],this.o[1],this.o[2],1];return[].concat.apply([],[t,e,i,n])}},{key:"globalToLocalMatrix",get:function(){return e.m4.inverse(this.localToGlobalMatrix)}}]),t}(),v=function(){function t(e){n(this,t),this.animationFrameId=null,this.points=[],this.onMotion=e,this.loop=this.loop.bind(this)}return s(t,[{key:"track",value:function(t){var e=Date.now();this.points=this.points.filter(function(t){return e-t.time<=100}),this.points.push({x:t.x,y:t.y,time:e}),this.lastPoint=t}},{key:"start",value:function(){if(0!==this.points.length){var t=this.points[0],e=this.points[this.points.length-1],i=e.x-t.x,n=e.y-t.y,s=e.time-t.time;this.velocity={x:0===s?0:i/(s/15),y:0===s?0:n/(s/15)},this.animationFrameId&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null),this.animationFrameId=requestAnimationFrame(this.loop)}}},{key:"stop",value:function(){this.animationFrameId&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null),this.points=[]}},{key:"loop",value:function(){if(Math.abs(this.velocity.x)<1&&Math.abs(this.velocity.y)<1)return this.animationFrameId=null,void(this.points=[]);this.lastPoint.x+=this.velocity.x,this.lastPoint.y+=this.velocity.y,this.velocity.x*=.9,this.velocity.y*=.9,this.onMotion(this.lastPoint),this.animationFrameId=requestAnimationFrame(this.loop)}}]),t}(),m=function(){function t(){n(this,t)}return s(t,null,[{key:"accelerate",value:function(t,e){var i=e||1.5;return Math.pow(Math.abs(t),i)*(t>0?1:-1)}},{key:"degreesToRadians",value:function(t){return t*(Math.PI/180)}},{key:"mod",value:function(t,e){return t-e*Math.floor(t/e)}}]),t}(),g=function(){function t(e,i,s){n(this,t),this.changed=!1,this.isStarted=!1,this.inertia=new v(this.motion.bind(this)),this.fov=m.degreesToRadians(e),this.pov=i,this.initFov=this.fov,this.initPov=this.pov,this.onMotion=s}return s(t,[{key:"reset",value:function(){this.fov=this.initFov,this.pov={eye:Array.from(this.initPov.eye),target:Array.from(this.initPov.target),up:Array.from(this.initPov.up)}}},{key:"start",value:function(t,e){this.changed=!1,this.isStarted=!0,this.startPov=this.pov,this.startPoint=t,this.startSize=e,this.previousPoint=t,this.inertia.stop()}},{key:"motion",value:function(t){this.isStarted&&this.inertia.track(t);var i={x:t.x-this.previousPoint.x,y:t.y-this.previousPoint.y},n=m.accelerate(i.x,1.2)/this.startSize.width*.2*Math.PI*1.5,s=m.accelerate(i.y,1.2)/this.startSize.height*.2*Math.PI,o=e.m4.multiply(e.m4.rotationY(-n),e.m4.rotationX(-s)),a=e.v3.normalize(e.v3.cross(this.pov.up,this.pov.target)),r=new d(a,[0,1,0],this.pov.eye),h=e.m4.identity();e.m4.multiply(h,r.localToGlobalMatrix,h),e.m4.multiply(h,o,h),e.m4.multiply(h,r.globalToLocalMatrix,h);var c=e.m4.transformPoint(h,this.pov.target),u=e.m4.transformDirection(h,this.pov.up);e.v3.cross(u,[0,0,1])[0]>=0&&(this.pov.target=c,this.pov.up=u),this.previousPoint={x:t.x,y:t.y},this.onMotion(),this.changed=!0}},{key:"end",value:function(t){this.isStarted=!1,t&&this.inertia.start()}},{key:"orientation",value:function(t){var i=m.degreesToRadians(90-t.beta),n=m.degreesToRadians(-t.alpha),s=e.m4.identity();e.m4.multiply(s,e.m4.rotationZ(0),s),e.m4.multiply(s,e.m4.rotationY(n),s),e.m4.multiply(s,e.m4.rotationX(i),s),this.reset();var o=e.v3.normalize(e.v3.cross(this.pov.up,this.pov.target)),a=new d(o,[0,1,0],this.pov.eye),r=e.m4.identity();e.m4.multiply(r,a.localToGlobalMatrix,r),e.m4.multiply(r,s,r),e.m4.multiply(r,a.globalToLocalMatrix,r);var h=e.m4.transformPoint(r,this.pov.target),c=e.m4.transformDirection(r,this.pov.up);e.v3.cross(c,[0,0,1])[0]>=0&&(this.pov.target=h,this.pov.up=c),this.onMotion()}}]),t}(),f="precision mediump float;uniform samplerCube u_texture;varying vec3 direction;void main(){gl_FragColor=textureCube(u_texture,direction);}",p="attribute vec4 position;uniform mat4 u_matrix;varying vec3 direction;void main(){direction=(u_matrix*position).xyz;gl_Position=position*vec4(-1,1,1,1);}",y=function(){function t(e,s,o,a){var r=this;n(this,t),this.container=e,this.canvas=s,this.loader=o,this.onInteraction=a,this.images=[];var h={eye:[0,0,0],target:[0,0,1],up:[0,1,0]},c=i.m4.rotationX(m.degreesToRadians(15));i.m4.transformDirection(c,h.target,h.target),this.interaction=new g(60,h,function(){requestAnimationFrame(r.render)}),this.gl=this.canvas.context,this.programInfo=i.createProgramInfo(this.gl,[p+"\n",f+"\n"]),this.quad=i.primitives.createXYQuadBufferInfo(this.gl),this.uniforms={u_texture:i.createTexture(this.gl,{target:this.gl.TEXTURE_CUBE_MAP,minMag:this.gl.LINEAR,width:1,height:1}),u_matrix:i.m4.identity()},this.render=this.render.bind(this)}return s(t,[{key:"load",value:function(t,e){var n=this,s=JSON.stringify(t);return s===this.hash?(requestAnimationFrame(this.render),Promise.resolve()):(this.hash=s,e&&this.interaction.reset(),this.images=[],requestAnimationFrame(this.render),this.loader.loadVRCubeSnapshot(t).then(function(t){n.images=t;var e=t.map(function(t){return t.src});n.uniforms.u_texture=i.createTexture(n.gl,{target:n.gl.TEXTURE_CUBE_MAP,minMag:n.gl.LINEAR,cubeFaceOrder:[n.gl.TEXTURE_CUBE_MAP_POSITIVE_Z,n.gl.TEXTURE_CUBE_MAP_POSITIVE_X,n.gl.TEXTURE_CUBE_MAP_NEGATIVE_Z,n.gl.TEXTURE_CUBE_MAP_NEGATIVE_X,n.gl.TEXTURE_CUBE_MAP_POSITIVE_Y,n.gl.TEXTURE_CUBE_MAP_NEGATIVE_Y],src:e,crossOrigin:"anonymous"},function(){requestAnimationFrame(n.render)})}))}},{key:"render",value:function(){i.resizeCanvasToDisplaySize(this.gl.canvas),this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height);var t=this.interaction.fov,e=this.gl.canvas.clientWidth/this.gl.canvas.clientHeight,n=i.m4.inverse(i.m4.perspective(t,e,.5,100)),s=this.interaction.pov,o=i.m4.lookAt(s.eye,s.target,s.up);this.uniforms.u_matrix=i.m4.multiply(o,n),this.gl.useProgram(this.programInfo.program),i.setBuffersAndAttributes(this.gl,this.programInfo,this.quad),i.setUniforms(this.programInfo,this.uniforms),i.drawBufferInfo(this.gl,this.quad)}},{key:"onStart",value:function(t){this.container.classList.add("ls-viewer-container-vrcube-grabbing"),this.interaction.start(l.point(t),{width:this.gl.canvas.width,height:this.gl.canvas.height})}},{key:"onEnter",value:function(t){this.interaction.isStarted||0===t.buttons&&(this.container.classList.remove("ls-viewer-container-vrcube-grabbing"),this.interaction.end(!1))}},{key:"onMove",value:function(t){this.interaction.isStarted&&this.interaction.motion(l.point(t))}},{key:"onEnd",value:function(){this.interaction.isStarted&&(this.container.classList.remove("ls-viewer-container-vrcube-grabbing"),this.interaction.end(!0),this.interaction.changed&&this.onInteraction())}},{key:"onDeviceOrientation",value:function(t){!1!==this.interaction.isStarted&&this.interaction.orientation({alpha:t.alpha,beta:t.beta,gamma:t.gamma})}}]),t}(),b=function(){function t(e,i,s,o){n(this,t),this.changed=!1,this.isStarted=!1,this.inertia=new v(this.motion.bind(this)),this.position=e,this.count=i,this.loop=s,this.onMotion=o,this.initPosition=this.position}return s(t,[{key:"set",value:function(t){var e=this.position;this.loop?this.position=m.mod(t,this.count):this.position=Math.max(0,Math.min(t,this.count-1)),this.position!==e&&(this.onMotion(),this.changed=!0)}},{key:"reset",value:function(){this.set(this.initPosition)}},{key:"start",value:function(t,e){this.changed=!1,this.isStarted=!0,this.startPosition=this.position,this.startPoint=t,this.startSize=e,this.inertia.stop()}},{key:"motion",value:function(t){this.isStarted&&this.inertia.track(t);var e={x:t.x-this.startPoint.x,y:t.y-this.startPoint.y},i=m.accelerate(e.x,1.2)/this.startSize.width*(this.count/4),n=this.startPosition-Math.round(i);this.set(n)}},{key:"end",value:function(t){this.isStarted=!1,t&&this.inertia.start()}}]),t}(),w=function(){function t(e,i,s,o){var a=this;n(this,t),this.container=e,this.canvas=i,this.loader=s,this.onInteraction=o,this.images=[],this.interaction=new b(0,1,!1,function(){a.canvas.draw(a.image,!0,.25)}),this.options={loop:!0},this.onDeviceOrientation=function(){}}return s(t,[{key:"load",value:function(t,e,i){var n=this,s=JSON.stringify(t);return s===this.hash?(this.canvas.draw(this.image,i,.01),Promise.resolve()):(this.hash=s,e&&this.interaction.reset(),this.images=[],this.loader.loadVRObjectSnapshot(t).then(function(e){n.images=e,n.interaction.count=e.length,n.interaction.loop=t.view.loop,n.canvas.draw(n.image,i,.01)}))}},{key:"onStart",value:function(t){this.container.classList.add("ls-viewer-container-vrobject-grabbing"),this.interaction.start(l.point(t),{width:this.canvas.element.width,height:this.canvas.element.height})}},{key:"onEnter",value:function(t){this.interaction.isStarted&&0===t.buttons&&(this.container.classList.remove("ls-viewer-container-vrobject-grabbing"),this.interaction.end(!1))}},{key:"onMove",value:function(t){this.interaction.isStarted&&this.interaction.motion(l.point(t))}},{key:"onEnd",value:function(){this.interaction.isStarted&&(this.container.classList.remove("ls-viewer-container-vrobject-grabbing"),this.interaction.end(!0),this.interaction.changed&&this.onInteraction())}},{key:"image",get:function(){return this.images[this.interaction.position]}}]),t}();return function(t,e){if("undefined"==typeof document)return e;t=t||"";var i=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",i.appendChild(n),n.styleSheet?n.styleSheet.cssText=t:n.appendChild(document.createTextNode(t))}(".ls-viewer-container{position:relative;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%;height:100%}.ls-viewer-container-image{cursor:default}.ls-viewer-container-vrcube{cursor:pointer;cursor:-webkit-grab;cursor:grab}.ls-viewer-container-vrcube-grabbing{cursor:move;cursor:-webkit-grabbing;cursor:grabbing}.ls-viewer-container-vrobject{cursor:move;cursor:-webkit-grab;cursor:grab}.ls-viewer-container-vrobject-grabbing{cursor:move;cursor:-webkit-grabbing;cursor:grabbing}.ls-viewer-container-loading{cursor:progress}.ls-viewer-canvas{position:absolute;-webkit-transition:opacity .5s;transition:opacity .5s}",void 0),function(){function e(i,s){n(this,e),this.container=i,this.container.classList.add("ls-viewer-container"),this.canvas2D=new a,this.container.appendChild(this.canvas2D.element),this.canvas3D=new r,this.container.appendChild(this.canvas3D.element),this.container.addEventListener("mousedown",this.onStart.bind(this)),this.container.addEventListener("mouseenter",this.onEnter.bind(this)),this.container.addEventListener("mousemove",this.onMove.bind(this)),this.container.addEventListener("mouseup",this.onEnd.bind(this)),this.container.addEventListener("touchstart",this.onStart.bind(this)),this.container.addEventListener("touchmove",this.onMove.bind(this)),this.container.addEventListener("touchend",this.onEnd.bind(this)),this.options=Object.assign({},{server:"localhost",events:{onInteraction:function(){},onLoadStart:function(){},onLoadProgress:function(){},onLoadEnd:function(){},onError:function(){}}},s),this.loader=new c(s.server,{onLoadStart:this.onLoadStart.bind(this),onLoadProgress:this.onLoadProgress.bind(this),onLoadEnd:this.onLoadEnd.bind(this),onError:this.onError.bind(this)}),this.params=null,this.resolution={};var o=this.onInteraction.bind(this);this.widgetImage=new u(i,this.canvas2D,this.loader,o),this.widgetVRCube=new y(i,this.canvas3D,this.loader,o),this.widgetVRObject=new w(i,this.canvas2D,this.loader,o),this.widget=this.widgetImage,window.addEventListener("resize",t(this.onResize.bind(this),250)),this.onResize()}return s(e,[{key:"load",value:function(t,e,i){var n=this;if(t&&(this.snapshot=t,this.resolution.width&&this.resolution.height)){this.snapshot.parameters=Object.assign({},{antialiasing:!1,superSampling:2},this.snapshot.parameters,{width:this.resolution.width,height:this.resolution.height}),this.snapshot.encoder=Object.assign({},{format:"jpeg",quality:90},this.snapshot.encoder),this.snapshot.view.background||(this.snapshot.view.background="product");var s=null;switch(t.view.mode){case"image":s=this.widgetImage,this.container.classList.remove("ls-viewer-container-vrcube"),this.container.classList.remove("ls-viewer-container-vrobject"),this.container.classList.add("ls-viewer-container-image");break;case"vrcube":s=this.widgetVRCube,this.container.classList.remove("ls-viewer-container-image"),this.container.classList.remove("ls-viewer-container-vrobject"),this.container.classList.add("ls-viewer-container-vrcube");break;case"vrobject":s=this.widgetVRObject,this.container.classList.remove("ls-viewer-container-image"),this.container.classList.remove("ls-viewer-container-vrcube"),this.container.classList.add("ls-viewer-container-vrobject")}s&&s.load(t,e,i).then(function(){s.canvas!==n.widget.canvas&&n.widget.canvas.hide(),s.canvas.show(),n.widget=s},function(t){n.options.events.onError(t)})}}},{key:"onDeviceOrientation",value:function(t){this.widget.onDeviceOrientation(t)}},{key:"onStart",value:function(t){this.widget.onStart(t)}},{key:"onEnter",value:function(t){this.widget.onEnter(t)}},{key:"onMove",value:function(t){this.widget.onMove(t)}},{key:"onEnd",value:function(t){this.widget.onEnd(t)}},{key:"onResize",value:function(){var t=this.container.offsetWidth,e=this.container.offsetHeight;this.resolution=o.getStandardResolution(t,e),this.canvas2D.resize(t,e,this.resolution),this.canvas3D.resize(t,e,this.resolution),this.load(this.snapshot,!1,!1)}},{key:"onInteraction",value:function(){for(var t=arguments.length,e=Array(t),i=0;i<t;i++)e[i]=arguments[i];this.options.events.onInteraction(e)}},{key:"onLoadStart",value:function(){this.container.classList.add("ls-viewer-container-loading");for(var t=arguments.length,e=Array(t),i=0;i<t;i++)e[i]=arguments[i];this.options.events.onLoadStart(e)}},{key:"onLoadProgress",value:function(){for(var t=arguments.length,e=Array(t),i=0;i<t;i++)e[i]=arguments[i];this.options.events.onLoadProgress(e)}},{key:"onLoadEnd",value:function(){this.container.classList.remove("ls-viewer-container-loading");for(var t=arguments.length,e=Array(t),i=0;i<t;i++)e[i]=arguments[i];this.options.events.onLoadEnd(e)}},{key:"onError",value:function(){for(var t=arguments.length,e=Array(t),i=0;i<t;i++)e[i]=arguments[i];this.options.events.onError(e)}}]),e}()});
!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i(require("lodash.debounce"),require("twgl.js")):"function"==typeof define&&define.amd?define(["lodash.debounce","twgl.js"],i):t.viewer=i(t.debounce,t.twgl)}(this,function(t,i){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e="default"in i?i.default:i,n=function(){};n.fit=function(t,i,e,n){var o=t.width/t.height,s=i/e,r=0,a=0;switch(n){case"contain":r=s<o?i:e*o,a=s<o?i/o:e;break;case"cover":default:r=s<o?e*o:i,a=s<o?e:i/o;break;case"fill":r=i,a=e}return{width:Math.round(r),height:Math.round(a),top:Math.round((e-a)/2),left:Math.round((i-r)/2)}},n.getStandardQuality=function(t){return t<=240?240:t<=360?360:t<=480?480:t<=720?720:1080},n.getStandardResolution=function(t,i){if(0===t||0===i)return{width:0,height:0};if(t<i){var e=t/i<.75?9/16:.75,o=n.getStandardQuality(i*e);return{width:Math.round(o),height:Math.round(o/e)}}var s=t/i>4/3?16/9:4/3,r=n.getStandardQuality(t/s);return{width:Math.round(r*s),height:Math.round(r)}};var o=function(){this.element=document.createElement("canvas"),this.element.classList.add("ls-viewer-canvas"),this.element.style.opacity=0,this.context=this.element.getContext("2d"),this.requestAnimationId=null};o.prototype.show=function(){this.element.style.opacity=1},o.prototype.hide=function(){this.element.style.opacity=0},o.prototype.resize=function(t,i,e){var o=n.fit(e,t,i,"cover");this.element.style.width=o.width+"px",this.element.style.height=o.height+"px",this.element.style.top=o.top+"px",this.element.style.left=o.left+"px",e.width===this.element.width&&e.height===this.element.height||(this.element.width=e.width,this.element.height=e.height)},o.prototype.draw=function(t,i,e){t&&(this.requestAnimationId&&(cancelAnimationFrame(this.requestAnimationId),this.requestAnimationId=null),i?(this.context.globalAlpha=0,this.fadeInLoop(t,e)):(this.context.globalAlpha=1,this.context.drawImage(t,0,0,this.element.width,this.element.height)))},o.prototype.fadeInLoop=function(t,i){var e=this;if(this.context.globalAlpha>1)return cancelAnimationFrame(this.requestAnimationId),void(this.requestAnimationId=null);this.context.globalAlpha+=i,this.context.drawImage(t,0,0,this.element.width,this.element.height),this.requestAnimationId=requestAnimationFrame(function(){e.fadeInLoop(t,i)})};var s=function(){this.element=document.createElement("canvas"),this.element.classList.add("ls-viewer-canvas"),this.element.style.opacity=0,this.context=e.getContext(this.element),this.requestAnimationId=null};s.prototype.show=function(){this.element.style.opacity=1},s.prototype.hide=function(){this.element.style.opacity=0},s.prototype.resize=function(t,i,e){this.element.style.width="100%",this.element.style.height="100%",this.element.style.top=0,this.element.style.left=0,e.width===this.element.width&&e.height===this.element.height||(this.element.width=e.width,this.element.height=e.height)};var r=function(t){this.server=t};r.buildQuery=function(t){return Object.keys(t).map(function(i){return i+"="+t[i]}).join("&")},r.sceneParameters=function(t){var i=t.scene,e={},n=i.length>1?i.find(function(t){return t.master})||i[0]:null;if(n){var o=i.find(function(t){return t!==n});e.databaseId=o.database,e.configuration=o.configuration,e.decorDatabaseId=n.database,e.decorDeltaAltitude=n.translation.y}else{var s=i[0];e.databaseId=s.database,e.configuration=s.configuration}return e},r.renderParameters=function(t){var i=t.parameters;return{width:i.width,height:i.height,softwareAntialiasing:i.antialiasing,superSampling:i.superSampling}},r.encoderParameters=function(t){var i=t.encoder;return{imageFormat:i.format,imageQuality:i.quality}},r.fetch=function(t){return fetch(t).then(function(t){return t.text()}).then(function(t){var i=t.replace(/&amp;/g,"&").match(/directUrl="([^"]*)"/g);return i?i.map(function(t){return t.replace(/directUrl="([^"]*)"/g,"$1")}):Promise.reject()})},r.prototype.image=function(t){var i={};Object.assign(i,r.sceneParameters(t)),Object.assign(i,{bookmarkSet:t.view.camera.split("/")[0],bookmark:t.view.camera.split("/")[1],background:t.view.background}),Object.assign(i,r.renderParameters(t)),Object.assign(i,r.encoderParameters(t));var e=r.buildQuery(i);return Promise.resolve(this.server+"/ImageFromBookmark?"+e)},r.prototype.vrCube=function(t){var i={};Object.assign(i,r.sceneParameters(t)),Object.assign(i,{bookmarkSet:t.view.camera.split("/")[0],bookmark:t.view.camera.split("/")[1],background:t.view.background}),Object.assign(i,r.renderParameters(t)),Object.assign(i,r.encoderParameters(t)),i.width=Math.max(i.width,i.height),i.height=Math.max(i.width,i.height);var e=r.buildQuery(i);return r.fetch(this.server+"/CubeFromBookmark?"+e)},r.prototype.vrObject=function(t){var i={};Object.assign(i,r.sceneParameters(t)),Object.assign(i,{bookmarkSet:t.view.camera,background:t.view.background}),Object.assign(i,r.renderParameters(t)),Object.assign(i,r.encoderParameters(t));var e=r.buildQuery(i);return r.fetch(this.server+"/ImagesFromBookmarkSet?"+e)},r.prototype.animation=function(t){var i={};Object.assign(i,r.sceneParameters(t)),Object.assign(i,{animation:t.view.animation,bookmarkSet:t.view.camera.split("/")[0],bookmark:t.view.camera.split("/")[1],frames:t.view.frames,loop:t.view.loop,background:t.view.background}),Object.assign(i,r.renderParameters(t)),Object.assign(i,r.encoderParameters(t));var e=r.buildQuery(i);return r.fetch(this.server+"/ImagesFromAnimation?"+e)};var a=function(t,i){this.webrender=new r(t),this.loadingId=0,this.loaded=0,this.total=0,this.onLoadStart=i.onLoadStart||function(){},this.onLoadProgress=i.onLoadProgress||function(){},this.onLoadEnd=i.onLoadEnd||function(){}},h={progress:{configurable:!0}};h.progress.get=function(){return this.total?this.loaded/this.total:0},a.prototype.loadImage=function(t,i){var e=this,n=new Image;n.crossOrigin="anonymous";var o=new Promise(function(t,o){n.addEventListener("load",function(){i===e.loadingId&&(e.loaded+=1,e.onLoadProgress(e.progress),t(n))}),n.addEventListener("error",function(t){i===e.loadingId&&o(t)})});return n.src=t,o},a.prototype.loadVideoFrames=function(t,i,e,n){var o=this,s=1/e/2,r=[],a=document.createElement("video");a.autoplay=!0,a.muted=!0,a.playsinline=!0,a.preload="auto";var h=new Promise(function(t,h){a.addEventListener("loadeddata",function(){n===o.loadingId&&(a.currentTime=s)}),a.addEventListener("seeked",function(){if(n===o.loadingId){var h=document.createElement("canvas");h.width=a.videoWidth,h.height=a.videoHeight,h.getContext("2d").drawImage(a,0,0),r.push(h),o.loaded+=1,o.onLoadProgress(o.progress),(s+=1/e)<=i/e?a.currentTime=s:t(r)}}),a.addEventListener("error",function(t){n===o.loadingId&&h(t)})});return a.src=t,h},a.prototype.loadImageSnapshot=function(t){var i=this;this.loadingId+=1,this.loaded=0,this.total=1,this.onLoadStart(this.progress);var e=this.loadingId;return this.webrender.image(t).then(function(t){return i.loadImage(t,e)}).then(function(t){return i.onLoadEnd(i.progress),t})},a.prototype.loadVRCubeSnapshot=function(t){var i=this;this.loadingId+=1,this.loaded=0,this.total=0,this.onLoadStart(this.progress);var e=this.loadingId;return this.webrender.vrCube(t).then(function(t){return i.total=t.length,Promise.all(t.map(function(t){return i.loadImage(t,e)}))}).then(function(t){return i.onLoadEnd(i.progress),t})},a.prototype.loadVRObjectSnapshot=function(t){var i=this;this.loaded=0,this.total=0,this.onLoadStart(this.progress);var e=this.loadingId,n=t.view.animation?"animation":"vrObject";return this.webrender[n](t).then(function(t){return i.total=t.length,Promise.all(t.map(function(t){return i.loadImage(t,e)}))}).then(function(t){return i.onLoadEnd(i.progress),t})},Object.defineProperties(a.prototype,h);var c=function(t,i,e){this.container=t,this.canvas=i,this.loader=e,this.image=null,this.onStart=function(){},this.onEnter=function(){},this.onMove=function(){},this.onEnd=function(){},this.onDeviceOrientation=function(){}};c.prototype.load=function(t,i,e){var n=this,o=JSON.stringify(t);return o===this.hash?(this.canvas.draw(this.image,e,.01),Promise.resolve()):(this.hash=o,this.loader.loadImageSnapshot(t).then(function(t){n.image=t,n.canvas.draw(n.image,e,.01)}))};var d=function(){};d.point=function(t){if("touchmove"===t.type||"touchstart"===t.type||"touchend"===t.type){var i=t.targetTouches[0]||t.changedTouches[0];return{x:i.screenX,y:i.screenY}}return{x:t.screenX,y:t.screenY}};var l=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];if(3===t.length){var n;n=t,this.u=n[0],this.v=n[1],this.o=n[2],this.w=i.v3.cross(this.u,this.v)}else this.u=[1,0,0],this.v=[0,1,0],this.w=[0,0,1],this.o=[0,0,0]},u={localToGlobalMatrix:{configurable:!0},globalToLocalMatrix:{configurable:!0}};u.localToGlobalMatrix.get=function(){var t=[this.u[0],this.u[1],this.u[2],0],i=[this.v[0],this.v[1],this.v[2],0],e=[this.w[0],this.w[1],this.w[2],0],n=[this.o[0],this.o[1],this.o[2],1];return[].concat.apply([],[t,i,e,n])},u.globalToLocalMatrix.get=function(){return i.m4.inverse(this.localToGlobalMatrix)},Object.defineProperties(l.prototype,u);var m=function(t){this.animationFrameId=null,this.points=[],this.onMotion=t,this.loop=this.loop.bind(this)};m.prototype.track=function(t){var i=Date.now();this.points=this.points.filter(function(t){return i-t.time<=100}),this.points.push({x:t.x,y:t.y,time:i}),this.lastPoint=t},m.prototype.start=function(){if(0!==this.points.length){var t=this.points[0],i=this.points[this.points.length-1],e=i.x-t.x,n=i.y-t.y,o=i.time-t.time;this.velocity={x:0===o?0:e/(o/15),y:0===o?0:n/(o/15)},this.animationFrameId&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null),this.animationFrameId=requestAnimationFrame(this.loop)}},m.prototype.stop=function(){this.animationFrameId&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null),this.points=[]},m.prototype.loop=function(){if(Math.abs(this.velocity.x)<1&&Math.abs(this.velocity.y)<1)return this.animationFrameId=null,void(this.points=[]);this.lastPoint.x+=this.velocity.x,this.lastPoint.y+=this.velocity.y,this.velocity.x*=.9,this.velocity.y*=.9,this.onMotion(this.lastPoint),this.animationFrameId=requestAnimationFrame(this.loop)};var p=function(){};p.accelerate=function(t,i){var e=i||1.5;return Math.pow(Math.abs(t),e)*(t>0?1:-1)},p.degreesToRadians=function(t){return t*(Math.PI/180)},p.mod=function(t,i){return t-i*Math.floor(t/i)};var v=function(t,i,e){this.changed=!1,this.isStarted=!1,this.inertia=new m(this.motion.bind(this)),this.fov=p.degreesToRadians(t),this.pov=i,this.initFov=this.fov,this.initPov=this.pov,this.onMotion=e};v.prototype.reset=function(){this.fov=this.initFov,this.pov={eye:Array.from(this.initPov.eye),target:Array.from(this.initPov.target),up:Array.from(this.initPov.up)}},v.prototype.start=function(t,i){this.changed=!1,this.isStarted=!0,this.startPov=this.pov,this.startPoint=t,this.startSize=i,this.previousPoint=t,this.inertia.stop()},v.prototype.motion=function(t){this.isStarted&&this.inertia.track(t);var e={x:t.x-this.previousPoint.x,y:t.y-this.previousPoint.y},n=p.accelerate(e.x,1.2)/this.startSize.width*.2*Math.PI*1.5,o=p.accelerate(e.y,1.2)/this.startSize.height*.2*Math.PI,s=i.m4.multiply(i.m4.rotationY(-n),i.m4.rotationX(-o)),r=i.v3.normalize(i.v3.cross(this.pov.up,this.pov.target)),a=new l(r,[0,1,0],this.pov.eye),h=i.m4.identity();i.m4.multiply(h,a.localToGlobalMatrix,h),i.m4.multiply(h,s,h),i.m4.multiply(h,a.globalToLocalMatrix,h);var c=i.m4.transformPoint(h,this.pov.target),d=i.m4.transformDirection(h,this.pov.up);i.v3.cross(d,[0,0,1])[0]>=0&&(this.pov.target=c,this.pov.up=d),this.previousPoint={x:t.x,y:t.y},this.onMotion(),this.changed=!0},v.prototype.end=function(t){this.isStarted=!1,t&&this.inertia.start()},v.prototype.orientation=function(t){var e=p.degreesToRadians(90-t.beta),n=p.degreesToRadians(-t.alpha),o=i.m4.identity();i.m4.multiply(o,i.m4.rotationZ(0),o),i.m4.multiply(o,i.m4.rotationY(n),o),i.m4.multiply(o,i.m4.rotationX(e),o),this.reset();var s=i.v3.normalize(i.v3.cross(this.pov.up,this.pov.target)),r=new l(s,[0,1,0],this.pov.eye),a=i.m4.identity();i.m4.multiply(a,r.localToGlobalMatrix,a),i.m4.multiply(a,o,a),i.m4.multiply(a,r.globalToLocalMatrix,a);var h=i.m4.transformPoint(a,this.pov.target),c=i.m4.transformDirection(a,this.pov.up);i.v3.cross(c,[0,0,1])[0]>=0&&(this.pov.target=h,this.pov.up=c),this.onMotion()};var g=function(t,i,n,o){var s=this;this.container=t,this.canvas=i,this.loader=n,this.onInteraction=o,this.images=[];var r={eye:[0,0,0],target:[0,0,1],up:[0,1,0]},a=e.m4.rotationX(p.degreesToRadians(15));e.m4.transformDirection(a,r.target,r.target),this.interaction=new v(60,r,function(){requestAnimationFrame(s.render)}),this.gl=this.canvas.context,this.programInfo=e.createProgramInfo(this.gl,["attribute vec4 position;uniform mat4 u_matrix;varying vec3 direction;void main(){direction=(u_matrix*position).xyz;gl_Position=position*vec4(-1,1,1,1);}\n","precision mediump float;uniform samplerCube u_texture;varying vec3 direction;void main(){gl_FragColor=textureCube(u_texture,direction);}\n"]),this.quad=e.primitives.createXYQuadBufferInfo(this.gl),this.uniforms={u_texture:e.createTexture(this.gl,{target:this.gl.TEXTURE_CUBE_MAP,minMag:this.gl.LINEAR,width:1,height:1}),u_matrix:e.m4.identity()},this.render=this.render.bind(this)};g.prototype.load=function(t,i){var n=this,o=JSON.stringify(t);return o===this.hash?(requestAnimationFrame(this.render),Promise.resolve()):(this.hash=o,i&&this.interaction.reset(),this.images=[],requestAnimationFrame(this.render),this.loader.loadVRCubeSnapshot(t).then(function(t){n.images=t;var i=t.map(function(t){return t.src});n.uniforms.u_texture=e.createTexture(n.gl,{target:n.gl.TEXTURE_CUBE_MAP,minMag:n.gl.LINEAR,cubeFaceOrder:[n.gl.TEXTURE_CUBE_MAP_POSITIVE_Z,n.gl.TEXTURE_CUBE_MAP_POSITIVE_X,n.gl.TEXTURE_CUBE_MAP_NEGATIVE_Z,n.gl.TEXTURE_CUBE_MAP_NEGATIVE_X,n.gl.TEXTURE_CUBE_MAP_POSITIVE_Y,n.gl.TEXTURE_CUBE_MAP_NEGATIVE_Y],src:i,crossOrigin:"anonymous"},function(){requestAnimationFrame(n.render)})}))},g.prototype.render=function(){e.resizeCanvasToDisplaySize(this.gl.canvas),this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height);var t=this.interaction.fov,i=this.gl.canvas.clientWidth/this.gl.canvas.clientHeight,n=e.m4.inverse(e.m4.perspective(t,i,.5,100)),o=this.interaction.pov,s=e.m4.lookAt(o.eye,o.target,o.up);this.uniforms.u_matrix=e.m4.multiply(s,n),this.gl.useProgram(this.programInfo.program),e.setBuffersAndAttributes(this.gl,this.programInfo,this.quad),e.setUniforms(this.programInfo,this.uniforms),e.drawBufferInfo(this.gl,this.quad)},g.prototype.onStart=function(t){this.container.classList.add("ls-viewer-container-vrcube-grabbing"),this.interaction.start(d.point(t),{width:this.gl.canvas.width,height:this.gl.canvas.height})},g.prototype.onEnter=function(t){this.interaction.isStarted||0===t.buttons&&(this.container.classList.remove("ls-viewer-container-vrcube-grabbing"),this.interaction.end(!1))},g.prototype.onMove=function(t){this.interaction.isStarted&&this.interaction.motion(d.point(t))},g.prototype.onEnd=function(){this.interaction.isStarted&&(this.container.classList.remove("ls-viewer-container-vrcube-grabbing"),this.interaction.end(!0),this.interaction.changed&&this.onInteraction())},g.prototype.onDeviceOrientation=function(t){!1!==this.interaction.isStarted&&this.interaction.orientation({alpha:t.alpha,beta:t.beta,gamma:t.gamma})};var f=function(t,i,e,n){this.changed=!1,this.isStarted=!1,this.inertia=new m(this.motion.bind(this)),this.position=t,this.count=i,this.loop=e,this.onMotion=n,this.initPosition=this.position};f.prototype.set=function(t){var i=this.position;this.loop?this.position=p.mod(t,this.count):this.position=Math.max(0,Math.min(t,this.count-1)),this.position!==i&&(this.onMotion(),this.changed=!0)},f.prototype.reset=function(){this.set(this.initPosition)},f.prototype.start=function(t,i){this.changed=!1,this.isStarted=!0,this.startPosition=this.position,this.startPoint=t,this.startSize=i,this.inertia.stop()},f.prototype.motion=function(t){this.isStarted&&this.inertia.track(t);var i={x:t.x-this.startPoint.x,y:t.y-this.startPoint.y},e=p.accelerate(i.x,1.2)/this.startSize.width*(this.count/4),n=this.startPosition-Math.round(e);this.set(n)},f.prototype.end=function(t){this.isStarted=!1,t&&this.inertia.start()};var b=function(t,i,e,n){var o=this;this.container=t,this.canvas=i,this.loader=e,this.onInteraction=n,this.images=[],this.interaction=new f(0,1,!1,function(){o.canvas.draw(o.image,!0,.25)}),this.options={loop:!0},this.onDeviceOrientation=function(){}},y={image:{configurable:!0}};y.image.get=function(){return this.images[this.interaction.position]},b.prototype.load=function(t,i,e){var n=this,o=JSON.stringify(t);return o===this.hash?(this.canvas.draw(this.image,e,.01),Promise.resolve()):(this.hash=o,i&&this.interaction.reset(),this.images=[],this.loader.loadVRObjectSnapshot(t).then(function(i){n.images=i,n.interaction.count=i.length,n.interaction.loop=t.view.loop,n.canvas.draw(n.image,e,.01)}))},b.prototype.onStart=function(t){this.container.classList.add("ls-viewer-container-vrobject-grabbing"),this.interaction.start(d.point(t),{width:this.canvas.element.width,height:this.canvas.element.height})},b.prototype.onEnter=function(t){this.interaction.isStarted&&0===t.buttons&&(this.container.classList.remove("ls-viewer-container-vrobject-grabbing"),this.interaction.end(!1))},b.prototype.onMove=function(t){this.interaction.isStarted&&this.interaction.motion(d.point(t))},b.prototype.onEnd=function(){this.interaction.isStarted&&(this.container.classList.remove("ls-viewer-container-vrobject-grabbing"),this.interaction.end(!0),this.interaction.changed&&this.onInteraction())},Object.defineProperties(b.prototype,y),function(t,i){if("undefined"==typeof document)return i;t=t||"";var e=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",e.appendChild(n),n.styleSheet?n.styleSheet.cssText=t:n.appendChild(document.createTextNode(t))}(".ls-viewer-container{position:relative;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%;height:100%}.ls-viewer-container-image{cursor:default}.ls-viewer-container-vrcube{cursor:pointer;cursor:-webkit-grab;cursor:grab}.ls-viewer-container-vrcube-grabbing{cursor:move;cursor:-webkit-grabbing;cursor:grabbing}.ls-viewer-container-vrobject{cursor:move;cursor:-webkit-grab;cursor:grab}.ls-viewer-container-vrobject-grabbing{cursor:move;cursor:-webkit-grabbing;cursor:grabbing}.ls-viewer-container-loading{cursor:progress}.ls-viewer-canvas{position:absolute;-webkit-transition:opacity .5s;transition:opacity .5s}",void 0);var w=function(i,e){this.container=i,this.container.classList.add("ls-viewer-container"),this.canvas2D=new o,this.container.appendChild(this.canvas2D.element),this.canvas3D=new s,this.container.appendChild(this.canvas3D.element),this.container.addEventListener("mousedown",this.onStart.bind(this)),this.container.addEventListener("mouseenter",this.onEnter.bind(this)),this.container.addEventListener("mousemove",this.onMove.bind(this)),this.container.addEventListener("mouseup",this.onEnd.bind(this)),this.container.addEventListener("touchstart",this.onStart.bind(this)),this.container.addEventListener("touchmove",this.onMove.bind(this)),this.container.addEventListener("touchend",this.onEnd.bind(this)),this.options=Object.assign({},{server:"localhost",events:{onInteraction:function(){},onLoadStart:function(){},onLoadProgress:function(){},onLoadEnd:function(){},onError:function(){}}},e),this.loader=new a(e.server,{onLoadStart:this.onLoadStart.bind(this),onLoadProgress:this.onLoadProgress.bind(this),onLoadEnd:this.onLoadEnd.bind(this),onError:this.onError.bind(this)}),this.params=null,this.resolution={};var n=this.onInteraction.bind(this);this.widgetImage=new c(i,this.canvas2D,this.loader,n),this.widgetVRCube=new g(i,this.canvas3D,this.loader,n),this.widgetVRObject=new b(i,this.canvas2D,this.loader,n),this.widget=this.widgetImage,window.addEventListener("resize",t(this.onResize.bind(this),250)),this.onResize()};return w.prototype.load=function(t,i,e){var n=this;if(t&&(this.snapshot=t,this.resolution.width&&this.resolution.height)){this.snapshot.parameters=Object.assign({},{antialiasing:!1,superSampling:2},this.snapshot.parameters,{width:this.resolution.width,height:this.resolution.height}),this.snapshot.encoder=Object.assign({},{format:"jpeg",quality:90},this.snapshot.encoder),this.snapshot.view.background||(this.snapshot.view.background="product");var o=null;switch(t.view.mode){case"image":o=this.widgetImage,this.container.classList.remove("ls-viewer-container-vrcube"),this.container.classList.remove("ls-viewer-container-vrobject"),this.container.classList.add("ls-viewer-container-image");break;case"vrcube":o=this.widgetVRCube,this.container.classList.remove("ls-viewer-container-image"),this.container.classList.remove("ls-viewer-container-vrobject"),this.container.classList.add("ls-viewer-container-vrcube");break;case"vrobject":o=this.widgetVRObject,this.container.classList.remove("ls-viewer-container-image"),this.container.classList.remove("ls-viewer-container-vrcube"),this.container.classList.add("ls-viewer-container-vrobject")}o&&o.load(t,i,e).then(function(){o.canvas!==n.widget.canvas&&n.widget.canvas.hide(),o.canvas.show(),n.widget=o},function(t){n.options.events.onError(t)})}},w.prototype.onDeviceOrientation=function(t){this.widget.onDeviceOrientation(t)},w.prototype.onStart=function(t){this.widget.onStart(t)},w.prototype.onEnter=function(t){this.widget.onEnter(t)},w.prototype.onMove=function(t){this.widget.onMove(t)},w.prototype.onEnd=function(t){this.widget.onEnd(t)},w.prototype.onResize=function(){var t=this.container.offsetWidth,i=this.container.offsetHeight;this.resolution=n.getStandardResolution(t,i),this.canvas2D.resize(t,i,this.resolution),this.canvas3D.resize(t,i,this.resolution),this.load(this.snapshot,!1,!1)},w.prototype.onInteraction=function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];this.options.events.onInteraction(t)},w.prototype.onLoadStart=function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];this.container.classList.add("ls-viewer-container-loading"),this.options.events.onLoadStart(t)},w.prototype.onLoadProgress=function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];this.options.events.onLoadProgress(t)},w.prototype.onLoadEnd=function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];this.container.classList.remove("ls-viewer-container-loading"),this.options.events.onLoadEnd(t)},w.prototype.onError=function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];this.options.events.onError(t)},w});
{
"name": "@lumiscaphe/viewer",
"version": "0.2.3",
"version": "0.2.4",
"description": "Lumiscaphe 3D Viewer",

@@ -17,7 +17,3 @@ "main": "dist/index.js",

"devDependencies": {
"babel-core": "^6.26.0",
"babel-plugin-external-helpers": "^6.22.0",
"babel-plugin-transform-exponentiation-operator": "^6.24.1",
"babel-preset-es2015-rollup": "^3.0.0",
"cross-env": "^5.1.1",
"cross-env": "^5.1.3",
"cssnano": "^3.10.0",

@@ -30,8 +26,6 @@ "eslint": "^4.13.1",

"postcss-reporter": "^5.0.0",
"rollup": "^0.52.3",
"rollup-plugin-babel": "^3.0.3",
"rollup-plugin-commonjs": "^8.2.6",
"rollup": "^0.53.0",
"rollup-plugin-buble": "^0.18.0",
"rollup-plugin-eslint": "^4.0.0",
"rollup-plugin-glsl": "^1.1.0",
"rollup-plugin-node-resolve": "^3.0.0",
"rollup-plugin-postcss": "^0.5.5",

@@ -38,0 +32,0 @@ "rollup-plugin-uglify-es": "^0.0.1",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc