diff --git a/public/js/imask.min.js b/public/js/imask.min.js new file mode 100644 index 00000000..b12688e9 --- /dev/null +++ b/public/js/imask.min.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.IMask=e()}(this,function(){"use strict";var t=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},e={}.hasOwnProperty,u=function(t,u){return e.call(t,u)},n={}.toString,r=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==function(t){return n.call(t).slice(8,-1)}(t)?t.split(""):Object(t)},i=function(e){return r(t(e))},s=Math.ceil,a=Math.floor,o=function(t){return isNaN(t=+t)?0:(t>0?a:s)(t)},l=Math.min,h=function(t){return t>0?l(o(t),9007199254740991):0},c=Math.max,f=Math.min;function p(t,e){return t(e={exports:{}},e.exports),e.exports}var d,v,g=p(function(t){var e=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)}),y=g["__core-js_shared__"]||(g["__core-js_shared__"]={}),_=0,k=Math.random(),m=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++_+k).toString(36))},A=y[d="keys"]||(y[d]={}),F=(v=!1,function(t,e,u){var n,r=i(t),s=h(r.length),a=function(t,e){return(t=o(t))<0?c(t+e,0):f(t,e)}(u,s);if(v&&e!=e){for(;s>a;)if((n=r[a++])!=n)return!0}else for(;s>a;a++)if((v||a in r)&&r[a]===e)return v||a||0;return!v&&-1}),D=function(t){return A[t]||(A[t]=m(t))}("IE_PROTO"),E="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","),C=Object.keys||function(t){return function(t,e){var n,r=i(t),s=0,a=[];for(n in r)n!=D&&u(r,n)&&a.push(n);for(;e.length>s;)u(r,n=e[s++])&&(~F(a,n)||a.push(n));return a}(t,E)},b=p(function(t){var e=t.exports={version:"2.5.5"};"number"==typeof __e&&(__e=e)}),B=(b.version,function(t){return"object"==typeof t?null!==t:"function"==typeof t}),P=function(t){if(!B(t))throw TypeError(t+" is not an object!");return t},w=function(t){try{return!!t()}catch(t){return!0}},S=!w(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}),O=g.document,x=B(O)&&B(O.createElement),T=!S&&!w(function(){return 7!=Object.defineProperty((t="div",x?O.createElement(t):{}),"a",{get:function(){return 7}}).a;var t}),I=Object.defineProperty,M={f:S?Object.defineProperty:function(t,e,u){if(P(t),e=function(t,e){if(!B(t))return t;var u,n;if(e&&"function"==typeof(u=t.toString)&&!B(n=u.call(t)))return n;if("function"==typeof(u=t.valueOf)&&!B(n=u.call(t)))return n;if(!e&&"function"==typeof(u=t.toString)&&!B(n=u.call(t)))return n;throw TypeError("Can't convert object to primitive value")}(e,!0),P(u),T)try{return I(t,e,u)}catch(t){}if("get"in u||"set"in u)throw TypeError("Accessors not supported!");return"value"in u&&(t[e]=u.value),t}},j=S?function(t,e,u){return M.f(t,e,function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}(1,u))}:function(t,e,u){return t[e]=u,t},V=p(function(t){var e=m("src"),n=Function.toString,r=(""+n).split("toString");b.inspectSource=function(t){return n.call(t)},(t.exports=function(t,n,i,s){var a="function"==typeof i;a&&(u(i,"name")||j(i,"name",n)),t[n]!==i&&(a&&(u(i,e)||j(i,e,t[n]?""+t[n]:r.join(String(n)))),t===g?t[n]=i:s?t[n]?t[n]=i:j(t,n,i):(delete t[n],j(t,n,i)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[e]||n.call(this)})}),R=function(t,e,u){if(function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!")}(t),void 0===e)return t;switch(u){case 1:return function(u){return t.call(e,u)};case 2:return function(u,n){return t.call(e,u,n)};case 3:return function(u,n,r){return t.call(e,u,n,r)}}return function(){return t.apply(e,arguments)}},H=function(t,e,u){var n,r,i,s,a=t&H.F,o=t&H.G,l=t&H.S,h=t&H.P,c=t&H.B,f=o?g:l?g[e]||(g[e]={}):(g[e]||{}).prototype,p=o?b:b[e]||(b[e]={}),d=p.prototype||(p.prototype={});for(n in o&&(u=e),u)i=((r=!a&&f&&void 0!==f[n])?f:u)[n],s=c&&r?R(i,g):h&&"function"==typeof i?R(Function.call,i):i,f&&V(f,n,i,t&H.U),p[n]!=i&&j(p,n,s),h&&d[n]!=i&&(d[n]=i)};g.core=b,H.F=1,H.G=2,H.S=4,H.P=8,H.B=16,H.W=32,H.U=64,H.R=128;var N,L,U,Y,z=H;N="keys",L=function(){return function(e){return C(function(e){return Object(t(e))}(e))}},U=(b.Object||{})[N]||Object[N],(Y={})[N]=L(U),z(z.S+z.F*w(function(){U(1)}),"Object",Y);b.Object.keys;var G=function(e){var u=String(t(this)),n="",r=o(e);if(r<0||r==1/0)throw RangeError("Count can't be negative");for(;r>0;(r>>>=1)&&(u+=u))1&r&&(n+=u);return n};z(z.P,"String",{repeat:G});b.String.repeat;var Z=function(e,u,n,r){var i=String(t(e)),s=i.length,a=void 0===n?" ":String(n),o=h(u);if(o<=s||""==a)return i;var l=o-s,c=G.call(a,Math.ceil(l/a.length));return c.length>l&&(c=c.slice(0,l)),r?c+i:i+c},W=g.navigator,$=W&&W.userAgent||"";z(z.P+z.F*/Version\/10\.\d+(\.\d+)? Safari\//.test($),"String",{padStart:function(t){return Z(this,t,arguments.length>1?arguments[1]:void 0,!0)}});b.String.padStart;z(z.P+z.F*/Version\/10\.\d+(\.\d+)? Safari\//.test($),"String",{padEnd:function(t){return Z(this,t,arguments.length>1?arguments[1]:void 0,!1)}});b.String.padEnd;var X="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},q=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},J=function(){function t(t,e){for(var u=0;u2&&void 0!==arguments[2]?arguments[2]:"";return it(t)?t:t?e:u}var at={NONE:0,LEFT:-1,RIGHT:1};function ot(t,e){return e===at.LEFT&&--t,t}function lt(t){return t.replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1")}var ht="undefined"!=typeof window&&window||"undefined"!=typeof global&&global.global===global&&global||"undefined"!=typeof self&&self.self===self&&self||{},ct=function(){function t(e,u,n,r){for(q(this,t),this.value=e,this.cursorPos=u,this.oldValue=n,this.oldSelection=r;this.value.slice(0,this.startChangePos)!==this.oldValue.slice(0,this.startChangePos);)--this.oldSelection.start}return J(t,[{key:"startChangePos",get:function(){return Math.min(this.cursorPos,this.oldSelection.start)}},{key:"insertedCount",get:function(){return this.cursorPos-this.startChangePos}},{key:"inserted",get:function(){return this.value.substr(this.startChangePos,this.insertedCount)}},{key:"removedCount",get:function(){return Math.max(this.oldSelection.end-this.startChangePos||this.oldValue.length-this.value.length,0)}},{key:"removed",get:function(){return this.oldValue.substr(this.startChangePos,this.removedCount)}},{key:"head",get:function(){return this.value.substring(0,this.startChangePos)}},{key:"tail",get:function(){return this.value.substring(this.startChangePos+this.insertedCount)}},{key:"removeDirection",get:function(){return!this.removedCount||this.insertedCount?at.NONE:this.oldSelection.end===this.cursorPos||this.oldSelection.start===this.cursorPos?at.RIGHT:at.LEFT}}]),t}(),ft=function(){function t(e){q(this,t),K(this,{inserted:"",overflow:!1,shift:0},e)}return J(t,[{key:"aggregate",value:function(t){return t.rawInserted&&(this.rawInserted+=t.rawInserted),this.inserted+=t.inserted,this.shift+=t.shift,this.overflow=this.overflow||t.overflow,this}},{key:"offset",get:function(){return this.shift+this.inserted.length}},{key:"rawInserted",get:function(){return null!=this._rawInserted?this._rawInserted:this.inserted},set:function(t){this._rawInserted=t}}]),t}(),pt=function(){function t(e){q(this,t),this._value="",this._update(e),this.isInitialized=!0}return J(t,[{key:"updateOptions",value:function(t){this.withValueRefresh(this._update.bind(this,t))}},{key:"_update",value:function(t){K(this,t)}},{key:"clone",value:function(){var e=new t(this);return e._value=this.value.slice(),e}},{key:"assign",value:function(t){return K(this,t)}},{key:"reset",value:function(){this._value=""}},{key:"resolve",value:function(t){return this.reset(),this._append(t,{input:!0}),this._appendTail(),this.doCommit(),this.value}},{key:"nearestInputPos",value:function(t,e){return t}},{key:"extractInput",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;return this.value.slice(t,e)}},{key:"_extractTail",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;return{value:this.extractInput(t,e),fromPos:t,toPos:e}}},{key:"_appendTail",value:function(t){return this._append(t?t.value:"",{tail:!0})}},{key:"_append",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},u=this.value.length,n=this.clone(),r=!1;t=this.doPrepare(t,e);for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length-t;return this._value=this.value.slice(0,t)+this.value.slice(t+e),new ft}},{key:"withValueRefresh",value:function(t){if(this._refreshing||!this.isInitialized)return t();this._refreshing=!0;var e=this.unmaskedValue,u=this.value,n=t();return this.resolve(u)!==u&&(this.unmaskedValue=e),delete this._refreshing,n}},{key:"doPrepare",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.prepare?this.prepare(t,this,e):t}},{key:"doValidate",value:function(t){return!this.validate||this.validate(this.value,this,t)}},{key:"doCommit",value:function(){this.commit&&this.commit(this.value,this)}},{key:"splice",value:function(t,e,u,n){var r=t+e,i=this._extractTail(r),s=this.nearestInputPos(t,n);return new ft({shift:s-t}).aggregate(this.remove(s)).aggregate(this.appendWithTail(u,i))}},{key:"value",get:function(){return this._value},set:function(t){this.resolve(t)}},{key:"unmaskedValue",get:function(){return this.value},set:function(t){this.reset(),this._append(t),this._appendTail(),this.doCommit()}},{key:"typedValue",get:function(){return this.unmaskedValue},set:function(t){this.unmaskedValue=t}},{key:"rawInputValue",get:function(){return this.extractInput(0,this.value.length,{raw:!0})},set:function(t){this.reset(),this._append(t,{raw:!0}),this._appendTail(),this.doCommit()}},{key:"isComplete",get:function(){return!0}}]),t}();function dt(t){if(null==t)throw new Error("mask property should be defined");return t instanceof RegExp?ht.IMask.MaskedRegExp:it(t)?ht.IMask.MaskedPattern:t instanceof Date||t===Date?ht.IMask.MaskedDate:t instanceof Number||"number"==typeof t||t===Number?ht.IMask.MaskedNumber:Array.isArray(t)||t===Array?ht.IMask.MaskedDynamic:t.prototype instanceof ht.IMask.Masked?t:t instanceof Function?ht.IMask.MaskedFunction:(console.warn("Mask not found for mask",t),ht.IMask.Masked)}function vt(t){var e=(t=K({},t)).mask;return e instanceof ht.IMask.Masked?e:new(dt(e))(t)}var gt=function(){function t(e){q(this,t),K(this,e),this.mask&&(this._masked=vt(e))}return J(t,[{key:"reset",value:function(){this.isHollow=!1,this.isRawInput=!1,this._masked&&this._masked.reset()}},{key:"resolve",value:function(t){return!!this._masked&&this._masked.resolve(t)}},{key:"isInput",get:function(){return this.type===t.TYPES.INPUT}},{key:"isHiddenHollow",get:function(){return this.isHollow&&this.optional}}]),t}();gt.DEFAULTS={0:/\d/,a:/[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,"*":/./},gt.TYPES={INPUT:"input",FIXED:"fixed"};var yt=function(){function t(e,u){var n=u.name,r=u.offset,i=u.mask,s=u.validate;q(this,t),this.masked=e,this.name=n,this.offset=r,this.mask=i,this.validate=s||function(){return!0}}return J(t,[{key:"doValidate",value:function(t){return this.validate(this.value,this,t)}},{key:"value",get:function(){return this.masked.value.slice(this.masked.mapDefIndexToPos(this.offset),this.masked.mapDefIndexToPos(this.offset+this.mask.length))}},{key:"unmaskedValue",get:function(){return this.masked.extractInput(this.masked.mapDefIndexToPos(this.offset),this.masked.mapDefIndexToPos(this.offset+this.mask.length))}}]),t}(),_t=function(){function t(e){var u=nt(e,2),n=u[0],r=u[1],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:String(r).length;q(this,t),this._from=n,this._to=r,this._maxLength=i,this.validate=this.validate.bind(this),this._update()}return J(t,[{key:"_update",value:function(){this._maxLength=Math.max(this._maxLength,String(this.to).length),this.mask="0".repeat(this._maxLength)}},{key:"validate",value:function(t){var e="",u="",n=t.match(/^(\D*)(\d*)(\D*)/)||[],r=nt(n,3),i=r[1],s=r[2];return s&&(e="0".repeat(i.length)+s,u="9".repeat(i.length)+s),-1===t.search(/[^0]/)&&t.length<=this._matchFrom||(e=e.padEnd(this._maxLength,"0"),u=u.padEnd(this._maxLength,"9"),this.from<=Number(u)&&Number(e)<=this.to)}},{key:"to",get:function(){return this._to},set:function(t){this._to=t,this._update()}},{key:"from",get:function(){return this._from},set:function(t){this._from=t,this._update()}},{key:"maxLength",get:function(){return this._maxLength},set:function(t){this._maxLength=t,this._update()}},{key:"_matchFrom",get:function(){return this.maxLength-String(this.from).length}}]),t}();yt.Range=_t,yt.Enum=function(t){return{mask:"*".repeat(t[0].length),validate:function(e,u,n){return t.some(function(t){return t.indexOf(u.unmaskedValue)>=0})}}};var kt=function(){function t(e){q(this,t),this.chunks=e}return J(t,[{key:"value",get:function(){return this.chunks.map(function(t){return t.value}).join("")}},{key:"fromPos",get:function(){var t=this.chunks[0];return t&&t.stop}},{key:"toPos",get:function(){var t=this.chunks[this.chunks.length-1];return t&&t.stop}}]),t}(),mt=function(t){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return q(this,e),t.definitions=K({},gt.DEFAULTS,t.definitions),et(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,K({},e.DEFAULTS,t)))}return tt(e,pt),J(e,[{key:"_update",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t.definitions=K({},this.definitions,t.definitions),Q(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_update",this).call(this,t),this._rebuildMask()}},{key:"_rebuildMask",value:function(){var t=this,u=this.definitions;this._charDefs=[],this._groupDefs=[];var n=this.mask;if(n&&u){var r=!1,i=!1,s=!1,a=function(a){if(t.groups){var l=n.slice(a),h=Object.keys(t.groups).filter(function(t){return 0===l.indexOf(t)});h.sort(function(t,e){return e.length-t.length});var c=h[0];if(c){var f=t.groups[c];t._groupDefs.push(new yt(t,{name:c,offset:t._charDefs.length,mask:f.mask,validate:f.validate})),n=n.replace(c,f.mask)}}var p=n[a],d=p in u?gt.TYPES.INPUT:gt.TYPES.FIXED,v=d===gt.TYPES.INPUT||r,g=d===gt.TYPES.INPUT&&i;if(p===e.STOP_CHAR)return s=!0,"continue";if("{"===p||"}"===p)return r=!r,"continue";if("["===p||"]"===p)return i=!i,"continue";if(p===e.ESCAPE_CHAR){if(!(p=n[++a]))return"break";d=gt.TYPES.FIXED}t._charDefs.push(new gt({char:p,type:d,optional:g,stopAlign:s,unmasking:v,mask:d===gt.TYPES.INPUT?u[p]:function(t){return t===p}})),s=!1,o=a};t:for(var o=0;o=e)break;n.isHiddenHollow&&++e}return e}},{key:"_appendTail",value:function(t){var u=new ft;return t&&u.aggregate(t instanceof kt?this._appendChunks(t.chunks,{tail:!0}):Q(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_appendTail",this).call(this,t)),u.aggregate(this._appendPlaceholder())}},{key:"_append",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},u=this.value.length,n="",r=!1;t=this.doPrepare(t,e);for(var i=0,s=this.mapPosToDefIndex(this.value.length);i1?u-1:0),r=1;r0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;return new kt(this._extractInputChunks(t,e))}},{key:"extractInput",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(t===e)return"";for(var n=this.value,r="",i=this.mapPosToDefIndex(e),s=t,a=this.mapPosToDefIndex(t);s0&&void 0!==arguments[0]?arguments[0]:0,u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;if(e===u)return[];var n=this.mapPosToDefIndex(e),r=this.mapPosToDefIndex(u),i=this._charDefs.map(function(t,e){return[t,e]}).slice(n,r).filter(function(t){return nt(t,1)[0].stopAlign}).map(function(t){return nt(t,2)[1]}),s=[n].concat(rt(i),[r]);return s.map(function(e,u){return{stop:i.indexOf(e)>=0?e:null,value:t.extractInput(t.mapDefIndexToPos(e),t.mapDefIndexToPos(s[++u]))}}).filter(function(t){var e=t.stop,u=t.value;return null!=e||u})}},{key:"_appendPlaceholder",value:function(t){for(var e=this.value.length,u=t||this._charDefs.length,n=this.mapPosToDefIndex(this.value.length);n0&&void 0!==arguments[0]?arguments[0]:0,u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length-t,n=this.mapPosToDefIndex(t),r=this.mapPosToDefIndex(t+u);return this._charDefs.slice(n,r).forEach(function(t){return t.reset()}),Q(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"remove",this).call(this,t,u)}},{key:"nearestInputPos",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:at.NONE,u=e||at.RIGHT,n=this.mapPosToDefIndex(t),r=this._charDefs[n],i=n,s=void 0,a=void 0,o=void 0,l=void 0;if(e!==at.RIGHT&&(r&&r.isInput||e===at.NONE&&t===this.value.length)&&(s=n,r&&!r.isHollow&&(a=n)),null==a&&e==at.LEFT||null==s)for(l=ot(i,u);0<=l&&l=this._charDefs.length)&&null!=s&&(i=s)}else null==a&&(i=null!=o?o:s);return this.mapDefIndexToPos(i)}},{key:"group",value:function(t){return this.groupsByName(t)[0]}},{key:"groupsByName",value:function(t){return this._groupDefs.filter(function(e){return e.name===t})}},{key:"isComplete",get:function(){var t=this;return!this._charDefs.some(function(e,u){return e.isInput&&!e.optional&&(e.isHollow||!t.extractInput(u,u+1))})}},{key:"unmaskedValue",get:function(){for(var t=this.value,e="",u=0,n=0;u=0&&this._listeners[t].splice(u,1),this}delete this._listeners[t]}}},{key:"_onInput",value:function(){if(this._abortUpdateCursor(),!this._selection)return this.updateValue();var t=new ct(this.el.value,this.cursorPos,this.value,this._selection),e=this.masked.splice(t.startChangePos,t.removed.length,t.inserted,t.removeDirection).offset,u=this.masked.nearestInputPos(t.startChangePos+e,t.removeDirection);this.updateControl(),this.updateCursor(u)}},{key:"_onChange",value:function(){this.value!==this.el.value&&this.updateValue(),this.masked.doCommit(),this.updateControl()}},{key:"_onDrop",value:function(t){t.preventDefault(),t.stopPropagation()}},{key:"destroy",value:function(){this._unbindEvents(),this._listeners.length=0,delete this.el}},{key:"mask",get:function(){return this.masked.mask},set:function(t){if(!(null==t||t===this.masked.mask||t===Date&&this.masked instanceof At))if(this.masked.constructor!==dt(t)){var e=vt({mask:t});e.unmaskedValue=this.masked.unmaskedValue,this.masked=e}else this.masked.mask=t}},{key:"value",get:function(){return this._value},set:function(t){this.masked.value=t,this.updateControl(),this.alignCursor()}},{key:"unmaskedValue",get:function(){return this._unmaskedValue},set:function(t){this.masked.unmaskedValue=t,this.updateControl(),this.alignCursor()}},{key:"typedValue",get:function(){return this.masked.typedValue},set:function(t){this.masked.typedValue=t,this.updateControl(),this.alignCursor()}},{key:"selectionStart",get:function(){return this._cursorChanging?this._changingCursorPos:this.el.selectionStart}},{key:"cursorPos",get:function(){return this._cursorChanging?this._changingCursorPos:this.el.selectionEnd},set:function(t){this.el.isActive&&(this.el.select(t,t),this._saveSelection())}}]),t}(),Ct=function(t){function e(t){return q(this,e),et(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,K({},e.DEFAULTS,t)))}return tt(e,pt),J(e,[{key:"_update",value:function(t){Q(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_update",this).call(this,t),this._updateRegExps()}},{key:"_updateRegExps",value:function(){var t="",e="";this.allowNegative?(t+="([+|\\-]?|([+|\\-]?(0|([1-9]+\\d*))))",e+="[+|\\-]?"):t+="(0|([1-9]+\\d*))",e+="\\d*";var u=(this.scale?"("+this.radix+"\\d{0,"+this.scale+"})?":"")+"$";this._numberRegExpInput=new RegExp("^"+t+u),this._numberRegExp=new RegExp("^"+e+u),this._mapToRadixRegExp=new RegExp("["+this.mapToRadix.map(lt).join("")+"]","g"),this._thousandsSeparatorRegExp=new RegExp(lt(this.thousandsSeparator),"g")}},{key:"_extractTail",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length,n=Q(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_extractTail",this).call(this,t,u);return K({},n,{value:this._removeThousandsSeparators(n.value)})}},{key:"_removeThousandsSeparators",value:function(t){return t.replace(this._thousandsSeparatorRegExp,"")}},{key:"_insertThousandsSeparators",value:function(t){var e=t.split(this.radix);return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,this.thousandsSeparator),e.join(this.radix)}},{key:"doPrepare",value:function(t){for(var u,n=arguments.length,r=Array(n>1?n-1:0),i=1;i=0||this.min<=this.number)&&(null==this.max||this.max<=0||this.number<=this.max)}return u&&Q(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"doValidate",this).call(this,t)}},{key:"doCommit",value:function(){var t=this.number,u=t;null!=this.min&&(u=Math.max(u,this.min)),null!=this.max&&(u=Math.min(u,this.max)),u!==t&&(this.unmaskedValue=String(u));var n=this.value;this.normalizeZeros&&(n=this._normalizeZeros(n)),this.padFractionalZeros&&(n=this._padFractionalZeros(n)),this._value=this._insertThousandsSeparators(n),Q(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"doCommit",this).call(this)}},{key:"_normalizeZeros",value:function(t){var e=this._removeThousandsSeparators(t).split(this.radix);return e[0]=e[0].replace(/^(\D*)(0*)(\d*)/,function(t,e,u,n){return e+n}),t.length&&!/\d$/.test(e[0])&&(e[0]=e[0]+"0"),e.length>1&&(e[1]=e[1].replace(/0*$/,""),e[1].length||(e.length=1)),this._insertThousandsSeparators(e.join(this.radix))}},{key:"_padFractionalZeros",value:function(t){if(!t)return t;var e=t.split(this.radix);return e.length<2&&e.push(""),e[1]=e[1].padEnd(this.scale,"0"),e.join(this.radix)}},{key:"unmaskedValue",get:function(){return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix,".")},set:function(t){ut(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"unmaskedValue",t.replace(".",this.radix),this)}},{key:"number",get:function(){return Number(this.unmaskedValue)},set:function(t){this.unmaskedValue=String(t)}},{key:"typedValue",get:function(){return this.number},set:function(t){this.number=t}},{key:"allowNegative",get:function(){return this.signed||null!=this.min&&this.min<0||null!=this.max&&this.max<0}}]),e}();Ct.DEFAULTS={radix:",",thousandsSeparator:"",mapToRadix:["."],scale:2,signed:!1,normalizeZeros:!0,padFractionalZeros:!1};var bt=function(t){function e(){return q(this,e),et(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return tt(e,pt),J(e,[{key:"_update",value:function(t){t.validate=function(e){return e.search(t.mask)>=0},Q(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_update",this).call(this,t)}}]),e}(),Bt=function(t){function e(){return q(this,e),et(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return tt(e,pt),J(e,[{key:"_update",value:function(t){t.validate=t.mask,Q(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_update",this).call(this,t)}}]),e}(),Pt=function(t){function e(t){q(this,e);var u=et(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,K({},e.DEFAULTS,t)));return u.currentMask=null,u}return tt(e,pt),J(e,[{key:"_update",value:function(t){Q(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_update",this).call(this,t),this.compiledMasks=Array.isArray(t.mask)?t.mask.map(function(t){return vt(t)}):[]}},{key:"_append",value:function(t){for(var e=arguments.length,u=Array(e>1?e-1:0),n=1;n0&&void 0!==arguments[0]?arguments[0]:"",e=this.value.length,u=this.rawInputValue,n=this.currentMask,r=new ft,i=arguments.length,s=Array(i>1?i-1:0),a=1;a1&&void 0!==arguments[1]?arguments[1]:{};return this.dispatch(t,this,e)}},{key:"clone",value:function(){var t=new e(this);t._value=this.value;var u=this.compiledMasks.indexOf(this.currentMask);return this.currentMask&&(t.currentMask=u>=0?t.compiledMasks[u].assign(this.currentMask):this.currentMask.clone()),t}},{key:"reset",value:function(){this.currentMask&&this.currentMask.reset(),this.compiledMasks.forEach(function(t){return t.reset()})}},{key:"remove",value:function(){var t,e=new ft;this.currentMask&&e.aggregate((t=this.currentMask).remove.apply(t,arguments)).aggregate(this._applyDispatch());return e}},{key:"extractInput",value:function(){var t;return this.currentMask?(t=this.currentMask).extractInput.apply(t,arguments):""}},{key:"_extractTail",value:function(){for(var t,u,n=arguments.length,r=Array(n),i=0;i1&&void 0!==arguments[1]?arguments[1]:{};return new Et(t,e)}return Pt.DEFAULTS={dispatch:function(t,e,u){if(e.compiledMasks.length){var n=e.rawInputValue,r=e.compiledMasks.map(function(e,r){var i=e.clone();return i.rawInputValue=n,i._append(t,u),{value:i.rawInputValue.length,index:r}});return r.sort(function(t,e){return e.value-t.value}),e.compiledMasks[r[0].index]}}},wt.InputMask=Et,wt.Masked=pt,wt.MaskedPattern=mt,wt.MaskedNumber=Ct,wt.MaskedDate=At,wt.MaskedRegExp=bt,wt.MaskedFunction=Bt,wt.MaskedDynamic=Pt,wt.createMask=vt,wt.MaskElement=Ft,wt.HTMLMaskElement=Dt,ht.IMask=wt,wt}); +//# sourceMappingURL=imask.min.js.map diff --git a/public/js/imask.min.js.map b/public/js/imask.min.js.map new file mode 100644 index 00000000..e2fec710 --- /dev/null +++ b/public/js/imask.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"imask.min.js","sources":["../node_modules/core-js/modules/_defined.js","../node_modules/core-js/modules/_has.js","../node_modules/core-js/modules/_cof.js","../node_modules/core-js/modules/_iobject.js","../node_modules/core-js/modules/_to-iobject.js","../node_modules/core-js/modules/_to-integer.js","../node_modules/core-js/modules/_to-length.js","../node_modules/core-js/modules/_to-absolute-index.js","../node_modules/core-js/modules/_shared.js","../node_modules/core-js/modules/_array-includes.js","../node_modules/core-js/modules/_global.js","../node_modules/core-js/modules/_uid.js","../node_modules/core-js/modules/_shared-key.js","../node_modules/core-js/modules/_object-keys-internal.js","../node_modules/core-js/modules/_enum-bug-keys.js","../node_modules/core-js/modules/_object-keys.js","../node_modules/core-js/modules/_core.js","../node_modules/core-js/modules/_is-object.js","../node_modules/core-js/modules/_an-object.js","../node_modules/core-js/modules/_fails.js","../node_modules/core-js/modules/_descriptors.js","../node_modules/core-js/modules/_dom-create.js","../node_modules/core-js/modules/_ie8-dom-define.js","../node_modules/core-js/modules/_object-dp.js","../node_modules/core-js/modules/_to-primitive.js","../node_modules/core-js/modules/_hide.js","../node_modules/core-js/modules/_property-desc.js","../node_modules/core-js/modules/_redefine.js","../node_modules/core-js/modules/_ctx.js","../node_modules/core-js/modules/_a-function.js","../node_modules/core-js/modules/_export.js","../node_modules/core-js/modules/_object-sap.js","../node_modules/core-js/modules/es6.object.keys.js","../node_modules/core-js/modules/_to-object.js","../node_modules/core-js/fn/object/keys.js","../node_modules/core-js/modules/_string-repeat.js","../node_modules/core-js/modules/es6.string.repeat.js","../node_modules/core-js/fn/string/repeat.js","../node_modules/core-js/modules/_string-pad.js","../node_modules/core-js/modules/_user-agent.js","../node_modules/core-js/modules/es7.string.pad-start.js","../node_modules/core-js/fn/string/pad-start.js","../node_modules/core-js/modules/es7.string.pad-end.js","../node_modules/core-js/fn/string/pad-end.js","../src/core/utils.js","../src/core/action-details.js","../src/core/change-details.js","../src/masked/base.js","../src/masked/factory.js","../src/masked/pattern/definition.js","../src/masked/pattern/group.js","../src/masked/pattern/chunk-tail-details.js","../src/masked/pattern.js","../src/masked/date.js","../src/controls/mask-element.js","../src/controls/html-mask-element.js","../src/controls/input.js","../src/masked/number.js","../src/masked/regexp.js","../src/masked/function.js","../src/masked/dynamic.js","../src/imask.js"],"sourcesContent":["// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","var global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var core = module.exports = { version: '2.5.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","require('../../modules/es6.string.repeat');\nmodule.exports = require('../../modules/_core').String.repeat;\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","require('../../modules/es7.string.pad-start');\nmodule.exports = require('../../modules/_core').String.padStart;\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","require('../../modules/es7.string.pad-end');\nmodule.exports = require('../../modules/_core').String.padEnd;\n","// @flow\r\n\r\n\r\n/** Checks if value is string */\r\nexport\r\nfunction isString (str: mixed): boolean %checks {\r\n return typeof str === 'string' || str instanceof String;\r\n}\r\n\r\n/** Conforms string with fallback */\r\nexport\r\nfunction conform (res: ?string | boolean, str: string, fallback: string=''): string {\r\n return isString(res) ?\r\n res :\r\n res ?\r\n str :\r\n fallback;\r\n}\r\n\r\n/**\r\n Direction\r\n @prop {number} NONE\r\n @prop {number} LEFT\r\n @prop {number} RIGHT\r\n*/\r\nexport\r\nconst DIRECTION = {\r\n NONE: 0,\r\n LEFT: -1,\r\n RIGHT: 1\r\n}\r\n/**\r\n Direction\r\n @enum {number}\r\n*/\r\nexport\r\ntype Direction = $Values;\r\n\r\n/** Returns next char position in direction */\r\nexport\r\nfunction indexInDirection (pos: number, direction: Direction): number {\r\n if (direction === DIRECTION.LEFT) --pos;\r\n return pos;\r\n}\r\n\r\n/** Escapes regular expression control chars */\r\nexport\r\nfunction escapeRegExp (str: string): string {\r\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\r\n}\r\n\r\n\r\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\r\nexport\r\nfunction objectIncludes (b: any, a: any): boolean {\r\n if (a === b) return true;\r\n\r\n var arrA = Array.isArray(a)\r\n , arrB = Array.isArray(b)\r\n , i;\r\n\r\n if (arrA && arrB) {\r\n if (a.length != b.length) return false;\r\n for (i = 0; i < a.length; i++)\r\n if (!objectIncludes(a[i], b[i])) return false;\r\n return true;\r\n }\r\n\r\n if (arrA != arrB) return false;\r\n\r\n if (a && b && typeof a === 'object' && typeof b === 'object') {\r\n var keys = Object.keys(a);\r\n // if (keys.length !== Object.keys(b).length) return false;\r\n\r\n var dateA = a instanceof Date\r\n , dateB = b instanceof Date;\r\n if (dateA && dateB) return a.getTime() == b.getTime();\r\n if (dateA != dateB) return false;\r\n\r\n var regexpA = a instanceof RegExp\r\n , regexpB = b instanceof RegExp;\r\n if (regexpA && regexpB) return a.toString() == b.toString();\r\n if (regexpA != regexpB) return false;\r\n\r\n for (i = 0; i < keys.length; i++)\r\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\r\n\r\n for (i = 0; i < keys.length; i++)\r\n if(!objectIncludes(a[keys[i]], b[keys[i]])) return false;\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/* eslint-disable no-undef */\r\nexport\r\nconst g: any = typeof window !== 'undefined' && window ||\r\n typeof global !== 'undefined' && global.global === global && global ||\r\n typeof self !== 'undefined' && self.self === self && self ||\r\n {};\r\n/* eslint-enable no-undef */\r\n\r\n/** Selection range */\r\nexport\r\ntype Selection = {\r\n start: number;\r\n end: number;\r\n};\r\n","// @flow\r\nimport {type Direction, type Selection, DIRECTION} from './utils.js';\r\n\r\n\r\n/** Provides details of changing input */\r\nexport default\r\nclass ActionDetails {\r\n /** Current input value */\r\n value: string;\r\n /** Current cursor position */\r\n cursorPos: number;\r\n /** Old input value */\r\n oldValue: string;\r\n /** Old selection */\r\n oldSelection: Selection;\r\n\r\n constructor (\r\n value: string,\r\n cursorPos: number,\r\n oldValue: string,\r\n oldSelection: Selection\r\n ) {\r\n this.value = value;\r\n this.cursorPos = cursorPos;\r\n this.oldValue = oldValue;\r\n this.oldSelection = oldSelection;\r\n\r\n // double check if left part was changed (autofilling, other non-standard input triggers)\r\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\r\n --this.oldSelection.start;\r\n }\r\n }\r\n\r\n /**\r\n Start changing position\r\n @readonly\r\n */\r\n get startChangePos (): number {\r\n return Math.min(this.cursorPos, this.oldSelection.start);\r\n }\r\n\r\n /**\r\n Inserted symbols count\r\n @readonly\r\n */\r\n get insertedCount (): number {\r\n return this.cursorPos - this.startChangePos;\r\n }\r\n\r\n /**\r\n Inserted symbols\r\n @readonly\r\n */\r\n get inserted (): string {\r\n return this.value.substr(this.startChangePos, this.insertedCount);\r\n }\r\n\r\n /**\r\n Removed symbols count\r\n @readonly\r\n */\r\n get removedCount (): number {\r\n // Math.max for opposite operation\r\n return Math.max((this.oldSelection.end - this.startChangePos) ||\r\n // for Delete\r\n this.oldValue.length - this.value.length, 0);\r\n }\r\n\r\n /**\r\n Removed symbols\r\n @readonly\r\n */\r\n get removed (): string {\r\n return this.oldValue.substr(this.startChangePos, this.removedCount);\r\n }\r\n\r\n /**\r\n Unchanged head symbols\r\n @readonly\r\n */\r\n get head (): string {\r\n return this.value.substring(0, this.startChangePos);\r\n }\r\n\r\n /**\r\n Unchanged tail symbols\r\n @readonly\r\n */\r\n get tail (): string {\r\n return this.value.substring(this.startChangePos + this.insertedCount);\r\n }\r\n\r\n /**\r\n Remove direction\r\n @readonly\r\n */\r\n get removeDirection (): Direction {\r\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\r\n\r\n // align right if delete at right or if range removed (event with backspace)\r\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) ?\r\n DIRECTION.RIGHT :\r\n DIRECTION.LEFT;\r\n }\r\n}\r\n","// @flow\r\n\r\n\r\n/**\r\n Provides details of changing model value\r\n @param {Object} [details]\r\n @param {string} [details.inserted] - Inserted symbols\r\n @param {boolean} [details.overflow] - Is overflowed\r\n @param {number} [details.removeCount] - Removed symbols count\r\n @param {number} [details.shift] - Additional offset if any changes occurred before current position\r\n*/\r\nexport default\r\nclass ChangeDetails {\r\n /** Inserted symbols */\r\n inserted: string;\r\n /** Is overflowed */\r\n overflow: boolean;\r\n /** Additional offset if any changes occurred before current position */\r\n shift: number;\r\n _rawInserted: string;\r\n\r\n constructor (details?: {\r\n inserted?: $PropertyType,\r\n overflow?: $PropertyType,\r\n shift?: $PropertyType,\r\n }) {\r\n Object.assign(this, {\r\n inserted: '',\r\n overflow: false,\r\n shift: 0,\r\n }, details);\r\n }\r\n\r\n /**\r\n Aggregate changes\r\n @returns {ChangeDetails} `this`\r\n */\r\n aggregate (details: ChangeDetails): ChangeDetails {\r\n if (details.rawInserted) this.rawInserted += details.rawInserted;\r\n this.inserted += details.inserted;\r\n this.shift += details.shift;\r\n this.overflow = this.overflow || details.overflow;\r\n return this;\r\n }\r\n\r\n /** Total offset considering all changes */\r\n get offset (): number {\r\n return this.shift + this.inserted.length;\r\n }\r\n\r\n /** Raw inserted is used by dynamic mask */\r\n get rawInserted (): string {\r\n return this._rawInserted != null ?\r\n this._rawInserted :\r\n this.inserted;\r\n }\r\n\r\n set rawInserted (rawInserted: string): void {\r\n this._rawInserted = rawInserted;\r\n }\r\n}\r\n","// @flow\r\nimport ChangeDetails from '../core/change-details.js';\r\nimport {type Direction, DIRECTION} from '../core/utils.js';\r\nimport {type TailDetails} from '../core/tail-details.js';\r\n\r\n\r\n/** Supported mask type */\r\nexport\r\ntype Mask = string | String | RegExp | Class | Class | Array | Function | Masked<*> | Class>;\r\n\r\n/** Append flags */\r\nexport\r\ntype AppendFlags = {\r\n input?: boolean,\r\n tail?: boolean,\r\n raw?: boolean\r\n};\r\n\r\n/** Extract flags */\r\nexport\r\ntype ExtractFlags = {\r\n raw?: boolean\r\n};\r\n\r\nexport\r\ntype MaskedOptions = {\r\n mask: $PropertyType, 'mask'>,\r\n prepare?: $PropertyType, 'prepare'>,\r\n validate?: $PropertyType, 'validate'>,\r\n commit?: $PropertyType, 'commit'>,\r\n};\r\n\r\n\r\n/** Provides common masking stuff */\r\nexport default\r\nclass Masked {\r\n static DEFAULTS: any; // $Shape; TODO after fix https://github.com/facebook/flow/issues/4773\r\n\r\n /** @type {Mask} */\r\n mask: MaskType;\r\n /** Transforms value before mask processing */\r\n prepare: (string, Masked, AppendFlags) => string;\r\n /** Validates if value is acceptable */\r\n validate: (string, Masked, AppendFlags) => boolean;\r\n /** Does additional processing in the end of editing */\r\n commit: (string, AppendFlags) => void;\r\n /** */\r\n isInitialized: boolean;\r\n _value: string;\r\n _refreshing: boolean;\r\n\r\n constructor (opts: {[string]: any}) {\r\n this._value = '';\r\n this._update(opts);\r\n this.isInitialized = true;\r\n }\r\n\r\n /** Sets and applies new options */\r\n updateOptions (opts: {[string]: any}) {\r\n this.withValueRefresh(this._update.bind(this, opts));\r\n }\r\n\r\n /**\r\n Sets new options\r\n @protected\r\n */\r\n _update (opts: {[string]: any}) {\r\n Object.assign(this, opts);\r\n }\r\n\r\n /** Clones masked with options and value */\r\n clone (): Masked {\r\n const m = new Masked(this);\r\n m._value = this.value.slice();\r\n return m;\r\n }\r\n\r\n /** */\r\n assign (source: Masked): Masked {\r\n // $FlowFixMe\r\n return Object.assign(this, source);\r\n }\r\n\r\n /** Resets value */\r\n reset () {\r\n this._value = '';\r\n }\r\n\r\n /** */\r\n get value (): string {\r\n return this._value;\r\n }\r\n\r\n set value (value: string) {\r\n this.resolve(value);\r\n }\r\n\r\n /** Resolve new value */\r\n resolve (value: string): string {\r\n this.reset();\r\n this._append(value, {input: true});\r\n this._appendTail();\r\n this.doCommit();\r\n return this.value;\r\n }\r\n\r\n /** */\r\n get unmaskedValue (): string {\r\n return this.value;\r\n }\r\n\r\n set unmaskedValue (value: string) {\r\n this.reset();\r\n this._append(value);\r\n this._appendTail();\r\n this.doCommit();\r\n }\r\n\r\n /** */\r\n get typedValue (): any {\r\n return this.unmaskedValue;\r\n }\r\n\r\n set typedValue (value: any) {\r\n this.unmaskedValue = value;\r\n }\r\n\r\n /** Value that includes raw user input */\r\n get rawInputValue (): string {\r\n return this.extractInput(0, this.value.length, {raw: true});\r\n }\r\n\r\n set rawInputValue (value: string) {\r\n this.reset();\r\n this._append(value, {raw: true});\r\n this._appendTail();\r\n this.doCommit();\r\n }\r\n\r\n /** */\r\n get isComplete (): boolean {\r\n return true;\r\n }\r\n\r\n /** Finds nearest input position in direction */\r\n nearestInputPos (cursorPos: number, direction?: Direction): number {\r\n return cursorPos;\r\n }\r\n\r\n /** Extracts value in range considering flags */\r\n extractInput (fromPos: number=0, toPos: number=this.value.length, flags?: ExtractFlags): string {\r\n return this.value.slice(fromPos, toPos);\r\n }\r\n\r\n /** Extracts tail in range */\r\n _extractTail (fromPos: number=0, toPos: number=this.value.length): TailDetails {\r\n return {\r\n value: this.extractInput(fromPos, toPos),\r\n fromPos,\r\n toPos,\r\n };\r\n }\r\n\r\n /** Appends tail */\r\n _appendTail (tail?: TailDetails): ChangeDetails {\r\n return this._append(tail ? tail.value: '', {tail: true});\r\n }\r\n\r\n /** Appends symbols considering flags */\r\n _append (str: string, flags: AppendFlags={}): ChangeDetails {\r\n const oldValueLength = this.value.length;\r\n let consistentValue: Masked = this.clone();\r\n let overflow = false;\r\n\r\n str = this.doPrepare(str, flags);\r\n\r\n for (let ci=0; ci;\r\n\r\n for (let ci=0; ci(fn: () => T): T {\r\n if (this._refreshing || !this.isInitialized) return fn();\r\n this._refreshing = true;\r\n\r\n const unmasked = this.unmaskedValue;\r\n const value = this.value;\r\n\r\n const ret = fn();\r\n\r\n // try to update with raw value first to keep fixed chars\r\n if (this.resolve(value) !== value) {\r\n // or fallback to unmasked\r\n this.unmaskedValue = unmasked;\r\n }\r\n\r\n delete this._refreshing;\r\n return ret;\r\n }\r\n\r\n /**\r\n Prepares string before mask processing\r\n @protected\r\n */\r\n doPrepare (str: string, flags: AppendFlags={}): string {\r\n return this.prepare ?\r\n this.prepare(str, this, flags) :\r\n str;\r\n }\r\n\r\n /**\r\n Validates if value is acceptable\r\n @protected\r\n */\r\n doValidate (flags: AppendFlags): boolean {\r\n return !this.validate || this.validate(this.value, this, flags);\r\n }\r\n\r\n /**\r\n Does additional processing in the end of editing\r\n @protected\r\n */\r\n doCommit () {\r\n if (this.commit) this.commit(this.value, this);\r\n }\r\n\r\n // TODO\r\n // insert (str, fromPos, flags)\r\n\r\n /** */\r\n splice (start: number, deleteCount: number, inserted: string, removeDirection: Direction): ChangeDetails {\r\n const tailPos: number = start + deleteCount;\r\n const tail: TailDetails = this._extractTail(tailPos);\r\n\r\n let startChangePos: number = this.nearestInputPos(start, removeDirection);\r\n const changeDetails: ChangeDetails = new ChangeDetails({\r\n shift: startChangePos - start // adjust shift if start was aligned\r\n }).aggregate(this.remove(startChangePos))\r\n .aggregate(this.appendWithTail(inserted, tail));\r\n\r\n return changeDetails;\r\n }\r\n}\r\n","// @flow\r\nimport {g, isString} from '../core/utils.js';\r\nimport type Masked from './base.js';\r\nimport {type Mask} from './base.js';\r\n\r\n\r\n/** Get Masked class by mask type */\r\nexport\r\nfunction maskedClass (mask: Mask): Class> {\r\n if (mask == null) {\r\n throw new Error('mask property should be defined');\r\n }\r\n\r\n if (mask instanceof RegExp) return g.IMask.MaskedRegExp;\r\n if (isString(mask)) return g.IMask.MaskedPattern;\r\n if (mask instanceof Date || mask === Date) return g.IMask.MaskedDate;\r\n if (mask instanceof Number || typeof mask === 'number' || mask === Number) return g.IMask.MaskedNumber;\r\n if (Array.isArray(mask) || mask === Array) return g.IMask.MaskedDynamic;\r\n // $FlowFixMe\r\n if (mask.prototype instanceof g.IMask.Masked) return mask;\r\n // $FlowFixMe\r\n if (mask instanceof Function) return g.IMask.MaskedFunction;\r\n\r\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\r\n return g.IMask.Masked;\r\n}\r\n\r\n/** Creates new {@link Masked} depending on mask type */\r\nexport default\r\nfunction createMask (opts: {mask: Mask}): Masked<*> {\r\n opts = Object.assign({}, opts); // clone\r\n const mask = opts.mask;\r\n\r\n if (mask instanceof g.IMask.Masked) return mask;\r\n\r\n const MaskedClass = maskedClass(mask);\r\n return new MaskedClass(opts);\r\n}\r\n","// @flow\r\nimport createMask from '../factory.js';\r\nimport type Masked from '../base.js';\r\nimport {type Mask} from '../base.js';\r\n\r\n\r\ntype Definitions = {[string]: Mask};\r\n/** */\r\ntype DefinitionType = $Values;\r\ntype DefinitionTypes = {[string]: DefinitionType};\r\n\r\n/** */\r\nexport default\r\nclass PatternDefinition {\r\n static TYPES: DefinitionTypes;\r\n static DEFAULTS: Definitions;\r\n\r\n /** */\r\n char: ?string;\r\n /** */\r\n stopAlign: ?boolean;\r\n /** */\r\n unmasking: ?boolean;\r\n /** */\r\n optional: boolean;\r\n /** */\r\n isHollow: boolean;\r\n /** */\r\n isRawInput: boolean;\r\n /** */\r\n type: DefinitionType;\r\n /** */\r\n mask: Mask;\r\n /** */\r\n _masked: Masked<*>;\r\n\r\n constructor(opts: any) { // TODO flow\r\n Object.assign(this, opts);\r\n\r\n if (this.mask) {\r\n this._masked = createMask(opts);\r\n }\r\n }\r\n\r\n /** */\r\n reset () {\r\n this.isHollow = false;\r\n this.isRawInput = false;\r\n if (this._masked) this._masked.reset();\r\n }\r\n\r\n /** */\r\n get isInput (): boolean {\r\n return this.type === PatternDefinition.TYPES.INPUT;\r\n }\r\n\r\n /** */\r\n get isHiddenHollow (): boolean {\r\n return this.isHollow && this.optional;\r\n }\r\n\r\n /** */\r\n resolve (ch: string): boolean | string {\r\n if (!this._masked) return false;\r\n return this._masked.resolve(ch);\r\n }\r\n}\r\nPatternDefinition.DEFAULTS = {\r\n '0': /\\d/,\r\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/, // http://stackoverflow.com/a/22075070\r\n '*': /./\r\n};\r\n/**\r\n @prop {string} INPUT\r\n @prop {string} FIXED\r\n*/\r\nPatternDefinition.TYPES = {\r\n INPUT: 'input',\r\n FIXED: 'fixed'\r\n};\r\n","// @flow\r\nimport type MaskedPattern from '../pattern.js';\r\nimport {type AppendFlags} from '../base.js';\r\n\r\n\r\n/** */\r\nexport\r\ninterface PatternGroupTemplate {\r\n validate: $PropertyType;\r\n mask: $PropertyType;\r\n}\r\n\r\n/** */\r\ntype PatternGroupOptions = PatternGroupTemplate & {\r\n name: $PropertyType,\r\n offset: $PropertyType,\r\n};\r\n\r\n/**\r\n Pattern group symbols from parent\r\n @param {MaskedPattern} masked - Internal {@link masked} model\r\n @param {Object} opts\r\n @param {string} opts.name - Group name\r\n @param {number} opts.offset - Group offset in masked definitions array\r\n @param {string} opts.mask - Group mask\r\n @param {Function} [opts.validate] - Custom group validator\r\n*/\r\nexport default\r\nclass PatternGroup {\r\n /** */\r\n static Range: typeof RangeGroup;\r\n /** */\r\n static Enum: typeof EnumGroup;\r\n\r\n /** Internal {@link masked} model */\r\n masked: MaskedPattern;\r\n /** Group name */\r\n name: string;\r\n /** Group offset in masked definitions array */\r\n offset: number;\r\n /** Group mask */\r\n mask: string;\r\n /** Custom group validator */\r\n validate: (string, PatternGroup, AppendFlags) => boolean;\r\n\r\n constructor(masked: MaskedPattern, {name, offset, mask, validate}: PatternGroupOptions) {\r\n this.masked = masked;\r\n this.name = name;\r\n this.offset = offset;\r\n this.mask = mask;\r\n this.validate = validate || (() => true);\r\n }\r\n\r\n /** Slice of internal {@link masked} value */\r\n get value (): string {\r\n return this.masked.value.slice(\r\n this.masked.mapDefIndexToPos(this.offset),\r\n this.masked.mapDefIndexToPos(this.offset + this.mask.length));\r\n }\r\n\r\n /** Unmasked slice of internal {@link masked} value */\r\n get unmaskedValue (): string {\r\n return this.masked.extractInput(\r\n this.masked.mapDefIndexToPos(this.offset),\r\n this.masked.mapDefIndexToPos(this.offset + this.mask.length));\r\n }\r\n\r\n /** Validates if current value is acceptable */\r\n doValidate (flags: AppendFlags) {\r\n return this.validate(this.value, this, flags);\r\n }\r\n}\r\n\r\n/**\r\n Pattern group that validates number ranges\r\n @param {number[]} range - [from, to]\r\n @param {?number} maxlen - Maximum number length, will be padded with leading zeros\r\n*/\r\nexport\r\nclass RangeGroup implements PatternGroupTemplate {\r\n /** @type {string} */\r\n mask: $PropertyType;\r\n /** @type {Function} */\r\n validate: $PropertyType;\r\n _maxLength: number;\r\n _from: number;\r\n _to: number;\r\n\r\n constructor ([from, to]: [number, number], maxlen: number=String(to).length) {\r\n this._from = from;\r\n this._to = to;\r\n this._maxLength = maxlen;\r\n this.validate = this.validate.bind(this);\r\n\r\n this._update();\r\n }\r\n\r\n get to (): number {\r\n return this._to;\r\n }\r\n\r\n set to (to: number) {\r\n this._to = to;\r\n this._update();\r\n }\r\n\r\n get from (): number {\r\n return this._from;\r\n }\r\n\r\n set from (from: number) {\r\n this._from = from;\r\n this._update();\r\n }\r\n\r\n get maxLength (): number {\r\n return this._maxLength;\r\n }\r\n\r\n set maxLength (maxLength: number) {\r\n this._maxLength = maxLength;\r\n this._update();\r\n }\r\n\r\n get _matchFrom (): number {\r\n return this.maxLength - String(this.from).length;\r\n }\r\n\r\n _update() {\r\n this._maxLength = Math.max(this._maxLength, String(this.to).length);\r\n this.mask = '0'.repeat(this._maxLength);\r\n }\r\n\r\n validate (str: string): boolean {\r\n let minstr = '';\r\n let maxstr = '';\r\n\r\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\r\n if (num) {\r\n minstr = ('0'.repeat(placeholder.length) + num);\r\n maxstr = ('9'.repeat(placeholder.length) + num);\r\n }\r\n\r\n const firstNonZero = str.search(/[^0]/);\r\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\r\n\r\n minstr = minstr.padEnd(this._maxLength, '0');\r\n maxstr = maxstr.padEnd(this._maxLength, '9');\r\n\r\n return this.from <= Number(maxstr) && Number(minstr) <= this.to;\r\n }\r\n}\r\n\r\n/** Pattern group that validates enum values */\r\nexport\r\nfunction EnumGroup (enums: Array): PatternGroupTemplate {\r\n return {\r\n mask: '*'.repeat(enums[0].length),\r\n validate: (value: string, group: PatternGroup, flags: AppendFlags) => enums.some(e => e.indexOf(group.unmaskedValue) >= 0)\r\n };\r\n}\r\n\r\nPatternGroup.Range = RangeGroup;\r\nPatternGroup.Enum = EnumGroup;\r\n","// @flow\r\nimport {type TailDetails} from '../../core/tail-details.js';\r\n\r\n\r\nexport\r\ntype TailInputChunk = {\r\n stop: ?number,\r\n value: string\r\n};\r\n\r\nexport\r\nclass ChunksTailDetails implements TailDetails {\r\n chunks: Array;\r\n\r\n constructor (chunks: Array) {\r\n this.chunks = chunks;\r\n }\r\n\r\n get value (): string {\r\n return this.chunks.map(c => c.value).join('');\r\n }\r\n\r\n get fromPos (): ?number {\r\n const firstChunk = this.chunks[0];\r\n return firstChunk && firstChunk.stop;\r\n }\r\n\r\n get toPos (): ?number {\r\n const lastChunk = this.chunks[this.chunks.length - 1];\r\n return lastChunk && lastChunk.stop;\r\n }\r\n}\r\n","// @flow\r\nimport {conform, DIRECTION, indexInDirection, type Direction} from '../core/utils.js';\r\nimport ChangeDetails from '../core/change-details.js';\r\nimport Masked, {type AppendFlags, type ExtractFlags, type MaskedOptions} from './base.js';\r\nimport PatternDefinition from './pattern/definition.js';\r\nimport PatternGroup, {type PatternGroupTemplate} from './pattern/group.js';\r\nimport {ChunksTailDetails, type TailInputChunk} from './pattern/chunk-tail-details.js';\r\nimport {type TailDetails} from '../core/tail-details.js';\r\n\r\n\r\ntype MaskedPatternOptions = {\r\n ...MaskedOptions,\r\n definitions: $PropertyType,\r\n groups: $PropertyType,\r\n placeholderChar: $PropertyType,\r\n lazy: $PropertyType,\r\n};\r\ntype InputChunk = [?number, string];\r\n\r\n\r\n/**\r\n Pattern mask\r\n @param {Object} opts\r\n @param {Object} opts.groups\r\n @param {Object} opts.definitions\r\n @param {string} opts.placeholderChar\r\n @param {boolean} opts.lazy\r\n*/\r\nexport default\r\nclass MaskedPattern extends Masked {\r\n static DEFAULTS: any;\r\n static STOP_CHAR: string;\r\n static ESCAPE_CHAR: string;\r\n static Definition: Class;\r\n static Group: Class;\r\n\r\n /** */\r\n groups: {[string]: PatternGroupTemplate};\r\n /** */\r\n definitions: {[string]: any}; // TODO mask type\r\n /** Single char for empty input */\r\n placeholderChar: string;\r\n /** Show placeholder only when needed */\r\n lazy: boolean;\r\n _charDefs: Array;\r\n _groupDefs: Array;\r\n\r\n constructor (opts: any={}) { // TODO type $Shape={} does not work\r\n opts.definitions = Object.assign({}, PatternDefinition.DEFAULTS, opts.definitions);\r\n super({\r\n ...MaskedPattern.DEFAULTS,\r\n ...opts\r\n });\r\n }\r\n\r\n /**\r\n @override\r\n @param {Object} opts\r\n */\r\n _update (opts: $Shape={}) {\r\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\r\n super._update(opts);\r\n this._rebuildMask();\r\n }\r\n\r\n /** */\r\n _rebuildMask () {\r\n const defs = this.definitions;\r\n this._charDefs = [];\r\n this._groupDefs = [];\r\n\r\n let pattern = this.mask;\r\n if (!pattern || !defs) return;\r\n\r\n let unmaskingBlock = false;\r\n let optionalBlock = false;\r\n let stopAlign = false;\r\n\r\n for (let i=0; i p.indexOf(gName) === 0);\r\n // order by key length\r\n gNames.sort((a, b) => b.length - a.length);\r\n // use group name with max length\r\n const gName = gNames[0];\r\n if (gName) {\r\n const group = this.groups[gName];\r\n this._groupDefs.push(new PatternGroup(this, {\r\n name: gName,\r\n offset: this._charDefs.length,\r\n mask: group.mask,\r\n validate: group.validate,\r\n }));\r\n pattern = pattern.replace(gName, group.mask);\r\n }\r\n }\r\n\r\n let char = pattern[i];\r\n let type = char in defs ?\r\n PatternDefinition.TYPES.INPUT :\r\n PatternDefinition.TYPES.FIXED;\r\n const unmasking = type === PatternDefinition.TYPES.INPUT || unmaskingBlock;\r\n const optional = type === PatternDefinition.TYPES.INPUT && optionalBlock;\r\n\r\n if (char === MaskedPattern.STOP_CHAR) {\r\n stopAlign = true;\r\n continue;\r\n }\r\n\r\n if (char === '{' || char === '}') {\r\n unmaskingBlock = !unmaskingBlock;\r\n continue;\r\n }\r\n\r\n if (char === '[' || char === ']') {\r\n optionalBlock = !optionalBlock;\r\n continue;\r\n }\r\n\r\n if (char === MaskedPattern.ESCAPE_CHAR) {\r\n ++i;\r\n char = pattern[i];\r\n if (!char) break;\r\n type = PatternDefinition.TYPES.FIXED;\r\n }\r\n\r\n this._charDefs.push(new PatternDefinition({\r\n char,\r\n type,\r\n optional,\r\n stopAlign,\r\n unmasking,\r\n mask: type === PatternDefinition.TYPES.INPUT ?\r\n defs[char] :\r\n (value => value === char)\r\n }));\r\n\r\n stopAlign = false;\r\n }\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n doValidate (...args: *) {\r\n return this._groupDefs.every(g => g.doValidate(...args)) && super.doValidate(...args);\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n clone () {\r\n const m = new MaskedPattern(this);\r\n m._value = this.value;\r\n // $FlowFixMe\r\n m._charDefs.forEach((d, i) => Object.assign(d, this._charDefs[i]));\r\n // $FlowFixMe\r\n m._groupDefs.forEach((d, i) => Object.assign(d, this._groupDefs[i]));\r\n return m;\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n reset () {\r\n super.reset();\r\n this._charDefs.forEach(d => {delete d.isHollow;});\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n get isComplete (): boolean {\r\n return !this._charDefs.some((d, i) =>\r\n d.isInput && !d.optional && (d.isHollow || !this.extractInput(i, i+1)));\r\n }\r\n\r\n /** */\r\n hiddenHollowsBefore (defIndex: number): number {\r\n return this._charDefs\r\n .slice(0, defIndex)\r\n .filter(d => d.isHiddenHollow)\r\n .length;\r\n }\r\n\r\n /** Map definition index to position on view */\r\n mapDefIndexToPos (defIndex: number): number {\r\n return defIndex - this.hiddenHollowsBefore(defIndex);\r\n }\r\n\r\n /** Map position on view to definition index */\r\n mapPosToDefIndex (pos: number): number {\r\n let defIndex = pos;\r\n for (let di=0; di= defIndex) break;\r\n if (def.isHiddenHollow) ++defIndex;\r\n }\r\n return defIndex;\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n get unmaskedValue (): string {\r\n const str = this.value;\r\n let unmasked = '';\r\n\r\n for (let ci=0, di=0; ci, ...args: *) {\r\n const details = new ChangeDetails();\r\n for (let ci=0; ci < chunks.length; ++ci) {\r\n const {stop, value} = chunks[ci];\r\n const fromDef = stop != null && this._charDefs[stop];\r\n // lets double check if stopAlign is here\r\n if (fromDef && fromDef.stopAlign) details.aggregate(this._appendPlaceholder(stop));\r\n if (details.aggregate(this._append(value, ...args)).overflow) break;\r\n }\r\n return details;\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n _extractTail (fromPos: number=0, toPos: number=this.value.length): ChunksTailDetails {\r\n return new ChunksTailDetails(this._extractInputChunks(fromPos, toPos));\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n extractInput (fromPos: number=0, toPos: number=this.value.length, flags: ExtractFlags={}): string {\r\n if (fromPos === toPos) return '';\r\n\r\n const str = this.value;\r\n let input = '';\r\n\r\n const toDefIndex = this.mapPosToDefIndex(toPos);\r\n for (\r\n let ci=fromPos, di=this.mapPosToDefIndex(fromPos);\r\n ci {\r\n if (fromPos === toPos) return [];\r\n\r\n const fromDefIndex = this.mapPosToDefIndex(fromPos);\r\n const toDefIndex = this.mapPosToDefIndex(toPos);\r\n const stopDefIndices = this._charDefs\r\n .map((d, i) => [d, i])\r\n .slice(fromDefIndex, toDefIndex)\r\n .filter(([d]) => d.stopAlign)\r\n .map(([, i]) => i);\r\n\r\n const stops = [\r\n fromDefIndex,\r\n ...stopDefIndices,\r\n toDefIndex\r\n ];\r\n\r\n return stops.map((s, i) => ({\r\n stop: stopDefIndices.indexOf(s) >= 0 ?\r\n s :\r\n null,\r\n\r\n value: this.extractInput(\r\n this.mapDefIndexToPos(s),\r\n this.mapDefIndexToPos(stops[++i]))\r\n })).filter(({stop, value}) => stop != null || value);\r\n }\r\n\r\n /** Appends placeholder depending on laziness */\r\n _appendPlaceholder (toDefIndex: ?number): ChangeDetails {\r\n const oldValueLength = this.value.length;\r\n const maxDefIndex = toDefIndex || this._charDefs.length;\r\n for (let di=this.mapPosToDefIndex(this.value.length); di < maxDefIndex; ++di) {\r\n const def = this._charDefs[di];\r\n if (def.isInput) def.isHollow = true;\r\n\r\n if (!this.lazy || toDefIndex) {\r\n this._value += !def.isInput && def.char != null ?\r\n def.char :\r\n !def.optional ?\r\n this.placeholderChar :\r\n '';\r\n }\r\n }\r\n return new ChangeDetails({\r\n inserted: this.value.slice(oldValueLength)\r\n });\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n remove (from: number=0, count: number=this.value.length-from): ChangeDetails {\r\n const fromDefIndex = this.mapPosToDefIndex(from);\r\n const toDefIndex = this.mapPosToDefIndex(from + count);\r\n this._charDefs\r\n .slice(fromDefIndex, toDefIndex)\r\n .forEach(d => d.reset());\r\n\r\n return super.remove(from, count);\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n nearestInputPos (cursorPos: number, direction: Direction=DIRECTION.NONE) {\r\n let step = direction || DIRECTION.RIGHT;\r\n\r\n const initialDefIndex = this.mapPosToDefIndex(cursorPos);\r\n const initialDef = this._charDefs[initialDefIndex];\r\n let di = initialDefIndex;\r\n\r\n let firstInputIndex,\r\n firstFilledInputIndex,\r\n firstVisibleHollowIndex,\r\n nextdi;\r\n\r\n // check if chars at right is acceptable for LEFT and NONE directions\r\n if (direction !== DIRECTION.RIGHT &&\r\n (initialDef && initialDef.isInput ||\r\n // in none direction latest position is acceptable also\r\n direction === DIRECTION.NONE && cursorPos === this.value.length)) {\r\n firstInputIndex = initialDefIndex;\r\n if (initialDef && !initialDef.isHollow) firstFilledInputIndex = initialDefIndex;\r\n }\r\n\r\n if ((firstFilledInputIndex == null && direction == DIRECTION.LEFT) || firstInputIndex == null) {\r\n // search forward\r\n for (\r\n nextdi = indexInDirection(di, step);\r\n 0 <= nextdi && nextdi < this._charDefs.length;\r\n di += step, nextdi += step\r\n ) {\r\n const nextDef = this._charDefs[nextdi];\r\n if (firstInputIndex == null && nextDef.isInput) {\r\n firstInputIndex = di;\r\n if (direction === DIRECTION.NONE) break;\r\n }\r\n if (firstVisibleHollowIndex == null && nextDef.isHollow && !nextDef.isHiddenHollow) firstVisibleHollowIndex = di;\r\n if (nextDef.isInput && !nextDef.isHollow) {\r\n firstFilledInputIndex = di;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // for lazy if has aligned left inside fixed and has came to the start - use start position\r\n if (direction === DIRECTION.LEFT && di === 0 && this.lazy && !this.extractInput() &&\r\n (!initialDef || !initialDef.isInput)) firstInputIndex = 0;\r\n\r\n if (direction === DIRECTION.LEFT || firstInputIndex == null) {\r\n // search backward\r\n step = -step;\r\n let overflow = false;\r\n\r\n // find hollows only before initial pos\r\n for (\r\n nextdi = indexInDirection(di, step);\r\n 0 <= nextdi && nextdi < this._charDefs.length;\r\n di += step, nextdi += step\r\n ) {\r\n const nextDef = this._charDefs[nextdi];\r\n if (nextDef.isInput) {\r\n firstInputIndex = di;\r\n if (nextDef.isHollow && !nextDef.isHiddenHollow) break;\r\n }\r\n\r\n // if hollow not found before start position - set `overflow`\r\n // and try to find just any input\r\n if (di === initialDefIndex) overflow = true;\r\n\r\n // first input found\r\n if (overflow && firstInputIndex != null) break;\r\n }\r\n\r\n // process overflow\r\n overflow = overflow || nextdi >= this._charDefs.length;\r\n if (overflow && firstInputIndex != null) di = firstInputIndex;\r\n } else if (firstFilledInputIndex == null) {\r\n // adjust index if delete at right and filled input not found at right\r\n di = firstVisibleHollowIndex != null ?\r\n firstVisibleHollowIndex :\r\n firstInputIndex;\r\n }\r\n\r\n return this.mapDefIndexToPos(di);\r\n }\r\n\r\n /** Get group by name */\r\n group (name: string): ?PatternGroup {\r\n return this.groupsByName(name)[0];\r\n }\r\n\r\n /** Get all groups by name */\r\n groupsByName (name: string): Array {\r\n return this._groupDefs.filter(g => g.name === name);\r\n }\r\n}\r\nMaskedPattern.DEFAULTS = {\r\n lazy: true,\r\n placeholderChar: '_'\r\n};\r\nMaskedPattern.STOP_CHAR = '`';\r\nMaskedPattern.ESCAPE_CHAR = '\\\\';\r\nMaskedPattern.Definition = PatternDefinition;\r\nMaskedPattern.Group = PatternGroup;\r\n","// @flow\r\nimport MaskedPattern from './pattern.js';\r\nimport PatternGroup from './pattern/group.js';\r\n\r\n\r\n/** Date mask */\r\nexport default\r\nclass MaskedDate extends MaskedPattern {\r\n static GET_DEFAULT_GROUPS: () => {[string]: PatternGroup};\r\n static DEFAULTS: any;\r\n\r\n /** Parse string to Date */\r\n parse: (string) => Date;\r\n /** Format Date to string */\r\n format: (Date) => string;\r\n /** Pattern mask for date according to {@link MaskedDate#format} */\r\n pattern: string;\r\n /** Start date */\r\n min: ?Date;\r\n /** End date */\r\n max: ?Date;\r\n\r\n /**\r\n @param {Object} opts\r\n */\r\n constructor (opts: any) {\r\n super({\r\n ...MaskedDate.DEFAULTS,\r\n ...opts\r\n });\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n _update (opts: any) {\r\n if (opts.mask === Date) delete opts.mask;\r\n if (opts.pattern) {\r\n opts.mask = opts.pattern;\r\n delete opts.pattern;\r\n }\r\n\r\n const groups = opts.groups;\r\n opts.groups = Object.assign({}, MaskedDate.GET_DEFAULT_GROUPS());\r\n // adjust year group\r\n if (opts.min) opts.groups.Y.from = opts.min.getFullYear();\r\n if (opts.max) opts.groups.Y.to = opts.max.getFullYear();\r\n Object.assign(opts.groups, groups);\r\n\r\n super._update(opts);\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n doValidate (...args: *) {\r\n const valid = super.doValidate(...args);\r\n const date = this.date;\r\n\r\n return valid &&\r\n (!this.isComplete ||\r\n this.isDateExist(this.value) && date &&\r\n (this.min == null || this.min <= date) &&\r\n (this.max == null || date <= this.max));\r\n }\r\n\r\n /** Checks if date is exists */\r\n isDateExist (str: string): boolean {\r\n return this.format(this.parse(str)) === str;\r\n }\r\n\r\n /** Parsed Date */\r\n get date (): ?Date {\r\n return this.isComplete ?\r\n this.parse(this.value) :\r\n null;\r\n }\r\n\r\n set date (date: Date) {\r\n this.value = this.format(date);\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n get typedValue (): ?Date {\r\n return this.date;\r\n }\r\n\r\n set typedValue (value: Date) {\r\n this.date = value;\r\n }\r\n}\r\nMaskedDate.DEFAULTS = {\r\n pattern: 'd{.}`m{.}`Y',\r\n format: date => {\r\n const day = String(date.getDate()).padStart(2, '0');\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const year = date.getFullYear();\r\n\r\n return [day, month, year].join('.');\r\n },\r\n parse: str => {\r\n const [day, month, year] = str.split('.');\r\n return new Date(year, month - 1, day);\r\n },\r\n};\r\nMaskedDate.GET_DEFAULT_GROUPS = () => {\r\n return {\r\n d: new PatternGroup.Range([1, 31]),\r\n m: new PatternGroup.Range([1, 12]),\r\n Y: new PatternGroup.Range([1900, 9999]),\r\n };\r\n}","// @flow\r\n\r\nexport\r\ntype ElementEvent =\r\n 'selectionChange' |\r\n 'input' |\r\n 'drop' |\r\n 'click' |\r\n 'focus' |\r\n 'commit';\r\n\r\n/**\r\n Generic element API to use with mask\r\n @interface\r\n*/\r\nexport default\r\nclass MaskElement {\r\n +_unsafeSelectionStart: number;\r\n +_unsafeSelectionEnd: number;\r\n value: string;\r\n\r\n get selectionStart (): number {\r\n let start;\r\n try {\r\n start = this._unsafeSelectionStart;\r\n } catch (e) {}\r\n\r\n return start != null ?\r\n start :\r\n this.value.length;\r\n }\r\n\r\n get selectionEnd (): number {\r\n let end;\r\n try {\r\n end = this._unsafeSelectionEnd;\r\n } catch (e) {}\r\n\r\n return end != null ?\r\n end :\r\n this.value.length;\r\n }\r\n\r\n select (start: number, end: number) {\r\n if (start == null || end == null ||\r\n start === this.selectionStart && end === this.selectionEnd) return;\r\n\r\n try {\r\n this._unsafeSelect(start, end);\r\n } catch (e) {}\r\n }\r\n\r\n _unsafeSelect (start: number, end: number): void {}\r\n isActive (): boolean { return false; }\r\n\r\n bindEvents (handlers: {[ElementEvent]: Function}) {}\r\n unbindEvents (): void {}\r\n}\r\n","// @flow\r\nimport MaskElement, {type ElementEvent} from './mask-element.js';\r\n\r\n\r\nexport default\r\nclass HTMLMaskElement extends MaskElement {\r\n static EVENTS_MAP: {[ElementEvent]: string};\r\n input: HTMLTextAreaElement | HTMLInputElement;\r\n _handlers: {[string]: Function};\r\n\r\n constructor (input: HTMLTextAreaElement | HTMLInputElement) {\r\n super();\r\n this.input = input;\r\n this._handlers = {};\r\n }\r\n\r\n isActive (): boolean {\r\n return this.input === document.activeElement;\r\n }\r\n\r\n get _unsafeSelectionStart (): number {\r\n return this.input.selectionStart;\r\n }\r\n\r\n get _unsafeSelectionEnd (): number {\r\n return this.input.selectionEnd;\r\n }\r\n\r\n _unsafeSelect (start: number, end: number) {\r\n this.input.setSelectionRange(start, end);\r\n }\r\n\r\n get value (): string {\r\n return this.input.value;\r\n }\r\n\r\n set value (value: string) {\r\n this.input.value = value;\r\n }\r\n\r\n bindEvents (handlers: {[ElementEvent]: Function}) {\r\n Object.keys(handlers)\r\n .forEach(event => this._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]));\r\n }\r\n\r\n unbindEvents () {\r\n Object.keys(this._handlers)\r\n .forEach(event => this._toggleEventHandler(event));\r\n }\r\n\r\n _toggleEventHandler (event: string, handler?: Function): void {\r\n if (this._handlers[event]) {\r\n this.input.removeEventListener(event, this._handlers[event]);\r\n delete this._handlers[event];\r\n }\r\n\r\n if (handler) {\r\n this.input.addEventListener(event, handler);\r\n this._handlers[event] = handler;\r\n }\r\n }\r\n}\r\nHTMLMaskElement.EVENTS_MAP = {\r\n selectionChange: 'keydown',\r\n input: 'input',\r\n drop: 'drop',\r\n click: 'click',\r\n focus: 'focus',\r\n commit: 'change',\r\n};\r\n","// @flow\r\nimport {objectIncludes, DIRECTION, type Selection} from '../core/utils.js';\r\nimport ActionDetails from '../core/action-details.js';\r\nimport MaskedDate from '../masked/date.js';\r\nimport createMask, {maskedClass} from '../masked/factory.js';\r\nimport type Masked from '../masked/base.js';\r\nimport {type Mask} from '../masked/base.js';\r\nimport MaskElement from './mask-element.js';\r\nimport HTMLMaskElement from './html-mask-element.js';\r\n\r\n\r\n/** Listens to element events and controls changes between element and {@link Masked} */\r\nexport default\r\nclass InputMask {\r\n /**\r\n View element\r\n @readonly\r\n */\r\n el: MaskElement;\r\n\r\n /**\r\n Internal {@link Masked} model\r\n @readonly\r\n */\r\n masked: Masked<*>;\r\n alignCursor: () => void;\r\n alignCursorFriendly: () => void;\r\n\r\n _listeners: {[string]: Array};\r\n _value: string;\r\n _changingCursorPos: number;\r\n _unmaskedValue: string;\r\n _saveSelection: (?Event) => void;\r\n _selection: Selection;\r\n _onInput: (Event) => void;\r\n _onChange: () => void;\r\n _onDrop: (Event) => void;\r\n _cursorChanging: TimeoutID;\r\n\r\n /**\r\n @param {MaskElement|HTMLInputElement|HTMLTextAreaElement} el\r\n @param {Object} opts\r\n */\r\n constructor (el: MaskElement | HTMLTextAreaElement | HTMLInputElement, opts: {[string]: any}) {\r\n this.el = (el instanceof MaskElement) ?\r\n el :\r\n new HTMLMaskElement(el);\r\n this.masked = createMask(opts);\r\n\r\n this._listeners = {};\r\n this._value = '';\r\n this._unmaskedValue = '';\r\n\r\n this._saveSelection = this._saveSelection.bind(this);\r\n this._onInput = this._onInput.bind(this);\r\n this._onChange = this._onChange.bind(this);\r\n this._onDrop = this._onDrop.bind(this);\r\n this.alignCursor = this.alignCursor.bind(this);\r\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\r\n\r\n this._bindEvents();\r\n\r\n // refresh\r\n this.updateValue();\r\n this._onChange();\r\n }\r\n\r\n /** Read or update mask */\r\n get mask (): Mask {\r\n return this.masked.mask;\r\n }\r\n set mask (mask: Mask) {\r\n if (mask == null ||\r\n mask === this.masked.mask ||\r\n mask === Date && this.masked instanceof MaskedDate) return;\r\n\r\n if (this.masked.constructor === maskedClass(mask)) {\r\n this.masked.mask = mask;\r\n return;\r\n }\r\n\r\n const masked = createMask({mask});\r\n masked.unmaskedValue = this.masked.unmaskedValue;\r\n this.masked = masked;\r\n }\r\n\r\n /** Raw value */\r\n get value (): string {\r\n return this._value;\r\n }\r\n\r\n set value (str: string) {\r\n this.masked.value = str;\r\n this.updateControl();\r\n this.alignCursor();\r\n }\r\n\r\n /** Unmasked value */\r\n get unmaskedValue (): string {\r\n return this._unmaskedValue;\r\n }\r\n\r\n set unmaskedValue (str: string) {\r\n this.masked.unmaskedValue = str;\r\n this.updateControl();\r\n this.alignCursor();\r\n }\r\n\r\n /** Typed unmasked value */\r\n get typedValue (): any {\r\n return this.masked.typedValue;\r\n }\r\n\r\n set typedValue (val: any) {\r\n this.masked.typedValue = val;\r\n this.updateControl();\r\n this.alignCursor();\r\n }\r\n\r\n /**\r\n Starts listening to element events\r\n @protected\r\n */\r\n _bindEvents () {\r\n this.el.bindEvents({\r\n selectionChange: this._saveSelection,\r\n input: this._onInput,\r\n drop: this._onDrop,\r\n click: this.alignCursorFriendly,\r\n focus: this.alignCursorFriendly,\r\n commit: this._onChange,\r\n });\r\n }\r\n\r\n /**\r\n Stops listening to element events\r\n @protected\r\n */\r\n _unbindEvents () {\r\n this.el.unbindEvents();\r\n }\r\n\r\n /**\r\n Fires custom event\r\n @protected\r\n */\r\n _fireEvent (ev: string) {\r\n const listeners = this._listeners[ev];\r\n if (!listeners) return;\r\n\r\n listeners.forEach(l => l());\r\n }\r\n\r\n /**\r\n Current selection start\r\n @readonly\r\n */\r\n get selectionStart (): number {\r\n return this._cursorChanging ?\r\n this._changingCursorPos :\r\n\r\n this.el.selectionStart;\r\n }\r\n\r\n /** Current cursor position */\r\n get cursorPos (): number {\r\n return this._cursorChanging ?\r\n this._changingCursorPos :\r\n\r\n this.el.selectionEnd;\r\n }\r\n set cursorPos (pos: number) {\r\n if (!this.el.isActive) return;\r\n\r\n this.el.select(pos, pos);\r\n this._saveSelection();\r\n }\r\n\r\n /**\r\n Stores current selection\r\n @protected\r\n */\r\n _saveSelection (/* ev */) {\r\n if (this.value !== this.el.value) {\r\n console.warn('Uncontrolled input change, refresh mask manually!'); // eslint-disable-line no-console\r\n }\r\n this._selection = {\r\n start: this.selectionStart,\r\n end: this.cursorPos\r\n };\r\n }\r\n\r\n /** Syncronizes model value from view */\r\n updateValue () {\r\n this.masked.value = this.el.value;\r\n }\r\n\r\n /** Syncronizes view from model value, fires change events */\r\n updateControl () {\r\n const newUnmaskedValue = this.masked.unmaskedValue;\r\n const newValue = this.masked.value;\r\n const isChanged = (this.unmaskedValue !== newUnmaskedValue ||\r\n this.value !== newValue);\r\n\r\n this._unmaskedValue = newUnmaskedValue;\r\n this._value = newValue;\r\n\r\n if (this.el.value !== newValue) this.el.value = newValue;\r\n if (isChanged) this._fireChangeEvents();\r\n }\r\n\r\n /** Updates options with deep equal check, recreates @{link Masked} model if mask type changes */\r\n updateOptions (opts: {[string]: any}) {\r\n opts = {...opts};\r\n\r\n this.mask = opts.mask;\r\n delete opts.mask;\r\n\r\n // check if changed\r\n if (objectIncludes(this.masked, opts)) return;\r\n\r\n this.masked.updateOptions(opts);\r\n this.updateControl();\r\n }\r\n\r\n /** Updates cursor */\r\n updateCursor (cursorPos: number) {\r\n if (cursorPos == null) return;\r\n this.cursorPos = cursorPos;\r\n\r\n // also queue change cursor for mobile browsers\r\n this._delayUpdateCursor(cursorPos);\r\n }\r\n\r\n /**\r\n Delays cursor update to support mobile browsers\r\n @private\r\n */\r\n _delayUpdateCursor (cursorPos: number) {\r\n this._abortUpdateCursor();\r\n this._changingCursorPos = cursorPos;\r\n this._cursorChanging = setTimeout(() => {\r\n if (!this.el) return; // if was destroyed\r\n this.cursorPos = this._changingCursorPos;\r\n this._abortUpdateCursor();\r\n }, 10);\r\n }\r\n\r\n /**\r\n Fires custom events\r\n @protected\r\n */\r\n _fireChangeEvents () {\r\n this._fireEvent('accept');\r\n if (this.masked.isComplete) this._fireEvent('complete');\r\n }\r\n\r\n /**\r\n Aborts delayed cursor update\r\n @private\r\n */\r\n _abortUpdateCursor () {\r\n if (this._cursorChanging) {\r\n clearTimeout(this._cursorChanging);\r\n delete this._cursorChanging;\r\n }\r\n }\r\n\r\n /** Aligns cursor to nearest available position */\r\n alignCursor () {\r\n this.cursorPos = this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT);\r\n }\r\n\r\n /** Aligns cursor only if selection is empty */\r\n alignCursorFriendly () {\r\n if (this.selectionStart !== this.cursorPos) return;\r\n this.alignCursor();\r\n }\r\n\r\n /** Adds listener on custom event */\r\n on (ev: string, handler: Function) {\r\n if (!this._listeners[ev]) this._listeners[ev] = [];\r\n this._listeners[ev].push(handler);\r\n return this;\r\n }\r\n\r\n /** Removes custom event listener */\r\n off (ev: string, handler: Function) {\r\n if (!this._listeners[ev]) return;\r\n if (!handler) {\r\n delete this._listeners[ev];\r\n return;\r\n }\r\n const hIndex = this._listeners[ev].indexOf(handler);\r\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\r\n return this;\r\n }\r\n\r\n /** Handles view input event */\r\n _onInput () {\r\n this._abortUpdateCursor();\r\n\r\n // fix strange IE behavior\r\n if (!this._selection) return this.updateValue();\r\n\r\n const details = new ActionDetails(\r\n // new state\r\n this.el.value, this.cursorPos,\r\n // old state\r\n this.value, this._selection);\r\n\r\n const offset = this.masked.splice(\r\n details.startChangePos,\r\n details.removed.length,\r\n details.inserted,\r\n details.removeDirection).offset;\r\n\r\n const cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, details.removeDirection);\r\n\r\n this.updateControl();\r\n this.updateCursor(cursorPos);\r\n }\r\n\r\n /** Handles view change event and commits model value */\r\n _onChange () {\r\n if (this.value !== this.el.value) {\r\n this.updateValue();\r\n }\r\n this.masked.doCommit();\r\n this.updateControl();\r\n }\r\n\r\n /** Handles view drop event, prevents by default */\r\n _onDrop (ev: Event) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n }\r\n\r\n /** Unbind view events and removes element reference */\r\n destroy () {\r\n this._unbindEvents();\r\n // $FlowFixMe why not do so?\r\n this._listeners.length = 0;\r\n delete this.el;\r\n }\r\n}\r\n","// @flow\r\nimport {escapeRegExp, indexInDirection, type Direction} from '../core/utils.js';\r\nimport Masked, {type MaskedOptions, type AppendFlags} from './base.js';\r\nimport {type TailDetails} from '../core/tail-details.js';\r\n\r\n\r\ntype MaskedNumberOptions = {\r\n ...MaskedOptions,\r\n radix: $PropertyType,\r\n thousandsSeparator: $PropertyType,\r\n mapToRadix: $PropertyType,\r\n scale: $PropertyType,\r\n signed: $PropertyType,\r\n normalizeZeros: $PropertyType,\r\n padFractionalZeros: $PropertyType,\r\n};\r\n\r\n/**\r\n Number mask\r\n @param {Object} opts\r\n @param {string} opts.radix - Single char\r\n @param {string} opts.thousandsSeparator - Single char\r\n @param {Array} opts.mapToRadix - Array of single chars\r\n @param {number} opts.min\r\n @param {number} opts.max\r\n @param {number} opts.scale - Digits after point\r\n @param {boolean} opts.signed - Allow negative\r\n @param {boolean} opts.normalizeZeros - Flag to remove leading and trailing zeros in the end of editing\r\n @param {boolean} opts.padFractionalZeros - Flag to pad trailing zeros after point in the end of editing\r\n*/\r\nexport default\r\nclass MaskedNumber extends Masked {\r\n static DEFAULTS: $Shape;\r\n\r\n /** Single char */\r\n radix: string;\r\n /** Single char */\r\n thousandsSeparator: string;\r\n /** Array of single chars */\r\n mapToRadix: Array;\r\n /** */\r\n min: number;\r\n /** */\r\n max: number;\r\n /** Digits after point */\r\n scale: number;\r\n /** */\r\n signed: boolean;\r\n /** Flag to remove leading and trailing zeros in the end of editing */\r\n normalizeZeros: boolean;\r\n /** Flag to pad trailing zeros after point in the end of editing */\r\n padFractionalZeros: boolean;\r\n _numberRegExp: RegExp;\r\n _numberRegExpInput: RegExp;\r\n _thousandsSeparatorRegExp: RegExp;\r\n _mapToRadixRegExp: RegExp;\r\n\r\n constructor (opts: $Shape) {\r\n super({\r\n ...MaskedNumber.DEFAULTS,\r\n ...opts\r\n });\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n _update (opts: MaskedNumberOptions) {\r\n super._update(opts);\r\n this._updateRegExps();\r\n }\r\n\r\n /** */\r\n _updateRegExps () {\r\n // use different regexp to process user input (more strict, input suffix) and tail shifting\r\n const start = '^'\r\n\r\n let midInput = '';\r\n let mid = '';\r\n if (this.allowNegative) {\r\n midInput += '([+|\\\\-]?|([+|\\\\-]?(0|([1-9]+\\\\d*))))';\r\n mid += '[+|\\\\-]?';\r\n } else {\r\n midInput += '(0|([1-9]+\\\\d*))';\r\n }\r\n mid += '\\\\d*';\r\n\r\n let end = (this.scale ?\r\n '(' + this.radix + '\\\\d{0,' + this.scale + '})?' :\r\n '') + '$';\r\n\r\n this._numberRegExpInput = new RegExp(start + midInput + end);\r\n this._numberRegExp = new RegExp(start + mid + end);\r\n this._mapToRadixRegExp = new RegExp('[' +\r\n this.mapToRadix.map(escapeRegExp).join('') +\r\n ']', 'g');\r\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n _extractTail (fromPos: number=0, toPos: number=this.value.length): TailDetails {\r\n const tail = super._extractTail(fromPos, toPos);\r\n\r\n return {\r\n ...tail,\r\n value: this._removeThousandsSeparators(tail.value),\r\n };\r\n }\r\n\r\n /** */\r\n _removeThousandsSeparators (value: string): string {\r\n return value.replace(this._thousandsSeparatorRegExp, '');\r\n }\r\n\r\n /** */\r\n _insertThousandsSeparators (value: string): string {\r\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\r\n const parts = value.split(this.radix);\r\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\r\n return parts.join(this.radix);\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n doPrepare (str: string, ...args: *) {\r\n return super.doPrepare(this._removeThousandsSeparators(str.replace(this._mapToRadixRegExp, this.radix)), ...args);\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n appendWithTail (...args: *) {\r\n let previousValue = this.value;\r\n this._value = this._removeThousandsSeparators(this.value);\r\n let startChangePos = this.value.length;\r\n\r\n const appendDetails = super.appendWithTail(...args);\r\n this._value = this._insertThousandsSeparators(this.value);\r\n\r\n // calculate offsets after insert separators\r\n let beforeTailPos = startChangePos + appendDetails.inserted.length;\r\n for (let pos = 0; pos <= beforeTailPos; ++pos) {\r\n if (this.value[pos] === this.thousandsSeparator) {\r\n if (pos < startChangePos ||\r\n // check high bound\r\n // if separator is still there - consider it also\r\n (pos === startChangePos && previousValue[pos] === this.thousandsSeparator)) {\r\n ++startChangePos;\r\n }\r\n if (pos < beforeTailPos) ++beforeTailPos;\r\n }\r\n }\r\n\r\n // adjust details with separators\r\n appendDetails.rawInserted = appendDetails.inserted;\r\n appendDetails.inserted = this.value.slice(startChangePos, beforeTailPos);\r\n appendDetails.shift += startChangePos - previousValue.length;\r\n\r\n return appendDetails;\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n nearestInputPos (cursorPos: number, direction?: Direction): number {\r\n if (!direction) return cursorPos;\r\n\r\n const nextPos = indexInDirection(cursorPos, direction);\r\n if (this.value[nextPos] === this.thousandsSeparator) cursorPos += direction;\r\n return cursorPos;\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n doValidate (flags: AppendFlags) {\r\n const regexp = flags.input ? this._numberRegExpInput : this._numberRegExp;\r\n\r\n // validate as string\r\n let valid = regexp.test(this._removeThousandsSeparators(this.value));\r\n\r\n if (valid) {\r\n // validate as number\r\n const number = this.number;\r\n valid = valid && !isNaN(number) &&\r\n // check min bound for negative values\r\n (this.min == null || this.min >= 0 || this.min <= this.number) &&\r\n // check max bound for positive values\r\n (this.max == null || this.max <= 0 || this.number <= this.max);\r\n }\r\n\r\n return valid && super.doValidate(flags);\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n doCommit () {\r\n const number = this.number;\r\n let validnum = number;\r\n\r\n // check bounds\r\n if (this.min != null) validnum = Math.max(validnum, this.min);\r\n if (this.max != null) validnum = Math.min(validnum, this.max);\r\n\r\n if (validnum !== number) this.unmaskedValue = String(validnum);\r\n\r\n let formatted = this.value;\r\n\r\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\r\n if (this.padFractionalZeros) formatted = this._padFractionalZeros(formatted);\r\n\r\n this._value = this._insertThousandsSeparators(formatted);\r\n super.doCommit();\r\n }\r\n\r\n /** */\r\n _normalizeZeros (value: string): string {\r\n const parts = this._removeThousandsSeparators(value).split(this.radix);\r\n\r\n // remove leading zeros\r\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\r\n // add leading zero\r\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\r\n\r\n if (parts.length > 1) {\r\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\r\n if (!parts[1].length) parts.length = 1; // remove fractional\r\n }\r\n\r\n return this._insertThousandsSeparators(parts.join(this.radix));\r\n }\r\n\r\n /** */\r\n _padFractionalZeros (value: string): string {\r\n if (!value) return value;\r\n\r\n const parts = value.split(this.radix);\r\n if (parts.length < 2) parts.push('');\r\n parts[1] = parts[1].padEnd(this.scale, '0');\r\n return parts.join(this.radix);\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n get unmaskedValue (): string {\r\n return this._removeThousandsSeparators(\r\n this._normalizeZeros(\r\n this.value))\r\n .replace(this.radix, '.');\r\n }\r\n\r\n set unmaskedValue (unmaskedValue: string) {\r\n super.unmaskedValue = unmaskedValue.replace('.', this.radix);\r\n }\r\n\r\n /** Parsed Number */\r\n get number (): number {\r\n return Number(this.unmaskedValue);\r\n }\r\n\r\n set number (number: number) {\r\n this.unmaskedValue = String(number);\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n get typedValue (): number {\r\n return this.number;\r\n }\r\n\r\n set typedValue (value: number) {\r\n this.number = value;\r\n }\r\n\r\n /**\r\n Is negative allowed\r\n @readonly\r\n */\r\n get allowNegative (): boolean {\r\n return this.signed ||\r\n (this.min != null && this.min < 0) ||\r\n (this.max != null && this.max < 0);\r\n }\r\n}\r\nMaskedNumber.DEFAULTS = {\r\n radix: ',',\r\n thousandsSeparator: '',\r\n mapToRadix: ['.'],\r\n scale: 2,\r\n signed: false,\r\n normalizeZeros: true,\r\n padFractionalZeros: false,\r\n};\r\n","// @flow\r\nimport Masked, {type MaskedOptions} from './base.js';\r\n\r\n\r\n/** Masking by RegExp */\r\nexport default\r\nclass MaskedRegExp extends Masked {\r\n /**\r\n @override\r\n @param {Object} opts\r\n */\r\n _update (opts: $Shape>) {\r\n opts.validate = (value) => value.search(opts.mask) >= 0;\r\n super._update(opts);\r\n }\r\n}\r\n","// @flow\r\nimport Masked, {type MaskedOptions} from './base.js';\r\n\r\n\r\n/** Masking by custom Function */\r\nexport default\r\nclass MaskedFunction extends Masked {\r\n /**\r\n @override\r\n @param {Object} opts\r\n */\r\n _update (opts: MaskedOptions) {\r\n opts.validate = opts.mask;\r\n super._update(opts);\r\n }\r\n}\r\n","// @flow\r\nimport ChangeDetails from '../core/change-details.js';\r\nimport createMask from './factory.js';\r\nimport Masked, {type AppendFlags} from './base.js';\r\nimport {type TailDetails} from '../core/tail-details.js';\r\n\r\n\r\ntype DynamicMaskType = Array<{[string]: any}>;\r\n/** Dynamic mask for choosing apropriate mask in run-time */\r\nexport default\r\nclass MaskedDynamic extends Masked {\r\n /** Currently chosen mask */\r\n currentMask: ?Masked<*>;\r\n /** Compliled {@link Masked} options */\r\n compiledMasks: Array>;\r\n /** Chooses {@link Masked} depending on input value */\r\n dispatch: (string, Masked<*>, AppendFlags) => Masked<*>;\r\n\r\n /**\r\n @param {Object} opts\r\n */\r\n constructor (opts: any) {\r\n super({\r\n ...MaskedDynamic.DEFAULTS,\r\n ...opts\r\n });\r\n\r\n this.currentMask = null;\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n _update (opts: any) {\r\n super._update(opts);\r\n // mask could be totally dynamic with only `dispatch` option\r\n this.compiledMasks = Array.isArray(opts.mask) ?\r\n opts.mask.map(m => createMask(m)) :\r\n [];\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n _append (str: string, ...args: *): ChangeDetails {\r\n str = this.doPrepare(str, ...args);\r\n\r\n const details = this._applyDispatch(str, ...args);\r\n\r\n if (this.currentMask) {\r\n details.aggregate(this.currentMask._append(str, ...args));\r\n }\r\n\r\n return details;\r\n }\r\n\r\n _applyDispatch (appended: string='', ...args: *) {\r\n const oldValueLength = this.value.length;\r\n const inputValue = this.rawInputValue;\r\n const oldMask = this.currentMask;\r\n const details = new ChangeDetails();\r\n\r\n // dispatch SHOULD NOT modify mask\r\n this.currentMask = this.doDispatch(appended, ...args);\r\n\r\n // restore state after dispatch\r\n if (this.currentMask && this.currentMask !== oldMask) {\r\n // if mask changed reapply input\r\n this.currentMask.reset();\r\n // $FlowFixMe - it's ok, we don't change current mask\r\n this.currentMask._append(inputValue, {raw: true});\r\n details.shift = this.value.length - oldValueLength;\r\n }\r\n\r\n return details;\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n doDispatch(appended: string, flags: AppendFlags={}) {\r\n return this.dispatch(appended, this, flags);\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n clone (): MaskedDynamic {\r\n const m = new MaskedDynamic(this);\r\n m._value = this.value;\r\n\r\n // try to keep reference to compiled masks\r\n const currentMaskIndex = this.compiledMasks.indexOf(this.currentMask);\r\n if (this.currentMask) {\r\n m.currentMask = currentMaskIndex >= 0 ?\r\n m.compiledMasks[currentMaskIndex].assign(this.currentMask) :\r\n this.currentMask.clone();\r\n }\r\n\r\n return m;\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n reset () {\r\n if (this.currentMask) this.currentMask.reset();\r\n this.compiledMasks.forEach(cm => cm.reset());\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n get value (): string {\r\n return this.currentMask ? this.currentMask.value : '';\r\n }\r\n\r\n set value (value: string) {\r\n super.value = value;\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n get unmaskedValue (): string {\r\n return this.currentMask ? this.currentMask.unmaskedValue : '';\r\n }\r\n\r\n set unmaskedValue (unmaskedValue: string) {\r\n super.unmaskedValue = unmaskedValue;\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n get typedValue (): any {\r\n return this.currentMask ? this.currentMask.typedValue : '';\r\n }\r\n\r\n set typedValue (value: any) {\r\n let unmaskedValue = String(value);\r\n if (this.currentMask) {\r\n this.currentMask.typedValue = value;\r\n unmaskedValue = this.currentMask.unmaskedValue;\r\n }\r\n this.unmaskedValue = unmaskedValue;\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n get isComplete (): boolean {\r\n return !!this.currentMask && this.currentMask.isComplete;\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n remove (...args: *): ChangeDetails {\r\n const details: ChangeDetails = new ChangeDetails();\r\n if (this.currentMask) {\r\n details.aggregate(this.currentMask.remove(...args))\r\n // update with dispatch\r\n .aggregate(this._applyDispatch());\r\n }\r\n\r\n return details;\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n extractInput (...args: *): string {\r\n return this.currentMask ?\r\n this.currentMask.extractInput(...args) :\r\n '';\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n _extractTail (...args: *): TailDetails {\r\n return this.currentMask ?\r\n this.currentMask._extractTail(...args) :\r\n super._extractTail(...args);\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n _appendTail (tail?: TailDetails): ChangeDetails {\r\n const details = new ChangeDetails();\r\n if (tail) details.aggregate(this._applyDispatch(tail.value));\r\n\r\n return details.aggregate(this.currentMask ?\r\n this.currentMask._appendTail(tail) :\r\n super._appendTail(tail));\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n doCommit () {\r\n if (this.currentMask) this.currentMask.doCommit();\r\n super.doCommit();\r\n }\r\n\r\n /**\r\n @override\r\n */\r\n nearestInputPos(...args: *): number {\r\n return this.currentMask ?\r\n this.currentMask.nearestInputPos(...args) :\r\n super.nearestInputPos(...args);\r\n }\r\n}\r\n\r\nMaskedDynamic.DEFAULTS = {\r\n dispatch: (appended, masked, flags) => {\r\n if (!masked.compiledMasks.length) return;\r\n\r\n const inputValue = masked.rawInputValue;\r\n\r\n // simulate input\r\n const inputs = masked.compiledMasks.map((cm, index) => {\r\n const m = cm.clone();\r\n m.rawInputValue = inputValue;\r\n m._append(appended, flags);\r\n\r\n return {value: m.rawInputValue.length, index};\r\n });\r\n\r\n // pop masks with longer values first\r\n inputs.sort((i1, i2) => i2.value - i1.value);\r\n\r\n return masked.compiledMasks[inputs[0].index];\r\n }\r\n};\r\n","import {g} from './core/utils.js';\r\n\r\nimport InputMask from './controls/input.js';\r\n\r\nimport Masked from './masked/base.js';\r\nimport MaskedPattern from './masked/pattern.js';\r\nimport MaskedNumber from './masked/number.js';\r\nimport MaskedDate from './masked/date.js';\r\nimport MaskedRegExp from './masked/regexp.js';\r\nimport MaskedFunction from './masked/function.js';\r\nimport MaskedDynamic from './masked/dynamic.js';\r\nimport createMask from './masked/factory.js';\r\nimport MaskElement from './controls/mask-element.js';\r\nimport HTMLMaskElement from './controls/html-mask-element.js';\r\n\r\n\r\n/**\r\n * Applies mask on element.\r\n * @constructor\r\n * @param {HTMLInputElement|HTMLTextAreaElement|MaskElement} el - Element to apply mask\r\n * @param {Object} opts - Custom mask options\r\n * @return {InputMask}\r\n */\r\nexport default\r\nfunction IMask (el, opts={}) {\r\n\t// currently available only for input-like elements\r\n return new InputMask(el, opts);\r\n}\r\n\r\n/** {@link InputMask} */\r\nIMask.InputMask = InputMask;\r\n\r\n/** {@link Masked} */\r\nIMask.Masked = Masked;\r\n/** {@link MaskedPattern} */\r\nIMask.MaskedPattern = MaskedPattern;\r\n/** {@link MaskedNumber} */\r\nIMask.MaskedNumber = MaskedNumber;\r\n/** {@link MaskedDate} */\r\nIMask.MaskedDate = MaskedDate;\r\n/** {@link MaskedRegExp} */\r\nIMask.MaskedRegExp = MaskedRegExp;\r\n/** {@link MaskedFunction} */\r\nIMask.MaskedFunction = MaskedFunction;\r\n/** {@link MaskedDynamic} */\r\nIMask.MaskedDynamic = MaskedDynamic;\r\n/** {@link createMask} */\r\nIMask.createMask = createMask;\r\n/** {@link MaskElement} */\r\nIMask.MaskElement = MaskElement;\r\n/** {@link HTMLMaskElement} */\r\nIMask.HTMLMaskElement = HTMLMaskElement;\r\n\r\ng.IMask = IMask;\r\n"],"names":["it","undefined","TypeError","hasOwnProperty","key","call","toString","Object","propertyIsEnumerable","slice","cof","split","IObject","defined","ceil","Math","floor","isNaN","min","toInteger","max","IS_INCLUDES","global","module","window","self","Function","__g","store","id","px","random","concat","shared","arrayIndexOf","$this","el","fromIndex","value","O","toIObject","length","toLength","index","toAbsoluteIndex","IE_PROTO","uid","require$$1","keys","object","names","i","result","has","push","$keys","enumBugKeys","core","version","__e","isObject","exec","e","require$$0","defineProperty","get","a","document","is","createElement","dP","P","Attributes","anObject","S","fn","val","valueOf","toPrimitive","IE8_DOM_DEFINE","f","bitmap","enumerable","configurable","writable","createDesc","SRC","$toString","TPL","inspectSource","safe","isFunction","hide","join","String","prototype","this","that","aFunction","b","c","apply","arguments","$export","type","name","source","own","out","exp","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","B","target","exports","expProto","ctx","redefine","U","W","R","KEY","toObject","fails","count","str","res","n","Infinity","RangeError","repeat","maxLength","fillString","left","stringLength","fillStr","intMaxLength","fillLen","stringFiller","navigator","userAgent","test","padStart","$pad","padEnd","isString","conform","fallback","DIRECTION","indexInDirection","pos","direction","LEFT","escapeRegExp","replace","g","ActionDetails","cursorPos","oldValue","oldSelection","startChangePos","start","substr","insertedCount","end","removedCount","substring","NONE","RIGHT","ChangeDetails","details","rawInserted","inserted","shift","overflow","_rawInserted","Masked","opts","_value","_update","isInitialized","withValueRefresh","bind","m","babelHelpers.extends","reset","_append","input","_appendTail","doCommit","fromPos","toPos","extractInput","tail","flags","oldValueLength","consistentValue","clone","doPrepare","ci","doValidate","assign","aggregateDetails","consistentAppended","ch","appendDetails","aggregate","from","_refreshing","unmasked","unmaskedValue","ret","resolve","prepare","validate","commit","deleteCount","removeDirection","tailPos","_extractTail","nearestInputPos","remove","appendWithTail","raw","maskedClass","mask","Error","RegExp","IMask","MaskedRegExp","MaskedPattern","Date","MaskedDate","Number","MaskedNumber","Array","isArray","MaskedDynamic","MaskedFunction","warn","createMask","PatternDefinition","_masked","isHollow","isRawInput","TYPES","INPUT","optional","DEFAULTS","PatternGroup","masked","offset","mapDefIndexToPos","RangeGroup","to","maxlen","_from","_to","_maxLength","minstr","maxstr","match","placeholder","num","search","_matchFrom","Range","Enum","enums","group","some","indexOf","ChunksTailDetails","chunks","map","firstChunk","stop","lastChunk","definitions","_rebuildMask","defs","_charDefs","_groupDefs","pattern","unmaskingBlock","optionalBlock","stopAlign","_this2","groups","p","gNames","filter","gName","sort","char","FIXED","unmasking","STOP_CHAR","ESCAPE_CHAR","args","every","forEach","d","_this3","defIndex","isHiddenHollow","hiddenHollowsBefore","di","def","_appendChunks","_appendPlaceholder","mapPosToDefIndex","resolved","skipped","chres","lazy","placeholderChar","fromDef","_extractInputChunks","toDefIndex","isInput","fromDefIndex","stopDefIndices","stops","s","_this4","maxDefIndex","step","initialDefIndex","initialDef","firstInputIndex","firstFilledInputIndex","firstVisibleHollowIndex","nextdi","nextDef","groupsByName","_this5","Definition","Group","GET_DEFAULT_GROUPS","Y","getFullYear","valid","date","isComplete","isDateExist","format","parse","getDate","getMonth","day","month","year","MaskElement","selectionStart","selectionEnd","_unsafeSelect","handlers","_unsafeSelectionStart","_unsafeSelectionEnd","HTMLMaskElement","_handlers","activeElement","setSelectionRange","_toggleEventHandler","EVENTS_MAP","event","handler","removeEventListener","addEventListener","InputMask","_listeners","_unmaskedValue","_saveSelection","_onInput","_onChange","_onDrop","alignCursor","alignCursorFriendly","_bindEvents","updateValue","bindEvents","unbindEvents","ev","listeners","l","_selection","newUnmaskedValue","newValue","isChanged","_fireChangeEvents","objectIncludes","arrA","arrB","dateA","dateB","getTime","regexpA","regexpB","updateOptions","updateControl","_delayUpdateCursor","_abortUpdateCursor","_changingCursorPos","_cursorChanging","setTimeout","_this","_fireEvent","hIndex","splice","removed","updateCursor","preventDefault","stopPropagation","_unbindEvents","constructor","typedValue","isActive","select","_updateRegExps","midInput","mid","allowNegative","scale","radix","_numberRegExpInput","_numberRegExp","_mapToRadixRegExp","mapToRadix","_thousandsSeparatorRegExp","thousandsSeparator","_removeThousandsSeparators","parts","previousValue","_insertThousandsSeparators","beforeTailPos","nextPos","number","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","sign","zeros","signed","currentMask","compiledMasks","_applyDispatch","appended","inputValue","rawInputValue","oldMask","doDispatch","dispatch","currentMaskIndex","cm","inputs","i1","i2"],"mappings":"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"} \ No newline at end of file diff --git a/views/_card.erb b/views/_card.erb new file mode 100644 index 00000000..7c138cda --- /dev/null +++ b/views/_card.erb @@ -0,0 +1,705 @@ + + +
+
+
+
+ + + + + + + + + + + 0123 4567 8910 1112 + JOHN DOE + cardholder name + expiration + card number + + 01/23 + VALID + THRU + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + 985 + + security code + + + + John Doe + + +
+
+
+
+ +
+ + + + + +
+
+ + +
+
+ + +
+
+ + + + \ No newline at end of file diff --git a/views/supporter/_signupcode.erb b/views/supporter/_signupcode.erb index 4f453378..bb4edae6 100644 --- a/views/supporter/_signupcode.erb +++ b/views/supporter/_signupcode.erb @@ -8,14 +8,15 @@ $(document).ready(function() { $('#upgradeForm').submit(function(event) { - /* event.preventDefault(); */ + event.preventDefault(); if ($('#stripe_token').val() === '') { Stripe.card.createToken({ - number: $('[name="cc_number"]').val(), - cvc: $('[name="cc_cvc"]').val(), - exp_month: $('[name="cc_exp_month"]').val(), - exp_year: $('[name="cc_exp_year"]').val() + //name: $('input[id="name"]').val(), + number: $('input[id="cardnumber"]').val(), + cvc: $('input[id="securitycode"]').val(), + exp_month: $('input[id="expirationdate"]').val().split('/')[0], + exp_year: $('input[id="expirationdate"]').val().split('/')[1] }, stripeResponseHandler); return false; } else { @@ -25,12 +26,10 @@ }); function clearCardInfo() { - $('[name="cc_number"]').val(''); - $('[name="cc_cvc"]').val(''); - $('[name="cc_exp_month"]').val(''); - $('[name="cc_exp_year"]').val(''); - $('[name="cc_name"]').val(''); - $('[name="cc_type"]').val(''); + //$('input[id="name"]').val(''); + $('input[id="cardnumber"]').val(''); + $('input[id="securitycode"]').val(''); + $('input[id="expirationdate"]').val(''); } function stripeResponseHandler(status, response) { @@ -40,7 +39,9 @@ var token = response.id; $('#stripe_token').val(token); clearCardInfo(); + $('.form-container').html('Thank you!
Upgrading your account, please wait...') $('#upgradeForm').off('submit').submit(); + $('#upgradeDiv').css('display', 'none'); } } }); diff --git a/views/welcome.erb b/views/welcome.erb index ce99dcf1..4459b0fd 100644 --- a/views/welcome.erb +++ b/views/welcome.erb @@ -68,49 +68,21 @@
-

Just enter your card info, and you're done:

-
- -
- <%== csrf_token_input_html %> - - - -
-

- - - - - - - - - - - - -
-
-
+ +
+ <%== csrf_token_input_html %> + + + <%== erb :'_card'%> +
- @@ -158,7 +130,4 @@ placement: 'top' }) }) - - + \ No newline at end of file