PageSourceSearch

https://ptc-vector.ru/local/templates/vector/libs/inputMask/inputmask.phone.extensions.js?16055858183974

js ptc-vector.ru collected 2026-10-09 03:31:44 UTC 3,974 bytes, 119 lines download raw bytes

1/*
2 Input Mask plugin extensions
3 http://github.com/RobinHerbots/jquery.inputmask
4 Copyright (c) 2010 -  Robin Herbots
5 Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
6 Version: 0.0.0-dev
7
8 Phone extension.
9
10 */
11(function (factory) {
12	if (typeof define === "function" && define.amd) {
13		define(["inputmask.dependencyLib", "inputmask"], factory);
14	} else if (typeof exports === "object") {
15		module.exports = factory(require("./inputmask.dependencyLib"), require("./inputmask"));
16	} else {
17		factory(window.dependencyLib || jQuery, window.Inputmask);
18	}
19}
20(function ($, Inputmask) {
21	function maskSort(a, b) {
22		var maska = (a.mask || a).replace(/#/g, "9").replace(/\)/, "9").replace(/[+()#-]/g, ""),
23			maskb = (b.mask || b).replace(/#/g, "9").replace(/\)/, "9").replace(/[+()#-]/g, ""),
24			maskas = (a.mask || a).split("#")[0],
25			maskbs = (b.mask || b).split("#")[0];
26
27		return maskbs.indexOf(maskas) === 0 ? -1 : (maskas.indexOf(maskbs) === 0 ? 1 : maska.localeCompare(maskb));
28	}
29
30	var analyseMaskBase = Inputmask.prototype.analyseMask;
31
32	Inputmask.prototype.analyseMask = function (mask, opts) {
33		var maskGroups = {};
34
35		function reduceVariations(masks, previousVariation, previousmaskGroup) {
36			previousVariation = previousVariation || "";
37			previousmaskGroup = previousmaskGroup || maskGroups;
38			if (previousVariation !== "")
39				previousmaskGroup[previousVariation] = {};
40			var variation = "", maskGroup = previousmaskGroup[previousVariation] || previousmaskGroup;
41			for (var i = masks.length - 1; i >= 0; i--) {
42				mask = masks[i].mask || masks[i];
43				variation = mask.substr(0, 1);
44				maskGroup[variation] = maskGroup[variation] || [];
45				maskGroup[variation].unshift(mask.substr(1));
46				masks.splice(i, 1);
47			}
48			for (var ndx in maskGroup) {
49				if (maskGroup[ndx].length > 500) {
50					reduceVariations(maskGroup[ndx].slice(), ndx, maskGroup);
51				}
52			}
53		}
54
55		function rebuild(maskGroup) {
56			var mask = "", submasks = [];
57			for (var ndx in maskGroup) {
58				if ($.isArray(maskGroup[ndx])) {
59					if (maskGroup[ndx].length === 1)
60						submasks.push(ndx + maskGroup[ndx]);
61					else
62						submasks.push(ndx + opts.groupmarker.start + maskGroup[ndx].join(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start) + opts.groupmarker.end);
63				} else {
64					submasks.push(ndx + rebuild(maskGroup[ndx]));
65				}
66			}
67			if (submasks.length === 1) {
68				mask += submasks[0];
69			} else {
70				mask += opts.groupmarker.start + submasks.join(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start) + opts.groupmarker.end;
71			}
72
73			return mask;
74		}
75
76
77		if (opts.phoneCodes) {
78			if (opts.phoneCodes && opts.phoneCodes.length > 1000) {
79				mask = mask.substr(1, mask.length - 2);
80				reduceVariations(mask.split(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start));
81				mask = rebuild(maskGroups);
82			}
83			//escape 9 definition
84			mask = mask.replace(/9/g, "\\9");
85		}
86		// console.log(mask);
87		var mt = analyseMaskBase.call(this, mask, opts);
88		return mt;
89	};
90	Inputmask.extendAliases({
91		"abstractphone": {
92			groupmarker: {
93				start: "<",
94				end: ">"
95			},
96			countrycode: "",
97			phoneCodes: [],
98			mask: function (opts) {
99				opts.definitions = {"#": Inputmask.prototype.definitions["9"]};
100				return opts.phoneCodes.sort(maskSort);
101			},
102			keepStatic: true,
103			onBeforeMask: function (value, opts) {
104				var processedValue = value.replace(/^0{1,2}/, "").replace(/[\s]/g, "");
105				if (processedValue.indexOf(opts.countrycode) > 1 || processedValue.indexOf(opts.countrycode) === -1) {
106					processedValue = "+" + opts.countrycode + processedValue;
107				}
108
109				return processedValue;
110			},
111			onUnMask: function (maskedValue, unmaskedValue, opts) {
112				//implement me
113				return unmaskedValue;
114			},
115			inputmode: "tel",
116		}
117	});
118	return Inputmask;
119}));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.