(function(global,factory){if(typeof define==="function"&&define.amd){define(["exports"],factory)}else if(typeof exports!=="undefined"){factory(exports)}else{var mod={exports:{}};factory(mod.exports);global.VanillaModal=mod.exports}})(this,function(exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};var defaults={modal:".modal",modalInner:".modal-inner",modalContent:".modal-content",open:"[data-modal-open]",close:"[data-modal-close]",page:"body",class:"modal-visible",loadClass:"vanilla-modal",clickOutside:true,closeKeys:[27],transitions:true,transitionEnd:null,onBeforeOpen:null,onBeforeClose:null,onOpen:null,onClose:null};function throwError(message){console.error("VanillaModal: "+message)}function find(arr,callback){return function(key){var filteredArray=arr.filter(callback);return filteredArray[0]?filteredArray[0][key]:undefined}}function transitionEndVendorSniff(){var el=document.createElement("div");var transitions=[{key:"transition",value:"transitionend"},{key:"OTransition",value:"otransitionend"},{key:"MozTransition",value:"transitionend"},{key:"WebkitTransition",value:"webkitTransitionEnd"}];return find(transitions,function(_ref){var key=_ref.key;return typeof el.style[key]!=="undefined"})("value")}function isPopulatedArray(arr){return Object.prototype.toString.call(arr)==="[object Array]"&&arr.length}function getNode(selector,parent){var targetNode=parent||document;var node=targetNode.querySelector(selector);if(!node){throwError(selector+" not found in document.")}return node}function addClass(el,className){if(!(el instanceof HTMLElement)){throwError("Not a valid HTML element.")}el.setAttribute("class",el.className.split(" ").filter(function(cn){return cn!==className}).concat(className).join(" "))}function removeClass(el,className){if(!(el instanceof HTMLElement)){throwError("Not a valid HTML element.")}el.setAttribute("class",el.className.split(" ").filter(function(cn){return cn!==className}).join(" "))}function getElementContext(e){if(e&&typeof e.hash==="string"){return document.querySelector(e.hash)}else if(typeof e==="string"){return document.querySelector(e)}throwError("No selector supplied to open()");return null}function applyUserSettings(settings){return _extends({},defaults,settings,{transitionEnd:transitionEndVendorSniff()})}function matches(e,selector){var allMatches=(e.target.document||e.target.ownerDocument).querySelectorAll(selector);for(var i=0;i<allMatches.length;i+=1){var node=e.target;while(node&&node!==document.body){if(node===allMatches[i]){return node}node=node.parentNode}}return null}var VanillaModal=function(){function VanillaModal(settings){_classCallCheck(this,VanillaModal);this.isOpen=false;this.current=null;this.isListening=false;this.settings=applyUserSettings(settings);this.dom=this.getDomNodes();this.open=this.open.bind(this);this.close=this.close.bind(this);this.closeKeyHandler=this.closeKeyHandler.bind(this);this.outsideClickHandler=this.outsideClickHandler.bind(this);this.delegateOpen=this.delegateOpen.bind(this);this.delegateClose=this.delegateClose.bind(this);this.listen=this.listen.bind(this);this.destroy=this.destroy.bind(this);this.addLoadedCssClass();this.listen()}_createClass(VanillaModal,[{key:"getDomNodes",value:function getDomNodes(){var _settings=this.settings,modal=_settings.modal,page=_settings.page,modalInner=_settings.modalInner,modalContent=_settings.modalContent;return{modal:getNode(modal),page:getNode(page),modalInner:getNode(modalInner,getNode(modal)),modalContent:getNode(modalContent,getNode(modal))}}},{key:"addLoadedCssClass",value:function addLoadedCssClass(){addClass(this.dom.page,this.settings.loadClass)}},{key:"setOpenId",value:function setOpenId(id){var page=this.dom.page;page.setAttribute("data-current-modal",id||"anonymous")}},{key:"removeOpenId",value:function removeOpenId(){var page=this.dom.page;page.removeAttribute("data-current-modal")}},{key:"open",value:function open(allMatches,e){var page=this.dom.page;var _settings2=this.settings,onBeforeOpen=_settings2.onBeforeOpen,onOpen=_settings2.onOpen;if(!(this.current instanceof HTMLElement===false)){throwError("VanillaModal target must exist on page.");return}this.releaseNode(this.current);this.current=getElementContext(allMatches);if(typeof onBeforeOpen==="function"){onBeforeOpen.call(this,e)}this.captureNode(this.current);addClass(page,this.settings.class);this.setOpenId(this.current.id);this.isOpen=true;if(typeof onOpen==="function"){onOpen.call(this,e)}}},{key:"detectTransition",value:function detectTransition(){var modal=this.dom.modal;var css=window.getComputedStyle(modal,null);return Boolean(["transitionDuration","oTransitionDuration","MozTransitionDuration","webkitTransitionDuration"].filter(function(i){return typeof css[i]==="string"&&parseFloat(css[i])>0}).length)}},{key:"close",value:function close(e){var _settings3=this.settings,transitions=_settings3.transitions,transitionEnd=_settings3.transitionEnd,onBeforeClose=_settings3.onBeforeClose;var hasTransition=this.detectTransition();if(this.isOpen){this.isOpen=false;if(typeof onBeforeClose==="function"){onBeforeClose.call(this,e)}removeClass(this.dom.page,this.settings.class);if(transitions&&transitionEnd&&hasTransition){this.closeModalWithTransition(e)}else{this.closeModal(e)}}}},{key:"closeModal",value:function closeModal(e){var onClose=this.settings.onClose;this.removeOpenId(this.dom.page);this.releaseNode(this.current);this.isOpen=false;this.current=null;if(typeof onClose==="function"){onClose.call(this,e)}}},{key:"closeModalWithTransition",value:function closeModalWithTransition(e){var _this=this;var modal=this.dom.modal;var transitionEnd=this.settings.transitionEnd;var closeTransitionHandler=function closeTransitionHandler(){modal.removeEventListener(transitionEnd,closeTransitionHandler);_this.closeModal(e)};modal.addEventListener(transitionEnd,closeTransitionHandler)}},{key:"captureNode",value:function captureNode(node){var modalContent=this.dom.modalContent;while(node.childNodes.length){modalContent.appendChild(node.childNodes[0])}}},{key:"releaseNode",value:function releaseNode(node){var modalContent=this.dom.modalContent;while(modalContent.childNodes.length){node.appendChild(modalContent.childNodes[0])}}},{key:"closeKeyHandler",value:function closeKeyHandler(e){var closeKeys=this.settings.closeKeys;if(isPopulatedArray(closeKeys)&&closeKeys.indexOf(e.which)>-1&&this.isOpen===true){e.preventDefault();this.close(e)}}},{key:"outsideClickHandler",value:function outsideClickHandler(e){var clickOutside=this.settings.clickOutside;var modalInner=this.dom.modalInner;if(clickOutside){var node=e.target;while(node&&node!==document.body){if(node===modalInner){return}node=node.parentNode}this.close(e)}}},{key:"delegateOpen",value:function delegateOpen(e){var open=this.settings.open;var matchedNode=matches(e,open);if(matchedNode){e.preventDefault();this.open(matchedNode,e)}}},{key:"delegateClose",value:function delegateClose(e){var close=this.settings.close;if(matches(e,close)){e.preventDefault();this.close(e)}}},{key:"listen",value:function listen(){var modal=this.dom.modal;if(!this.isListening){modal.addEventListener("click",this.outsideClickHandler,false);document.addEventListener("keydown",this.closeKeyHandler,false);document.addEventListener("click",this.delegateOpen,false);document.addEventListener("click",this.delegateClose,false);this.isListening=true}else{throwError("Event listeners already applied.")}}},{key:"destroy",value:function destroy(){var modal=this.dom.modal;if(this.isListening){this.close();modal.removeEventListener("click",this.outsideClickHandler);document.removeEventListener("keydown",this.closeKeyHandler);document.removeEventListener("click",this.delegateOpen);document.removeEventListener("click",this.delegateClose);this.isListening=false}else{throwError("Event listeners already removed.")}}}]);return VanillaModal}();exports.default=VanillaModal});
function psc_cleanUpModal(){var theFrame=document.getElementById("psc_reportFrame");theFrame.setAttribute("src","about:blank");var reportButton=document.getElementById("psc_report-button");reportButton.style["display"]="none";setTimeout("psc_resizeModal()",1e3)}function psc_reportProblem(){var theFrame=document.getElementById("psc_reportFrame");theFrame.setAttribute("src","/feedback/report");psc_modal=new VanillaModal.default({modal:".psc_modal",modalInner:".psc_modal-inner",modalContent:".psc_modal-content",loadClass:"psc_vanilla-modal",class:"psc_modal-visible",onBeforeClose:psc_cleanUpModal});psc_modal.open("#psc_modal-report")}function psc_reportFrameLoad(el,url){var theFrame=window.frames["psc_reportFrame"];if(el.style.display!=="none"){if(typeof theFrame.setUrl==="function"){theFrame.setUrl(url);return}else{var reportFrame=document.getElementById("psc_reportFrame");reportFrame.style["min-height"]="100px";reportFrame.style["height"]="100px";setTimeout("psc_closeModal()",1e3)}}}function psc_closeModal(){psc_modal.close()}function psc_resizeModal(){var psc_reportFrame=document.getElementById("psc_reportFrame");psc_reportFrame.style["min-height"]="275px";psc_reportFrame.style["height"]="275px"}function getStyleSheet(unique_title){for(var i=0;i<document.styleSheets.length;i++){var sheet=document.styleSheets[i];if(sheet.title==unique_title){return sheet}}}function psc_hideForm(){var includeForm=document.getElementById("include");includeForm.style.display="none";var addedSheet=document.getElementById("psc_added_framed");if(typeof addedSheet==="undefined"||addedSheet===null){var framedStylesheet=getStyleSheet("psc_framed");framedStylesheet.deleteRule(0)}else{var sheetParent=addedSheet.parentNode;sheetParent.removeChild(addedSheet)}var hideButton=document.getElementById("psc_hideForm");hideButton.style.display="none";var showButton=document.getElementById("psc_showForm");showButton.style.display="inline"}function psc_showForm(){var includeForm=document.getElementById("include");includeForm.style.display="inline";var sheet=document.createElement("style");sheet.innerHTML="html body {margin-top: 70px!important;}";sheet.setAttribute("id","psc_added_framed");document.body.appendChild(sheet);var hideButton=document.getElementById("psc_hideForm");hideButton.style.display="inline";var showButton=document.getElementById("psc_showForm");showButton.style.display="none"}