Socket
Socket
Sign inDemoInstall

@lumiscaphe/viewer

Package Overview
Dependencies
Maintainers
1
Versions
113
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.3.1 to 0.3.2

2

dist/index.js

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

!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.LumiscapheViewer=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,r=i/e,s=0,a=0;switch(n){case"contain":s=r<o?i:e*o,a=r<o?i/o:e;break;case"cover":default:s=r<o?e*o:i,a=r<o?e:i/o;break;case"fill":s=i,a=e}return{width:Math.round(s),height:Math.round(a),top:Math.round((e-a)/2),left:Math.round((i-s)/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 r=t/i>4/3?16/9:4/3,s=n.getStandardQuality(t/r);return{width:Math.round(s*r),height:Math.round(s)}};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.fadeLoop(t,e)):(this.context.globalAlpha=1,this.context.drawImage(t,0,0,this.element.width,this.element.height)))},o.prototype.fadeLoop=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.fadeLoop(t,i)})};var r=function(){this.element=document.createElement("canvas"),this.element.classList.add("ls-viewer-canvas"),this.element.style.opacity=0,this.context=e.getContext(this.element),e.setDefaultTextureColor([1,1,1,1]),this.requestAnimationId=null};r.prototype.show=function(){this.element.style.opacity=1},r.prototype.hide=function(){this.element.style.opacity=0},r.prototype.resize=function(){this.element.style.width="100%",this.element.style.height="100%",this.element.style.top=0,this.element.style.left=0};var s=function(){};s.accelerate=function(t,i){var e=i||1.5;return Math.pow(Math.abs(t),e)*(t>0?1:-1)},s.degreesToRadians=function(t){return t*(Math.PI/180)},s.mod=function(t,i){return t-i*Math.floor(t/i)};var a=function(t){this.server=t};a.buildQuery=function(t){return Object.keys(t).map(function(i){return i+"="+t[i]}).join("&")},a.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 r=i[0];e.databaseId=r.database,e.configuration=r.configuration}return e},a.renderParameters=function(t){var i=t.parameters;return{width:i.width,height:i.height,softwareAntialiasing:i.antialiasing,superSampling:i.superSampling}},a.encoderParameters=function(t){var i=t.encoder;return{imageFormat:i.format,imageQuality:i.quality}},a.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()})},a.prototype.image=function(t){var i={};Object.assign(i,a.sceneParameters(t)),Object.assign(i,{bookmarkSet:t.view.camera.split("/")[0],bookmark:t.view.camera.split("/")[1],background:t.view.background}),Object.assign(i,a.renderParameters(t)),Object.assign(i,a.encoderParameters(t));var e=a.buildQuery(i);return Promise.resolve(this.server+"/ImageFromBookmark?"+e)},a.prototype.vrCube=function(t){var i={};Object.assign(i,a.sceneParameters(t)),Object.assign(i,{bookmarkSet:t.view.camera.split("/")[0],bookmark:t.view.camera.split("/")[1],background:t.view.background}),Object.assign(i,a.renderParameters(t)),Object.assign(i,a.encoderParameters(t)),i.width=Math.max(i.width,i.height),i.height=Math.max(i.width,i.height);var e=a.buildQuery(i);return a.fetch(this.server+"/CubeFromBookmark?"+e)},a.prototype.vrObject=function(t){var i={};Object.assign(i,a.sceneParameters(t)),Object.assign(i,{bookmarkSet:t.view.camera,background:t.view.background}),Object.assign(i,a.renderParameters(t)),Object.assign(i,a.encoderParameters(t));var e=a.buildQuery(i);return a.fetch(this.server+"/ImagesFromBookmarkSet?"+e)},a.prototype.animation=function(t){var i={};Object.assign(i,a.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,a.renderParameters(t)),Object.assign(i,a.encoderParameters(t));var e=a.buildQuery(i);return a.fetch(this.server+"/ImagesFromAnimation?"+e)};var h=function(t,i){this.webrender=new a(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(){}},c={progress:{configurable:!0}};c.progress.get=function(){return this.total?this.loaded/this.total:0},h.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},h.prototype.loadVideoFrames=function(t,i,e,n){var o=this,r=1/e/2,s=[],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=r)}),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),s.push(h),o.loaded+=1,o.onLoadProgress(o.progress),(r+=1/e)<=i/e?a.currentTime=r:t(s)}}),a.addEventListener("error",function(t){n===o.loadingId&&h(t)})});return a.src=t,h},h.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})},h.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){i.total=t.length;var n=t.map(function(t){return i.loadImage(t,e)});return Promise.all(n)}).then(function(t){return i.onLoadEnd(i.progress),t})},h.prototype.loadVRObjectSnapshot=function(t,i){var e=this;this.loadingId+=1,this.loaded=0,this.total=0,this.onLoadStart(this.progress);var n=this.loadingId,o=t.view.animation?"animation":"vrObject";return this.webrender[o](t).then(function(o){e.total=o.length;for(var r=new Array(o.length),a=i||0,h=0,c=o.length;h<c;h+=1){var d=Math.ceil(h/2)*(h%2==0?1:-1),u=t.view.loop?s.mod(a+d,c):h;r[u]=e.loadImage(o[u],n)}return Promise.all(r).then(function(){return e.onLoadEnd(e.progress)}),r})},Object.defineProperties(h.prototype,c);var d=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(){}};d.prototype.show=function(){this.canvas.show(),this.container.classList.add("ls-viewer-container-image")},d.prototype.hide=function(){this.canvas.hide(),this.container.classList.remove("ls-viewer-container-image")},d.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 u=function(){};u.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]},m={localToGlobalMatrix:{configurable:!0},globalToLocalMatrix:{configurable:!0}};m.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])},m.globalToLocalMatrix.get=function(){return i.m4.inverse(this.localToGlobalMatrix)},Object.defineProperties(l.prototype,m);var p=function(t){this.animationFrameId=null,this.points=[],this.onMotion=t,this.loop=this.loop.bind(this)};p.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},p.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)}},p.prototype.stop=function(){this.animationFrameId&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null),this.points=[]},p.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 v=function(t,e,n){this.changed=!1,this.isStarted=!1,this.inertia=new p(this.motion.bind(this)),this.fov=s.degreesToRadians(t),this.pov=e,this.orientationMatrix=i.m4.identity(),this.initFov=this.fov,this.initPov=this.pov,this.initOrientation=s.degreesToRadians(window.orientation)||0,this.onMotion=n},g={orientedPov:{configurable:!0}};g.orientedPov.get=function(){var t=i.v3.normalize(i.v3.cross(this.pov.up,this.pov.target)),e=new l(t,[0,1,0],this.pov.eye),n=i.m4.identity();return i.m4.multiply(n,e.localToGlobalMatrix,n),i.m4.multiply(n,this.orientationMatrix,n),i.m4.multiply(n,e.globalToLocalMatrix,n),{eye:this.pov.eye,target:i.m4.transformDirection(n,this.pov.target),up:i.m4.transformDirection(n,this.pov.up)}},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=s.accelerate(e.x,1.3)/this.startSize.width*.2*Math.PI*1.5,o=s.accelerate(e.y,1.3)/this.startSize.height*.2*Math.PI,r=i.m4.multiply(i.m4.rotationY(-n),i.m4.rotationX(-o)),a=i.v3.normalize(i.v3.cross(this.pov.up,this.pov.target)),h=new l(a,[0,1,0],this.pov.eye),c=i.m4.identity();i.m4.multiply(c,h.localToGlobalMatrix,c),i.m4.multiply(c,r,c),i.m4.multiply(c,h.globalToLocalMatrix,c);var d=i.m4.transformPoint(c,this.pov.target),u=i.m4.transformDirection(c,this.pov.up);i.v3.cross(u,[0,0,1])[0]>=0&&(this.pov.target=d,this.pov.up=u),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){if(null!==t.alpha&&null!==t.beta&&null!==t.gamma){var e=s.degreesToRadians(window.orientation)||0,n=s.degreesToRadians(t.alpha),o=s.degreesToRadians(-t.beta),r=s.degreesToRadians(-t.gamma),a=i.m4.rotationX(s.degreesToRadians(90));i.m4.rotateZ(a,this.initOrientation,a),i.m4.rotateZ(a,n,a),i.m4.rotateX(a,o,a),i.m4.rotateY(a,r,a),i.m4.rotateZ(a,-e,a),this.orientationMatrix=a,this.onMotion()}},Object.defineProperties(v.prototype,g);var f=function(t,i,n,o){var r=this;this.container=t,this.canvas=i,this.loader=n,this.onInteraction=o;var a={eye:[0,0,0],target:[0,0,1],up:[0,1,0]},h=e.m4.rotationX(s.degreesToRadians(15));e.m4.transformDirection(h,a.target,a.target),e.m4.transformDirection(h,a.up,a.up),this.interaction=new v(60,a,function(){requestAnimationFrame(r.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 float u_mix;uniform samplerCube u_texture;uniform samplerCube u_texture_back;varying vec3 direction;void main(){vec4 backColor=textureCube(u_texture_back,direction);vec4 color=textureCube(u_texture,direction);gl_FragColor=mix(backColor,color,u_mix);}\n"]),this.quad=e.primitives.createXYQuadBufferInfo(this.gl),this.uniforms={u_matrix:e.m4.identity(),u_mix:0,u_texture_back:e.createTexture(this.gl,{target:this.gl.TEXTURE_CUBE_MAP,minMag:this.gl.LINEAR,width:1,height:1}),u_texture:e.createTexture(this.gl,{target:this.gl.TEXTURE_CUBE_MAP,minMag:this.gl.LINEAR,width:1,height:1})},this.render=this.render.bind(this)};f.prototype.show=function(){this.canvas.show(),this.container.classList.add("ls-viewer-container-vrcube")},f.prototype.hide=function(){this.canvas.hide(),this.container.classList.remove("ls-viewer-container-vrcube")},f.prototype.load=function(t,i,n){var o=this,r=JSON.stringify(t);return r===this.hash?(requestAnimationFrame(this.render),Promise.resolve()):(this.hash=r,this.images=[],requestAnimationFrame(this.render),this.loader.loadVRCubeSnapshot(t).then(function(t){e.createTexture(o.gl,{target:o.gl.TEXTURE_CUBE_MAP,minMag:o.gl.LINEAR,auto:!1,cubeFaceOrder:[o.gl.TEXTURE_CUBE_MAP_POSITIVE_Z,o.gl.TEXTURE_CUBE_MAP_POSITIVE_X,o.gl.TEXTURE_CUBE_MAP_NEGATIVE_Z,o.gl.TEXTURE_CUBE_MAP_NEGATIVE_X,o.gl.TEXTURE_CUBE_MAP_POSITIVE_Y,o.gl.TEXTURE_CUBE_MAP_NEGATIVE_Y],src:t},function(t,e){t||(i&&o.interaction.reset(),o.uniforms.u_mix=n?0:1,o.uniforms.u_texture_back=o.uniforms.u_texture,o.uniforms.u_texture=e,requestAnimationFrame(o.render))})}))},f.prototype.render=function(){e.resizeCanvasToDisplaySize(this.gl.canvas,window.devicePixelRatio),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.orientedPov,r=e.m4.lookAt(o.eye,o.target,o.up);this.uniforms.u_matrix=e.m4.multiply(r,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),this.uniforms.u_mix<1&&(this.uniforms.u_mix=Math.min(this.uniforms.u_mix+.05,1),requestAnimationFrame(this.render))},f.prototype.onStart=function(t){this.container.classList.add("ls-viewer-container-vrcube-grabbing"),this.interaction.start(u.point(t),{width:this.gl.canvas.width,height:this.gl.canvas.height})},f.prototype.onEnter=function(t){this.interaction.isStarted||0===t.buttons&&(this.container.classList.remove("ls-viewer-container-vrcube-grabbing"),this.interaction.end(!1))},f.prototype.onMove=function(t){this.interaction.isStarted&&(this.interaction.motion(u.point(t)),t.preventDefault())},f.prototype.onEnd=function(){this.interaction.isStarted&&(this.container.classList.remove("ls-viewer-container-vrcube-grabbing"),this.interaction.end(!0),this.interaction.changed&&this.onInteraction())},f.prototype.onDeviceOrientation=function(t){this.interaction.orientation({alpha:t.alpha,beta:t.beta,gamma:t.gamma})};var y=function(t,i,e,n){this.changed=!1,this.isStarted=!1,this.inertia=new p(this.motion.bind(this)),this.position=t,this.count=i,this.loop=e,this.onMotion=n,this.initPosition=this.position};y.prototype.set=function(t){var i=this.position;this.loop?this.position=s.mod(t,this.count):this.position=Math.max(0,Math.min(t,this.count-1)),this.position!==i&&(this.onMotion(),this.changed=!0)},y.prototype.reset=function(){this.position=this.initPosition},y.prototype.start=function(t,i){this.changed=!1,this.isStarted=!0,this.startPosition=this.position,this.startPoint=t,this.startSize=i,this.inertia.stop()},y.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=s.accelerate(i.x,1.3)/this.startSize.width*(this.count/4),n=this.startPosition-Math.round(e);this.set(n)},y.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 y(0,1,!1,function(){o.canvas.draw(o.image,!0,.25)}),this.options={loop:!0},this.onDeviceOrientation=function(){}},w={image:{configurable:!0}};b.prototype.show=function(){this.canvas.show(),this.container.classList.add("ls-viewer-container-vrobject")},b.prototype.hide=function(){this.canvas.hide(),this.container.classList.remove("ls-viewer-container-vrobject")},w.image.get=function(){return this.images[this.interaction.position]},b.prototype.load=function(t,i,e){var n=this,o=JSON.stringify(t);if(o===this.hash)return this.canvas.draw(this.image,e,.01),Promise.resolve();this.hash=o,this.images=[],i&&this.interaction.reset();var r=this.interaction.position;return this.loader.loadVRObjectSnapshot(t,r).then(function(i){var o=i.length;return n.images=new Array(o),n.interaction.count=o,n.interaction.loop=t.view.loop,i.forEach(function(t,i){t.then(function(t){n.images[i]=t,n.canvas.draw(n.image,e,.01)})}),i[n.interaction.position]})},b.prototype.onStart=function(t){this.container.classList.add("ls-viewer-container-vrobject-grabbing"),this.interaction.start(u.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(u.point(t)),t.preventDefault())},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,w);!function(t,i){void 0===i&&(i={});var e=i.insertAt;if(t&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===e&&n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.styleSheet?o.styleSheet.cssText=t:o.appendChild(document.createTextNode(t))}}(".ls-viewer-container{display:block;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}");var E=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 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(){}}},e),this.loader=new h(e.server,{onLoadStart:this.onLoadStart.bind(this),onLoadProgress:this.onLoadProgress.bind(this),onLoadEnd:this.onLoadEnd.bind(this),onError:this.onError.bind(this)}),this.scene=null,this.view=null,this.parameters={antialiasing:!1,superSampling:2},this.encoder={format:"jpeg",quality:90};var n=this.onInteraction.bind(this);this.widgets={image:new d(i,this.canvas2D,this.loader,n),vrcube:new f(i,this.canvas3D,this.loader,n),vrobject:new b(i,this.canvas2D,this.loader,n)},this.widget=this.widgets.image,this.loadWidget=t(this.loadWidget,10),window.addEventListener("deviceorientation",this.onDeviceOrientation.bind(this)),window.addEventListener("resize",t(this.onResize.bind(this),250)),this.onResize()};return E.prototype.load=function(t){this.scene=t,this.loadWidget(!1,!0)},E.prototype.setEncoder=function(t){this.encoder=t,this.loadWidget(!1,!0)},E.prototype.setParameters=function(t){this.parameters=t,this.parameters.width=this.resolution.width,this.parameters.height=this.resolution.height,this.loadWidget(!1,!0)},E.prototype.setView=function(t){this.view=t,this.loadWidget(!0,!0)},E.prototype.loadWidget=function(t,i){var e=this;if(this.scene&&this.view&&this.parameters.width&&this.parameters.height){var n=this.widgets[this.view.mode];if(n){var o={scene:this.scene,view:this.view,parameters:this.parameters,encoder:this.encoder};o.view.background||(o.view.background="product"),n.load(o,t,i).then(function(){e.widget.hide(),e.widget=n,e.widget.show()},function(t){e.options.events.onError(t)})}}},E.prototype.onStart=function(t){this.widget.onStart(t)},E.prototype.onEnter=function(t){this.widget.onEnter(t)},E.prototype.onMove=function(t){this.widget.onMove(t)},E.prototype.onEnd=function(t){this.widget.onEnd(t)},E.prototype.onDeviceOrientation=function(t){this.widget.onDeviceOrientation(t)},E.prototype.onResize=function(){var t=window.devicePixelRatio,i=this.container.offsetWidth*t,e=this.container.offsetHeight*t;this.resolution=n.getStandardResolution(i,e),this.parameters.width=this.resolution.width,this.parameters.height=this.resolution.height,this.canvas2D.resize(i/t,e/t,this.resolution),this.canvas3D.resize(i/t,e/t,this.resolution),this.loadWidget(!1,!1)},E.prototype.onInteraction=function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];this.options.events.onInteraction(t)},E.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)},E.prototype.onLoadProgress=function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];this.options.events.onLoadProgress(t)},E.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)},E.prototype.onError=function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];this.options.events.onError(t)},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.LumiscapheViewer=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,r=i/e,s=0,a=0;switch(n){case"contain":s=r<o?i:e*o,a=r<o?i/o:e;break;case"cover":default:s=r<o?e*o:i,a=r<o?e:i/o;break;case"fill":s=i,a=e}return{width:Math.round(s),height:Math.round(a),top:Math.round((e-a)/2),left:Math.round((i-s)/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 r=t/i>4/3?16/9:4/3,s=n.getStandardQuality(t/r);return{width:Math.round(s*r),height:Math.round(s)}};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.fadeLoop(t,e)):(this.context.globalAlpha=1,this.context.drawImage(t,0,0,this.element.width,this.element.height)))},o.prototype.fadeLoop=function(t,i){var e=this;if(this.context.globalAlpha>=1)return cancelAnimationFrame(this.requestAnimationId),void(this.requestAnimationId=null);this.context.globalAlpha=Math.min(this.context.globalAlpha+i,1),this.context.drawImage(t,0,0,this.element.width,this.element.height),this.requestAnimationId=requestAnimationFrame(function(){e.fadeLoop(t,i)})};var r=function(){this.element=document.createElement("canvas"),this.element.classList.add("ls-viewer-canvas"),this.element.style.opacity=0,this.context=e.getContext(this.element),e.setDefaultTextureColor([1,1,1,1]),this.requestAnimationId=null};r.prototype.show=function(){this.element.style.opacity=1},r.prototype.hide=function(){this.element.style.opacity=0},r.prototype.resize=function(){this.element.style.width="100%",this.element.style.height="100%",this.element.style.top=0,this.element.style.left=0};var s=function(){};s.accelerate=function(t,i){var e=i||1.5;return Math.pow(Math.abs(t),e)*(t>0?1:-1)},s.degreesToRadians=function(t){return t*(Math.PI/180)},s.mod=function(t,i){return t-i*Math.floor(t/i)};var a=function(t){this.server=t};a.buildQuery=function(t){return Object.keys(t).map(function(i){return i+"="+t[i]}).join("&")},a.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 r=i[0];e.databaseId=r.database,e.configuration=r.configuration,e.animations=r.animations&&r.animations.length?r.animations.join("/"):void 0}return e},a.renderParameters=function(t){var i=t.parameters;return{width:i.width,height:i.height,softwareAntialiasing:i.antialiasing,superSampling:i.superSampling}},a.encoderParameters=function(t){var i=t.encoder;return{imageFormat:i.format,imageQuality:i.quality}},a.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()})},a.prototype.image=function(t){var i={};Object.assign(i,a.sceneParameters(t)),Object.assign(i,{bookmarkSet:t.view.camera.split("/")[0],bookmark:t.view.camera.split("/")[1],background:t.view.background}),Object.assign(i,a.renderParameters(t)),Object.assign(i,a.encoderParameters(t));var e=a.buildQuery(i);return Promise.resolve(this.server+"/ImageFromBookmark?"+e)},a.prototype.vrCube=function(t){var i={};Object.assign(i,a.sceneParameters(t)),Object.assign(i,{bookmarkSet:t.view.camera.split("/")[0],bookmark:t.view.camera.split("/")[1],background:t.view.background}),Object.assign(i,a.renderParameters(t)),Object.assign(i,a.encoderParameters(t)),i.width=Math.max(i.width,i.height),i.height=Math.max(i.width,i.height);var e=a.buildQuery(i);return a.fetch(this.server+"/CubeFromBookmark?"+e)},a.prototype.vrObject=function(t){var i={};Object.assign(i,a.sceneParameters(t)),Object.assign(i,{bookmarkSet:t.view.camera,background:t.view.background}),Object.assign(i,a.renderParameters(t)),Object.assign(i,a.encoderParameters(t));var e=a.buildQuery(i);return a.fetch(this.server+"/ImagesFromBookmarkSet?"+e)},a.prototype.animation=function(t){var i={};Object.assign(i,a.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,a.renderParameters(t)),Object.assign(i,a.encoderParameters(t));var e=a.buildQuery(i);return a.fetch(this.server+"/ImagesFromAnimation?"+e)};var h=function(t,i){this.webrender=new a(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(){}},c={progress:{configurable:!0}};c.progress.get=function(){return this.total?this.loaded/this.total:0},h.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},h.prototype.loadVideoFrames=function(t,i,e,n){var o=this,r=1/e/2,s=[],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=r)}),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),s.push(h),o.loaded+=1,o.onLoadProgress(o.progress),(r+=1/e)<=i/e?a.currentTime=r:t(s)}}),a.addEventListener("error",function(t){n===o.loadingId&&h(t)})});return a.src=t,h},h.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})},h.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){i.total=t.length;var n=t.map(function(t){return i.loadImage(t,e)});return Promise.all(n)}).then(function(t){return i.onLoadEnd(i.progress),t})},h.prototype.loadVRObjectSnapshot=function(t,i){var e=this;this.loadingId+=1,this.loaded=0,this.total=0,this.onLoadStart(this.progress);var n=this.loadingId,o=t.view.animation?"animation":"vrObject";return this.webrender[o](t).then(function(o){e.total=o.length;for(var r=new Array(o.length),a=i||0,h=0,c=o.length;h<c;h+=1){var d=Math.ceil(h/2)*(h%2==0?1:-1),u=t.view.loop?s.mod(a+d,c):h;r[u]=e.loadImage(o[u],n)}return Promise.all(r).then(function(){return e.onLoadEnd(e.progress)}),r})},Object.defineProperties(h.prototype,c);var d=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(){}};d.prototype.show=function(){this.canvas.show(),this.container.classList.add("ls-viewer-container-image")},d.prototype.hide=function(){this.canvas.hide(),this.container.classList.remove("ls-viewer-container-image")},d.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 u=function(){};u.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]},m={localToGlobalMatrix:{configurable:!0},globalToLocalMatrix:{configurable:!0}};m.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])},m.globalToLocalMatrix.get=function(){return i.m4.inverse(this.localToGlobalMatrix)},Object.defineProperties(l.prototype,m);var p=function(t){this.animationFrameId=null,this.points=[],this.onMotion=t,this.loop=this.loop.bind(this)};p.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},p.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)}},p.prototype.stop=function(){this.animationFrameId&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null),this.points=[]},p.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 v=function(t,e,n){this.changed=!1,this.isStarted=!1,this.inertia=new p(this.motion.bind(this)),this.fov=s.degreesToRadians(t),this.pov=e,this.orientationMatrix=i.m4.identity(),this.initFov=this.fov,this.initPov=this.pov,this.initOrientation=s.degreesToRadians(window.orientation)||0,this.onMotion=n},g={orientedPov:{configurable:!0}};g.orientedPov.get=function(){var t=i.v3.normalize(i.v3.cross(this.pov.up,this.pov.target)),e=new l(t,[0,1,0],this.pov.eye),n=i.m4.identity();return i.m4.multiply(n,e.localToGlobalMatrix,n),i.m4.multiply(n,this.orientationMatrix,n),i.m4.multiply(n,e.globalToLocalMatrix,n),{eye:this.pov.eye,target:i.m4.transformDirection(n,this.pov.target),up:i.m4.transformDirection(n,this.pov.up)}},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=s.accelerate(e.x,1.3)/this.startSize.width*.2*Math.PI*1.5,o=s.accelerate(e.y,1.3)/this.startSize.height*.2*Math.PI,r=i.m4.multiply(i.m4.rotationY(-n),i.m4.rotationX(-o)),a=i.v3.normalize(i.v3.cross(this.pov.up,this.pov.target)),h=new l(a,[0,1,0],this.pov.eye),c=i.m4.identity();i.m4.multiply(c,h.localToGlobalMatrix,c),i.m4.multiply(c,r,c),i.m4.multiply(c,h.globalToLocalMatrix,c);var d=i.m4.transformPoint(c,this.pov.target),u=i.m4.transformDirection(c,this.pov.up);i.v3.cross(u,[0,0,1])[0]>=0&&(this.pov.target=d,this.pov.up=u),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){if(null!==t.alpha&&null!==t.beta&&null!==t.gamma){var e=s.degreesToRadians(window.orientation)||0,n=s.degreesToRadians(t.alpha),o=s.degreesToRadians(-t.beta),r=s.degreesToRadians(-t.gamma),a=i.m4.rotationX(s.degreesToRadians(90));i.m4.rotateZ(a,this.initOrientation,a),i.m4.rotateZ(a,n,a),i.m4.rotateX(a,o,a),i.m4.rotateY(a,r,a),i.m4.rotateZ(a,-e,a),this.orientationMatrix=a,this.onMotion()}},Object.defineProperties(v.prototype,g);var f=function(t,i,n,o){var r=this;this.container=t,this.canvas=i,this.loader=n,this.onInteraction=o;var a={eye:[0,0,0],target:[0,0,1],up:[0,1,0]},h=e.m4.rotationX(s.degreesToRadians(15));e.m4.transformDirection(h,a.target,a.target),e.m4.transformDirection(h,a.up,a.up),this.interaction=new v(60,a,function(){requestAnimationFrame(r.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 float u_mix;uniform samplerCube u_texture;uniform samplerCube u_texture_back;varying vec3 direction;void main(){vec4 backColor=textureCube(u_texture_back,direction);vec4 color=textureCube(u_texture,direction);gl_FragColor=mix(backColor,color,u_mix);}\n"]),this.quad=e.primitives.createXYQuadBufferInfo(this.gl),this.uniforms={u_matrix:e.m4.identity(),u_mix:0,u_texture_back:e.createTexture(this.gl,{target:this.gl.TEXTURE_CUBE_MAP,minMag:this.gl.LINEAR,width:1,height:1}),u_texture:e.createTexture(this.gl,{target:this.gl.TEXTURE_CUBE_MAP,minMag:this.gl.LINEAR,width:1,height:1})},this.render=this.render.bind(this)};f.prototype.show=function(){this.canvas.show(),this.container.classList.add("ls-viewer-container-vrcube")},f.prototype.hide=function(){this.canvas.hide(),this.container.classList.remove("ls-viewer-container-vrcube")},f.prototype.load=function(t,i,n){var o=this,r=JSON.stringify(t);return r===this.hash?(requestAnimationFrame(this.render),Promise.resolve()):(this.hash=r,this.images=[],requestAnimationFrame(this.render),this.loader.loadVRCubeSnapshot(t).then(function(t){e.createTexture(o.gl,{target:o.gl.TEXTURE_CUBE_MAP,minMag:o.gl.LINEAR,auto:!1,cubeFaceOrder:[o.gl.TEXTURE_CUBE_MAP_POSITIVE_Z,o.gl.TEXTURE_CUBE_MAP_POSITIVE_X,o.gl.TEXTURE_CUBE_MAP_NEGATIVE_Z,o.gl.TEXTURE_CUBE_MAP_NEGATIVE_X,o.gl.TEXTURE_CUBE_MAP_POSITIVE_Y,o.gl.TEXTURE_CUBE_MAP_NEGATIVE_Y],src:t},function(t,e){t||(i&&o.interaction.reset(),o.uniforms.u_mix=n?0:1,o.uniforms.u_texture_back=o.uniforms.u_texture,o.uniforms.u_texture=e,requestAnimationFrame(o.render))})}))},f.prototype.render=function(){e.resizeCanvasToDisplaySize(this.gl.canvas,window.devicePixelRatio),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.orientedPov,r=e.m4.lookAt(o.eye,o.target,o.up);this.uniforms.u_matrix=e.m4.multiply(r,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),this.uniforms.u_mix<1&&(this.uniforms.u_mix=Math.min(this.uniforms.u_mix+.05,1),requestAnimationFrame(this.render))},f.prototype.onStart=function(t){this.container.classList.add("ls-viewer-container-vrcube-grabbing"),this.interaction.start(u.point(t),{width:this.gl.canvas.width,height:this.gl.canvas.height})},f.prototype.onEnter=function(t){this.interaction.isStarted||0===t.buttons&&(this.container.classList.remove("ls-viewer-container-vrcube-grabbing"),this.interaction.end(!1))},f.prototype.onMove=function(t){this.interaction.isStarted&&(this.interaction.motion(u.point(t)),t.preventDefault())},f.prototype.onEnd=function(){this.interaction.isStarted&&(this.container.classList.remove("ls-viewer-container-vrcube-grabbing"),this.interaction.end(!0),this.interaction.changed&&this.onInteraction())},f.prototype.onDeviceOrientation=function(t){this.interaction.orientation({alpha:t.alpha,beta:t.beta,gamma:t.gamma})};var y=function(t,i,e,n){this.changed=!1,this.isStarted=!1,this.inertia=new p(this.motion.bind(this)),this.position=t,this.count=i,this.loop=e,this.onMotion=n,this.initPosition=this.position};y.prototype.set=function(t){var i=this.position;this.loop?this.position=s.mod(t,this.count):this.position=Math.max(0,Math.min(t,this.count-1)),this.position!==i&&(this.onMotion(),this.changed=!0)},y.prototype.reset=function(){this.position=this.initPosition},y.prototype.start=function(t,i){this.changed=!1,this.isStarted=!0,this.startPosition=this.position,this.startPoint=t,this.startSize=i,this.inertia.stop()},y.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=s.accelerate(i.x,1.3)/this.startSize.width*(this.count/4),n=this.startPosition-Math.round(e);this.set(n)},y.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 y(0,1,!1,function(){o.canvas.draw(o.image,!0,.25)}),this.options={loop:!0},this.onDeviceOrientation=function(){}},w={image:{configurable:!0}};b.prototype.show=function(){this.canvas.show(),this.container.classList.add("ls-viewer-container-vrobject")},b.prototype.hide=function(){this.canvas.hide(),this.container.classList.remove("ls-viewer-container-vrobject")},w.image.get=function(){return this.images[this.interaction.position]},b.prototype.load=function(t,i,e){var n=this,o=JSON.stringify(t);if(o===this.hash)return this.canvas.draw(this.image,e,.01),Promise.resolve();this.hash=o,this.images=[],i&&this.interaction.reset();var r=this.interaction.position;return this.loader.loadVRObjectSnapshot(t,r).then(function(i){var o=i.length;return n.images=new Array(o),n.interaction.count=o,n.interaction.loop=t.view.loop,i.forEach(function(t,i){t.then(function(t){n.images[i]=t,n.canvas.draw(n.image,e,.01)})}),i[n.interaction.position]})},b.prototype.onStart=function(t){this.container.classList.add("ls-viewer-container-vrobject-grabbing"),this.interaction.start(u.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(u.point(t)),t.preventDefault())},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,w);!function(t,i){void 0===i&&(i={});var e=i.insertAt;if(t&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===e&&n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.styleSheet?o.styleSheet.cssText=t:o.appendChild(document.createTextNode(t))}}(".ls-viewer-container{display:block;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}");var E=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 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(){}}},e),this.loader=new h(e.server,{onLoadStart:this.onLoadStart.bind(this),onLoadProgress:this.onLoadProgress.bind(this),onLoadEnd:this.onLoadEnd.bind(this),onError:this.onError.bind(this)}),this.scene=null,this.view=null,this.parameters={antialiasing:!1,superSampling:2},this.encoder={format:"jpeg",quality:90};var n=this.onInteraction.bind(this);this.widgets={image:new d(i,this.canvas2D,this.loader,n),vrcube:new f(i,this.canvas3D,this.loader,n),vrobject:new b(i,this.canvas2D,this.loader,n)},this.widget=this.widgets.image,this.loadWidget=t(this.loadWidget,10),window.addEventListener("deviceorientation",this.onDeviceOrientation.bind(this)),window.addEventListener("resize",t(this.onResize.bind(this),250)),this.onResize()};return E.prototype.load=function(t){this.scene=Array.isArray(t)?t:[t],this.loadWidget(!1,!0)},E.prototype.setEncoder=function(t){this.encoder=t,this.loadWidget(!1,!0)},E.prototype.setParameters=function(t){this.parameters=t,this.parameters.width=this.resolution.width,this.parameters.height=this.resolution.height,this.loadWidget(!1,!0)},E.prototype.setView=function(t){this.view=t,this.loadWidget(!0,!0)},E.prototype.loadWidget=function(t,i){var e=this;if(this.scene&&this.view&&this.parameters.width&&this.parameters.height){var n=this.widgets[this.view.mode];if(n){var o={scene:this.scene,view:this.view,parameters:this.parameters,encoder:this.encoder};o.view.background||(o.view.background="product"),n.load(o,t,i).then(function(){e.widget.hide(),e.widget=n,e.widget.show()},function(t){e.options.events.onError(t)})}}},E.prototype.onStart=function(t){this.widget.onStart(t)},E.prototype.onEnter=function(t){this.widget.onEnter(t)},E.prototype.onMove=function(t){this.widget.onMove(t)},E.prototype.onEnd=function(t){this.widget.onEnd(t)},E.prototype.onDeviceOrientation=function(t){this.widget.onDeviceOrientation(t)},E.prototype.onResize=function(){var t=window.devicePixelRatio,i=this.container.offsetWidth*t,e=this.container.offsetHeight*t;this.resolution=n.getStandardResolution(i,e),this.parameters.width=this.resolution.width,this.parameters.height=this.resolution.height,this.canvas2D.resize(i/t,e/t,this.resolution),this.canvas3D.resize(i/t,e/t,this.resolution),this.loadWidget(!1,!1)},E.prototype.onInteraction=function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];this.options.events.onInteraction(t)},E.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)},E.prototype.onLoadProgress=function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];this.options.events.onLoadProgress(t)},E.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)},E.prototype.onError=function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];this.options.events.onError(t)},E});
{
"name": "@lumiscaphe/viewer",
"version": "0.3.1",
"version": "0.3.2",
"description": "Lumiscaphe 3D Viewer",

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

"postcss-reporter": "^5.0.0",
"rollup": "^0.54.0",
"rollup": "^0.54.1",
"rollup-plugin-buble": "^0.18.0",
"rollup-plugin-eslint": "^4.0.0",
"rollup-plugin-glsl": "^1.1.0",
"rollup-plugin-postcss": "^1.2.1",
"rollup-plugin-postcss": "^1.2.5",
"rollup-plugin-uglify-es": "^0.0.1",

@@ -31,0 +31,0 @@ "stylelint": "^8.4.0",

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