{"version":3,"sources":["webpack://ng-currency/webpack/universalModuleDefinition","webpack://ng-currency/webpack/bootstrap","webpack://ng-currency/./ng-currency-settings.provider.js","webpack://ng-currency/./ng-currency.directive.js","webpack://ng-currency/./ng-currency.module.js","webpack://ng-currency/external \"angular\""],"names":["ngCurrencySettings","_defaults","fraction","hardCap","min","undefined","max","currencySymbol","provider","defaults","ngCurrency","$filter","$locale","$timeout","require","link","scope","element","attrs","controller","ngRequired","required","active","$observe","value","reformat","$viewValue","$$rawModelValue","$render","revalidate","Number","$emit","$parsers","push","indexOf","clearValue","keepInRange","$formatters","getCurrencySymbol","$validators","isNaN","updateOn","debounce","$options","getOption","i","length","$validate","$setViewValue","toFixed","$commitViewValue","$on","bind","triggerHandler","decimalRex","dChar","RegExp","clearRex","replaceSeparator","String","decimalSeparator","NUMBER_FORMATS","DECIMAL_SEP","cleared","neg_dummy","neg_regexp","GROUP_SEP","neg_dummy_txt","replace","exec","value_dummy_txt","test","match","join","CURRENCY_SYM","$inject","module","angular","directive","name"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;;AAGA;AACA;;;;;;;;;;;;;;;;;;;;;IClFqBA,kB;;;AACjB,gCAAc;AAAA;;AACZ,SAAKC,SAAL,GAAiB;AACfC,cAAQ,EAAE,CADK;AAEfC,aAAO,EAAE,KAFM;AAGfC,SAAG,EAAEC,SAHU;AAIfC,SAAG,EAAED,SAJU;AAKfE,oBAAc,EAAEF;AALD,KAAjB;AAOD;AAED;;;;;;;2BAWO;AACL,UAAMG,QAAQ,GAAG,IAAjB;AACA,aAAO;AACL;;;AAGA,YAAIC,QAAJ,GAAe;AACb,iBAAOD,QAAQ,CAACC,QAAhB;AACD;;AANI,OAAP;AAQD;;;wBAlBc;AACb,aAAO,KAAKR,SAAZ;AACD,K;sBAEYQ,Q,EAAU;AACrB,WAAKR,SAAL,GAAiBQ,QAAjB;AACD;;;;;;;;;;;;;;;;;;ACpBL;AAAA;AAAe,SAASC,UAAT,CAAoBC,OAApB,EAA6BC,OAA7B,EAAsCC,QAAtC,EAAgDb,kBAAhD,EAAoE;AACjF,SAAO;AACLc,WAAO,EAAE,SADJ;AAELC,QAAI,EAAE,cAACC,KAAD,EAAQC,OAAR,EAAiBC,KAAjB,EAAwBC,UAAxB,EAAuC;AAAA,kCACWnB,kBAAkB,CAACS,QAD9B;AAAA,UACrCN,OADqC,yBACrCA,OADqC;AAAA,UAC5BC,GAD4B,yBAC5BA,GAD4B;AAAA,UACvBE,GADuB,yBACvBA,GADuB;AAAA,UAClBC,cADkB,yBAClBA,cADkB;AAAA,UACFL,QADE,yBACFA,QADE;AAE3C,UAAIkB,UAAU,GAAGF,KAAK,CAACG,QAAvB;AACA,UAAIC,MAAM,GAAG,IAAb;AAEAJ,WAAK,CAACK,QAAN,CAAe,YAAf,EAA6B,UAACC,KAAD,EAAW;AACtCF,cAAM,GAAIE,KAAK,KAAK,OAApB;;AACA,YAAIF,MAAJ,EAAY;AACVG,kBAAQ;AACT,SAFD,MAEO;AACLN,oBAAU,CAACO,UAAX,GAAwBP,UAAU,CAACQ,eAAnC;AACAR,oBAAU,CAACS,OAAX;AACD;AACF,OARD;AASAV,WAAK,CAACK,QAAN,CAAe,SAAf,EAA0B,UAACC,KAAD,EAAW;AACnCrB,eAAO,GAAIqB,KAAK,KAAK,MAArB;AACAK,kBAAU;AACX,OAHD;AAIAX,WAAK,CAACK,QAAN,CAAe,KAAf,EAAsB,UAACC,KAAD,EAAW;AAC/BpB,WAAG,GAAGoB,KAAK,GAAGM,MAAM,CAACN,KAAD,CAAT,GAAmBnB,SAA9B;AACAwB,kBAAU;AACX,OAHD;AAIAX,WAAK,CAACK,QAAN,CAAe,KAAf,EAAsB,UAACC,KAAD,EAAW;AAC/BlB,WAAG,GAAGkB,KAAK,GAAGM,MAAM,CAACN,KAAD,CAAT,GAAmBnB,SAA9B;AACAwB,kBAAU;AACX,OAHD;AAIAX,WAAK,CAACK,QAAN,CAAe,gBAAf,EAAiC,UAACC,KAAD,EAAW;AAC1CjB,sBAAc,GAAGiB,KAAjB;AACAC,gBAAQ;AACT,OAHD;AAIAP,WAAK,CAACK,QAAN,CAAe,UAAf,EAA2B,UAACC,KAAD,EAAW;AACpCJ,kBAAU,GAAGI,KAAb;AACAK,kBAAU;AACX,OAHD;AAIAX,WAAK,CAACK,QAAN,CAAe,UAAf,EAA2B,UAACC,KAAD,EAAW;AACpCtB,gBAAQ,GAAGsB,KAAK,IAAI,CAApB;AACAC,gBAAQ;AACRI,kBAAU;AACX,OAJD,EAlC2C,CAwC3C;;AACAhB,cAAQ,CAAC,YAAM;AACbG,aAAK,CAACe,KAAN,CAAY,gBAAZ;AACD,OAFO,CAAR;AAIAZ,gBAAU,CAACa,QAAX,CAAoBC,IAApB,CAAyB,UAACT,KAAD,EAAW;AAClC,YAAIF,MAAM,IAAI,CAACjB,SAAD,EAAY,IAAZ,EAAkB,EAAlB,EAAsB6B,OAAtB,CAA8BV,KAA9B,MAAyC,CAAC,CAAxD,EAA2D;AACzDA,eAAK,GAAGW,UAAU,CAACX,KAAD,CAAlB;AACAA,eAAK,GAAGY,WAAW,CAACN,MAAM,CAACN,KAAD,CAAP,CAAnB;AACA,iBAAOA,KAAP;AACD;;AACD,eAAOA,KAAP;AACD,OAPD;AASAL,gBAAU,CAACkB,WAAX,CAAuBJ,IAAvB,CAA4B,UAACT,KAAD,EAAW;AACrC,YAAIF,MAAM,IAAI,CAACjB,SAAD,EAAY,IAAZ,EAAkB,EAAlB,EAAsB6B,OAAtB,CAA8BV,KAA9B,MAAyC,CAAC,CAAxD,EAA2D;AACzD,iBAAOb,OAAO,CAAC,UAAD,CAAP,CAAoBa,KAApB,EAA2Bc,iBAAiB,EAA5C,EAAgDpC,QAAhD,CAAP;AACD;;AACD,eAAOsB,KAAP;AACD,OALD;;AAOAL,gBAAU,CAACoB,WAAX,CAAuBnC,GAAvB,GAA6B,UAACoB,KAAD,EAAW;AACtC,YAAI,CAACJ,UAAD,KAAgB,CAACf,SAAD,EAAY,IAAZ,EAAkB,EAAlB,EAAsB6B,OAAtB,CAA8BV,KAA9B,MAAyC,CAAC,CAA1C,IAA+CgB,KAAK,CAAChB,KAAD,CAApE,CAAJ,EAAkF;AAChF,iBAAO,IAAP;AACD;;AACD,eAAO,CAACF,MAAD,IACL,CAACjB,SAAD,EAAY,IAAZ,EAAkB6B,OAAlB,CAA0B9B,GAA1B,MAAmC,CAAC,CAD/B,IACoCoC,KAAK,CAACpC,GAAD,CADzC,IAELoB,KAAK,IAAIpB,GAFX;AAGD,OAPD;;AASAe,gBAAU,CAACoB,WAAX,CAAuBjC,GAAvB,GAA6B,UAACkB,KAAD,EAAW;AACtC,YAAI,CAACJ,UAAD,KAAgB,CAACf,SAAD,EAAY,IAAZ,EAAkB,EAAlB,EAAsB6B,OAAtB,CAA8BV,KAA9B,MAAyC,CAAC,CAA1C,IAA+CgB,KAAK,CAAChB,KAAD,CAApE,CAAJ,EAAkF;AAChF,iBAAO,IAAP;AACD;;AACD,eAAO,CAACF,MAAD,IACL,CAACjB,SAAD,EAAY,IAAZ,EAAkB6B,OAAlB,CAA0B5B,GAA1B,MAAmC,CAAC,CAD/B,IACoCkC,KAAK,CAAClC,GAAD,CADzC,IAELkB,KAAK,IAAIlB,GAFX;AAGD,OAPD;;AASAa,gBAAU,CAACoB,WAAX,CAAuBrC,QAAvB,GAAkC,UAACsB,KAAD,EAAW;AAC3C,eAAO,CAACF,MAAD,IAAW,CAACE,KAAZ,IAAqB,CAACgB,KAAK,CAAChB,KAAD,CAAlC;AACD,OAFD;;AAIA,eAASC,QAAT,GAAoB;AAClB,YAAIH,MAAJ,EAAY;AACV,cAAIE,KAAJ;AACA,cAAIiB,QAAJ,EAAcC,QAAd;;AACA,cAAIvB,UAAU,CAACwB,QAAf,EAAyB;AACvB;AACA;AACA;AACA,gBAAIxB,UAAU,CAACwB,QAAX,CAAoBC,SAAxB,EAAmC;AACjCH,sBAAQ,GAAGtB,UAAU,CAACwB,QAAX,CAAoBC,SAApB,CAA8B,UAA9B,CAAX;AACAF,sBAAQ,GAAGvB,UAAU,CAACwB,QAAX,CAAoBC,SAApB,CAA8B,UAA9B,CAAX;AACD,aAHD,MAGO;AACLH,sBAAQ,GAAGtB,UAAU,CAACwB,QAAX,CAAoBF,QAA/B;AACAC,sBAAQ,GAAGvB,UAAU,CAACwB,QAAX,CAAoBD,QAA/B;AACD;AACF;;AACD,cAAID,QAAQ,KAAK,MAAb,IAAuBC,QAA3B,EAAqC;AACnClB,iBAAK,GAAGL,UAAU,CAACO,UAAnB;;AACA,iBAAK,IAAImB,CAAC,GAAG1B,UAAU,CAACa,QAAX,CAAoBc,MAApB,GAA6B,CAA1C,EAA6CD,CAAC,IAAI,CAAlD,EAAqDA,CAAC,EAAtD,EAA0D;AACxDrB,mBAAK,GAAGL,UAAU,CAACa,QAAX,CAAoBa,CAApB,EAAuBrB,KAAvB,CAAR;AACD;AACF,WALD,MAKO;AACLA,iBAAK,GAAGL,UAAU,CAACQ,eAAnB;AACD;;AACD,eAAK,IAAIkB,EAAC,GAAG1B,UAAU,CAACkB,WAAX,CAAuBS,MAAvB,GAAgC,CAA7C,EAAgDD,EAAC,IAAI,CAArD,EAAwDA,EAAC,EAAzD,EAA6D;AAC3DrB,iBAAK,GAAGL,UAAU,CAACkB,WAAX,CAAuBQ,EAAvB,EAA0BrB,KAA1B,CAAR;AACD;;AACDL,oBAAU,CAACO,UAAX,GAAwBF,KAAxB;AACAL,oBAAU,CAACS,OAAX;AACD;AACF;;AAED,eAASC,UAAT,GAAsB;AACpBV,kBAAU,CAAC4B,SAAX;;AACA,YAAIzB,MAAJ,EAAY;AACV,cAAME,KAAK,GAAGY,WAAW,CAACjB,UAAU,CAACQ,eAAZ,CAAzB;;AACA,cAAIH,KAAK,KAAKL,UAAU,CAACQ,eAAzB,EAA0C;AACxCR,sBAAU,CAAC6B,aAAX,CAAyBxB,KAAK,CAACyB,OAAN,CAAc/C,QAAd,CAAzB;AACAiB,sBAAU,CAAC+B,gBAAX;AACAzB,oBAAQ;AACT;AACF;AACF;;AAED,eAASW,WAAT,CAAqBZ,KAArB,EAA4B;AAC1B,YAAIrB,OAAJ,EAAa;AACX,cAAIG,GAAG,KAAKD,SAAR,IAAqBmB,KAAK,GAAGlB,GAAjC,EAAsC;AACpCkB,iBAAK,GAAGlB,GAAR;AACD,WAFD,MAEO,IAAIF,GAAG,KAAKC,SAAR,IAAqBmB,KAAK,GAAGpB,GAAjC,EAAsC;AAC3CoB,iBAAK,GAAGpB,GAAR;AACD;AACF;;AACD,eAAOoB,KAAP;AACD;;AAEDR,WAAK,CAACmC,GAAN,CAAU,gBAAV,EAA4B,YAAM;AAChCtB,kBAAU;AACVJ,gBAAQ;AACT,OAHD;AAKAR,aAAO,CAACmC,IAAR,CAAa,OAAb,EAAsB,YAAM;AAC1B,YAAI9B,MAAJ,EAAY;AACV,cAAME,KAAK,GAAGW,UAAU,CAAChB,UAAU,CAACO,UAAZ,EAAwB,KAAxB,CAAxB;;AAEA,cAAIP,UAAU,CAACO,UAAX,KAA0BF,KAA9B,EAAqC;AACnCL,sBAAU,CAACO,UAAX,GAAwBF,KAAxB;AACAL,sBAAU,CAACS,OAAX;AACAX,mBAAO,CAACoC,cAAR,CAAuB,OAAvB;AACD;AACF;AACF,OAVD;AAYApC,aAAO,CAACmC,IAAR,CAAa,MAAb,EAAqB3B,QAArB,EA3J2C,CA6J3C;;AAEA,eAAS6B,UAAT,CAAoBC,KAApB,EAA2B;AACzB,eAAOC,MAAM,CAAC,eAAeD,KAAhB,EAAuB,GAAvB,CAAb;AACD;;AAED,eAASE,QAAT,CAAkBF,KAAlB,EAAyB;AACvB,eAAOC,MAAM,CAAC,iBAAiBD,KAAjB,GAAyB,gBAAzB,GAA4CA,KAA5C,GAAoD,eAApD,GAAsErD,QAAtE,GAAiF,GAAlF,EAAuF,GAAvF,CAAb;AACD;;AAED,eAASiC,UAAT,CAAoBX,KAApB,EAAoD;AAAA,YAAzBkC,gBAAyB,uEAAN,IAAM;AAClDlC,aAAK,GAAGmC,MAAM,CAACnC,KAAD,CAAd;AACA,YAAMoC,gBAAgB,GAAGhD,OAAO,CAACiD,cAAR,CAAuBC,WAAhD;AACA,YAAIC,OAAO,GAAG,IAAd,CAHkD,CAKlD;;AACA,YAAMC,SAAS,GAAGrD,OAAO,CAAC,UAAD,CAAP,CAAoB,IAApB,EAA0B2B,iBAAiB,EAA3C,EAA+CpC,QAA/C,CAAlB;AACA,YAAM+D,UAAU,GAAGT,MAAM,CAAC,UAAUI,gBAAV,GAA6BhD,OAAO,CAACiD,cAAR,CAAuBK,SAApD,GAAgE,IAAjE,CAAzB;AACA,YAAMC,aAAa,GAAGH,SAAS,CAACI,OAAV,CAAkBH,UAAU,CAACI,IAAX,CAAgBL,SAAhB,CAAlB,EAA8C,EAA9C,CAAtB;AACA,YAAMM,eAAe,GAAG9C,KAAK,CAAC4C,OAAN,CAAcH,UAAU,CAACI,IAAX,CAAgB7C,KAAhB,CAAd,EAAsC,EAAtC,CAAxB,CATkD,CAWlD;;AACA,YAAI2C,aAAa,KAAKG,eAAtB,EAAuC;AACrC9C,eAAK,GAAG,MAAMyC,UAAU,CAACI,IAAX,CAAgB7C,KAAhB,CAAd;AACD;;AAED,YAAIgC,MAAM,CAAC,WAAD,EAAc,GAAd,CAAN,CAAyBe,IAAzB,CAA8B/C,KAA9B,CAAJ,EAA0C;AACxCA,eAAK,GAAG,IAAR;AACD;;AAED,YAAI8B,UAAU,CAACM,gBAAD,CAAV,CAA6BW,IAA7B,CAAkC/C,KAAlC,CAAJ,EAA8C;AAC5CuC,iBAAO,GAAGvC,KAAK,CAACgD,KAAN,CAAYlB,UAAU,CAACM,gBAAD,CAAtB,EACPa,IADO,CACF,EADE,EACED,KADF,CACQf,QAAQ,CAACG,gBAAD,CADhB,KACuC,CAAC,EAAD,CADjD;AAGAG,iBAAO,GAAGA,OAAO,CAAC,CAAD,CAAjB;AACAA,iBAAO,GAAGL,gBAAgB,GAAGK,OAAO,CAACK,OAAR,CAAgBR,gBAAhB,EAAkC,GAAlC,CAAH,GAA4CG,OAAtE;AACD;;AAED,eAAOA,OAAO,IAAI,IAAlB;AACD;;AAED,eAASzB,iBAAT,GAA6B;AAC3B,eAAO/B,cAAc,KAAKF,SAAnB,GAA+BO,OAAO,CAACiD,cAAR,CAAuBa,YAAtD,GAAqEnE,cAA5E;AACD;AACF;AA3MI,GAAP;AA6MD;AACDG,UAAU,CAACiE,OAAX,GAAqB,CAAC,SAAD,EAAY,SAAZ,EAAuB,UAAvB,EAAmC,oBAAnC,CAArB,C;;;;;;;;;;;;AC/MA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA,IAAMC,MAAM,GAAGC,8CAAO,CAACD,MAAR,CAAe,aAAf,EAA8B,EAA9B,CAAf;AAEAA,MAAM,CAACpE,QAAP,CAAgB,oBAAhB,EAAsCR,yEAAtC;AACA4E,MAAM,CAACE,SAAP,CAAiB,YAAjB,EAA+BpE,iEAA/B;AAEekE,qEAAM,CAACG,IAAtB,E;;;;;;;;;;;;;;;;;;;;;;;ACTA,qD","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})(window, function(__WEBPACK_EXTERNAL_MODULE_angular__) {\nreturn "," \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","export default class ngCurrencySettings {\n    constructor() {\n      this._defaults = {\n        fraction: 2,\n        hardCap: false,\n        min: undefined,\n        max: undefined,\n        currencySymbol: undefined\n      };\n    }\n\n    /**\n     * The default property values for 'ng-currency'\n     */\n    get defaults() {\n      return this._defaults;\n    }\n\n    set defaults(defaults) {\n      this._defaults = defaults;\n    }\n\n    $get() {\n      const provider = this;\n      return {\n        /**\n         * The default property values for 'ng-currency'\n         */\n        get defaults() {\n          return provider.defaults;\n        }\n      };\n    }\n}\n","export default function ngCurrency($filter, $locale, $timeout, ngCurrencySettings) {\n  return {\n    require: 'ngModel',\n    link: (scope, element, attrs, controller) => {\n      let { hardCap, min, max, currencySymbol, fraction } = ngCurrencySettings.defaults;\n      let ngRequired = attrs.required;\n      let active = true;\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      attrs.$observe('required', (value) => {\n        ngRequired = value;\n        revalidate();\n      });\n      attrs.$observe('fraction', (value) => {\n        fraction = value || 2;\n        reformat();\n        revalidate();\n      });\n\n      // HACK(nick-woodward): Seriously angular?\n      $timeout(() => {\n        scope.$emit('currencyRedraw');\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, debounce;\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            if (controller.$options.getOption) {\n              updateOn = controller.$options.getOption('updateOn');\n              debounce = controller.$options.getOption('debounce');\n            } else {\n              updateOn = controller.$options.updateOn;\n              debounce = controller.$options.debounce;\n            }\n          }\n          if (updateOn === 'blur' || debounce) {\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 value = clearValue(controller.$viewValue, false);\n\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, replaceSeparator = true) {\n        value = String(value);\n        const decimalSeparator = $locale.NUMBER_FORMATS.DECIMAL_SEP;\n        let cleared = null;\n\n        // Replace negative pattern to minus sign (-)\n        const neg_dummy = $filter('currency')('-1', getCurrencySymbol(), fraction);\n        const neg_regexp = RegExp('[0-9.' + decimalSeparator + $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(decimalSeparator).test(value)) {\n          cleared = value.match(decimalRex(decimalSeparator))\n            .join('').match(clearRex(decimalSeparator)) || [''];\n\n          cleared = cleared[0];\n          cleared = replaceSeparator ? cleared.replace(decimalSeparator, '.') : cleared;\n        }\n\n        return cleared || null;\n      }\n\n      function getCurrencySymbol() {\n        return currencySymbol === undefined ? $locale.NUMBER_FORMATS.CURRENCY_SYM : currencySymbol;\n      }\n    }\n  };\n}\nngCurrency.$inject = ['$filter', '$locale', '$timeout', 'ngCurrencySettings'];\n","import angular from 'angular';\nimport ngCurrencySettings from './ng-currency-settings.provider.js';\nimport ngCurrency from './ng-currency.directive.js';\n\nconst module = angular.module('ng-currency', []);\n\nmodule.provider('ngCurrencySettings', ngCurrencySettings);\nmodule.directive('ngCurrency', ngCurrency);\n\nexport default module.name;\n","module.exports = __WEBPACK_EXTERNAL_MODULE_angular__;"],"sourceRoot":""}