PluginProbe
Booking Calendar / 11.8
Booking Calendar v11.8
11.8.4 11.8.3 11.8.2 11.8.1 11.8 11.7 11.6.1 11.6 11.5 11.4.3 11.4.2 11.4.1 11.4 11.3 11.2.1 11.2 11.1 11.0 10.15.7 10.15.6 10.1.3 10.10 10.10.1 10.10.2 10.11 All 204 releases
booking / vendors / imask / esm / masked / pattern / input-definition.js

input-definition.js in Booking Calendar 11.8, at vendors/imask/esm/masked/pattern/input-definition.js

188 lines 8.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import createMask from '../factory.js';
2 import ChangeDetails from '../../core/change-details.js';
3 import { DIRECTION } from '../../core/utils.js';
4 import '../../core/holder.js';
5
6 class PatternInputDefinition {
7 /** */
8
9 /** */
10
11 /** */
12
13 /** */
14
15 /** */
16
17 /** */
18
19 /** */
20
21 /** */
22
23 constructor(opts) {
24 const {
25 parent,
26 isOptional,
27 placeholderChar,
28 displayChar,
29 lazy,
30 eager,
31 ...maskOpts
32 } = opts;
33 this.masked = createMask(maskOpts);
34 Object.assign(this, {
35 parent,
36 isOptional,
37 placeholderChar,
38 displayChar,
39 lazy,
40 eager
41 });
42 }
43 reset() {
44 this.isFilled = false;
45 this.masked.reset();
46 }
47 remove(fromPos, toPos) {
48 if (fromPos === void 0) {
49 fromPos = 0;
50 }
51 if (toPos === void 0) {
52 toPos = this.value.length;
53 }
54 if (fromPos === 0 && toPos >= 1) {
55 this.isFilled = false;
56 return this.masked.remove(fromPos, toPos);
57 }
58 return new ChangeDetails();
59 }
60 get value() {
61 return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');
62 }
63 get unmaskedValue() {
64 return this.masked.unmaskedValue;
65 }
66 get rawInputValue() {
67 return this.masked.rawInputValue;
68 }
69 get displayValue() {
70 return this.masked.value && this.displayChar || this.value;
71 }
72 get isComplete() {
73 return Boolean(this.masked.value) || this.isOptional;
74 }
75 _appendChar(ch, flags) {
76 if (flags === void 0) {
77 flags = {};
78 }
79 if (this.isFilled) return new ChangeDetails();
80 const state = this.masked.state;
81 // simulate input
82 let details = this.masked._appendChar(ch, this.currentMaskFlags(flags));
83 if (details.inserted && this.doValidate(flags) === false) {
84 details = new ChangeDetails();
85 this.masked.state = state;
86 }
87 if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {
88 details.inserted = this.placeholderChar;
89 }
90 details.skip = !details.inserted && !this.isOptional;
91 this.isFilled = Boolean(details.inserted);
92 return details;
93 }
94 append(str, flags, tail) {
95 // TODO probably should be done via _appendChar
96 return this.masked.append(str, this.currentMaskFlags(flags), tail);
97 }
98 _appendPlaceholder() {
99 if (this.isFilled || this.isOptional) return new ChangeDetails();
100 this.isFilled = true;
101 return new ChangeDetails({
102 inserted: this.placeholderChar
103 });
104 }
105 _appendEager() {
106 return new ChangeDetails();
107 }
108 extractTail(fromPos, toPos) {
109 return this.masked.extractTail(fromPos, toPos);
110 }
111 appendTail(tail) {
112 return this.masked.appendTail(tail);
113 }
114 extractInput(fromPos, toPos, flags) {
115 if (fromPos === void 0) {
116 fromPos = 0;
117 }
118 if (toPos === void 0) {
119 toPos = this.value.length;
120 }
121 return this.masked.extractInput(fromPos, toPos, flags);
122 }
123 nearestInputPos(cursorPos, direction) {
124 if (direction === void 0) {
125 direction = DIRECTION.NONE;
126 }
127 const minPos = 0;
128 const maxPos = this.value.length;
129 const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);
130 switch (direction) {
131 case DIRECTION.LEFT:
132 case DIRECTION.FORCE_LEFT:
133 return this.isComplete ? boundPos : minPos;
134 case DIRECTION.RIGHT:
135 case DIRECTION.FORCE_RIGHT:
136 return this.isComplete ? boundPos : maxPos;
137 case DIRECTION.NONE:
138 default:
139 return boundPos;
140 }
141 }
142 totalInputPositions(fromPos, toPos) {
143 if (fromPos === void 0) {
144 fromPos = 0;
145 }
146 if (toPos === void 0) {
147 toPos = this.value.length;
148 }
149 return this.value.slice(fromPos, toPos).length;
150 }
151 doValidate(flags) {
152 return this.masked.doValidate(this.currentMaskFlags(flags)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));
153 }
154 doCommit() {
155 this.masked.doCommit();
156 }
157 get state() {
158 return {
159 _value: this.value,
160 _rawInputValue: this.rawInputValue,
161 masked: this.masked.state,
162 isFilled: this.isFilled
163 };
164 }
165 set state(state) {
166 this.masked.state = state.masked;
167 this.isFilled = state.isFilled;
168 }
169 currentMaskFlags(flags) {
170 var _flags$_beforeTailSta;
171 return {
172 ...flags,
173 _beforeTailState: (flags == null || (_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.masked) || (flags == null ? void 0 : flags._beforeTailState)
174 };
175 }
176 pad(flags) {
177 return new ChangeDetails();
178 }
179 }
180 PatternInputDefinition.DEFAULT_DEFINITIONS = {
181 '0': /\d/,
182 '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]/,
183 // http://stackoverflow.com/a/22075070
184 '*': /./
185 };
186
187 export { PatternInputDefinition as default };
188