inputmask.phone.extensions.js 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*!
  2. * inputmask.phone.extensions.js
  3. * https://github.com/RobinHerbots/jquery.inputmask
  4. * Copyright (c) 2010 - 2017 Robin Herbots
  5. * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
  6. <<<<<<< HEAD
  7. * Version: 3.3.5-49
  8. =======
  9. * Version: 3.3.5-34
  10. >>>>>>> refs/remotes/origin/3.x
  11. */
  12. !function(factory) {
  13. "function" == typeof define && define.amd ? define([ "./dependencyLibs/inputmask.dependencyLib", "./inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./dependencyLibs/inputmask.dependencyLib"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);
  14. }(function($, Inputmask) {
  15. function maskSort(a, b) {
  16. var maska = (a.mask || a).replace(/#/g, "9").replace(/\)/, "9").replace(/[+()#-]/g, ""), maskb = (b.mask || b).replace(/#/g, "9").replace(/\)/, "9").replace(/[+()#-]/g, ""), maskas = (a.mask || a).split("#")[0], maskbs = (b.mask || b).split("#")[0];
  17. return 0 === maskbs.indexOf(maskas) ? -1 : 0 === maskas.indexOf(maskbs) ? 1 : maska.localeCompare(maskb);
  18. }
  19. var analyseMaskBase = Inputmask.prototype.analyseMask;
  20. return Inputmask.prototype.analyseMask = function(mask, opts) {
  21. function reduceVariations(masks, previousVariation, previousmaskGroup) {
  22. previousVariation = previousVariation || "", previousmaskGroup = previousmaskGroup || maskGroups,
  23. "" !== previousVariation && (previousmaskGroup[previousVariation] = {});
  24. for (var variation = "", maskGroup = previousmaskGroup[previousVariation] || previousmaskGroup, i = masks.length - 1; i >= 0; i--) mask = masks[i].mask || masks[i],
  25. variation = mask.substr(0, 1), maskGroup[variation] = maskGroup[variation] || [],
  26. maskGroup[variation].unshift(mask.substr(1)), masks.splice(i, 1);
  27. for (var ndx in maskGroup) maskGroup[ndx].length > 500 && reduceVariations(maskGroup[ndx].slice(), ndx, maskGroup);
  28. }
  29. function rebuild(maskGroup) {
  30. var mask = "", submasks = [];
  31. for (var ndx in maskGroup) $.isArray(maskGroup[ndx]) ? 1 === maskGroup[ndx].length ? submasks.push(ndx + maskGroup[ndx]) : submasks.push(ndx + opts.groupmarker.start + maskGroup[ndx].join(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start) + opts.groupmarker.end) : submasks.push(ndx + rebuild(maskGroup[ndx]));
  32. return mask += 1 === submasks.length ? submasks[0] : opts.groupmarker.start + submasks.join(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start) + opts.groupmarker.end;
  33. }
  34. var maskGroups = {};
  35. opts.phoneCodes && (opts.phoneCodes && opts.phoneCodes.length > 1e3 && (mask = mask.substr(1, mask.length - 2),
  36. reduceVariations(mask.split(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start)),
  37. mask = rebuild(maskGroups)), mask = mask.replace(/9/g, "\\9"));
  38. var mt = analyseMaskBase.call(this, mask, opts);
  39. return mt;
  40. }, Inputmask.extendAliases({
  41. abstractphone: {
  42. groupmarker: {
  43. start: "<",
  44. end: ">"
  45. },
  46. countrycode: "",
  47. phoneCodes: [],
  48. mask: function(opts) {
  49. return opts.definitions = {
  50. "#": Inputmask.prototype.definitions[9]
  51. }, opts.phoneCodes.sort(maskSort);
  52. },
  53. keepStatic: !0,
  54. onBeforeMask: function(value, opts) {
  55. var processedValue = value.replace(/^0{1,2}/, "").replace(/[\s]/g, "");
  56. return (processedValue.indexOf(opts.countrycode) > 1 || processedValue.indexOf(opts.countrycode) === -1) && (processedValue = "+" + opts.countrycode + processedValue),
  57. processedValue;
  58. },
  59. onUnMask: function(maskedValue, unmaskedValue, opts) {
  60. return unmaskedValue;
  61. },
  62. inputmode: "tel"
  63. }
  64. }), Inputmask;
  65. });