{"version":3,"sources":["modal.js"],"names":["primeModal","modal","_classCallCheck","this","$","data","dataset","snooze","actions","trigger","_this","jQuery","document","bind","id","pxlCookie","create","on","e","attr","preventDefault","magnificPopup","close","open","el","arguments","length","undefined","options","args","Object","assign","showCloseBtn","mainClass","removalDelay","fixedContentPos","items","src","type","callbacks","beforeOpen","mobile","startWindowScroll","window","scrollY","currItem","inlineElement","querySelector","eval","innerHTML","scrollTo","completed","read","parseInt","snoozing","leave","addEventListener","toElement","relatedTarget","pop","distance","desktop","measurement","mMeasurement","dMeasurement","viewportHeight","Math","max","documentElement","clientHeight","innerHeight","pageHeight","scrollHeight","pos","scrollTop","body","timeout","setTimeout","wait","navigator","userAgent","match"],"mappings":"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","sourcesContent":["/* globals jQuery, pxlCookie */ \n/* exported primeModal */\n\nclass primeModal {\n  constructor( modal ) {\n    this.$    = modal;\n    this.data = modal.dataset;\n    \n    if ( !this.data.snooze ) this.data.snooze = 0;\n    \n    this.actions();\n    this.trigger();\n  }\n  actions() {\n    var _this = this;\n    \n    jQuery(document).bind('gform_confirmation_loaded', function() {\n      var id = 'modal-'+_this.data.id;\n      pxlCookie.create(id, 'completed');\n    });\n    \n    jQuery('.closebutton').on('click', function(e) {\n      if ( jQuery(this).attr('href') == '#' ) e.preventDefault();\n      jQuery.magnificPopup.close();\n      if ( jQuery(this).attr('href') == '#' ) return false;\n    });\n  }\n  open( el = false, options = {} ) {\n    var _this = this, args = Object.assign({\n      showCloseBtn: false,\n      mainClass: 'mfp-fade',\n      removalDelay: 300,\n      fixedContentPos: true,\n      items: {\n        src: '#'+this.$.id,\n        type: 'inline'\n      },\n      callbacks: {\n        beforeOpen: function() {\n          if ( _this.mobile() ) _this.startWindowScroll = window.scrollY;\n        },\n        open: function() {\n          if ( this.currItem.inlineElement[0].querySelector('.scripts') )\n            eval(this.currItem.inlineElement[0].querySelector('.scripts').innerHTML);\n        },\n        close: function() {\n          if ( _this.mobile() ) window.scrollTo(0, _this.startWindowScroll);\n          _this.snooze();\n        }\n      }\n    }, options);\n    \n    if ( el ) jQuery(el).magnificPopup(args);\n    else jQuery.magnificPopup.open(args);\n  }\n  trigger() {\n    var _this     = this,\n        completed = pxlCookie.read('modal-'+this.data.id),\n        snooze    = this.data.snooze ? parseInt(this.data.snooze) : 0,\n        snoozing  = pxlCookie.read('modal-'+this.data.id+'-snooze');\n        \n    if ( completed != 'completed' && ( snooze === 0 || snoozing === false || snoozing >= snooze ) ) {\n      switch (this.data.trigger) {\n        case 'click':\n          this.open('a[href=\"#' + this.$.id + '\"]');\n        break;\n        case 'immediately': this.open(); break;\n        case 'leave':\n          var leave = true;\n          if ( this.mobile() ) {\n            // No good way to do this yet\n          }\n          else {\n            document.addEventListener('mouseleave', function(e) {\n              if ( (e.toElement === null && e.relatedTarget === null) && leave && ! jQuery('.mfp-bg').length ) {\n                leave = false;\n                _this.open();\n              }\n            }, false);\n          }\n        break;\n        case 'scroll':\n          var pop            = true,\n              distance       = this.mobile() ? this.data.mobile : this.data.desktop,\n              measurement    = this.mobile() ? this.data.mMeasurement : this.data.dMeasurement,\n              viewportHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0),\n              pageHeight     = document.documentElement.scrollHeight - viewportHeight;\n              \n          window.addEventListener('scroll', function() {\n            if ( pop ) {\n              var pos = (document.documentElement.scrollTop||document.body.scrollTop);\n              \n              if ( pos > 0 ) {\n                switch (measurement) {\n                  case '%':\n                    var percentage = ( pos / pageHeight) * 100;\n                    if ( percentage >= distance ) { _this.open(); pop = false; }\n                  break;\n                  case 'px':\n                    if ( pos >= distance ) { _this.open(); pop = false; }\n                  break;\n                  case 'vh':\n                    var d = distance/100, p = pos / viewportHeight;\n                    if ( p >= d ) { _this.open(); pop = false; }\n                  break;\n                  default:\n                }\n              }\n            }\n          });\n        break;\n        case 'time': \n          var timeout = this.mobile() ? this.data.mobile : this.data.desktop;\n          setTimeout(function() { _this.open(); }, timeout);\n        break;\n        default:\n      }\n    }\n    else if ( snoozing <= snooze ) this.snooze();\n  }\n  snooze() {\n    if ( this.data.snooze !== '0' ) {\n      var id   = 'modal-'+this.data.id+'-snooze',\n          wait = pxlCookie.read(id);\n          \n      if ( wait ) {\n        wait = parseInt(wait) + 1;\n        if ( wait > this.data.snooze ) wait = 1;\n      }\n      else wait = 1\n      \n      pxlCookie.create(id, wait, 7);\n    }\n  }\n  \n  // Mobile Detection\n    mobile() {\n      return ( navigator.userAgent.match(/Android/i)\n       || navigator.userAgent.match(/webOS/i)\n       || navigator.userAgent.match(/iPhone/i)\n       || navigator.userAgent.match(/iPad/i)\n       || navigator.userAgent.match(/iPod/i)\n       || navigator.userAgent.match(/BlackBerry/i)\n       || navigator.userAgent.match(/Windows Phone/i)\n       ? true : false\n      )\n    }\n}"]}