{"version":3,"sources":["modal.js"],"names":["define","app","factory","$","modals","overlay","active","addModal","id","this","length","setup","open","angular","forEach","item","key","updateOverlay","close","hasactive","directive","$modalFactory","restrict","scope","bindToController","controllerAs","controller","$scope","modal","openModal","event","preventDefault","closeModal","$watch","data"],"mappings":"AAAAA,OAAO,WACL,OAAO,SAASC,GAEdA,EAAIC,QAAQ,gBAAiB,SAASC,GACpC,OACEC,UACAC,SACEC,QAAQ,GAEVC,SAAU,WACR,IAAIC,EAAKC,KAAKL,OAAOM,OACjBC,GACFH,GAAIA,EACJF,QAAQ,GAGV,OADAG,KAAKL,OAAOI,GAAMG,EACXF,KAAKL,OAAOI,IAErBI,KAAM,SAASJ,GACbK,QAAQC,QAAQL,KAAKL,OAAQ,SAASW,EAAMC,GAC1CD,EAAKT,OAAUS,EAAKP,KAAOA,IAE7BC,KAAKQ,iBAEPC,MAAO,WACLL,QAAQC,QAAQL,KAAKL,OAAQ,SAASW,EAAMC,GAC1CD,EAAKT,QAAS,IAEhBG,KAAKQ,iBAEPA,cAAe,WACb,IAAIE,GAAY,EAKhB,OAJAN,QAAQC,QAAQL,KAAKL,OAAQ,SAASW,EAAMC,GACxB,GAAfD,EAAKT,SAAgBa,GAAY,KAEtCV,KAAKJ,QAAQC,OAASa,EACfV,KAAKJ,QAAQC,YAK1BL,EAAImB,UAAU,gBAAiB,eAAgB,SAASC,GACtD,OACEC,SAAU,IACVC,OAAO,EACPC,oBAEAC,aAAc,OACdC,YAAa,SAAU,SAAUC,GAC/BA,EAAOC,MAAQP,EAAcd,WAE7BoB,EAAOE,UAAY,SAASC,GAEvBA,GAAOA,EAAMC,iBACU,GAAvBJ,EAAOC,MAAMtB,QAChBe,EAAcT,KAAKe,EAAOC,MAAMpB,KAElCmB,EAAOK,WAAa,SAAUF,GAEzBA,GAAOA,EAAMC,iBAChBV,EAAcH,eAMtBjB,EAAImB,UAAU,gBAAiB,eAAgB,SAASC,GACtD,OACEC,SAAU,IACVC,OAAO,EACPC,oBACAC,aAAc,OACdC,YAAa,SAAU,SAAUC,GAC/BA,EAAOtB,QAAUgB,EAAchB,QAE/BsB,EAAOK,WAAa,SAAUF,GACzBA,GAAOA,EAAMC,iBAChBV,EAAcH,SAGhBS,EAAOM,OAAO,iBAAkB,SAASC,MAEtC","file":"modal.js","sourcesContent":["define(function() {\r\n  return function(app) {\r\n\r\n    app.factory('modalFactory', [function($) {\r\n      return {\r\n        modals: [],\r\n        overlay: {\r\n          active: false\r\n        },\r\n        addModal: function() {\r\n          var id = this.modals.length;\r\n          var setup = {\r\n            id: id,\r\n            active: false\r\n          };\r\n          this.modals[id] = setup;\r\n          return this.modals[id];\r\n        },\r\n        open: function(id) {\r\n          angular.forEach(this.modals, function(item, key) {\r\n            item.active = (item.id === id);\r\n          });\r\n          this.updateOverlay();\r\n        },\r\n        close: function() {\r\n          angular.forEach(this.modals, function(item, key) {\r\n            item.active = false;\r\n          });\r\n          this.updateOverlay();\r\n        },\r\n        updateOverlay: function() {\r\n          var hasactive = false;\r\n          angular.forEach(this.modals, function(item, key) {\r\n            if(item.active == true) hasactive = true;\r\n          });\r\n          this.overlay.active = hasactive;\r\n          return this.overlay.active;\r\n        }\r\n      }//end return obj\r\n  \t}]); //END FACTORY\r\n\r\n    app.directive('modalTrigger', ['modalFactory', function($modalFactory) {\r\n      return {\r\n        restrict: \"A\",\r\n        scope: true,\r\n        bindToController: {\r\n        },\r\n        controllerAs: 'ctrl',\r\n        controller: ['$scope', function ($scope) {\r\n          $scope.modal = $modalFactory.addModal();\r\n\r\n          $scope.openModal = function(event) {\r\n            //\"event\" automatically shared by angular, no need to add to parameters\r\n            if(event) event.preventDefault();\r\n            if($scope.modal.active == true) return;\r\n            $modalFactory.open($scope.modal.id);\r\n          }\r\n          $scope.closeModal = function (event) {\r\n            //\"event\" automatically shared by angular, no need to add to parameters\r\n            if(event) event.preventDefault();\r\n            $modalFactory.close();\r\n          }\r\n        }]\r\n      }//end return obj\r\n  \t}]); //END FACTORY\r\n\r\n    app.directive('modalOverlay', ['modalFactory', function($modalFactory) {\r\n      return {\r\n        restrict: \"A\",\r\n        scope: true,\r\n        bindToController: {},\r\n        controllerAs: 'ctrl',\r\n        controller: ['$scope', function ($scope) {\r\n          $scope.overlay = $modalFactory.overlay;\r\n\r\n          $scope.closeModal = function (event) {\r\n            if(event) event.preventDefault();\r\n            $modalFactory.close();\r\n          }\r\n\r\n          $scope.$watch('overlay.active', function(data){\r\n            //if(data) console.log('modal active');\r\n          }, true);\r\n        }]\r\n      }//end return obj\r\n  \t}]); //END FACTORY\r\n  }\r\n});\r\n"]}