!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.domDelegate=t()}}(function(){return function t(e,i,n){function s(r,a){if(!i[r]){if(!e[r]){var l="function"==typeof require&&require;if(!a&&l)return l(r,!0);if(o)return o(r,!0);var h=new Error("Cannot find module '"+r+"'");throw h.code="MODULE_NOT_FOUND",h}var c=i[r]={exports:{}};e[r][0].call(c.exports,function(t){var i=e[r][1][t];return s(i?i:t)},c,c.exports,t,e,i,n)}return i[r].exports}for(var o="function"==typeof require&&require,r=0;r=0;s--)o=a[s],e&&e!==o.selector||i&&i!==o.handler||a.splice(s,1);return a.length||(delete r[t],this.rootElement&&this.rootElement.removeEventListener(t,this.handle,n)),this},n.prototype.handle=function(t){var e,i,n,s,o,r,a,l=t.type,h=[],c="ftLabsDelegateIgnore";if(t[c]!==!0){switch(a=t.target,3===a.nodeType&&(a=a.parentNode),n=this.rootElement,s=t.eventPhase||(t.target!==t.currentTarget?3:2)){case 1:h=this.listenerMap[1][l];break;case 2:this.listenerMap[0]&&this.listenerMap[0][l]&&(h=h.concat(this.listenerMap[0][l])),this.listenerMap[1]&&this.listenerMap[1][l]&&(h=h.concat(this.listenerMap[1][l]));break;case 3:h=this.listenerMap[0][l]}for(i=h.length;a&&i;){for(e=0;ei.left+i.width+n&&(o=i.left+i.width-this.el.clientWidth+n),ri.top+i.height+s&&(r=i.top+i.height-this.el.clientHeight+s),this.el.style.left=o+"px",this.el.style.top=r+"px"}}]),t}();i["default"]=h},{"./util/dom":6,"./util/throwIfMissing":7}],2:[function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var o=function(){function t(t,e){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{};if(s(this,t),this.VERSION="1.2.2",this.destroy=function(){i.trigger._unbindEvents()},this.triggerEl=e,!(0,r.isDOMElement)(this.triggerEl))throw new TypeError("`new Drift` requires a DOM element as its first argument.");var o=n.namespace,a=void 0===o?null:o,h=n.showWhitespaceAtEdges,c=void 0!==h&&h,d=n.containInline,u=void 0!==d&&d,f=n.inlineOffsetX,p=void 0===f?0:f,v=n.inlineOffsetY,g=void 0===v?0:v,m=n.inlineContainer,y=void 0===m?document.body:m,b=n.sourceAttribute,E=void 0===b?"data-zoom":b,w=n.zoomFactor,C=void 0===w?3:w,x=n.paneContainer,S=void 0===x?document.body:x,_=n.inlinePane,k=void 0===_?375:_,D=n.handleTouch,z=void 0===D||D,L=n.onShow,P=void 0===L?null:L,I=n.onHide,A=void 0===I?null:I,M=n.injectBaseStyles,T=void 0===M||M,F=n.hoverDelay,B=void 0===F?0:F,O=n.touchDelay,j=void 0===O?0:O,W=n.hoverBoundingBox,q=void 0!==W&&W,N=n.touchBoundingBox,H=void 0!==N&&N,U=n.boundingBoxContainer,X=void 0===U?document.body:U;if(k!==!0&&!(0,r.isDOMElement)(S))throw new TypeError("`paneContainer` must be a DOM element when `inlinePane !== true`");if(!(0,r.isDOMElement)(y))throw new TypeError("`inlineContainer` must be a DOM element");this.settings={namespace:a,showWhitespaceAtEdges:c,containInline:u,inlineOffsetX:p,inlineOffsetY:g,inlineContainer:y,sourceAttribute:E,zoomFactor:C,paneContainer:S,inlinePane:k,handleTouch:z,onShow:P,onHide:A,injectBaseStyles:T,hoverDelay:B,touchDelay:j,hoverBoundingBox:q,touchBoundingBox:H,boundingBoxContainer:X},this.settings.injectBaseStyles&&(0,l["default"])(),this._buildZoomPane(),this._buildTrigger()}return o(t,[{key:"_buildZoomPane",value:function(){this.zoomPane=new u["default"]({container:this.settings.paneContainer,zoomFactor:this.settings.zoomFactor,showWhitespaceAtEdges:this.settings.showWhitespaceAtEdges,containInline:this.settings.containInline,inline:this.settings.inlinePane,namespace:this.settings.namespace,inlineOffsetX:this.settings.inlineOffsetX,inlineOffsetY:this.settings.inlineOffsetY,inlineContainer:this.settings.inlineContainer})}},{key:"_buildTrigger",value:function(){this.trigger=new c["default"]({el:this.triggerEl,zoomPane:this.zoomPane,handleTouch:this.settings.handleTouch,onShow:this.settings.onShow,onHide:this.settings.onHide,sourceAttribute:this.settings.sourceAttribute,hoverDelay:this.settings.hoverDelay,touchDelay:this.settings.touchDelay,hoverBoundingBox:this.settings.hoverBoundingBox,touchBoundingBox:this.settings.touchBoundingBox,namespace:this.settings.namespace,zoomFactor:this.settings.zoomFactor,boundingBoxContainer:this.settings.boundingBoxContainer})}},{key:"setZoomImageURL",value:function(t){this.zoomPane._setImageURL(t)}},{key:"disable",value:function(){this.trigger.enabled=!1}},{key:"enable",value:function(){this.trigger.enabled=!0}},{key:"isShowing",get:function(){return this.zoomPane.isShowing}},{key:"zoomFactor",get:function(){return this.settings.zoomFactor},set:function(t){this.settings.zoomFactor=t,this.zoomPane.settings.zoomFactor=t,this.trigger.settings.zoomFactor=t,this.boundingBox.settings.zoomFactor=t}}]),t}()},{"./Trigger":3,"./ZoomPane":4,"./injectBaseStylesheet":5,"./util/dom":6}],3:[function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(i,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:{};s(this,t),d.call(this);var i=e.el,n=void 0===i?(0,a["default"])():i,o=e.zoomPane,r=void 0===o?(0,a["default"])():o,l=e.sourceAttribute,c=void 0===l?(0,a["default"])():l,u=e.handleTouch,f=void 0===u?(0,a["default"])():u,p=e.onShow,v=void 0===p?null:p,g=e.onHide,m=void 0===g?null:g,y=e.hoverDelay,b=void 0===y?0:y,E=e.touchDelay,w=void 0===E?0:E,C=e.hoverBoundingBox,x=void 0===C?(0,a["default"])():C,S=e.touchBoundingBox,_=void 0===S?(0,a["default"])():S,k=e.namespace,D=void 0===k?null:k,z=e.zoomFactor,L=void 0===z?(0,a["default"])():z,P=e.boundingBoxContainer,I=void 0===P?(0,a["default"])():P;this.settings={el:n,zoomPane:r,sourceAttribute:c,handleTouch:f,onShow:v,onHide:m,hoverDelay:b,touchDelay:w,hoverBoundingBox:x,touchBoundingBox:_,namespace:D,zoomFactor:L,boundingBoxContainer:I},(this.settings.hoverBoundingBox||this.settings.touchBoundingBox)&&(this.boundingBox=new h["default"]({namespace:this.settings.namespace,zoomFactor:this.settings.zoomFactor,containerEl:this.settings.boundingBoxContainer})),this.enabled=!0,this._bindEvents()}return o(t,[{key:"_bindEvents",value:function(){this.settings.el.addEventListener("mouseenter",this._handleEntry,!1),this.settings.el.addEventListener("mouseleave",this._hide,!1),this.settings.el.addEventListener("mousemove",this._handleMovement,!1),this.settings.handleTouch&&(this.settings.el.addEventListener("touchstart",this._handleEntry,!1),this.settings.el.addEventListener("touchend",this._hide,!1),this.settings.el.addEventListener("touchmove",this._handleMovement,!1))}},{key:"_unbindEvents",value:function(){this.settings.el.removeEventListener("mouseenter",this._handleEntry,!1),this.settings.el.removeEventListener("mouseleave",this._hide,!1),this.settings.el.removeEventListener("mousemove",this._handleMovement,!1),this.settings.handleTouch&&(this.settings.el.removeEventListener("touchstart",this._handleEntry,!1),this.settings.el.removeEventListener("touchend",this._hide,!1),this.settings.el.removeEventListener("touchmove",this._handleMovement,!1))}},{key:"isShowing",get:function(){return this.settings.zoomPane.isShowing}}]),t}(),d=function(){var t=this;this._handleEntry=function(e){e.preventDefault(),t._lastMovement=e,"mouseenter"==e.type&&t.settings.hoverDelay?t.entryTimeout=setTimeout(t._show,t.settings.hoverDelay):t.settings.touchDelay?t.entryTimeout=setTimeout(t._show,t.settings.touchDelay):t._show()},this._show=function(){if(t.enabled){var e=t.settings.onShow;if(e&&"function"==typeof e&&e(),t.settings.zoomPane.show(t.settings.el.getAttribute(t.settings.sourceAttribute),t.settings.el.clientWidth,t.settings.el.clientHeight),t._lastMovement){var i=t._lastMovement.touches;(i&&t.settings.touchBoundingBox||!i&&t.settings.hoverBoundingBox)&&t.boundingBox.show(t.settings.zoomPane.el.clientWidth,t.settings.zoomPane.el.clientHeight)}t._handleMovement()}},this._hide=function(e){e.preventDefault(),t._lastMovement=null,t.entryTimeout&&clearTimeout(t.entryTimeout),t.boundingBox&&t.boundingBox.hide();var i=t.settings.onHide;i&&"function"==typeof i&&i(),t.settings.zoomPane.hide()},this._handleMovement=function(e){if(e)e.preventDefault(),t._lastMovement=e;else{if(!t._lastMovement)return;e=t._lastMovement}var i=void 0,n=void 0;if(e.touches){var s=e.touches[0];i=s.clientX,n=s.clientY}else i=e.clientX,n=e.clientY;var o=t.settings.el,r=o.getBoundingClientRect(),a=i-r.left,l=n-r.top,h=a/t.settings.el.clientWidth,c=l/t.settings.el.clientHeight;t.boundingBox&&t.boundingBox.setPosition(h,c,r),t.settings.zoomPane.setPosition(h,c,r)}};i["default"]=c},{"./BoundingBox":1,"./util/throwIfMissing":7}],4:[function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(i,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:{};s(this,t),this._completeShow=function(){e.el.removeEventListener("animationend",e._completeShow,!1),e.el.removeEventListener("webkitAnimationEnd",e._completeShow,!1),(0,l.removeClasses)(e.el,e.openingClasses)},this._completeHide=function(){e.el.removeEventListener("animationend",e._completeHide,!1),e.el.removeEventListener("webkitAnimationEnd",e._completeHide,!1),(0,l.removeClasses)(e.el,e.openClasses),(0,l.removeClasses)(e.el,e.closingClasses),(0,l.removeClasses)(e.el,e.inlineClasses),e.el.setAttribute("style",""),e.el.parentElement===e.settings.container?e.settings.container.removeChild(e.el):e.el.parentElement===e.settings.inlineContainer&&e.settings.inlineContainer.removeChild(e.el)},this._handleLoad=function(){e.imgEl.removeEventListener("load",e._handleLoad,!1),(0,l.removeClasses)(e.el,e.loadingClasses)},this.isShowing=!1;var n=i.container,o=void 0===n?null:n,r=i.zoomFactor,h=void 0===r?(0,a["default"])():r,c=i.inline,d=void 0===c?(0,a["default"])():c,u=i.namespace,f=void 0===u?null:u,p=i.showWhitespaceAtEdges,v=void 0===p?(0,a["default"])():p,g=i.containInline,m=void 0===g?(0,a["default"])():g,y=i.inlineOffsetX,b=void 0===y?0:y,E=i.inlineOffsetY,w=void 0===E?0:E,C=i.inlineContainer,x=void 0===C?document.body:C;this.settings={container:o,zoomFactor:h,inline:d,namespace:f,showWhitespaceAtEdges:v,containInline:m,inlineOffsetX:b,inlineOffsetY:w,inlineContainer:x},this.openClasses=this._buildClasses("open"),this.openingClasses=this._buildClasses("opening"),this.closingClasses=this._buildClasses("closing"),this.inlineClasses=this._buildClasses("inline"),this.loadingClasses=this._buildClasses("loading"),this._buildElement()}return o(t,[{key:"_buildClasses",value:function(t){var e=["drift-"+t],i=this.settings.namespace;return i&&e.push(i+"-"+t),e}},{key:"_buildElement",value:function(){this.el=document.createElement("div"),(0,l.addClasses)(this.el,this._buildClasses("zoom-pane"));var t=document.createElement("div");(0,l.addClasses)(t,this._buildClasses("zoom-pane-loader")),this.el.appendChild(t),this.imgEl=document.createElement("img"),this.el.appendChild(this.imgEl)}},{key:"_setImageURL",value:function(t){this.imgEl.setAttribute("src",t)}},{key:"_setImageSize",value:function(t,e){this.imgEl.style.width=t*this.settings.zoomFactor+"px",this.imgEl.style.height=e*this.settings.zoomFactor+"px"}},{key:"setPosition",value:function(t,e,i){var n=-(this.imgEl.clientWidth*t-this.el.clientWidth/2),s=-(this.imgEl.clientHeight*e-this.el.clientHeight/2),o=-(this.imgEl.clientWidth-this.el.clientWidth),r=-(this.imgEl.clientHeight-this.el.clientHeight);if(this.el.parentElement===this.settings.inlineContainer){var a=window.pageXOffset,l=window.pageYOffset,h=i.left+t*i.width-this.el.clientWidth/2+this.settings.inlineOffsetX+a,c=i.top+e*i.height-this.el.clientHeight/2+this.settings.inlineOffsetY+l;if(this.settings.containInline){this.el.getBoundingClientRect();hi.left+i.width+a&&(h=i.left+i.width-this.el.clientWidth+a),ci.top+i.height+l&&(c=i.top+i.height-this.el.clientHeight+l)}this.el.style.left=h+"px",this.el.style.top=c+"px"}this.settings.showWhitespaceAtEdges||(n>0?n=0:n0?s=0:s