{"version":3,"file":"ui/common.d6f202b8502be58350eb.js","mappings":"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","sources":["webpack://apps/./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://apps/./App/vendor/angular-highcharts/highcharts-ng.js","webpack://apps/./App/vendor/angular-mask/mask.js","webpack://apps/./App/vendor/angular-pikaday/angular-pikaday.js","webpack://apps/./App/vendor/isteven-multi-select/isteven-multi-select.js","webpack://apps/./App/vendor/modernizr/modernizr.min.js","webpack://apps/./node_modules/fast-json-patch/module/helpers.mjs","webpack://apps/./node_modules/fast-json-patch/module/core.mjs","webpack://apps/./node_modules/fast-json-patch/module/duplex.mjs","webpack://apps/./node_modules/fast-json-patch/index.mjs"],"sourcesContent":["var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","'use strict';\r\n/*global angular: false, Highcharts: false */\r\n\r\nangular.module('highcharts-ng', [])\r\n .factory('highchartsNGUtils', function () {\r\n\r\n return {\r\n\r\n //IE8 support\r\n indexOf: function (arr, find, i /*opt*/) {\r\n if (i === undefined) i = 0;\r\n if (i < 0) i += arr.length;\r\n if (i < 0) i = 0;\r\n for (var n = arr.length; i < n; i++)\r\n if (i in arr && arr[i] === find)\r\n return i;\r\n return -1;\r\n },\r\n\r\n\r\n prependMethod: function (obj, method, func) {\r\n var original = obj[method];\r\n obj[method] = function () {\r\n var args = Array.prototype.slice.call(arguments);\r\n func.apply(this, args);\r\n if (original) {\r\n return original.apply(this, args);\r\n } else {\r\n return;\r\n }\r\n\r\n };\r\n },\r\n\r\n deepExtend: function deepExtend(destination, source) {\r\n //Slightly strange behaviour in edge cases (e.g. passing in non objects)\r\n //But does the job for current use cases.\r\n if (angular.isArray(source)) {\r\n destination = angular.isArray(destination) ? destination : [];\r\n for (var i = 0; i < source.length; i++) {\r\n destination[i] = deepExtend(destination[i] || {}, source[i]);\r\n }\r\n } else if (angular.isObject(source)) {\r\n for (var property in source) {\r\n destination[property] = deepExtend(destination[property] || {}, source[property]);\r\n }\r\n } else {\r\n destination = source;\r\n }\r\n return destination;\r\n }\r\n };\r\n\r\n }).directive('highchart', ['highchartsNGUtils', function (highchartsNGUtils) {\r\n\r\n // acceptable shared state\r\n var seriesId = 0;\r\n var ensureIds = function (series) {\r\n var changed = false;\r\n angular.forEach(series, function(s) {\r\n if (!angular.isDefined(s.id)) {\r\n s.id = 'series-' + seriesId++;\r\n changed = true;\r\n }\r\n });\r\n return changed;\r\n };\r\n\r\n // immutable\r\n var axisNames = [ 'xAxis', 'yAxis' ];\r\n\r\n var getMergedOptions = function (scope, element, config) {\r\n var mergedOptions = {};\r\n\r\n var defaultOptions = {\r\n chart: {\r\n events: {}\r\n },\r\n title: {},\r\n subtitle: {},\r\n series: [],\r\n credits: {},\r\n plotOptions: {},\r\n navigator: {enabled: false}\r\n };\r\n\r\n if (config.options) {\r\n mergedOptions = highchartsNGUtils.deepExtend(defaultOptions, config.options);\r\n } else {\r\n mergedOptions = defaultOptions;\r\n }\r\n mergedOptions.chart.renderTo = element[0];\r\n\r\n angular.forEach(axisNames, function(axisName) {\r\n if(angular.isDefined(config[axisName])) {\r\n mergedOptions[axisName] = angular.copy(config[axisName]);\r\n\r\n if(angular.isDefined(config[axisName].currentMin) ||\r\n angular.isDefined(config[axisName].currentMax)) {\r\n\r\n highchartsNGUtils.prependMethod(mergedOptions.chart.events, 'selection', function(e){\r\n var thisChart = this;\r\n if (e[axisName]) {\r\n scope.$apply(function () {\r\n scope.config[axisName].currentMin = e[axisName][0].min;\r\n scope.config[axisName].currentMax = e[axisName][0].max;\r\n });\r\n } else {\r\n //handle reset button - zoom out to all\r\n scope.$apply(function () {\r\n scope.config[axisName].currentMin = thisChart[axisName][0].dataMin;\r\n scope.config[axisName].currentMax = thisChart[axisName][0].dataMax;\r\n });\r\n }\r\n });\r\n\r\n highchartsNGUtils.prependMethod(mergedOptions.chart.events, 'addSeries', function(e){\r\n scope.config[axisName].currentMin = this[axisName][0].min || scope.config[axisName].currentMin;\r\n scope.config[axisName].currentMax = this[axisName][0].max || scope.config[axisName].currentMax;\r\n });\r\n }\r\n }\r\n });\r\n\r\n if(config.title) {\r\n mergedOptions.title = config.title;\r\n }\r\n if (config.subtitle) {\r\n mergedOptions.subtitle = config.subtitle;\r\n }\r\n if (config.credits) {\r\n mergedOptions.credits = config.credits;\r\n }\r\n if(config.size) {\r\n if (config.size.width) {\r\n mergedOptions.chart.width = config.size.width;\r\n }\r\n if (config.size.height) {\r\n mergedOptions.chart.height = config.size.height;\r\n }\r\n }\r\n return mergedOptions;\r\n };\r\n\r\n var updateZoom = function (axis, modelAxis) {\r\n var extremes = axis.getExtremes();\r\n if(modelAxis.currentMin !== extremes.dataMin || modelAxis.currentMax !== extremes.dataMax) {\r\n axis.setExtremes(modelAxis.currentMin, modelAxis.currentMax, false);\r\n }\r\n };\r\n\r\n var processExtremes = function(chart, axis, axisName) {\r\n if(axis.currentMin || axis.currentMax) {\r\n chart[axisName][0].setExtremes(axis.currentMin, axis.currentMax, true);\r\n }\r\n };\r\n\r\n var chartOptionsWithoutEasyOptions = function (options) {\r\n return angular.extend({}, options, {data: null, visible: null});\r\n };\r\n\r\n return {\r\n restrict: 'EAC',\r\n replace: true,\r\n template: '
',\r\n scope: {\r\n config: '='\r\n },\r\n link: function (scope, element, attrs) {\r\n // We keep some chart-specific variables here as a closure\r\n // instead of storing them on 'scope'.\r\n\r\n // prevSeriesOptions is maintained by processSeries\r\n var prevSeriesOptions = {};\r\n\r\n var processSeries = function(series) {\r\n var i;\r\n var ids = [];\r\n\r\n if(series) {\r\n var setIds = ensureIds(series);\r\n if(setIds) {\r\n //If we have set some ids this will trigger another digest cycle.\r\n //In this scenario just return early and let the next cycle take care of changes\r\n return false;\r\n }\r\n\r\n //Find series to add or update\r\n angular.forEach(series, function(s) {\r\n ids.push(s.id);\r\n var chartSeries = chart.get(s.id);\r\n if (chartSeries) {\r\n if (!angular.equals(prevSeriesOptions[s.id], chartOptionsWithoutEasyOptions(s))) {\r\n chartSeries.update(angular.copy(s), false);\r\n } else {\r\n if (s.visible !== undefined && chartSeries.visible !== s.visible) {\r\n chartSeries.setVisible(s.visible, false);\r\n }\r\n chartSeries.setData(angular.copy(s.data), false);\r\n }\r\n } else {\r\n chart.addSeries(angular.copy(s), false);\r\n }\r\n prevSeriesOptions[s.id] = chartOptionsWithoutEasyOptions(s);\r\n });\r\n\r\n // Shows no data text if all series are empty\r\n if(scope.config.noData) {\r\n var chartContainsData = false;\r\n\r\n for(i = 0; i < series.length; i++) {\r\n if (series[i].data && series[i].data.length > 0) {\r\n chartContainsData = true;\r\n\r\n break;\r\n }\r\n }\r\n\r\n if (!chartContainsData) {\r\n chart.showLoading(scope.config.noData);\r\n } else {\r\n chart.hideLoading();\r\n }\r\n }\r\n }\r\n\r\n //Now remove any missing series\r\n for(i = chart.series.length - 1; i >= 0; i--) {\r\n var s = chart.series[i];\r\n if (highchartsNGUtils.indexOf(ids, s.options.id) < 0) {\r\n s.remove(false);\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n // chart is maintained by initChart\r\n var chart = false;\r\n var initChart = function() {\r\n if (chart) chart.destroy();\r\n prevSeriesOptions = {};\r\n var config = scope.config || {};\r\n var mergedOptions = getMergedOptions(scope, element, config);\r\n \r\n var Highcharts = require(\"highcharts\");\r\n if (config.useHighStocks)\r\n {\r\n chart = new Highcharts.StockChart(mergedOptions);\r\n }\r\n else {\r\n chart = new Highcharts.Chart(mergedOptions);\r\n }\r\n for (var i = 0; i < axisNames.length; i++) {\r\n if (config[axisNames[i]]) {\r\n processExtremes(chart, config[axisNames[i]], axisNames[i]);\r\n }\r\n }\r\n if(config.loading) {\r\n chart.showLoading();\r\n }\r\n\r\n };\r\n initChart();\r\n\r\n\r\n scope.$watch('config.series', function (newSeries, oldSeries) {\r\n var needsRedraw = processSeries(newSeries);\r\n if(needsRedraw) {\r\n chart.redraw();\r\n }\r\n }, true);\r\n\r\n scope.$watch('config.title', function (newTitle) {\r\n chart.setTitle(newTitle, true);\r\n }, true);\r\n\r\n scope.$watch('config.subtitle', function (newSubtitle) {\r\n chart.setTitle(true, newSubtitle);\r\n }, true);\r\n\r\n scope.$watch('config.loading', function (loading) {\r\n if(loading) {\r\n chart.showLoading();\r\n } else {\r\n chart.hideLoading();\r\n }\r\n });\r\n\r\n scope.$watch('config.credits.enabled', function (enabled) {\r\n if (enabled) {\r\n chart.credits.show();\r\n } else if (chart.credits) {\r\n chart.credits.hide();\r\n }\r\n });\r\n\r\n scope.$watch('config.useHighStocks', function (useHighStocks, oldUseHighStocks) {\r\n if(useHighStocks === oldUseHighStocks) return;\r\n initChart();\r\n });\r\n\r\n angular.forEach(axisNames, function(axisName) {\r\n scope.$watch('config.' + axisName, function (newAxes, oldAxes) {\r\n if (newAxes === oldAxes) return;\r\n if(newAxes) {\r\n chart[axisName][0].update(newAxes, false);\r\n updateZoom(chart[axisName][0], angular.copy(newAxes));\r\n chart.redraw();\r\n }\r\n }, true);\r\n });\r\n scope.$watch('config.options', function (newOptions, oldOptions, scope) {\r\n //do nothing when called on registration\r\n if (newOptions === oldOptions) return;\r\n initChart();\r\n processSeries(scope.config.series);\r\n chart.redraw();\r\n }, true);\r\n\r\n scope.$watch('config.size', function (newSize, oldSize) {\r\n if(newSize === oldSize) return;\r\n if(newSize) {\r\n chart.setSize(newSize.width || undefined, newSize.height || undefined);\r\n }\r\n }, true);\r\n\r\n scope.$on('highchartsng.reflow', function () {\r\n chart.reflow();\r\n });\r\n\r\n scope.$on('$destroy', function() {\r\n if (chart) chart.destroy();\r\n element.remove();\r\n });\r\n\r\n }\r\n };\r\n }]);\r\n","/*!\r\n * angular-ui-mask\r\n * https://github.com/angular-ui/ui-mask\r\n * Version: 1.8.7 - 2016-07-26T15:59:07.992Z\r\n * License: MIT\r\n */\r\n\r\n\r\n(function () { \r\n'use strict';\r\n/*\r\n Attaches input mask onto input element\r\n */\r\nangular.module('ui.mask', [])\r\n .value('uiMaskConfig', {\r\n maskDefinitions: {\r\n '9': /\\d/,\r\n 'A': /[a-zA-Z]/,\r\n '*': /[a-zA-Z0-9]/\r\n },\r\n clearOnBlur: true,\r\n clearOnBlurPlaceholder: false,\r\n escChar: '\\\\',\r\n eventsToHandle: ['input', 'keyup', 'click', 'focus'],\r\n addDefaultPlaceholder: true,\r\n allowInvalidValue: false\r\n })\r\n .provider('uiMask.Config', function() {\r\n var options = {};\r\n\r\n this.maskDefinitions = function(maskDefinitions) {\r\n return options.maskDefinitions = maskDefinitions;\r\n };\r\n this.clearOnBlur = function(clearOnBlur) {\r\n return options.clearOnBlur = clearOnBlur;\r\n };\r\n this.clearOnBlurPlaceholder = function(clearOnBlurPlaceholder) {\r\n return options.clearOnBlurPlaceholder = clearOnBlurPlaceholder;\r\n };\r\n this.eventsToHandle = function(eventsToHandle) {\r\n return options.eventsToHandle = eventsToHandle;\r\n };\r\n this.addDefaultPlaceholder = function(addDefaultPlaceholder) {\r\n return options.addDefaultPlaceholder = addDefaultPlaceholder;\r\n };\r\n this.allowInvalidValue = function(allowInvalidValue) {\r\n return options.allowInvalidValue = allowInvalidValue;\r\n };\r\n this.$get = ['uiMaskConfig', function(uiMaskConfig) {\r\n var tempOptions = uiMaskConfig;\r\n for(var prop in options) {\r\n if (angular.isObject(options[prop]) && !angular.isArray(options[prop])) {\r\n angular.extend(tempOptions[prop], options[prop]);\r\n } else {\r\n tempOptions[prop] = options[prop];\r\n }\r\n }\r\n\r\n return tempOptions;\r\n }];\r\n })\r\n .directive('uiMask', ['uiMask.Config', function(maskConfig) {\r\n function isFocused (elem) {\r\n return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\r\n }\r\n\r\n return {\r\n priority: 100,\r\n require: 'ngModel',\r\n restrict: 'A',\r\n compile: function uiMaskCompilingFunction() {\r\n var options = angular.copy(maskConfig);\r\n\r\n return function uiMaskLinkingFunction(scope, iElement, iAttrs, controller) {\r\n var maskProcessed = false, eventsBound = false,\r\n maskCaretMap, maskPatterns, maskPlaceholder, maskComponents,\r\n // Minimum required length of the value to be considered valid\r\n minRequiredLength,\r\n value, valueMasked, isValid,\r\n // Vars for initializing/uninitializing\r\n originalPlaceholder = iAttrs.placeholder,\r\n originalMaxlength = iAttrs.maxlength,\r\n // Vars used exclusively in eventHandler()\r\n oldValue, oldValueUnmasked, oldCaretPosition, oldSelectionLength,\r\n // Used for communicating if a backspace operation should be allowed between\r\n // keydownHandler and eventHandler\r\n preventBackspace;\r\n\r\n var originalIsEmpty = controller.$isEmpty;\r\n controller.$isEmpty = function(value) {\r\n if (maskProcessed) {\r\n return originalIsEmpty(unmaskValue(value || ''));\r\n } else {\r\n return originalIsEmpty(value);\r\n }\r\n };\r\n\r\n function initialize(maskAttr) {\r\n if (!angular.isDefined(maskAttr)) {\r\n return uninitialize();\r\n }\r\n processRawMask(maskAttr);\r\n if (!maskProcessed) {\r\n return uninitialize();\r\n }\r\n initializeElement();\r\n bindEventListeners();\r\n return true;\r\n }\r\n\r\n function initPlaceholder(placeholderAttr) {\r\n if ( ! placeholderAttr) {\r\n return;\r\n }\r\n\r\n maskPlaceholder = placeholderAttr;\r\n\r\n // If the mask is processed, then we need to update the value\r\n // but don't set the value if there is nothing entered into the element\r\n // and there is a placeholder attribute on the element because that\r\n // will only set the value as the blank maskPlaceholder\r\n // and override the placeholder on the element\r\n if (maskProcessed && !(iElement.val().length === 0 && angular.isDefined(iAttrs.placeholder))) {\r\n iElement.val(maskValue(unmaskValue(iElement.val())));\r\n }\r\n }\r\n\r\n function initPlaceholderChar() {\r\n return initialize(iAttrs.uiMask);\r\n }\r\n\r\n var modelViewValue = false;\r\n iAttrs.$observe('modelViewValue', function(val) {\r\n if (val === 'true') {\r\n modelViewValue = true;\r\n }\r\n });\r\n\r\n iAttrs.$observe('allowInvalidValue', function(val) {\r\n linkOptions.allowInvalidValue = val === ''\r\n ? true\r\n : !!val;\r\n formatter(controller.$modelValue);\r\n });\r\n\r\n function formatter(fromModelValue) {\r\n if (!maskProcessed) {\r\n return fromModelValue;\r\n }\r\n value = unmaskValue(fromModelValue || '');\r\n isValid = validateValue(value);\r\n controller.$setValidity('mask', isValid);\r\n\r\n if (!value.length) return undefined;\r\n if (isValid || linkOptions.allowInvalidValue) {\r\n return maskValue(value);\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n\r\n function parser(fromViewValue) {\r\n if (!maskProcessed) {\r\n return fromViewValue;\r\n }\r\n value = unmaskValue(fromViewValue || '');\r\n isValid = validateValue(value);\r\n // We have to set viewValue manually as the reformatting of the input\r\n // value performed by eventHandler() doesn't happen until after\r\n // this parser is called, which causes what the user sees in the input\r\n // to be out-of-sync with what the controller's $viewValue is set to.\r\n controller.$viewValue = value.length ? maskValue(value) : '';\r\n controller.$setValidity('mask', isValid);\r\n\r\n if (isValid || linkOptions.allowInvalidValue) {\r\n return modelViewValue ? controller.$viewValue : value;\r\n }\r\n }\r\n\r\n var linkOptions = {};\r\n\r\n if (iAttrs.uiOptions) {\r\n linkOptions = scope.$eval('[' + iAttrs.uiOptions + ']');\r\n if (angular.isObject(linkOptions[0])) {\r\n // we can't use angular.copy nor angular.extend, they lack the power to do a deep merge\r\n linkOptions = (function(original, current) {\r\n for (var i in original) {\r\n if (Object.prototype.hasOwnProperty.call(original, i)) {\r\n if (current[i] === undefined) {\r\n current[i] = angular.copy(original[i]);\r\n } else {\r\n if (angular.isObject(current[i]) && !angular.isArray(current[i])) {\r\n current[i] = angular.extend({}, original[i], current[i]);\r\n }\r\n }\r\n }\r\n }\r\n return current;\r\n })(options, linkOptions[0]);\r\n } else {\r\n linkOptions = options; //gotta be a better way to do this..\r\n }\r\n } else {\r\n linkOptions = options;\r\n }\r\n\r\n iAttrs.$observe('uiMask', initialize);\r\n if (angular.isDefined(iAttrs.uiMaskPlaceholder)) {\r\n iAttrs.$observe('uiMaskPlaceholder', initPlaceholder);\r\n }\r\n else {\r\n iAttrs.$observe('placeholder', initPlaceholder);\r\n }\r\n if (angular.isDefined(iAttrs.uiMaskPlaceholderChar)) {\r\n iAttrs.$observe('uiMaskPlaceholderChar', initPlaceholderChar);\r\n }\r\n\r\n controller.$formatters.unshift(formatter);\r\n controller.$parsers.unshift(parser);\r\n\r\n function uninitialize() {\r\n maskProcessed = false;\r\n unbindEventListeners();\r\n\r\n if (angular.isDefined(originalPlaceholder)) {\r\n iElement.attr('placeholder', originalPlaceholder);\r\n } else {\r\n iElement.removeAttr('placeholder');\r\n }\r\n\r\n if (angular.isDefined(originalMaxlength)) {\r\n iElement.attr('maxlength', originalMaxlength);\r\n } else {\r\n iElement.removeAttr('maxlength');\r\n }\r\n\r\n iElement.val(controller.$modelValue);\r\n controller.$viewValue = controller.$modelValue;\r\n return false;\r\n }\r\n\r\n function initializeElement() {\r\n value = oldValueUnmasked = unmaskValue(controller.$modelValue || '');\r\n valueMasked = oldValue = maskValue(value);\r\n isValid = validateValue(value);\r\n if (iAttrs.maxlength) { // Double maxlength to allow pasting new val at end of mask\r\n iElement.attr('maxlength', maskCaretMap[maskCaretMap.length - 1] * 2);\r\n }\r\n if ( ! originalPlaceholder && linkOptions.addDefaultPlaceholder) {\r\n iElement.attr('placeholder', maskPlaceholder);\r\n }\r\n var viewValue = controller.$modelValue;\r\n var idx = controller.$formatters.length;\r\n while(idx--) {\r\n viewValue = controller.$formatters[idx](viewValue);\r\n }\r\n controller.$viewValue = viewValue || '';\r\n controller.$render();\r\n // Not using $setViewValue so we don't clobber the model value and dirty the form\r\n // without any kind of user interaction.\r\n }\r\n\r\n function bindEventListeners() {\r\n if (eventsBound) {\r\n return;\r\n }\r\n iElement.bind('blur', blurHandler);\r\n iElement.bind('mousedown mouseup', mouseDownUpHandler);\r\n iElement.bind('keydown', keydownHandler);\r\n iElement.bind(linkOptions.eventsToHandle.join(' '), eventHandler);\r\n eventsBound = true;\r\n }\r\n\r\n function unbindEventListeners() {\r\n if (!eventsBound) {\r\n return;\r\n }\r\n iElement.unbind('blur', blurHandler);\r\n iElement.unbind('mousedown', mouseDownUpHandler);\r\n iElement.unbind('mouseup', mouseDownUpHandler);\r\n iElement.unbind('keydown', keydownHandler);\r\n iElement.unbind('input', eventHandler);\r\n iElement.unbind('keyup', eventHandler);\r\n iElement.unbind('click', eventHandler);\r\n iElement.unbind('focus', eventHandler);\r\n eventsBound = false;\r\n }\r\n\r\n function validateValue(value) {\r\n // Zero-length value validity is ngRequired's determination\r\n return value.length ? value.length >= minRequiredLength : true;\r\n }\r\n\r\n function unmaskValue(value) {\r\n var valueUnmasked = '',\r\n input = iElement[0],\r\n maskPatternsCopy = maskPatterns.slice(),\r\n selectionStart = oldCaretPosition,\r\n selectionEnd = selectionStart + getSelectionLength(input),\r\n valueOffset, valueDelta, tempValue = '';\r\n // Preprocess by stripping mask components from value\r\n value = value.toString();\r\n valueOffset = 0;\r\n valueDelta = value.length - maskPlaceholder.length;\r\n angular.forEach(maskComponents, function(component) {\r\n var position = component.position;\r\n //Only try and replace the component if the component position is not within the selected range\r\n //If component was in selected range then it was removed with the user input so no need to try and remove that component\r\n if (!(position >= selectionStart && position < selectionEnd)) {\r\n if (position >= selectionStart) {\r\n position += valueDelta;\r\n }\r\n if (value.substring(position, position + component.value.length) === component.value) {\r\n tempValue += value.slice(valueOffset, position);// + value.slice(position + component.value.length);\r\n valueOffset = position + component.value.length;\r\n }\r\n }\r\n });\r\n value = tempValue + value.slice(valueOffset);\r\n angular.forEach(value.split(''), function(chr) {\r\n if (maskPatternsCopy.length && maskPatternsCopy[0].test(chr)) {\r\n valueUnmasked += chr;\r\n maskPatternsCopy.shift();\r\n }\r\n });\r\n\r\n return valueUnmasked;\r\n }\r\n\r\n function maskValue(unmaskedValue) {\r\n var valueMasked = '',\r\n maskCaretMapCopy = maskCaretMap.slice();\r\n\r\n angular.forEach(maskPlaceholder.split(''), function(chr, i) {\r\n if (unmaskedValue.length && i === maskCaretMapCopy[0]) {\r\n valueMasked += unmaskedValue.charAt(0) || '_';\r\n unmaskedValue = unmaskedValue.substr(1);\r\n maskCaretMapCopy.shift();\r\n }\r\n else {\r\n valueMasked += chr;\r\n }\r\n });\r\n return valueMasked;\r\n }\r\n\r\n function getPlaceholderChar(i) {\r\n var placeholder = angular.isDefined(iAttrs.uiMaskPlaceholder) ? iAttrs.uiMaskPlaceholder : iAttrs.placeholder,\r\n defaultPlaceholderChar;\r\n\r\n if (angular.isDefined(placeholder) && placeholder[i]) {\r\n return placeholder[i];\r\n } else {\r\n defaultPlaceholderChar = angular.isDefined(iAttrs.uiMaskPlaceholderChar) && iAttrs.uiMaskPlaceholderChar ? iAttrs.uiMaskPlaceholderChar : '_';\r\n return (defaultPlaceholderChar.toLowerCase() === 'space') ? ' ' : defaultPlaceholderChar[0];\r\n }\r\n }\r\n\r\n // Generate array of mask components that will be stripped from a masked value\r\n // before processing to prevent mask components from being added to the unmasked value.\r\n // E.g., a mask pattern of '+7 9999' won't have the 7 bleed into the unmasked value.\r\n function getMaskComponents() {\r\n var maskPlaceholderChars = maskPlaceholder.split(''),\r\n maskPlaceholderCopy, components;\r\n\r\n //maskCaretMap can have bad values if the input has the ui-mask attribute implemented as an obversable property, e.g. the demo page\r\n if (maskCaretMap && !isNaN(maskCaretMap[0])) {\r\n //Instead of trying to manipulate the RegEx based on the placeholder characters\r\n //we can simply replace the placeholder characters based on the already built\r\n //maskCaretMap to underscores and leave the original working RegEx to get the proper\r\n //mask components\r\n angular.forEach(maskCaretMap, function(value) {\r\n maskPlaceholderChars[value] = '_';\r\n });\r\n }\r\n maskPlaceholderCopy = maskPlaceholderChars.join('');\r\n components = maskPlaceholderCopy.replace(/[_]+/g, '_').split('_');\r\n components = components.filter(function(s) {\r\n return s !== '';\r\n });\r\n\r\n // need a string search offset in cases where the mask contains multiple identical components\r\n // E.g., a mask of 99.99.99-999.99\r\n var offset = 0;\r\n return components.map(function(c) {\r\n var componentPosition = maskPlaceholderCopy.indexOf(c, offset);\r\n offset = componentPosition + 1;\r\n return {\r\n value: c,\r\n position: componentPosition\r\n };\r\n });\r\n }\r\n\r\n function processRawMask(mask) {\r\n var characterCount = 0;\r\n\r\n maskCaretMap = [];\r\n maskPatterns = [];\r\n maskPlaceholder = '';\r\n\r\n if (angular.isString(mask)) {\r\n minRequiredLength = 0;\r\n\r\n var isOptional = false,\r\n numberOfOptionalCharacters = 0,\r\n splitMask = mask.split('');\r\n\r\n var inEscape = false;\r\n angular.forEach(splitMask, function(chr, i) {\r\n if (inEscape) {\r\n inEscape = false;\r\n maskPlaceholder += chr;\r\n characterCount++;\r\n }\r\n else if (linkOptions.escChar === chr) {\r\n inEscape = true;\r\n }\r\n else if (linkOptions.maskDefinitions[chr]) {\r\n maskCaretMap.push(characterCount);\r\n\r\n maskPlaceholder += getPlaceholderChar(i - numberOfOptionalCharacters);\r\n maskPatterns.push(linkOptions.maskDefinitions[chr]);\r\n\r\n characterCount++;\r\n if (!isOptional) {\r\n minRequiredLength++;\r\n }\r\n\r\n isOptional = false;\r\n }\r\n else if (chr === '?') {\r\n isOptional = true;\r\n numberOfOptionalCharacters++;\r\n }\r\n else {\r\n maskPlaceholder += chr;\r\n characterCount++;\r\n }\r\n });\r\n }\r\n // Caret position immediately following last position is valid.\r\n maskCaretMap.push(maskCaretMap.slice().pop() + 1);\r\n\r\n maskComponents = getMaskComponents();\r\n maskProcessed = maskCaretMap.length > 1 ? true : false;\r\n }\r\n\r\n var prevValue = iElement.val();\r\n function blurHandler() {\r\n if (linkOptions.clearOnBlur || ((linkOptions.clearOnBlurPlaceholder) && (value.length === 0) && iAttrs.placeholder)) {\r\n oldCaretPosition = 0;\r\n oldSelectionLength = 0;\r\n if (!isValid || value.length === 0) {\r\n valueMasked = '';\r\n iElement.val('');\r\n scope.$apply(function() {\r\n //only $setViewValue when not $pristine to avoid changing $pristine state.\r\n if (!controller.$pristine) {\r\n controller.$setViewValue('');\r\n }\r\n });\r\n }\r\n }\r\n //Check for different value and trigger change.\r\n //Check for different value and trigger change.\r\n if (value !== prevValue) {\r\n // #157 Fix the bug from the trigger when backspacing exactly on the first letter (emptying the field)\r\n // and then blurring out.\r\n // Angular uses html element and calls setViewValue(element.value.trim()), setting it to the trimmed mask\r\n // when it should be empty\r\n var currentVal = iElement.val();\r\n var isTemporarilyEmpty = value === '' && currentVal && angular.isDefined(iAttrs.uiMaskPlaceholderChar) && iAttrs.uiMaskPlaceholderChar === 'space';\r\n if(isTemporarilyEmpty) {\r\n iElement.val('');\r\n }\r\n triggerChangeEvent(iElement[0]);\r\n if(isTemporarilyEmpty) {\r\n iElement.val(currentVal);\r\n }\r\n }\r\n prevValue = value;\r\n }\r\n\r\n function triggerChangeEvent(element) {\r\n var change;\r\n if (angular.isFunction(window.Event) && !element.fireEvent) {\r\n // modern browsers and Edge\r\n try {\r\n change = new Event('change', {\r\n view: window,\r\n bubbles: true,\r\n cancelable: false\r\n });\r\n } catch (ex) {\r\n //this is for certain mobile browsers that have the Event object\r\n //but don't support the Event constructor #168\r\n change = document.createEvent('HTMLEvents');\r\n change.initEvent('change', false, true);\r\n } finally {\r\n element.dispatchEvent(change);\r\n }\r\n } else if ('createEvent' in document) {\r\n // older browsers\r\n change = document.createEvent('HTMLEvents');\r\n change.initEvent('change', false, true);\r\n element.dispatchEvent(change);\r\n }\r\n else if (element.fireEvent) {\r\n // IE <= 11\r\n element.fireEvent('onchange');\r\n }\r\n }\r\n\r\n function mouseDownUpHandler(e) {\r\n if (e.type === 'mousedown') {\r\n iElement.bind('mouseout', mouseoutHandler);\r\n } else {\r\n iElement.unbind('mouseout', mouseoutHandler);\r\n }\r\n }\r\n\r\n iElement.bind('mousedown mouseup', mouseDownUpHandler);\r\n\r\n function mouseoutHandler() {\r\n /*jshint validthis: true */\r\n oldSelectionLength = getSelectionLength(this);\r\n iElement.unbind('mouseout', mouseoutHandler);\r\n }\r\n\r\n function keydownHandler(e) {\r\n /*jshint validthis: true */\r\n var isKeyBackspace = e.which === 8,\r\n caretPos = getCaretPosition(this) - 1 || 0, //value in keydown is pre change so bump caret position back to simulate post change\r\n isCtrlZ = e.which === 90 && e.ctrlKey; //ctrl+z pressed\r\n\r\n if (isKeyBackspace) {\r\n while(caretPos >= 0) {\r\n if (isValidCaretPosition(caretPos)) {\r\n //re-adjust the caret position.\r\n //Increment to account for the initial decrement to simulate post change caret position\r\n setCaretPosition(this, caretPos + 1);\r\n break;\r\n }\r\n caretPos--;\r\n }\r\n preventBackspace = caretPos === -1;\r\n }\r\n\r\n if (isCtrlZ) {\r\n // prevent IE bug - value should be returned to initial state\r\n iElement.val('');\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n function eventHandler(e) {\r\n /*jshint validthis: true */\r\n e = e || {};\r\n // Allows more efficient minification\r\n var eventWhich = e.which,\r\n eventType = e.type;\r\n\r\n // Prevent shift and ctrl from mucking with old values\r\n if (eventWhich === 16 || eventWhich === 91) {\r\n return;\r\n }\r\n\r\n var val = iElement.val(),\r\n valOld = oldValue,\r\n valMasked,\r\n valAltered = false,\r\n valUnmasked = unmaskValue(val),\r\n valUnmaskedOld = oldValueUnmasked,\r\n caretPos = getCaretPosition(this) || 0,\r\n caretPosOld = oldCaretPosition || 0,\r\n caretPosDelta = caretPos - caretPosOld,\r\n caretPosMin = maskCaretMap[0],\r\n caretPosMax = maskCaretMap[valUnmasked.length] || maskCaretMap.slice().shift(),\r\n selectionLenOld = oldSelectionLength || 0,\r\n isSelected = getSelectionLength(this) > 0,\r\n wasSelected = selectionLenOld > 0,\r\n // Case: Typing a character to overwrite a selection\r\n isAddition = (val.length > valOld.length) || (selectionLenOld && val.length > valOld.length - selectionLenOld),\r\n // Case: Delete and backspace behave identically on a selection\r\n isDeletion = (val.length < valOld.length) || (selectionLenOld && val.length === valOld.length - selectionLenOld),\r\n isSelection = (eventWhich >= 37 && eventWhich <= 40) && e.shiftKey, // Arrow key codes\r\n\r\n isKeyLeftArrow = eventWhich === 37,\r\n // Necessary due to \"input\" event not providing a key code\r\n isKeyBackspace = eventWhich === 8 || (eventType !== 'keyup' && isDeletion && (caretPosDelta === -1)),\r\n isKeyDelete = eventWhich === 46 || (eventType !== 'keyup' && isDeletion && (caretPosDelta === 0) && !wasSelected),\r\n // Handles cases where caret is moved and placed in front of invalid maskCaretMap position. Logic below\r\n // ensures that, on click or leftward caret placement, caret is moved leftward until directly right of\r\n // non-mask character. Also applied to click since users are (arguably) more likely to backspace\r\n // a character when clicking within a filled input.\r\n caretBumpBack = (isKeyLeftArrow || isKeyBackspace || eventType === 'click') && caretPos > caretPosMin;\r\n\r\n oldSelectionLength = getSelectionLength(this);\r\n\r\n // These events don't require any action\r\n if (isSelection || (isSelected && (eventType === 'click' || eventType === 'keyup' || eventType === 'focus'))) {\r\n return;\r\n }\r\n\r\n if (isKeyBackspace && preventBackspace) {\r\n iElement.val(maskPlaceholder);\r\n // This shouldn't be needed but for some reason after aggressive backspacing the controller $viewValue is incorrect.\r\n // This keeps the $viewValue updated and correct.\r\n scope.$apply(function () {\r\n controller.$setViewValue(''); // $setViewValue should be run in angular context, otherwise the changes will be invisible to angular and user code.\r\n });\r\n setCaretPosition(this, caretPosOld);\r\n return;\r\n }\r\n\r\n // Value Handling\r\n // ==============\r\n\r\n // User attempted to delete but raw value was unaffected--correct this grievous offense\r\n if ((eventType === 'input') && isDeletion && !wasSelected && valUnmasked === valUnmaskedOld) {\r\n while (isKeyBackspace && caretPos > caretPosMin && !isValidCaretPosition(caretPos)) {\r\n caretPos--;\r\n }\r\n while (isKeyDelete && caretPos < caretPosMax && maskCaretMap.indexOf(caretPos) === -1) {\r\n caretPos++;\r\n }\r\n var charIndex = maskCaretMap.indexOf(caretPos);\r\n // Strip out non-mask character that user would have deleted if mask hadn't been in the way.\r\n valUnmasked = valUnmasked.substring(0, charIndex) + valUnmasked.substring(charIndex + 1);\r\n\r\n // If value has not changed, don't want to call $setViewValue, may be caused by IE raising input event due to placeholder\r\n if (valUnmasked !== valUnmaskedOld)\r\n valAltered = true;\r\n }\r\n\r\n // Update values\r\n valMasked = maskValue(valUnmasked);\r\n\r\n oldValue = valMasked;\r\n oldValueUnmasked = valUnmasked;\r\n\r\n //additional check to fix the problem where the viewValue is out of sync with the value of the element.\r\n //better fix for commit 2a83b5fb8312e71d220a497545f999fc82503bd9 (I think)\r\n if (!valAltered && val.length > valMasked.length)\r\n valAltered = true;\r\n\r\n iElement.val(valMasked);\r\n\r\n //we need this check. What could happen if you don't have it is that you'll set the model value without the user\r\n //actually doing anything. Meaning, things like pristine and touched will be set.\r\n if (valAltered) {\r\n scope.$apply(function () {\r\n controller.$setViewValue(valMasked); // $setViewValue should be run in angular context, otherwise the changes will be invisible to angular and user code.\r\n });\r\n }\r\n\r\n // Caret Repositioning\r\n // ===================\r\n\r\n // Ensure that typing always places caret ahead of typed character in cases where the first char of\r\n // the input is a mask char and the caret is placed at the 0 position.\r\n if (isAddition && (caretPos <= caretPosMin)) {\r\n caretPos = caretPosMin + 1;\r\n }\r\n\r\n if (caretBumpBack) {\r\n caretPos--;\r\n }\r\n\r\n // Make sure caret is within min and max position limits\r\n caretPos = caretPos > caretPosMax ? caretPosMax : caretPos < caretPosMin ? caretPosMin : caretPos;\r\n\r\n // Scoot the caret back or forth until it's in a non-mask position and within min/max position limits\r\n while (!isValidCaretPosition(caretPos) && caretPos > caretPosMin && caretPos < caretPosMax) {\r\n caretPos += caretBumpBack ? -1 : 1;\r\n }\r\n\r\n if ((caretBumpBack && caretPos < caretPosMax) || (isAddition && !isValidCaretPosition(caretPosOld))) {\r\n caretPos++;\r\n }\r\n oldCaretPosition = caretPos;\r\n setCaretPosition(this, caretPos);\r\n }\r\n\r\n function isValidCaretPosition(pos) {\r\n return maskCaretMap.indexOf(pos) > -1;\r\n }\r\n\r\n function getCaretPosition(input) {\r\n if (!input)\r\n return 0;\r\n if (input.selectionEnd !== undefined) {\r\n return input.selectionEnd;\r\n } else if (document.selection) {\r\n if (isFocused(iElement[0])) {\r\n // Curse you IE\r\n input.focus();\r\n var selection = document.selection.createRange();\r\n selection.moveStart('character', input.value ? -input.value.length : 0);\r\n return selection.text.length;\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n function setCaretPosition(input, pos) {\r\n if (!input)\r\n return 0;\r\n if (input.offsetWidth === 0 || input.offsetHeight === 0) {\r\n return; // Input's hidden\r\n }\r\n if (input.setSelectionRange) {\r\n if (isFocused(iElement[0])) {\r\n input.focus();\r\n input.setSelectionRange(pos, pos);\r\n }\r\n }\r\n else if (input.createTextRange) {\r\n // Curse you IE\r\n var range = input.createTextRange();\r\n range.collapse(true);\r\n range.moveEnd('character', pos);\r\n range.moveStart('character', pos);\r\n range.select();\r\n }\r\n }\r\n\r\n function getSelectionLength(input) {\r\n if (!input)\r\n return 0;\r\n if (input.selectionStart !== undefined) {\r\n return (input.selectionEnd - input.selectionStart);\r\n }\r\n if (window.getSelection) {\r\n return (window.getSelection().toString().length);\r\n }\r\n if (document.selection) {\r\n return (document.selection.createRange().text.length);\r\n }\r\n return 0;\r\n }\r\n\r\n // https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf\r\n if (!Array.prototype.indexOf) {\r\n Array.prototype.indexOf = function(searchElement /*, fromIndex */) {\r\n if (this === null) {\r\n throw new TypeError();\r\n }\r\n var t = Object(this);\r\n var len = t.length >>> 0;\r\n if (len === 0) {\r\n return -1;\r\n }\r\n var n = 0;\r\n if (arguments.length > 1) {\r\n n = Number(arguments[1]);\r\n if (n !== n) { // shortcut for verifying if it's NaN\r\n n = 0;\r\n } else if (n !== 0 && n !== Infinity && n !== -Infinity) {\r\n n = (n > 0 || -1) * Math.floor(Math.abs(n));\r\n }\r\n }\r\n if (n >= len) {\r\n return -1;\r\n }\r\n var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);\r\n for (; k < len; k++) {\r\n if (k in t && t[k] === searchElement) {\r\n return k;\r\n }\r\n }\r\n return -1;\r\n };\r\n }\r\n\r\n };\r\n }\r\n };\r\n }\r\n ]);\r\n\r\n}());","'use strict';\r\n\r\nangular.module('angularPikaday', [])\r\n .directive('pikaday', function () {\r\n return {\r\n restrict: 'A',\r\n require: ['ngModel', '^form'],\r\n scope: {\r\n pikaday: '='\r\n },\r\n link: function (scope, elem, attrs, ctrls) {\r\n\r\n var ngModel = ctrls[0];\r\n var formCtrl = ctrls[1];\r\n var format = attrs.format || 'ddd MMM D YYYY';\r\n\r\n var picker = new Pikaday({\r\n field: elem[0],\r\n trigger: document.getElementById(attrs.triggerId),\r\n bound: attrs.bound !== 'false',\r\n position: attrs.position || '',\r\n format: attrs.format || 'ddd MMM D YYYY', // Requires Moment.js for custom formatting\r\n defaultDate: new Date(attrs.defaultDate),\r\n setDefaultDate: attrs.setDefaultDate === 'true',\r\n firstDay: attrs.firstDay ? parseInt(attrs.firstDay) : 0,\r\n minDate: moment(attrs.minDate, format).toDate(),\r\n maxDate: moment(attrs.maxDate, format).toDate(),\r\n yearRange: attrs.yearRange ? JSON.parse(attrs.yearRange) : 10, // Accepts int (10) or 2 elem array ([1992, 1998]) as strings\r\n isRTL: attrs.isRTL === 'true',\r\n i18n: {\r\n previousMonth: 'Previous Month',\r\n nextMonth: 'Next Month',\r\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\r\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\r\n },\r\n yearSuffix: attrs.yearSuffix || '',\r\n showMonthAfterYear: attrs.showMonthAfterYear === 'true'\r\n });\r\n\r\n attrs.$observe('minDate', function (value) {\r\n var minDate = moment(value, attrs.format);\r\n\r\n picker.setMinDate(minDate.toDate());\r\n });\r\n\r\n var firstFormatting = true;\r\n\r\n ngModel.$formatters.unshift(function (value) {\r\n if (!ngModel.$modelValue)\r\n return null;\r\n\r\n var date = moment(ngModel.$modelValue);\r\n if (date.isValid()) {\r\n picker.setDate(date.toISOString());\r\n\r\n // stop form from being marked dirty when date picker directive sets the value the first time.\r\n if (firstFormatting) {\r\n ngModel.$setPristine();\r\n if (formCtrl)\r\n formCtrl.$setPristine();\r\n firstFormatting = false;\r\n }\r\n\r\n return date.format(attrs.format);\r\n }\r\n\r\n return value;\r\n });\r\n\r\n ngModel.$parsers.unshift(function (value) {\r\n var date = moment(value, attrs.format);\r\n\r\n return date.format('YYYY-MM-DD');\r\n });\r\n\r\n scope.pikaday = picker;\r\n }\r\n };\r\n });","/* \r\n * Angular JS Multi Select\r\n * Creates a dropdown-like button with checkboxes. \r\n *\r\n * Project started on: Tue, 14 Jan 2014 - 5:18:02 PM\r\n * Current version: 4.0.0\r\n * \r\n * Released under the MIT License\r\n * --------------------------------------------------------------------------------\r\n * The MIT License (MIT)\r\n *\r\n * Copyright (c) 2014 Ignatius Steven (https://github.com/isteven)\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy \r\n * of this software and associated documentation files (the \"Software\"), to deal \r\n * in the Software without restriction, including without limitation the rights \r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell \r\n * copies of the Software, and to permit persons to whom the Software is \r\n * furnished to do so, subject to the following conditions: \r\n *\r\n * The above copyright notice and this permission notice shall be included in all \r\n * copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, \r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE \r\n * SOFTWARE.\r\n * --------------------------------------------------------------------------------\r\n */\r\n\r\n'use strict'\r\n\r\nangular.module( 'isteven-multi-select', ['ng'] ).directive( 'istevenMultiSelect' , [ '$sce', '$timeout', '$templateCache', function ( $sce, $timeout, $templateCache ) {\r\n return {\r\n restrict: \r\n 'AE',\r\n\r\n scope: \r\n { \r\n // models\r\n inputModel : '=',\r\n outputModel : '=',\r\n\r\n // settings based on attribute\r\n isDisabled : '=',\r\n\r\n // callbacks\r\n onClear : '&', \r\n onClose : '&',\r\n onSearchChange : '&', \r\n onItemClick : '&', \r\n onOpen : '&', \r\n onReset : '&', \r\n onSelectAll : '&', \r\n onSelectNone : '&', \r\n\r\n // i18n\r\n translation : '=' \r\n },\r\n \r\n /* \r\n * The rest are attributes. They don't need to be parsed / binded, so we can safely access them by value.\r\n * - buttonLabel, directiveId, helperElements, itemLabel, maxLabels, orientation, selectionMode, minSearchLength,\r\n * tickProperty, disableProperty, groupProperty, searchProperty, maxHeight, outputProperties\r\n */\r\n \r\n templateUrl: \r\n 'isteven-multi-select.htm', \r\n\r\n link: function ( $scope, element, attrs ) { \r\n\r\n $scope.backUp = [];\r\n $scope.varButtonLabel = ''; \r\n $scope.spacingProperty = '';\r\n $scope.indexProperty = ''; \r\n $scope.orientationH = false;\r\n $scope.orientationV = true;\r\n $scope.filteredModel = [];\r\n $scope.inputLabel = { labelFilter: '' }; \r\n $scope.tabIndex = 0; \r\n $scope.lang = {};\r\n $scope.helperStatus = {\r\n all : true,\r\n none : true,\r\n reset : true,\r\n filter : true\r\n };\r\n\r\n var \r\n prevTabIndex = 0,\r\n helperItems = [],\r\n helperItemsLength = 0,\r\n checkBoxLayer = '',\r\n scrolled = false,\r\n selectedItems = [],\r\n formElements = [],\r\n vMinSearchLength = 0,\r\n clickedItem = null \r\n\r\n // v3.0.0\r\n // clear button clicked\r\n $scope.clearClicked = function( e ) { \r\n $scope.inputLabel.labelFilter = '';\r\n $scope.updateFilter();\r\n $scope.select( 'clear', e ); \r\n }\r\n\r\n // A little hack so that AngularJS ng-repeat can loop using start and end index like a normal loop\r\n // http://stackoverflow.com/questions/16824853/way-to-ng-repeat-defined-number-of-times-instead-of-repeating-over-array\r\n $scope.numberToArray = function( num ) {\r\n return new Array( num ); \r\n }\r\n\r\n // Call this function when user type on the filter field\r\n $scope.searchChanged = function() { \r\n if ( $scope.inputLabel.labelFilter.length < vMinSearchLength && $scope.inputLabel.labelFilter.length > 0 ) {\r\n return false;\r\n } \r\n $scope.updateFilter();\r\n }\r\n\r\n $scope.updateFilter = function()\r\n { \r\n // we check by looping from end of input-model\r\n $scope.filteredModel = [];\r\n var i = 0;\r\n\r\n if ( typeof $scope.inputModel === 'undefined' ) {\r\n return false; \r\n }\r\n\r\n for( i = $scope.inputModel.length - 1; i >= 0; i-- ) {\r\n\r\n // if it's group end, we push it to filteredModel[];\r\n if ( typeof $scope.inputModel[ i ][ attrs.groupProperty ] !== 'undefined' && $scope.inputModel[ i ][ attrs.groupProperty ] === false ) {\r\n $scope.filteredModel.push( $scope.inputModel[ i ] );\r\n }\r\n \r\n // if it's data \r\n var gotData = false;\r\n if ( typeof $scope.inputModel[ i ][ attrs.groupProperty ] === 'undefined' ) { \r\n \r\n // If we set the search-key attribute, we use this loop. \r\n if ( typeof attrs.searchProperty !== 'undefined' && attrs.searchProperty !== '' ) {\r\n\r\n for (var key in $scope.inputModel[ i ] ) {\r\n if ( \r\n typeof $scope.inputModel[ i ][ key ] !== 'boolean'\r\n && String( $scope.inputModel[ i ][ key ] ).toUpperCase().indexOf( $scope.inputLabel.labelFilter.toUpperCase() ) >= 0 \r\n && attrs.searchProperty.indexOf( key ) > -1\r\n ) {\r\n gotData = true;\r\n break;\r\n }\r\n } \r\n }\r\n // if there's no search-key attribute, we use this one. Much better on performance.\r\n else {\r\n for ( var key in $scope.inputModel[ i ] ) {\r\n if ( \r\n typeof $scope.inputModel[ i ][ key ] !== 'boolean'\r\n && String( $scope.inputModel[ i ][ key ] ).toUpperCase().indexOf( $scope.inputLabel.labelFilter.toUpperCase() ) >= 0 \r\n ) {\r\n gotData = true;\r\n break;\r\n }\r\n } \r\n }\r\n\r\n if ( gotData === true ) { \r\n // push\r\n $scope.filteredModel.push( $scope.inputModel[ i ] );\r\n }\r\n }\r\n\r\n // if it's group start\r\n if ( typeof $scope.inputModel[ i ][ attrs.groupProperty ] !== 'undefined' && $scope.inputModel[ i ][ attrs.groupProperty ] === true ) {\r\n\r\n if ( typeof $scope.filteredModel[ $scope.filteredModel.length - 1 ][ attrs.groupProperty ] !== 'undefined' \r\n && $scope.filteredModel[ $scope.filteredModel.length - 1 ][ attrs.groupProperty ] === false ) {\r\n $scope.filteredModel.pop();\r\n }\r\n else {\r\n $scope.filteredModel.push( $scope.inputModel[ i ] );\r\n }\r\n }\r\n } \r\n\r\n $scope.filteredModel.reverse(); \r\n \r\n $timeout( function() { \r\n\r\n $scope.getFormElements(); \r\n \r\n // Callback: on filter change \r\n if ( $scope.inputLabel.labelFilter.length > vMinSearchLength ) {\r\n\r\n var filterObj = [];\r\n\r\n angular.forEach( $scope.filteredModel, function( value, key ) {\r\n if ( typeof value !== 'undefined' ) { \r\n if ( typeof value[ attrs.groupProperty ] === 'undefined' ) { \r\n var tempObj = angular.copy( value );\r\n var index = filterObj.push( tempObj ); \r\n delete filterObj[ index - 1 ][ $scope.indexProperty ];\r\n delete filterObj[ index - 1 ][ $scope.spacingProperty ]; \r\n }\r\n }\r\n });\r\n\r\n $scope.onSearchChange({ \r\n data: \r\n {\r\n keyword: $scope.inputLabel.labelFilter, \r\n result: filterObj \r\n } \r\n });\r\n }\r\n },0);\r\n };\r\n\r\n // List all the input elements. We need this for our keyboard navigation.\r\n // This function will be called everytime the filter is updated. \r\n // Depending on the size of filtered mode, might not good for performance, but oh well..\r\n $scope.getFormElements = function() { \r\n formElements = [];\r\n\r\n var \r\n selectButtons = [],\r\n inputField = [],\r\n checkboxes = [],\r\n clearButton = [];\r\n \r\n // If available, then get select all, select none, and reset buttons\r\n if ( $scope.helperStatus.all || $scope.helperStatus.none || $scope.helperStatus.reset ) { \r\n selectButtons = element.children().children().next().children().children()[ 0 ].getElementsByTagName( 'button' ); \r\n // If available, then get the search box and the clear button\r\n if ( $scope.helperStatus.filter ) { \r\n // Get helper - search and clear button. \r\n inputField = element.children().children().next().children().children().next()[ 0 ].getElementsByTagName( 'input' ); \r\n clearButton = element.children().children().next().children().children().next()[ 0 ].getElementsByTagName( 'button' ); \r\n }\r\n }\r\n else {\r\n if ( $scope.helperStatus.filter ) { \r\n // Get helper - search and clear button. \r\n inputField = element.children().children().next().children().children()[ 0 ].getElementsByTagName( 'input' ); \r\n clearButton = element.children().children().next().children().children()[ 0 ].getElementsByTagName( 'button' );\r\n }\r\n }\r\n \r\n // Get checkboxes\r\n if ( !$scope.helperStatus.all && !$scope.helperStatus.none && !$scope.helperStatus.reset && !$scope.helperStatus.filter ) {\r\n checkboxes = element.children().children().next()[ 0 ].getElementsByTagName( 'input' );\r\n }\r\n else {\r\n checkboxes = element.children().children().next().children().next()[ 0 ].getElementsByTagName( 'input' );\r\n }\r\n\r\n // Push them into global array formElements[] \r\n for ( var i = 0; i < selectButtons.length ; i++ ) { formElements.push( selectButtons[ i ] ); }\r\n for ( var i = 0; i < inputField.length ; i++ ) { formElements.push( inputField[ i ] ); }\r\n for ( var i = 0; i < clearButton.length ; i++ ) { formElements.push( clearButton[ i ] ); }\r\n for ( var i = 0; i < checkboxes.length ; i++ ) { formElements.push( checkboxes[ i ] ); } \r\n } \r\n\r\n // check if an item has attrs.groupProperty (be it true or false)\r\n $scope.isGroupMarker = function( item , type ) {\r\n if ( typeof item[ attrs.groupProperty ] !== 'undefined' && item[ attrs.groupProperty ] === type ) return true; \r\n return false;\r\n }\r\n\r\n $scope.removeGroupEndMarker = function( item ) {\r\n if ( typeof item[ attrs.groupProperty ] !== 'undefined' && item[ attrs.groupProperty ] === false ) return false; \r\n return true;\r\n } \r\n\r\n // call this function when an item is clicked\r\n $scope.syncItems = function( item, e, ng_repeat_index ) { \r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n // if the directive is globaly disabled, do nothing\r\n if ( typeof attrs.disableProperty !== 'undefined' && item[ attrs.disableProperty ] === true ) { \r\n return false;\r\n }\r\n\r\n // if item is disabled, do nothing\r\n if ( typeof attrs.isDisabled !== 'undefined' && $scope.isDisabled === true ) { \r\n return false;\r\n } \r\n\r\n // if end group marker is clicked, do nothing\r\n if ( typeof item[ attrs.groupProperty ] !== 'undefined' && item[ attrs.groupProperty ] === false ) {\r\n return false;\r\n } \r\n\r\n var index = $scope.filteredModel.indexOf( item ); \r\n\r\n // if the start of group marker is clicked ( only for multiple selection! )\r\n // how it works:\r\n // - if, in a group, there are items which are not selected, then they all will be selected\r\n // - if, in a group, all items are selected, then they all will be de-selected \r\n if ( typeof item[ attrs.groupProperty ] !== 'undefined' && item[ attrs.groupProperty ] === true ) { \r\n\r\n // this is only for multiple selection, so if selection mode is single, do nothing\r\n if ( typeof attrs.selectionMode !== 'undefined' && attrs.selectionMode.toUpperCase() === 'SINGLE' ) {\r\n return false;\r\n }\r\n \r\n var i,j,k;\r\n var startIndex = 0;\r\n var endIndex = $scope.filteredModel.length - 1;\r\n var tempArr = [];\r\n\r\n // nest level is to mark the depth of the group.\r\n // when you get into a group (start group marker), nestLevel++\r\n // when you exit a group (end group marker), nextLevel--\r\n var nestLevel = 0; \r\n\r\n // we loop throughout the filtered model (not whole model)\r\n for( i = index ; i < $scope.filteredModel.length ; i++) { \r\n\r\n // this break will be executed when we're done processing each group\r\n if ( nestLevel === 0 && i > index ) \r\n {\r\n break;\r\n }\r\n \r\n if ( typeof $scope.filteredModel[ i ][ attrs.groupProperty ] !== 'undefined' && $scope.filteredModel[ i ][ attrs.groupProperty ] === true ) {\r\n \r\n // To cater multi level grouping\r\n if ( tempArr.length === 0 ) {\r\n startIndex = i + 1; \r\n } \r\n nestLevel = nestLevel + 1;\r\n } \r\n\r\n // if group end\r\n else if ( typeof $scope.filteredModel[ i ][ attrs.groupProperty ] !== 'undefined' && $scope.filteredModel[ i ][ attrs.groupProperty ] === false ) {\r\n\r\n nestLevel = nestLevel - 1; \r\n\r\n // cek if all are ticked or not \r\n if ( tempArr.length > 0 && nestLevel === 0 ) { \r\n\r\n var allTicked = true; \r\n\r\n endIndex = i;\r\n\r\n for ( j = 0; j < tempArr.length ; j++ ) { \r\n if ( typeof tempArr[ j ][ $scope.tickProperty ] !== 'undefined' && tempArr[ j ][ $scope.tickProperty ] === false ) {\r\n allTicked = false;\r\n break;\r\n }\r\n } \r\n\r\n if ( allTicked === true ) {\r\n for ( j = startIndex; j <= endIndex ; j++ ) {\r\n if ( typeof $scope.filteredModel[ j ][ attrs.groupProperty ] === 'undefined' ) {\r\n if ( typeof attrs.disableProperty === 'undefined' ) {\r\n $scope.filteredModel[ j ][ $scope.tickProperty ] = false;\r\n // we refresh input model as well\r\n inputModelIndex = $scope.filteredModel[ j ][ $scope.indexProperty ];\r\n $scope.inputModel[ inputModelIndex ][ $scope.tickProperty ] = false;\r\n }\r\n else if ( $scope.filteredModel[ j ][ attrs.disableProperty ] !== true ) {\r\n $scope.filteredModel[ j ][ $scope.tickProperty ] = false;\r\n // we refresh input model as well\r\n inputModelIndex = $scope.filteredModel[ j ][ $scope.indexProperty ];\r\n $scope.inputModel[ inputModelIndex ][ $scope.tickProperty ] = false;\r\n }\r\n }\r\n } \r\n }\r\n\r\n else {\r\n for ( j = startIndex; j <= endIndex ; j++ ) {\r\n if ( typeof $scope.filteredModel[ j ][ attrs.groupProperty ] === 'undefined' ) {\r\n if ( typeof attrs.disableProperty === 'undefined' ) {\r\n $scope.filteredModel[ j ][ $scope.tickProperty ] = true; \r\n // we refresh input model as well\r\n inputModelIndex = $scope.filteredModel[ j ][ $scope.indexProperty ];\r\n $scope.inputModel[ inputModelIndex ][ $scope.tickProperty ] = true;\r\n\r\n } \r\n else if ( $scope.filteredModel[ j ][ attrs.disableProperty ] !== true ) {\r\n $scope.filteredModel[ j ][ $scope.tickProperty ] = true;\r\n // we refresh input model as well\r\n inputModelIndex = $scope.filteredModel[ j ][ $scope.indexProperty ];\r\n $scope.inputModel[ inputModelIndex ][ $scope.tickProperty ] = true;\r\n }\r\n }\r\n } \r\n } \r\n }\r\n }\r\n \r\n // if data\r\n else { \r\n tempArr.push( $scope.filteredModel[ i ] ); \r\n }\r\n } \r\n }\r\n\r\n // if an item (not group marker) is clicked\r\n else {\r\n\r\n // If it's single selection mode\r\n if ( typeof attrs.selectionMode !== 'undefined' && attrs.selectionMode.toUpperCase() === 'SINGLE' ) {\r\n \r\n // first, set everything to false\r\n for( i=0 ; i < $scope.filteredModel.length ; i++) { \r\n $scope.filteredModel[ i ][ $scope.tickProperty ] = false; \r\n } \r\n for( i=0 ; i < $scope.inputModel.length ; i++) { \r\n $scope.inputModel[ i ][ $scope.tickProperty ] = false; \r\n } \r\n \r\n // then set the clicked item to true\r\n $scope.filteredModel[ index ][ $scope.tickProperty ] = true; \r\n } \r\n\r\n // Multiple\r\n else {\r\n $scope.filteredModel[ index ][ $scope.tickProperty ] = !$scope.filteredModel[ index ][ $scope.tickProperty ];\r\n }\r\n\r\n // we refresh input model as well\r\n var inputModelIndex = $scope.filteredModel[ index ][ $scope.indexProperty ]; \r\n $scope.inputModel[ inputModelIndex ][ $scope.tickProperty ] = $scope.filteredModel[ index ][ $scope.tickProperty ]; \r\n } \r\n\r\n // we execute the callback function here\r\n clickedItem = angular.copy( item ); \r\n if ( clickedItem !== null ) { \r\n $timeout( function() {\r\n delete clickedItem[ $scope.indexProperty ];\r\n delete clickedItem[ $scope.spacingProperty ]; \r\n $scope.onItemClick( { data: clickedItem } );\r\n clickedItem = null; \r\n }, 0 ); \r\n } \r\n \r\n $scope.refreshOutputModel();\r\n $scope.refreshButton(); \r\n\r\n // We update the index here\r\n prevTabIndex = $scope.tabIndex;\r\n $scope.tabIndex = ng_repeat_index + helperItemsLength;\r\n \r\n // Set focus on the hidden checkbox \r\n e.target.focus();\r\n\r\n // set & remove CSS style\r\n $scope.removeFocusStyle( prevTabIndex );\r\n $scope.setFocusStyle( $scope.tabIndex );\r\n\r\n if ( typeof attrs.selectionMode !== 'undefined' && attrs.selectionMode.toUpperCase() === 'SINGLE' ) {\r\n // on single selection mode, we then hide the checkbox layer\r\n $scope.toggleCheckboxes( e ); \r\n }\r\n } \r\n\r\n // update $scope.outputModel\r\n $scope.refreshOutputModel = function() { \r\n \r\n $scope.outputModel = [];\r\n var \r\n outputProps = [],\r\n tempObj = {};\r\n\r\n // v4.0.0\r\n if ( typeof attrs.outputProperties !== 'undefined' ) { \r\n outputProps = attrs.outputProperties.split(' '); \r\n angular.forEach( $scope.inputModel, function( value, key ) { \r\n if ( \r\n typeof value !== 'undefined' \r\n && typeof value[ attrs.groupProperty ] === 'undefined' \r\n && value[ $scope.tickProperty ] === true \r\n ) {\r\n tempObj = {};\r\n angular.forEach( value, function( value1, key1 ) { \r\n if ( outputProps.indexOf( key1 ) > -1 ) { \r\n tempObj[ key1 ] = value1; \r\n }\r\n });\r\n var index = $scope.outputModel.push( tempObj ); \r\n delete $scope.outputModel[ index - 1 ][ $scope.indexProperty ];\r\n delete $scope.outputModel[ index - 1 ][ $scope.spacingProperty ]; \r\n }\r\n }); \r\n }\r\n else {\r\n angular.forEach( $scope.inputModel, function( value, key ) { \r\n if ( \r\n typeof value !== 'undefined' \r\n && typeof value[ attrs.groupProperty ] === 'undefined' \r\n && value[ $scope.tickProperty ] === true \r\n ) {\r\n var temp = angular.copy( value );\r\n var index = $scope.outputModel.push( temp ); \r\n delete $scope.outputModel[ index - 1 ][ $scope.indexProperty ];\r\n delete $scope.outputModel[ index - 1 ][ $scope.spacingProperty ]; \r\n }\r\n }); \r\n }\r\n }\r\n\r\n // refresh button label\r\n $scope.refreshButton = function() {\r\n\r\n $scope.varButtonLabel = ''; \r\n var ctr = 0; \r\n\r\n // refresh button label...\r\n if ( $scope.outputModel.length === 0 ) {\r\n // https://github.com/isteven/angular-multi-select/pull/19 \r\n $scope.varButtonLabel = $scope.lang.nothingSelected;\r\n }\r\n else { \r\n var tempMaxLabels = $scope.outputModel.length;\r\n if ( typeof attrs.maxLabels !== 'undefined' && attrs.maxLabels !== '' ) {\r\n tempMaxLabels = attrs.maxLabels;\r\n }\r\n\r\n // if max amount of labels displayed..\r\n if ( $scope.outputModel.length > tempMaxLabels ) {\r\n $scope.more = true;\r\n }\r\n else {\r\n $scope.more = false;\r\n } \r\n \r\n angular.forEach( $scope.inputModel, function( value, key ) {\r\n if ( typeof value !== 'undefined' && value[ attrs.tickProperty ] === true ) { \r\n if ( ctr < tempMaxLabels ) { \r\n $scope.varButtonLabel += ( $scope.varButtonLabel.length > 0 ? ',