diginext-utils 1.2.4 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +280 -0
- package/dist/index.js +879 -135
- package/dist/index.mjs +820 -0
- package/package.json +23 -28
- package/dist/Checker.js +0 -28
- package/dist/EventDispatcher.js +0 -50
- package/dist/FileUpload.js +0 -65
- package/dist/Slug.js +0 -383
- package/dist/Timer.js +0 -14
- package/dist/Validation.js +0 -41
- package/dist/array.js +0 -313
- package/dist/backend/file/createDir.js +0 -21
- package/dist/backend/file/fileMove.js +0 -37
- package/dist/backend/file/findFilesByExt.js +0 -48
- package/dist/backend/zip/extractZip.js +0 -59
- package/dist/color.js +0 -86
- package/dist/console/enableConsole.js +0 -12
- package/dist/console/index.js +0 -16
- package/dist/device/browser.js +0 -38
- package/dist/device/camera.js +0 -224
- package/dist/device.js +0 -278
- package/dist/math/diffDate.js +0 -17
- package/dist/math/positiveNumber.js +0 -14
- package/dist/math.js +0 -241
- package/dist/object.js +0 -59
- package/dist/permission/requestCamera.js +0 -52
- package/dist/permission/requestDeviceOrientationControl.js +0 -35
- package/dist/string/formatNumber.js +0 -19
- package/dist/string/generatePassword.js +0 -25
- package/dist/string/generateUUID.js +0 -20
- package/dist/string/name/en.js +0 -27
- package/dist/string/name/vi.js +0 -30
- package/dist/string/random.js +0 -40
- package/dist/string/trimNull.js +0 -20
- package/dist/string/url.js +0 -118
- package/dist/string.js +0 -458
package/dist/index.js
CHANGED
|
@@ -1,148 +1,892 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports,
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
var
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var cloneDeep = require('lodash/cloneDeep');
|
|
6
|
+
|
|
7
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
|
+
|
|
9
|
+
var cloneDeep__default = /*#__PURE__*/_interopDefaultLegacy(cloneDeep);
|
|
10
|
+
|
|
11
|
+
// src/math.ts
|
|
12
|
+
var DEG2RAD = Math.PI / 180;
|
|
13
|
+
var RAD2DEG = 180 / Math.PI;
|
|
14
|
+
var randRound = (number) => {
|
|
15
|
+
return Math.round(Math.random() * number);
|
|
16
|
+
};
|
|
17
|
+
var rand = (number) => {
|
|
18
|
+
return (Math.random() - Math.random()) * number;
|
|
19
|
+
};
|
|
20
|
+
var randHalt = (number) => {
|
|
21
|
+
var rand2 = Math.random() - Math.random();
|
|
22
|
+
var res;
|
|
23
|
+
if (rand2 > 0) {
|
|
24
|
+
res = rand2 * (number / 2) + number / 2;
|
|
25
|
+
} else {
|
|
26
|
+
res = rand2 * (number / 2) - number / 2;
|
|
27
|
+
}
|
|
28
|
+
return Math.abs(res);
|
|
29
|
+
};
|
|
30
|
+
var randInt = (low, high) => {
|
|
31
|
+
return low + Math.floor(Math.random() * (high - low + 1));
|
|
32
|
+
};
|
|
33
|
+
var randFloat = (low, high) => {
|
|
34
|
+
return low + Math.random() * (high - low);
|
|
35
|
+
};
|
|
36
|
+
var degToRad = (degrees) => {
|
|
37
|
+
return degrees * DEG2RAD;
|
|
38
|
+
};
|
|
39
|
+
var radToDeg = (radians) => {
|
|
40
|
+
return radians * RAD2DEG;
|
|
41
|
+
};
|
|
42
|
+
var angleBetweenPoints = (cx, cy, ex, ey) => {
|
|
43
|
+
var dy = ey - cy;
|
|
44
|
+
var dx = ex - cx;
|
|
45
|
+
var theta = Math.atan2(dy, dx);
|
|
46
|
+
theta *= 180 / Math.PI;
|
|
47
|
+
return theta;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// src/array.ts
|
|
51
|
+
var sumArray = (array, key) => {
|
|
52
|
+
if (!array) {
|
|
53
|
+
console.warn("ARRAY NOT EXITED !");
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
56
|
+
if (key)
|
|
57
|
+
return array.reduce((c, v) => c + v[key], 0);
|
|
58
|
+
else
|
|
59
|
+
return array.reduce((c, v) => c + v, 0);
|
|
60
|
+
};
|
|
61
|
+
var averageArray = (array, key) => {
|
|
62
|
+
if (!array) {
|
|
63
|
+
console.warn("ARRAY NOT EXITED !");
|
|
64
|
+
return 0;
|
|
65
|
+
}
|
|
66
|
+
return sumArray(array, key) / array.length || 0;
|
|
67
|
+
};
|
|
68
|
+
var minArray = (array, key) => {
|
|
69
|
+
if (!array) {
|
|
70
|
+
console.warn("ARRAY NOT EXITED !");
|
|
71
|
+
return 0;
|
|
72
|
+
}
|
|
73
|
+
if (array.length > 0) {
|
|
74
|
+
if (key)
|
|
75
|
+
return array.reduce((c, v) => c < v[key] ? c : v[key]);
|
|
76
|
+
else
|
|
77
|
+
return array.reduce((c, v) => c < v ? c : v);
|
|
78
|
+
}
|
|
79
|
+
return 0;
|
|
80
|
+
};
|
|
81
|
+
var maxArray = (array, key) => {
|
|
82
|
+
if (!array) {
|
|
83
|
+
console.warn("ARRAY NOT EXITED !");
|
|
84
|
+
return 0;
|
|
85
|
+
}
|
|
86
|
+
if (array.length > 0) {
|
|
87
|
+
if (key)
|
|
88
|
+
return array.reduce((c, v) => c > v[key] ? c : v[key]);
|
|
89
|
+
else
|
|
90
|
+
return array.reduce((c, v) => c > v ? c : v);
|
|
91
|
+
}
|
|
92
|
+
return 0;
|
|
93
|
+
};
|
|
94
|
+
var sortElementByString = (array, key) => {
|
|
95
|
+
if (!Array.isArray(array))
|
|
96
|
+
return [];
|
|
97
|
+
if (key)
|
|
98
|
+
return array.sort((x, y) => {
|
|
99
|
+
var a = x[key].toUpperCase(), b = y[key].toUpperCase();
|
|
100
|
+
return a == b ? 0 : a > b ? 1 : -1;
|
|
101
|
+
});
|
|
102
|
+
console.log("NO KEY");
|
|
103
|
+
};
|
|
104
|
+
var sortElementByNumber = (array, key) => {
|
|
105
|
+
if (!Array.isArray(array))
|
|
106
|
+
return [];
|
|
107
|
+
if (key)
|
|
108
|
+
return array.sort((a, b) => {
|
|
109
|
+
return a[key] - b[key];
|
|
110
|
+
});
|
|
111
|
+
console.log("NO KEY");
|
|
112
|
+
};
|
|
113
|
+
var firstElement = (array) => {
|
|
114
|
+
if (array) {
|
|
115
|
+
if (array.length || array.length > 0)
|
|
116
|
+
return array[0];
|
|
117
|
+
}
|
|
118
|
+
return null;
|
|
119
|
+
};
|
|
120
|
+
var lastElement = (array) => {
|
|
121
|
+
if (array) {
|
|
122
|
+
if (array.length || array.length > 0)
|
|
123
|
+
return array[array.length - 1];
|
|
124
|
+
}
|
|
125
|
+
return null;
|
|
126
|
+
};
|
|
127
|
+
var randomIndex = (array) => {
|
|
128
|
+
if (array)
|
|
129
|
+
return randInt(0, array.length - 1);
|
|
130
|
+
return -1;
|
|
131
|
+
};
|
|
132
|
+
var randomElement = (array) => {
|
|
133
|
+
if (array)
|
|
134
|
+
return array[randomIndex(array)];
|
|
135
|
+
return null;
|
|
136
|
+
};
|
|
137
|
+
var mergeAndMakeUniqueElement = (list1, list2, key) => {
|
|
138
|
+
if (!list1 || !list2)
|
|
139
|
+
return;
|
|
140
|
+
if (key) {
|
|
141
|
+
return list1.concat(list2).filter((item, index, self) => {
|
|
142
|
+
return self.findIndex((x) => x[key] == item[key]) === index;
|
|
143
|
+
});
|
|
144
|
+
} else {
|
|
145
|
+
return list1.concat(list2).filter((x, index, self) => {
|
|
146
|
+
return self.indexOf(x) === index;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
var allMatchInArray = (target, toMatch) => {
|
|
151
|
+
if (!target || !toMatch)
|
|
152
|
+
return false;
|
|
153
|
+
const found = toMatch.every((item) => {
|
|
154
|
+
return target.includes(item);
|
|
46
155
|
});
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
156
|
+
return found;
|
|
157
|
+
};
|
|
158
|
+
var removeItem = (item, array) => {
|
|
159
|
+
const index = array.indexOf(item);
|
|
160
|
+
if (index == -1) {
|
|
161
|
+
console.warn("[ArrayExtra.removeItem] Item not found.");
|
|
162
|
+
return array;
|
|
163
|
+
}
|
|
164
|
+
array.splice(index, 1);
|
|
165
|
+
return array;
|
|
166
|
+
};
|
|
167
|
+
var removeItemByKey = (key, value, array) => {
|
|
168
|
+
const foundIndex = array.findIndex((item) => {
|
|
169
|
+
return item[key] == value;
|
|
58
170
|
});
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
171
|
+
if (foundIndex < 0) {
|
|
172
|
+
console.warn("[ArrayExtra.removeItemByKey] Item not found.", key, value);
|
|
173
|
+
return array;
|
|
174
|
+
}
|
|
175
|
+
array.splice(foundIndex, 1);
|
|
176
|
+
return array;
|
|
177
|
+
};
|
|
178
|
+
var getRandom = (array, n) => {
|
|
179
|
+
var result = new Array(n), len = array.length, taken = new Array(len);
|
|
180
|
+
if (n > len)
|
|
181
|
+
throw new RangeError("getRandom: more elements taken than available");
|
|
182
|
+
while (n--) {
|
|
183
|
+
var x = Math.floor(Math.random() * len);
|
|
184
|
+
result[n] = array[x in taken ? taken[x] : x];
|
|
185
|
+
taken[x] = --len in taken ? taken[len] : len;
|
|
186
|
+
}
|
|
187
|
+
return result;
|
|
188
|
+
};
|
|
189
|
+
var getHalfRandom = (array, n) => {
|
|
190
|
+
var n = Math.ceil(array.length / 2);
|
|
191
|
+
return getRandom(array, n);
|
|
192
|
+
};
|
|
193
|
+
var shuffle = (array) => {
|
|
194
|
+
var i = array.length, j, temp;
|
|
195
|
+
if (array.length < 1)
|
|
196
|
+
return array;
|
|
197
|
+
while (--i) {
|
|
198
|
+
j = Math.floor(Math.random() * (i + 1));
|
|
199
|
+
temp = array[i];
|
|
200
|
+
array[i] = array[j];
|
|
201
|
+
array[j] = temp;
|
|
202
|
+
}
|
|
203
|
+
return array;
|
|
204
|
+
};
|
|
205
|
+
var moveIndex = (array, oldIndex, newIndex) => {
|
|
206
|
+
if (newIndex >= array.length) {
|
|
207
|
+
var k = newIndex - array.length + 1;
|
|
208
|
+
while (k--) {
|
|
209
|
+
array.push(void 0);
|
|
69
210
|
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
211
|
+
}
|
|
212
|
+
array.splice(newIndex, 0, array.splice(oldIndex, 1)[0]);
|
|
213
|
+
return array;
|
|
214
|
+
};
|
|
215
|
+
var moveArray = (array, oldIndex, newIndex) => {
|
|
216
|
+
while (oldIndex < 0) {
|
|
217
|
+
oldIndex += array.length;
|
|
218
|
+
}
|
|
219
|
+
while (newIndex < 0) {
|
|
220
|
+
newIndex += array.length;
|
|
221
|
+
}
|
|
222
|
+
if (newIndex >= array.length) {
|
|
223
|
+
var k = newIndex - array.length;
|
|
224
|
+
while (k-- + 1) {
|
|
225
|
+
array.push(999);
|
|
81
226
|
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
227
|
+
}
|
|
228
|
+
array.splice(newIndex, 0, array.splice(oldIndex, 1)[0]);
|
|
229
|
+
return array;
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
// src/device.ts
|
|
233
|
+
var isIos = () => {
|
|
234
|
+
const deviceInfo2 = checkOS();
|
|
235
|
+
if (deviceInfo2)
|
|
236
|
+
return deviceInfo2.os.toLowerCase() == "ios";
|
|
237
|
+
console.log("Can't check OS");
|
|
238
|
+
return null;
|
|
239
|
+
};
|
|
240
|
+
var isAndroid = () => {
|
|
241
|
+
const deviceInfo2 = checkOS();
|
|
242
|
+
if (deviceInfo2)
|
|
243
|
+
return deviceInfo2.os.toLowerCase() == "android";
|
|
244
|
+
console.log("Can't check OS");
|
|
245
|
+
return null;
|
|
246
|
+
};
|
|
247
|
+
var isMobile = () => {
|
|
248
|
+
if (typeof navigator == "undefined")
|
|
249
|
+
return null;
|
|
250
|
+
if (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/BlackBerry/i) || navigator.userAgent.match(/Windows Phone/i)) {
|
|
251
|
+
return true;
|
|
252
|
+
} else {
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
var deviceInfo;
|
|
257
|
+
var checkOS = () => {
|
|
258
|
+
if (typeof window == "undefined")
|
|
259
|
+
return {};
|
|
260
|
+
if (typeof deviceInfo == "undefined") {
|
|
261
|
+
var unknown = "-";
|
|
262
|
+
var screenSize = "";
|
|
263
|
+
if (screen.width) {
|
|
264
|
+
var width = screen.width ? screen.width : "";
|
|
265
|
+
var height = screen.height ? screen.height : "";
|
|
266
|
+
screenSize += "" + width + " x " + height;
|
|
93
267
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
var
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
268
|
+
var nVer = navigator.appVersion;
|
|
269
|
+
var nAgt = navigator.userAgent;
|
|
270
|
+
var browser = navigator.appName;
|
|
271
|
+
var version = "" + parseFloat(navigator.appVersion);
|
|
272
|
+
var majorVersion = parseInt(navigator.appVersion, 10);
|
|
273
|
+
var nameOffset, verOffset, ix;
|
|
274
|
+
if ((verOffset = nAgt.indexOf("Opera")) != -1) {
|
|
275
|
+
browser = "Opera";
|
|
276
|
+
version = nAgt.substring(verOffset + 6);
|
|
277
|
+
if ((verOffset = nAgt.indexOf("Version")) != -1) {
|
|
278
|
+
version = nAgt.substring(verOffset + 8);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
if ((verOffset = nAgt.indexOf("OPR")) != -1) {
|
|
282
|
+
browser = "Opera";
|
|
283
|
+
version = nAgt.substring(verOffset + 4);
|
|
284
|
+
} else if ((verOffset = nAgt.indexOf("Edge")) != -1) {
|
|
285
|
+
browser = "Microsoft Edge";
|
|
286
|
+
version = nAgt.substring(verOffset + 5);
|
|
287
|
+
} else if ((verOffset = nAgt.indexOf("MSIE")) != -1) {
|
|
288
|
+
browser = "Microsoft Internet Explorer";
|
|
289
|
+
version = nAgt.substring(verOffset + 5);
|
|
290
|
+
} else if ((verOffset = nAgt.indexOf("Chrome")) != -1) {
|
|
291
|
+
browser = "Chrome";
|
|
292
|
+
version = nAgt.substring(verOffset + 7);
|
|
293
|
+
} else if ((verOffset = nAgt.indexOf("Safari")) != -1) {
|
|
294
|
+
browser = "Safari";
|
|
295
|
+
version = nAgt.substring(verOffset + 7);
|
|
296
|
+
if ((verOffset = nAgt.indexOf("Version")) != -1) {
|
|
297
|
+
version = nAgt.substring(verOffset + 8);
|
|
298
|
+
}
|
|
299
|
+
} else if ((verOffset = nAgt.indexOf("Firefox")) != -1) {
|
|
300
|
+
browser = "Firefox";
|
|
301
|
+
version = nAgt.substring(verOffset + 8);
|
|
302
|
+
} else if (nAgt.indexOf("Trident/") != -1) {
|
|
303
|
+
browser = "Microsoft Internet Explorer";
|
|
304
|
+
version = nAgt.substring(nAgt.indexOf("rv:") + 3);
|
|
305
|
+
} else if ((nameOffset = nAgt.lastIndexOf(" ") + 1) < (verOffset = nAgt.lastIndexOf("/"))) {
|
|
306
|
+
browser = nAgt.substring(nameOffset, verOffset);
|
|
307
|
+
version = nAgt.substring(verOffset + 1);
|
|
308
|
+
if (browser.toLowerCase() == browser.toUpperCase()) {
|
|
309
|
+
browser = navigator.appName;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
if ((ix = version.indexOf(";")) != -1)
|
|
313
|
+
version = version.substring(0, ix);
|
|
314
|
+
if ((ix = version.indexOf(" ")) != -1)
|
|
315
|
+
version = version.substring(0, ix);
|
|
316
|
+
if ((ix = version.indexOf(")")) != -1)
|
|
317
|
+
version = version.substring(0, ix);
|
|
318
|
+
majorVersion = parseInt("" + version, 10);
|
|
319
|
+
if (isNaN(majorVersion)) {
|
|
320
|
+
version = "" + parseFloat(navigator.appVersion);
|
|
321
|
+
majorVersion = parseInt(navigator.appVersion, 10);
|
|
322
|
+
}
|
|
323
|
+
var mobile = /Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(nVer);
|
|
324
|
+
var cookieEnabled = navigator.cookieEnabled ? true : false;
|
|
325
|
+
if (typeof navigator.cookieEnabled == "undefined" && !cookieEnabled) {
|
|
326
|
+
document.cookie = "testcookie";
|
|
327
|
+
cookieEnabled = document.cookie.indexOf("testcookie") != -1 ? true : false;
|
|
328
|
+
}
|
|
329
|
+
var os = unknown;
|
|
330
|
+
var clientStrings = [
|
|
331
|
+
{ s: "Windows 10", r: /(Windows 10.0|Windows NT 10.0)/ },
|
|
332
|
+
{ s: "Windows 8.1", r: /(Windows 8.1|Windows NT 6.3)/ },
|
|
333
|
+
{ s: "Windows 8", r: /(Windows 8|Windows NT 6.2)/ },
|
|
334
|
+
{ s: "Windows 7", r: /(Windows 7|Windows NT 6.1)/ },
|
|
335
|
+
{ s: "Windows Vista", r: /Windows NT 6.0/ },
|
|
336
|
+
{ s: "Windows Server 2003", r: /Windows NT 5.2/ },
|
|
337
|
+
{ s: "Windows XP", r: /(Windows NT 5.1|Windows XP)/ },
|
|
338
|
+
{ s: "Windows 2000", r: /(Windows NT 5.0|Windows 2000)/ },
|
|
339
|
+
{ s: "Windows ME", r: /(Win 9x 4.90|Windows ME)/ },
|
|
340
|
+
{ s: "Windows 98", r: /(Windows 98|Win98)/ },
|
|
341
|
+
{ s: "Windows 95", r: /(Windows 95|Win95|Windows_95)/ },
|
|
342
|
+
{ s: "Windows NT 4.0", r: /(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/ },
|
|
343
|
+
{ s: "Windows CE", r: /Windows CE/ },
|
|
344
|
+
{ s: "Windows 3.11", r: /Win16/ },
|
|
345
|
+
{ s: "Android", r: /Android/ },
|
|
346
|
+
{ s: "Open BSD", r: /OpenBSD/ },
|
|
347
|
+
{ s: "Sun OS", r: /SunOS/ },
|
|
348
|
+
{ s: "Linux", r: /(Linux|X11)/ },
|
|
349
|
+
{ s: "iOS", r: /(iPhone|iPad|iPod)/ },
|
|
350
|
+
{ s: "Mac OS X", r: /Mac OS X/ },
|
|
351
|
+
{ s: "Mac OS", r: /(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/ },
|
|
352
|
+
{ s: "QNX", r: /QNX/ },
|
|
353
|
+
{ s: "UNIX", r: /UNIX/ },
|
|
354
|
+
{ s: "BeOS", r: /BeOS/ },
|
|
355
|
+
{ s: "OS/2", r: /OS\/2/ },
|
|
356
|
+
{ s: "Search Bot", r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/ }
|
|
357
|
+
];
|
|
358
|
+
for (var id in clientStrings) {
|
|
359
|
+
var cs = clientStrings[id];
|
|
360
|
+
if (cs.r.test(nAgt)) {
|
|
361
|
+
os = cs.s;
|
|
362
|
+
break;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
var osVersion = unknown;
|
|
366
|
+
if (/Windows/.test(os)) {
|
|
367
|
+
osVersion = /Windows (.*)/.exec(os)[1];
|
|
368
|
+
os = "Windows";
|
|
369
|
+
}
|
|
370
|
+
switch (os) {
|
|
371
|
+
case "Mac OS X":
|
|
372
|
+
osVersion = /Mac OS X (10[\.\_\d]+)/.exec(nAgt)[1];
|
|
373
|
+
break;
|
|
374
|
+
case "Android":
|
|
375
|
+
osVersion = /Android ([\.\_\d]+)/.exec(nAgt)[1];
|
|
376
|
+
break;
|
|
377
|
+
case "iOS":
|
|
378
|
+
const _osVersion = /OS (\d+)_(\d+)_?(\d+)?/.exec(nVer);
|
|
379
|
+
osVersion = _osVersion[1] + "." + _osVersion[2] + "." + (_osVersion[3] || 0);
|
|
380
|
+
break;
|
|
105
381
|
}
|
|
382
|
+
const _deviceInfo = {
|
|
383
|
+
screen: screenSize,
|
|
384
|
+
browser,
|
|
385
|
+
browserVersion: version,
|
|
386
|
+
browserMajorVersion: majorVersion,
|
|
387
|
+
mobile,
|
|
388
|
+
os,
|
|
389
|
+
osVersion,
|
|
390
|
+
cookies: cookieEnabled
|
|
391
|
+
};
|
|
392
|
+
deviceInfo = _deviceInfo;
|
|
393
|
+
}
|
|
394
|
+
return deviceInfo;
|
|
395
|
+
};
|
|
396
|
+
|
|
397
|
+
// src/console/index.ts
|
|
398
|
+
var disableConsole = (params) => {
|
|
399
|
+
for (var key in console) {
|
|
400
|
+
console[key] = function() {
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
};
|
|
404
|
+
var removeConsole = disableConsole;
|
|
405
|
+
var showCredit = (params) => {
|
|
406
|
+
console.log("Developed by Digitop | https://www.wearetopgroup.com/?utm_src=console");
|
|
407
|
+
};
|
|
408
|
+
|
|
409
|
+
// src/device/browser.ts
|
|
410
|
+
var isPotrait = () => {
|
|
411
|
+
if (typeof window == "undefined")
|
|
412
|
+
return false;
|
|
413
|
+
if (!window.orientation)
|
|
414
|
+
return window.matchMedia("(orientation: portrait)").matches;
|
|
415
|
+
return !(window.orientation === 90 || window.orientation === -90);
|
|
416
|
+
};
|
|
417
|
+
var isLandscape = () => {
|
|
418
|
+
return !isPotrait();
|
|
419
|
+
};
|
|
420
|
+
var ua = () => {
|
|
421
|
+
if (typeof navigator == "undefined")
|
|
422
|
+
return null;
|
|
423
|
+
if (typeof window == "undefined")
|
|
424
|
+
return null;
|
|
425
|
+
return navigator.userAgent || navigator.vendor || window.opera;
|
|
426
|
+
};
|
|
427
|
+
var isFacebookWebview = () => {
|
|
428
|
+
var ua2 = ua2();
|
|
429
|
+
if (typeof ua2 != "undefined")
|
|
430
|
+
return ua2.indexOf("FBAN") > -1 || ua2.indexOf("FBAV") > -1;
|
|
431
|
+
};
|
|
432
|
+
var isInAppWebview = () => {
|
|
433
|
+
const rules = ["WebView", "(iPhone|iPod|iPad)(?!.*Safari/)", "Android.*(wv|.0.0.0)"];
|
|
434
|
+
const regex = new RegExp(`(${rules.join("|")})`, "ig");
|
|
435
|
+
if (ua())
|
|
436
|
+
return Boolean(ua().match(regex));
|
|
437
|
+
return false;
|
|
438
|
+
};
|
|
439
|
+
|
|
440
|
+
// src/permission/requestCamera.ts
|
|
441
|
+
var requestCamera = ({ audio = true, video = true }) => {
|
|
442
|
+
if (typeof window == "undefined")
|
|
443
|
+
return false;
|
|
444
|
+
return new Promise((resolve, reject) => {
|
|
445
|
+
if (navigator.mediaDevices.getUserMedia === void 0) {
|
|
446
|
+
navigator.mediaDevices.getUserMedia = function(constraints) {
|
|
447
|
+
var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
|
|
448
|
+
if (!getUserMedia) {
|
|
449
|
+
return Promise.reject(new Error("getUserMedia is not implemented in this browser"));
|
|
450
|
+
}
|
|
451
|
+
return new Promise(function(resolve2, reject2) {
|
|
452
|
+
getUserMedia.call(navigator, constraints, resolve2, reject2);
|
|
453
|
+
});
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
navigator.mediaDevices.getUserMedia({ audio, video }).then(function(stream) {
|
|
457
|
+
resolve(true);
|
|
458
|
+
}).catch(function(err) {
|
|
459
|
+
console.log(err.name + ": " + err.message);
|
|
460
|
+
resolve(false);
|
|
461
|
+
});
|
|
106
462
|
});
|
|
107
|
-
}
|
|
108
|
-
var
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
463
|
+
};
|
|
464
|
+
var requestCamera_default = requestCamera;
|
|
465
|
+
|
|
466
|
+
// src/device/camera.ts
|
|
467
|
+
function getWebcam({
|
|
468
|
+
container,
|
|
469
|
+
facingMode = "environment",
|
|
470
|
+
audio = false
|
|
471
|
+
}) {
|
|
472
|
+
if (typeof window == "undefined")
|
|
473
|
+
return;
|
|
474
|
+
container = container || document.body;
|
|
475
|
+
return new Promise(async (resolve, reject) => {
|
|
476
|
+
const video = document.createElement("video");
|
|
477
|
+
video.style.position = "absolute";
|
|
478
|
+
video.style.top = "0";
|
|
479
|
+
video.style.left = "0";
|
|
480
|
+
video.style.width = "100%";
|
|
481
|
+
video.style.height = "100%";
|
|
482
|
+
container.append(video);
|
|
483
|
+
let inputCameras = [];
|
|
484
|
+
let currentCamera;
|
|
485
|
+
const requestedMediaConstraints = {
|
|
486
|
+
video: {
|
|
487
|
+
facingMode: { exact: facingMode }
|
|
488
|
+
},
|
|
489
|
+
audio
|
|
490
|
+
};
|
|
491
|
+
console.log("[Camera.js] Requesting:", requestedMediaConstraints);
|
|
492
|
+
const res = await requestCamera_default({ audio });
|
|
493
|
+
if (!res) {
|
|
494
|
+
setTimeout(function() {
|
|
495
|
+
handleError({ name: "Error", message: "NotSupported" });
|
|
496
|
+
}, 50);
|
|
497
|
+
}
|
|
498
|
+
navigator.mediaDevices.enumerateDevices().then(parseDevices).catch(handleError);
|
|
499
|
+
function parseDevices(devices) {
|
|
500
|
+
inputCameras = [];
|
|
501
|
+
let backCameras = [];
|
|
502
|
+
devices.forEach(function(device) {
|
|
503
|
+
if (device.kind == "videoinput" && typeof device.deviceId != "undefined" && device.deviceId != "") {
|
|
504
|
+
inputCameras.push(device);
|
|
505
|
+
}
|
|
506
|
+
});
|
|
507
|
+
console.log("[Camera.js] inputCameras:", inputCameras);
|
|
508
|
+
if (inputCameras.length > 0) {
|
|
509
|
+
let cams = "";
|
|
510
|
+
let backCamera;
|
|
511
|
+
inputCameras.map((cam, index) => {
|
|
512
|
+
cams += `[${cam.deviceId}] ${cam.kind} | ${cam.label}
|
|
513
|
+
`;
|
|
514
|
+
let label = cam.label.toLowerCase();
|
|
515
|
+
if (label.indexOf("back") > -1 || label.indexOf("facetime") > -1) {
|
|
516
|
+
backCamera = cam;
|
|
517
|
+
backCameras.push(backCamera);
|
|
518
|
+
}
|
|
519
|
+
});
|
|
520
|
+
if (backCameras.length > 1) {
|
|
521
|
+
backCamera = backCameras[backCameras.length - 1];
|
|
522
|
+
}
|
|
523
|
+
console.log(`[Camera.js] All input sources:`, cams);
|
|
524
|
+
console.log(`[Camera.js] This device has ${backCameras.length} back camera${backCameras.length > 1 ? "s" : ""}.`);
|
|
525
|
+
console.log("[Camera.js] backCameras:", JSON.stringify(backCameras));
|
|
526
|
+
currentCamera = backCamera;
|
|
527
|
+
getStreamOfCameraId(backCamera.deviceId).then(onStreamReceived).catch((e) => {
|
|
528
|
+
if (backCameras.length > 1) {
|
|
529
|
+
backCamera = backCameras[backCameras.length - 2];
|
|
530
|
+
getStreamOfCameraId(backCamera.deviceId).then(onStreamReceived).catch(handleError);
|
|
531
|
+
} else if (backCameras.length > 2) {
|
|
532
|
+
backCamera = backCameras[backCameras.length - 3];
|
|
533
|
+
getStreamOfCameraId(backCamera.deviceId).then(onStreamReceived).catch(handleError);
|
|
534
|
+
} else {
|
|
535
|
+
handleError(e);
|
|
536
|
+
}
|
|
537
|
+
});
|
|
538
|
+
} else {
|
|
539
|
+
navigator.mediaDevices.getUserMedia(requestedMediaConstraints).then(onStreamReceived).catch(handleError);
|
|
540
|
+
}
|
|
117
541
|
}
|
|
542
|
+
function onStreamReceived(stream2) {
|
|
543
|
+
if (inputCameras.length == 0) {
|
|
544
|
+
console.log("[Camera.js] Not found any back cameras, request again?");
|
|
545
|
+
navigator.mediaDevices.enumerateDevices().then(parseDevices).catch(handleError);
|
|
546
|
+
return;
|
|
547
|
+
}
|
|
548
|
+
playWebcamVideo(stream2);
|
|
549
|
+
}
|
|
550
|
+
function playWebcamVideo(_stream) {
|
|
551
|
+
if ("srcObject" in video) {
|
|
552
|
+
video.srcObject = _stream;
|
|
553
|
+
} else {
|
|
554
|
+
video.src = window.URL.createObjectURL(_stream);
|
|
555
|
+
}
|
|
556
|
+
video.setAttribute("playsinline", "true");
|
|
557
|
+
video.setAttribute("muted", "true");
|
|
558
|
+
video.setAttribute("autoplay", "true");
|
|
559
|
+
video.muted = true;
|
|
560
|
+
video.autoplay = true;
|
|
561
|
+
video.style.objectFit = "cover";
|
|
562
|
+
video.play();
|
|
563
|
+
video.addEventListener("canplay", function(e) {
|
|
564
|
+
});
|
|
565
|
+
video.addEventListener("canplaythrough", function(e) {
|
|
566
|
+
});
|
|
567
|
+
video.addEventListener("error", (e) => console.log("[Camera.js] <video> error:", e));
|
|
568
|
+
video.addEventListener("stalled", function(e) {
|
|
569
|
+
console.log("[Camera.js] <video> stalled:", e);
|
|
570
|
+
reject();
|
|
571
|
+
});
|
|
572
|
+
video.addEventListener("loadedmetadata", function(e) {
|
|
573
|
+
if (currentCamera.label.toLowerCase().indexOf("facetime") > -1) {
|
|
574
|
+
video.style.transform = "scaleX(-1)";
|
|
575
|
+
video.style.webkitTransform = "scaleX(-1)";
|
|
576
|
+
}
|
|
577
|
+
video.play();
|
|
578
|
+
resolve(video);
|
|
579
|
+
});
|
|
580
|
+
}
|
|
581
|
+
function getStreamOfCameraId(id) {
|
|
582
|
+
const constraints = {
|
|
583
|
+
video: { deviceId: { exact: id } },
|
|
584
|
+
audio: false
|
|
585
|
+
};
|
|
586
|
+
return new Promise((resolve2, reject2) => {
|
|
587
|
+
navigator.mediaDevices.getUserMedia(constraints).then(resolve2).catch(reject2);
|
|
588
|
+
});
|
|
589
|
+
}
|
|
590
|
+
function handleError(err) {
|
|
591
|
+
console.error(err);
|
|
592
|
+
const errMsg = "[Camera.js] " + err.name + ": " + err.message;
|
|
593
|
+
console.error(errMsg);
|
|
594
|
+
reject();
|
|
595
|
+
}
|
|
596
|
+
});
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
// src/object.ts
|
|
600
|
+
var isNull = (object) => {
|
|
601
|
+
if (typeof object == "undefined")
|
|
602
|
+
return true;
|
|
603
|
+
if (object == "")
|
|
604
|
+
return true;
|
|
605
|
+
if (Array.isArray(object))
|
|
606
|
+
return object.length == 0;
|
|
607
|
+
if (JSON.stringify(object) == "{}")
|
|
608
|
+
return true;
|
|
609
|
+
return object == null;
|
|
610
|
+
};
|
|
611
|
+
var toBool = (object) => {
|
|
612
|
+
if (isNull(object))
|
|
613
|
+
return false;
|
|
614
|
+
object = object.toString();
|
|
615
|
+
return object === "true" || object == "1";
|
|
616
|
+
};
|
|
617
|
+
var toInt = (object) => {
|
|
618
|
+
if (isNull(object))
|
|
619
|
+
return 0;
|
|
620
|
+
object = object.toString();
|
|
621
|
+
return parseInt(object, 10);
|
|
622
|
+
};
|
|
623
|
+
var toFloat = (object) => {
|
|
624
|
+
if (isNull(object))
|
|
625
|
+
return 0;
|
|
626
|
+
object = object.toString();
|
|
627
|
+
return parseFloat(object);
|
|
628
|
+
};
|
|
629
|
+
var toArray = (obj) => {
|
|
630
|
+
if (isNull(obj))
|
|
631
|
+
return [];
|
|
632
|
+
if (!Array.isArray(obj)) {
|
|
633
|
+
obj = [obj];
|
|
634
|
+
}
|
|
635
|
+
return obj;
|
|
636
|
+
};
|
|
637
|
+
var objectToArray = (obj) => {
|
|
638
|
+
const array = [];
|
|
639
|
+
for (const key in obj) {
|
|
640
|
+
array.push(obj[key]);
|
|
641
|
+
}
|
|
642
|
+
return array;
|
|
643
|
+
};
|
|
644
|
+
|
|
645
|
+
// src/string.ts
|
|
646
|
+
var char_map = { \u00C0: "A", \u00C1: "A", \u00C2: "A", \u00C3: "A", \u00C4: "A", \u00C5: "A", \u00C6: "AE", \u00C7: "C", \u00C8: "E", \u00C9: "E", \u00CA: "E", \u00CB: "E", \u00CC: "I", \u00CD: "I", \u00CE: "I", \u00CF: "I", \u00D0: "D", \u00D1: "N", \u00D2: "O", \u00D3: "O", \u00D4: "O", \u00D5: "O", \u00D6: "O", \u0150: "O", \u00D8: "O", \u00D9: "U", \u00DA: "U", \u00DB: "U", \u0170: "U", \u00DD: "Y", \u00DE: "TH", \u00DF: "ss", \u00E0: "a", \u00E1: "a", \u00E2: "a", \u00E3: "a", \u00E4: "a", \u00E5: "a", \u00E6: "ae", \u00E8: "e", \u00E9: "e", \u00EA: "e", \u00EB: "e", \u00EC: "i", \u00ED: "i", \u00EE: "i", \u00EF: "i", \u00F0: "d", \u00F1: "n", \u00F2: "o", \u00F3: "o", \u00F4: "o", \u00F5: "o", \u00F6: "o", \u0151: "o", \u00F8: "o", \u00F9: "u", \u00FA: "u", \u00FB: "u", \u0171: "u", \u00FD: "y", \u00FE: "th", \u00FF: "y", "\xA9": "(c)", \u0393: "G", \u0394: "D", \u0398: "8", \u039B: "L", \u039E: "3", \u03A0: "P", \u03A3: "S", \u03A6: "F", \u03A8: "PS", \u03A9: "W", \u0386: "A", \u0388: "E", \u038A: "I", \u038C: "O", \u038E: "Y", \u0389: "H", \u038F: "W", \u03AA: "I", \u03AB: "Y", \u03B2: "b", "\u03B3": "y", \u03B4: "d", \u03B5: "e", \u03B6: "z", \u03B7: "h", \u03B8: "8", \u03B9: "i", \u03BA: "k", \u03BB: "l", \u03BC: "m", \u03BD: "n", \u03BE: "3", \u03BF: "o", \u03C0: "p", \u03C1: "r", \u03C3: "s", \u03C4: "t", \u03C5: "y", \u03C6: "f", \u03C7: "x", \u03C8: "ps", \u03C9: "w", \u03AC: "a", \u03AD: "e", \u03AF: "i", \u03CC: "o", \u03CD: "y", \u03AE: "h", \u03CE: "w", \u03C2: "s", \u03CA: "i", \u03B0: "y", \u03CB: "y", \u0390: "i", \u015E: "S", \u0130: "I", \u00DC: "U", \u011E: "G", \u015F: "s", \u0131: "i", \u00E7: "c", \u00FC: "u", \u011F: "g", \u0410: "A", \u0411: "B", \u0412: "V", \u0413: "G", \u0414: "D", \u0415: "E", \u0401: "Yo", \u0416: "Zh", \u0417: "Z", \u0418: "I", \u0419: "J", \u041A: "K", \u041B: "L", \u041C: "M", \u041D: "N", \u041E: "O", \u041F: "P", \u0420: "R", \u0421: "S", \u0422: "T", \u0423: "U", \u0424: "F", \u0425: "H", \u0426: "C", \u0427: "Ch", \u0428: "Sh", \u0429: "Sh", \u042A: "", \u042B: "Y", \u042C: "", \u042D: "E", \u042E: "Yu", \u042F: "Ya", \u0430: "a", \u0431: "b", \u0432: "v", \u0433: "g", \u0434: "d", \u0435: "e", \u0451: "yo", \u0436: "zh", \u0437: "z", \u0438: "i", \u0439: "j", \u043A: "k", \u043B: "l", \u043C: "m", \u043D: "n", \u043E: "o", \u043F: "p", \u0440: "r", \u0441: "s", \u0442: "t", \u0443: "u", \u0444: "f", \u0445: "h", \u0446: "c", \u0447: "ch", \u0448: "sh", \u0449: "sh", \u044A: "", \u044B: "y", \u044C: "", \u044D: "e", \u044E: "yu", \u044F: "ya", \u0404: "Ye", \u0406: "I", \u0407: "Yi", \u0490: "G", \u0454: "ye", \u0456: "i", \u0457: "yi", \u0491: "g", \u010C: "C", \u010E: "D", \u011A: "E", \u0147: "N", \u0158: "R", \u0160: "S", \u0164: "T", \u016E: "U", \u017D: "Z", \u010D: "c", \u010F: "d", \u011B: "e", \u0148: "n", \u0159: "r", \u0161: "s", \u0165: "t", \u016F: "u", \u017E: "z", \u0104: "A", \u0106: "C", \u0118: "e", \u0141: "L", \u0143: "N", \u015A: "S", \u0179: "Z", \u017B: "Z", \u0105: "a", \u0107: "c", \u0119: "e", \u0142: "l", \u0144: "n", \u015B: "s", \u017A: "z", \u017C: "z", \u0100: "A", \u0112: "E", \u0122: "G", \u012A: "i", \u0136: "k", \u013B: "L", \u0145: "N", \u016A: "u", \u0101: "a", \u0113: "e", \u0123: "g", \u012B: "i", \u0137: "k", \u013C: "l", \u0146: "n", \u016B: "u" };
|
|
647
|
+
var getBetween = (text, str1, str2 = "") => {
|
|
648
|
+
if (!text)
|
|
649
|
+
return "";
|
|
650
|
+
if (text.indexOf(str1) <= -1)
|
|
651
|
+
return "";
|
|
652
|
+
const firstIndex = text.indexOf(str1) + str1.length;
|
|
653
|
+
const secondIndex = str2 ? text.indexOf(str2, firstIndex) : text.length;
|
|
654
|
+
return text.substring(firstIndex, secondIndex);
|
|
655
|
+
};
|
|
656
|
+
var makeString = (object = "") => {
|
|
657
|
+
if (isNull(object))
|
|
658
|
+
return "";
|
|
659
|
+
return "" + object;
|
|
660
|
+
};
|
|
661
|
+
var toUpperCase = (str = "") => {
|
|
662
|
+
return makeString(str).toUpperCase();
|
|
663
|
+
};
|
|
664
|
+
var toLowerCase = (str = "") => {
|
|
665
|
+
return makeString(str).toLowerCase();
|
|
666
|
+
};
|
|
667
|
+
var titleize = (str = "") => {
|
|
668
|
+
const regString = new RegExp(/(?:^|\s|-)\S/g);
|
|
669
|
+
return toLowerCase(str).replace(regString, function(c) {
|
|
670
|
+
return c.toUpperCase();
|
|
118
671
|
});
|
|
119
|
-
}
|
|
120
|
-
var
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
672
|
+
};
|
|
673
|
+
var capitalize = (str, lowercaseRest = 1) => {
|
|
674
|
+
str = makeString(str);
|
|
675
|
+
const remainingChars = !lowercaseRest ? str.slice(1) : str.slice(1).toLowerCase();
|
|
676
|
+
return str.charAt(0).toUpperCase() + remainingChars;
|
|
677
|
+
};
|
|
678
|
+
var capitalizeName = (str) => {
|
|
679
|
+
str = makeString(str);
|
|
680
|
+
str = str.trim();
|
|
681
|
+
str = str.replace(/^\s+|\s+$/gm, "");
|
|
682
|
+
str = str.toLowerCase();
|
|
683
|
+
const arr = str.split(" ");
|
|
684
|
+
str = arr.map((item) => {
|
|
685
|
+
return capitalize(item);
|
|
686
|
+
}).filter((x) => x).join(" ");
|
|
687
|
+
return str;
|
|
688
|
+
};
|
|
689
|
+
var clearUnicodeCharacters = (s, opt = {}) => {
|
|
690
|
+
s = makeString(s);
|
|
691
|
+
var defaults = {
|
|
692
|
+
delimiter: " ",
|
|
693
|
+
lowercase: true,
|
|
694
|
+
replacements: {},
|
|
695
|
+
transliterate: typeof XRegExp === "undefined" ? true : false
|
|
696
|
+
};
|
|
697
|
+
for (var k in defaults) {
|
|
698
|
+
if (!opt.hasOwnProperty(k)) {
|
|
699
|
+
opt[k] = defaults[k];
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
s = s.replace(/á|à|ả|ạ|ã|ă|ắ|ằ|ẳ|ẵ|ặ|â|ấ|ầ|ẩ|ẫ|ậ/gi, "a");
|
|
703
|
+
s = s.replace(/é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ/gi, "e");
|
|
704
|
+
s = s.replace(/i|í|ì|ỉ|ĩ|ị/gi, "i");
|
|
705
|
+
s = s.replace(/ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ/gi, "o");
|
|
706
|
+
s = s.replace(/ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự/gi, "u");
|
|
707
|
+
s = s.replace(/ý|ỳ|ỷ|ỹ|ỵ/gi, "y");
|
|
708
|
+
s = s.replace(/đ/gi, "d");
|
|
709
|
+
s = "@" + s + "@";
|
|
710
|
+
s = s.replace(/\@\-|\-\@|\@/gi, "");
|
|
711
|
+
for (var k in opt.replacements) {
|
|
712
|
+
s = s.replace(RegExp(k, "g"), opt.replacements[k]);
|
|
713
|
+
}
|
|
714
|
+
if (opt.transliterate) {
|
|
715
|
+
for (var k in char_map) {
|
|
716
|
+
s = s.replace(RegExp(k, "g"), char_map[k]);
|
|
129
717
|
}
|
|
718
|
+
}
|
|
719
|
+
var alnum = typeof XRegExp === "undefined" ? RegExp("[^a-z0-9]+", "ig") : XRegExp("[^\\p{L}\\p{N}]+", "ig");
|
|
720
|
+
s = s.replace(alnum, opt.delimiter);
|
|
721
|
+
s = s.replace(RegExp("[" + opt.delimiter + "]{2,}", "g"), opt.delimiter);
|
|
722
|
+
s = s.substring(0, opt.limit);
|
|
723
|
+
s = s.replace(RegExp("(^" + opt.delimiter + "|" + opt.delimiter + "$)", "g"), "");
|
|
724
|
+
return opt.lowercase ? s.toLowerCase() : s;
|
|
725
|
+
};
|
|
726
|
+
|
|
727
|
+
// src/string/url.ts
|
|
728
|
+
var urlRegex = /(https?:\/\/[^\s]+)/g;
|
|
729
|
+
var addQueryParam = (_url, key, value) => {
|
|
730
|
+
_url += (_url.split("?")[1] ? "&" : "?") + `${key}=${value}`;
|
|
731
|
+
return _url;
|
|
732
|
+
};
|
|
733
|
+
var getUrlParams = (parameter, staticURL, decode = true) => {
|
|
734
|
+
if (typeof window == "undefined")
|
|
735
|
+
return "";
|
|
736
|
+
staticURL = staticURL == void 0 ? window.location.host : staticURL;
|
|
737
|
+
var currLocation = staticURL.length > 0 ? staticURL : window.location.search;
|
|
738
|
+
if (currLocation.split("?").length < 2)
|
|
739
|
+
return "";
|
|
740
|
+
var parArr = currLocation.split("?")[1].split("&"), returnBool = true;
|
|
741
|
+
for (var i = 0; i < parArr.length; i++) {
|
|
742
|
+
var parr = parArr[i].split("=");
|
|
743
|
+
if (parr[0] == parameter) {
|
|
744
|
+
return decode ? decodeURIComponent(parr[1]) : parr[1];
|
|
745
|
+
} else {
|
|
746
|
+
returnBool = false;
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
if (!returnBool)
|
|
750
|
+
return false;
|
|
751
|
+
};
|
|
752
|
+
var isLink = (str) => {
|
|
753
|
+
return urlRegex.test(str);
|
|
754
|
+
};
|
|
755
|
+
var getFileNameWithoutExtension = (url) => {
|
|
756
|
+
url = decodeURIComponent(url);
|
|
757
|
+
if (url) {
|
|
758
|
+
const m = url.toString().match(/.*\/(.+?)\./);
|
|
759
|
+
if (m && m.length > 1) {
|
|
760
|
+
return m[1];
|
|
761
|
+
}
|
|
762
|
+
if (!isNull(url)) {
|
|
763
|
+
return url.split(".").shift();
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
return "";
|
|
767
|
+
};
|
|
768
|
+
var getFileNameWithExtension = (url) => {
|
|
769
|
+
url = decodeURIComponent(url);
|
|
770
|
+
if (url) {
|
|
771
|
+
const m = url.toString().match(/.*\/(.*)$/);
|
|
772
|
+
if (m && m.length > 1) {
|
|
773
|
+
return m[1].split("/").pop().split("?")[0];
|
|
774
|
+
}
|
|
775
|
+
if (!isNull(url)) {
|
|
776
|
+
return url;
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
return "";
|
|
780
|
+
};
|
|
781
|
+
var getFileExtension = (url) => {
|
|
782
|
+
return getFileNameWithExtension(url).split(".").pop();
|
|
783
|
+
};
|
|
784
|
+
var isImage = (url) => {
|
|
785
|
+
const arr = ["png", "jpg", "jpeg", "jpe", "jif", "jfif", "gif", "svg"];
|
|
786
|
+
const index = arr.findIndex((item) => {
|
|
787
|
+
return getFileExtension(url).toLowerCase() == item;
|
|
130
788
|
});
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
789
|
+
return index >= 0;
|
|
790
|
+
};
|
|
791
|
+
|
|
792
|
+
// src/Timer.ts
|
|
793
|
+
var Timer = {
|
|
794
|
+
wait: async (ms) => {
|
|
795
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
796
|
+
}
|
|
797
|
+
};
|
|
798
|
+
var Timer_default = Timer;
|
|
799
|
+
|
|
800
|
+
// src/permission/requestDeviceOrientationControl.ts
|
|
801
|
+
var requestDeviceOrientationControl = () => {
|
|
802
|
+
if (typeof window == "undefined")
|
|
803
|
+
return false;
|
|
804
|
+
return new Promise((resolve, reject) => {
|
|
805
|
+
if (isAndroid())
|
|
806
|
+
resolve(true);
|
|
807
|
+
if (typeof DeviceMotionEvent != "undefined" && DeviceMotionEvent.requestPermission) {
|
|
808
|
+
DeviceMotionEvent.requestPermission().then((response) => {
|
|
809
|
+
if (response == "granted") {
|
|
810
|
+
resolve(true);
|
|
811
|
+
} else {
|
|
812
|
+
resolve(false);
|
|
813
|
+
}
|
|
814
|
+
}).catch((response) => {
|
|
815
|
+
resolve(false);
|
|
816
|
+
});
|
|
817
|
+
} else {
|
|
818
|
+
resolve(false);
|
|
141
819
|
}
|
|
142
820
|
});
|
|
143
|
-
}
|
|
144
|
-
var
|
|
145
|
-
var
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
821
|
+
};
|
|
822
|
+
var requestDeviceOrientationControl_default = requestDeviceOrientationControl;
|
|
823
|
+
var _console = cloneDeep__default["default"](console);
|
|
824
|
+
function enableConsole() {
|
|
825
|
+
return _console;
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
exports.Timer = Timer_default;
|
|
829
|
+
exports.addQueryParam = addQueryParam;
|
|
830
|
+
exports.allMatchInArray = allMatchInArray;
|
|
831
|
+
exports.angleBetweenPoints = angleBetweenPoints;
|
|
832
|
+
exports.averageArray = averageArray;
|
|
833
|
+
exports.capitalize = capitalize;
|
|
834
|
+
exports.capitalizeName = capitalizeName;
|
|
835
|
+
exports.checkOS = checkOS;
|
|
836
|
+
exports.clearUnicodeCharacters = clearUnicodeCharacters;
|
|
837
|
+
exports.degToRad = degToRad;
|
|
838
|
+
exports.disableConsole = disableConsole;
|
|
839
|
+
exports.enableConsole = enableConsole;
|
|
840
|
+
exports.firstElement = firstElement;
|
|
841
|
+
exports.getBetween = getBetween;
|
|
842
|
+
exports.getFileExtension = getFileExtension;
|
|
843
|
+
exports.getFileNameWithExtension = getFileNameWithExtension;
|
|
844
|
+
exports.getFileNameWithoutExtension = getFileNameWithoutExtension;
|
|
845
|
+
exports.getHalfRandom = getHalfRandom;
|
|
846
|
+
exports.getRandom = getRandom;
|
|
847
|
+
exports.getUrlParams = getUrlParams;
|
|
848
|
+
exports.getWebcam = getWebcam;
|
|
849
|
+
exports.isAndroid = isAndroid;
|
|
850
|
+
exports.isFacebookWebview = isFacebookWebview;
|
|
851
|
+
exports.isImage = isImage;
|
|
852
|
+
exports.isInAppWebview = isInAppWebview;
|
|
853
|
+
exports.isIos = isIos;
|
|
854
|
+
exports.isLandscape = isLandscape;
|
|
855
|
+
exports.isLink = isLink;
|
|
856
|
+
exports.isMobile = isMobile;
|
|
857
|
+
exports.isNull = isNull;
|
|
858
|
+
exports.isPotrait = isPotrait;
|
|
859
|
+
exports.lastElement = lastElement;
|
|
860
|
+
exports.makeString = makeString;
|
|
861
|
+
exports.maxArray = maxArray;
|
|
862
|
+
exports.mergeAndMakeUniqueElement = mergeAndMakeUniqueElement;
|
|
863
|
+
exports.minArray = minArray;
|
|
864
|
+
exports.moveArray = moveArray;
|
|
865
|
+
exports.moveIndex = moveIndex;
|
|
866
|
+
exports.objectToArray = objectToArray;
|
|
867
|
+
exports.radToDeg = radToDeg;
|
|
868
|
+
exports.rand = rand;
|
|
869
|
+
exports.randFloat = randFloat;
|
|
870
|
+
exports.randHalt = randHalt;
|
|
871
|
+
exports.randInt = randInt;
|
|
872
|
+
exports.randRound = randRound;
|
|
873
|
+
exports.randomElement = randomElement;
|
|
874
|
+
exports.randomIndex = randomIndex;
|
|
875
|
+
exports.removeConsole = removeConsole;
|
|
876
|
+
exports.removeItem = removeItem;
|
|
877
|
+
exports.removeItemByKey = removeItemByKey;
|
|
878
|
+
exports.requestCamera = requestCamera_default;
|
|
879
|
+
exports.requestDeviceOrientationControl = requestDeviceOrientationControl_default;
|
|
880
|
+
exports.showCredit = showCredit;
|
|
881
|
+
exports.shuffle = shuffle;
|
|
882
|
+
exports.sortElementByNumber = sortElementByNumber;
|
|
883
|
+
exports.sortElementByString = sortElementByString;
|
|
884
|
+
exports.sumArray = sumArray;
|
|
885
|
+
exports.titleize = titleize;
|
|
886
|
+
exports.toArray = toArray;
|
|
887
|
+
exports.toBool = toBool;
|
|
888
|
+
exports.toFloat = toFloat;
|
|
889
|
+
exports.toInt = toInt;
|
|
890
|
+
exports.toLowerCase = toLowerCase;
|
|
891
|
+
exports.toUpperCase = toUpperCase;
|
|
892
|
+
exports.ua = ua;
|