{"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"]}