{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///ng-currency.js","webpack:///webpack/bootstrap 1f5dc19c2779b099005e","webpack:///./ng-currency.module.js","webpack:///./ng-currency.directive.js","webpack:///external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_angular","_angular2","_ngCurrencyDirective","_ngCurrencyDirective2","directive","name","ngCurrency","$filter","$locale","link","hardCap","element","attrs","controller","active","updateOn","$options","getOption","$viewValue","$parsers","i","$$rawModelValue","$formatters","_i","$render","$validate","$setViewValue","$commitViewValue","toFixed","fraction","reformat","max","undefined","min","RegExp","dChar","dSeparator","cleared","NUMBER_FORMATS","DECIMAL_SEP","indexOf","neg_regexp","neg_dummy_txt","neg_dummy","replace","GROUP_SEP","value_dummy_txt","exec","test","decimalRex","match","clearRex","currencySymbol","CURRENCY_SYM","ngRequired","revalidate","Number","clearValue","keepInRange","getCurrencySymbol","isNaN","groupRegex","triggerHandler","bind","$inject"],"mappings":"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","file":"ng-currency.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ng-currency\", [\"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ng-currency\"] = factory(require(\"angular\"));\n\telse\n\t\troot[\"ng-currency\"] = factory(root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _angular = __webpack_require__(2);\n\t\n\tvar _angular2 = _interopRequireDefault(_angular);\n\t\n\tvar _ngCurrencyDirective = __webpack_require__(1);\n\t\n\tvar _ngCurrencyDirective2 = _interopRequireDefault(_ngCurrencyDirective);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _module = _angular2.default.module('ng-currency', []);\n\t\n\t_module.directive('ngCurrency', _ngCurrencyDirective2.default);\n\t\n\texports.default = _module.name;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tngCurrency.$inject = [\"$filter\", \"$locale\"];\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = ngCurrency;\n\t/* @ngInject */\n\tfunction ngCurrency($filter, $locale) {\n\t return {\n\t require: 'ngModel',\n\t link: function link(scope, element, attrs, controller) {\n\t var hardCap = void 0,\n\t min = void 0,\n\t max = void 0,\n\t currencySymbol = void 0,\n\t ngRequired = ['', 'true'].indexOf(attrs.ngRequired) !== -1;\n\t var active = true;\n\t var fraction = 2;\n\t\n\t attrs.$observe('ngCurrency', function (value) {\n\t active = value !== 'false';\n\t if (active) {\n\t reformat();\n\t } else {\n\t controller.$viewValue = controller.$$rawModelValue;\n\t controller.$render();\n\t }\n\t });\n\t attrs.$observe('hardCap', function (value) {\n\t hardCap = value === 'true';\n\t revalidate();\n\t });\n\t attrs.$observe('min', function (value) {\n\t min = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('max', function (value) {\n\t max = value ? Number(value) : undefined;\n\t revalidate();\n\t });\n\t attrs.$observe('currencySymbol', function (value) {\n\t currencySymbol = value;\n\t reformat();\n\t });\n\t scope.$watch(attrs.ngRequired, function (value) {\n\t ngRequired = value;\n\t revalidate();\n\t });\n\t attrs.$observe('fraction', function (value) {\n\t fraction = value || 2;\n\t reformat();\n\t revalidate();\n\t });\n\t\n\t controller.$parsers.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t value = clearValue(value);\n\t value = keepInRange(Number(value));\n\t return value;\n\t }\n\t return value;\n\t });\n\t\n\t controller.$formatters.push(function (value) {\n\t if (active && [undefined, null, ''].indexOf(value) === -1) {\n\t return $filter('currency')(value, getCurrencySymbol(), fraction);\n\t }\n\t return value;\n\t });\n\t\n\t controller.$validators.min = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(min) !== -1 || isNaN(min) || value >= min;\n\t };\n\t\n\t controller.$validators.max = function (value) {\n\t if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n\t return true;\n\t }\n\t return !active || [undefined, null].indexOf(max) !== -1 || isNaN(max) || value <= max;\n\t };\n\t\n\t controller.$validators.fraction = function (value) {\n\t return !active || !value || !isNaN(value);\n\t };\n\t\n\t function reformat() {\n\t if (active) {\n\t var value = void 0;\n\t var updateOn = void 0;\n\t if (controller.$options) {\n\t // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n\t // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n\t // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n\t updateOn = controller.$options.getOption ? controller.$options.getOption('updateOn') : controller.$options.updateOn;\n\t }\n\t if (updateOn === 'blur') {\n\t value = controller.$viewValue;\n\t for (var i = controller.$parsers.length - 1; i >= 0; i--) {\n\t value = controller.$parsers[i](value);\n\t }\n\t } else {\n\t value = controller.$$rawModelValue;\n\t }\n\t for (var _i = controller.$formatters.length - 1; _i >= 0; _i--) {\n\t value = controller.$formatters[_i](value);\n\t }\n\t controller.$viewValue = value;\n\t controller.$render();\n\t }\n\t }\n\t\n\t function revalidate() {\n\t controller.$validate();\n\t if (active) {\n\t var value = keepInRange(controller.$$rawModelValue);\n\t if (value !== controller.$$rawModelValue) {\n\t controller.$setViewValue(value.toFixed(fraction));\n\t controller.$commitViewValue();\n\t reformat();\n\t }\n\t }\n\t }\n\t\n\t function keepInRange(value) {\n\t if (hardCap) {\n\t if (max !== undefined && value > max) {\n\t value = max;\n\t } else if (min !== undefined && value < min) {\n\t value = min;\n\t }\n\t }\n\t return value;\n\t }\n\t\n\t scope.$on('currencyRedraw', function () {\n\t revalidate();\n\t reformat();\n\t });\n\t\n\t element.bind('focus', function () {\n\t if (active) {\n\t var groupRegex = new RegExp('\\\\' + $locale.NUMBER_FORMATS.GROUP_SEP, 'g');\n\t var value = [undefined, null, ''].indexOf(controller.$$rawModelValue) === -1 ? $filter('number')(controller.$$rawModelValue, fraction).replace(groupRegex, '') : controller.$$rawModelValue;\n\t if (controller.$viewValue !== value) {\n\t controller.$viewValue = value;\n\t controller.$render();\n\t element.triggerHandler('focus');\n\t }\n\t }\n\t });\n\t\n\t element.bind('blur', reformat);\n\t\n\t // TODO: Rewrite this parsing logic to more readable.\n\t\n\t function decimalRex(dChar) {\n\t return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n\t }\n\t\n\t function clearRex(dChar) {\n\t return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n\t }\n\t\n\t function clearValue(value) {\n\t value = String(value);\n\t var dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n\t var cleared = null;\n\t\n\t if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 && value.indexOf('.') !== -1 && fraction > 0) {\n\t dSeparator = '.';\n\t }\n\t\n\t // Replace negative pattern to minus sign (-)\n\t var neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n\t var neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n\t var neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n\t var value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\t\n\t // If is negative\n\t if (neg_dummy_txt === value_dummy_txt) {\n\t value = '-' + neg_regexp.exec(value);\n\t }\n\t\n\t if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n\t value = '-0';\n\t }\n\t\n\t if (decimalRex(dSeparator).test(value)) {\n\t cleared = value.match(decimalRex(dSeparator)).join('').match(clearRex(dSeparator));\n\t cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n\t }\n\t\n\t return cleared;\n\t }\n\t\n\t function getCurrencySymbol() {\n\t return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n\t }\n\t }\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** ng-currency.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 1f5dc19c2779b099005e\n **/","import angular from 'angular';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.module.js\n **/","/* @ngInject */\nexport default function ngCurrency($filter, $locale) {\n return {\n require: 'ngModel',\n link: (scope, element, attrs, controller) => {\n let hardCap, min, max, currencySymbol, ngRequired = ['', 'true'].indexOf(attrs.ngRequired) !== -1;\n let active = true;\n let fraction = 2;\n\n attrs.$observe('ngCurrency', (value) => {\n active = (value !== 'false');\n if (active) {\n reformat();\n } else {\n controller.$viewValue = controller.$$rawModelValue;\n controller.$render();\n }\n });\n attrs.$observe('hardCap', (value) => {\n hardCap = (value === 'true');\n revalidate();\n });\n attrs.$observe('min', (value) => {\n min = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('max', (value) => {\n max = value ? Number(value) : undefined;\n revalidate();\n });\n attrs.$observe('currencySymbol', (value) => {\n currencySymbol = value;\n reformat();\n });\n scope.$watch(attrs.ngRequired, (value) => {\n ngRequired = value;\n revalidate();\n });\n attrs.$observe('fraction', (value) => {\n fraction = value || 2;\n reformat();\n revalidate();\n });\n\n controller.$parsers.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n value = clearValue(value);\n value = keepInRange(Number(value));\n return value;\n }\n return value;\n });\n\n controller.$formatters.push((value) => {\n if (active && [undefined, null, ''].indexOf(value) === -1) {\n return $filter('currency')(value, getCurrencySymbol(), fraction);\n }\n return value;\n });\n\n controller.$validators.min = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(min) !== -1 || isNaN(min) ||\n value >= min;\n };\n\n controller.$validators.max = (value) => {\n if (!ngRequired && ([undefined, null, ''].indexOf(value) !== -1 || isNaN(value))) {\n return true;\n }\n return !active ||\n [undefined, null].indexOf(max) !== -1 || isNaN(max) ||\n value <= max;\n };\n\n controller.$validators.fraction = (value) => {\n return !active || !value || !isNaN(value);\n };\n\n function reformat() {\n if (active) {\n let value;\n let updateOn;\n if (controller.$options) {\n // HACK(nick-woodward): this is to maintain backwards compatability with Angular 1.5.9 and lower.\n // TODO(nick-woodward): This should be removed when ngCurrency does a 2.0.0 release\n // Reference: https://github.com/angular/angular.js/commit/296cfce40c25e9438bfa46a0eb27240707a10ffa\n updateOn = controller.$options.getOption ? controller.$options.getOption('updateOn') : controller.$options.updateOn;\n }\n if (updateOn === 'blur') {\n value = controller.$viewValue;\n for (let i = controller.$parsers.length - 1; i >= 0; i--) {\n value = controller.$parsers[i](value);\n }\n } else {\n value = controller.$$rawModelValue;\n }\n for (let i = controller.$formatters.length - 1; i >= 0; i--) {\n value = controller.$formatters[i](value);\n }\n controller.$viewValue = value;\n controller.$render();\n }\n }\n\n function revalidate() {\n controller.$validate();\n if (active) {\n const value = keepInRange(controller.$$rawModelValue);\n if (value !== controller.$$rawModelValue) {\n controller.$setViewValue(value.toFixed(fraction));\n controller.$commitViewValue();\n reformat();\n }\n }\n }\n\n function keepInRange(value) {\n if (hardCap) {\n if (max !== undefined && value > max) {\n value = max;\n } else if (min !== undefined && value < min) {\n value = min;\n }\n }\n return value;\n }\n\n scope.$on('currencyRedraw', () => {\n revalidate();\n reformat();\n });\n\n element.bind('focus', () => {\n if (active) {\n const groupRegex = new RegExp(`\\\\${$locale.NUMBER_FORMATS.GROUP_SEP}`, 'g');\n const value = [undefined, null, ''].indexOf(controller.$$rawModelValue) === -1 ? $filter('number')(controller.$$rawModelValue, fraction).replace(groupRegex, '') : controller.$$rawModelValue;\n if (controller.$viewValue !== value) {\n controller.$viewValue = value;\n controller.$render();\n element.triggerHandler('focus');\n }\n }\n });\n\n element.bind('blur', reformat);\n\n // TODO: Rewrite this parsing logic to more readable.\n\n function decimalRex(dChar) {\n return RegExp('\\\\d|\\\\-|\\\\' + dChar, 'g');\n }\n\n function clearRex(dChar) {\n return RegExp('\\\\-{0,1}((\\\\' + dChar + ')|([0-9]{1,}\\\\' + dChar + '?))&?[0-9]{0,' + fraction + '}', 'g');\n }\n\n function clearValue(value) {\n value = String(value);\n let dSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n let cleared = null;\n\n if (value.indexOf($locale.NUMBER_FORMATS.DECIMAL_SEP) === -1 &&\n value.indexOf('.') !== -1 &&\n fraction > 0) {\n dSeparator = '.';\n }\n\n // Replace negative pattern to minus sign (-)\n const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n const neg_regexp = RegExp('[0-9.' + $locale.NUMBER_FORMATS.DECIMAL_SEP + $locale.NUMBER_FORMATS.GROUP_SEP + ']+');\n const neg_dummy_txt = neg_dummy.replace(neg_regexp.exec(neg_dummy), '');\n const value_dummy_txt = value.replace(neg_regexp.exec(value), '');\n\n // If is negative\n if (neg_dummy_txt === value_dummy_txt) {\n value = '-' + neg_regexp.exec(value);\n }\n\n if (RegExp('^-[\\\\s]*$', 'g').test(value)) {\n value = '-0';\n }\n\n if (decimalRex(dSeparator).test(value)) {\n cleared = value.match(decimalRex(dSeparator))\n .join('').match(clearRex(dSeparator));\n cleared = cleared ? cleared[0].replace(dSeparator, '.') : null;\n }\n\n return cleared;\n }\n\n function getCurrencySymbol() {\n return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n }\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./ng-currency.directive.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"angular\",\"commonjs2\":\"angular\",\"commonjs\":\"angular\",\"amd\":\"angular\"}\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""}