diginext-utils 2.0.0 → 2.0.2

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.
Files changed (111) hide show
  1. package/dist/Checker.d.ts +6 -0
  2. package/dist/Checker.js +27 -0
  3. package/dist/Checker.mjs +25 -0
  4. package/dist/EventDispatcher.d.ts +13 -0
  5. package/dist/EventDispatcher.js +51 -0
  6. package/dist/EventDispatcher.mjs +51 -0
  7. package/dist/FileUpload.d.ts +12 -0
  8. package/dist/FileUpload.js +60 -0
  9. package/dist/FileUpload.mjs +60 -0
  10. package/dist/Slug.d.ts +5 -0
  11. package/dist/Slug.js +329 -0
  12. package/dist/Slug.mjs +327 -0
  13. package/dist/Timer.d.ts +5 -0
  14. package/dist/Timer.js +11 -0
  15. package/dist/Timer.mjs +2 -0
  16. package/dist/Validation.d.ts +6 -0
  17. package/dist/Validation.js +33 -0
  18. package/dist/Validation.mjs +33 -0
  19. package/dist/array.d.ts +93 -0
  20. package/dist/array.js +210 -0
  21. package/dist/array.mjs +3 -0
  22. package/dist/backend/file/createDir.d.ts +6 -0
  23. package/dist/backend/file/createDir.js +21 -0
  24. package/dist/backend/file/createDir.mjs +13 -0
  25. package/dist/backend/file/fileMove.d.ts +6 -0
  26. package/dist/backend/file/fileMove.js +37 -0
  27. package/dist/backend/file/fileMove.mjs +29 -0
  28. package/dist/backend/file/findFilesByExt.d.ts +6 -0
  29. package/dist/backend/file/findFilesByExt.js +48 -0
  30. package/dist/backend/file/findFilesByExt.mjs +40 -0
  31. package/dist/chunk-5AL36RZR.mjs +47 -0
  32. package/dist/chunk-7IYY7BKN.mjs +136 -0
  33. package/dist/chunk-ACLBWYEO.mjs +85 -0
  34. package/dist/chunk-AHFJBIQJ.mjs +9 -0
  35. package/dist/chunk-AKU6F3WT.mjs +9 -0
  36. package/dist/chunk-FOWYH6LL.mjs +32 -0
  37. package/dist/chunk-FTE6FZSH.mjs +17 -0
  38. package/dist/chunk-JKYSZLBF.mjs +27 -0
  39. package/dist/chunk-LXQIKFED.mjs +13 -0
  40. package/dist/chunk-Q5R25OIS.mjs +185 -0
  41. package/dist/chunk-R2BH5I6O.mjs +9 -0
  42. package/dist/chunk-UKRVCU5M.mjs +166 -0
  43. package/dist/chunk-VFKAZAWF.mjs +40 -0
  44. package/dist/chunk-VZGV2BTL.mjs +27 -0
  45. package/dist/chunk-Y4ZTQWPA.mjs +68 -0
  46. package/dist/color.d.ts +12 -0
  47. package/dist/color.js +69 -0
  48. package/dist/color.mjs +62 -0
  49. package/dist/console/enableConsole.d.ts +3 -0
  50. package/dist/console/enableConsole.js +15 -0
  51. package/dist/console/enableConsole.mjs +2 -0
  52. package/dist/console/index.d.ts +5 -0
  53. package/dist/console/index.js +19 -0
  54. package/dist/console/index.mjs +2 -0
  55. package/dist/device/browser.d.ts +7 -0
  56. package/dist/device/browser.js +40 -0
  57. package/dist/device/browser.mjs +2 -0
  58. package/dist/device/camera.d.ts +16 -0
  59. package/dist/device/camera.js +164 -0
  60. package/dist/device/camera.mjs +3 -0
  61. package/dist/device.d.ts +6 -0
  62. package/dist/device.js +173 -0
  63. package/dist/device.mjs +2 -0
  64. package/dist/index.d.ts +13 -280
  65. package/dist/index.mjs +14 -820
  66. package/dist/math/diffDate.d.ts +6 -0
  67. package/dist/math/diffDate.js +10 -0
  68. package/dist/math/diffDate.mjs +10 -0
  69. package/dist/math/positiveNumber.d.ts +3 -0
  70. package/dist/math/positiveNumber.js +28 -0
  71. package/dist/math/positiveNumber.mjs +16 -0
  72. package/dist/math.d.ts +55 -0
  73. package/dist/math.js +51 -0
  74. package/dist/math.mjs +2 -0
  75. package/dist/object.d.ts +25 -0
  76. package/dist/object.js +56 -0
  77. package/dist/object.mjs +2 -0
  78. package/dist/permission/requestCamera.d.ts +6 -0
  79. package/dist/permission/requestCamera.js +29 -0
  80. package/dist/permission/requestCamera.mjs +2 -0
  81. package/dist/permission/requestDeviceOrientationControl.d.ts +3 -0
  82. package/dist/permission/requestDeviceOrientationControl.js +176 -0
  83. package/dist/permission/requestDeviceOrientationControl.mjs +3 -0
  84. package/dist/string/formatNumber.d.ts +7 -0
  85. package/dist/string/formatNumber.js +28 -0
  86. package/dist/string/formatNumber.mjs +10 -0
  87. package/dist/string/generatePassword.d.ts +10 -0
  88. package/dist/string/generatePassword.js +27 -0
  89. package/dist/string/generatePassword.mjs +16 -0
  90. package/dist/string/generateUUID.d.ts +3 -0
  91. package/dist/string/generateUUID.js +14 -0
  92. package/dist/string/generateUUID.mjs +14 -0
  93. package/dist/string/name/en.d.ts +3 -0
  94. package/dist/string/name/en.js +19 -0
  95. package/dist/string/name/en.mjs +17 -0
  96. package/dist/string/name/vi.d.ts +3 -0
  97. package/dist/string/name/vi.js +37 -0
  98. package/dist/string/name/vi.mjs +20 -0
  99. package/dist/string/random.d.ts +11 -0
  100. package/dist/string/random.js +26 -0
  101. package/dist/string/random.mjs +2 -0
  102. package/dist/string/trimNull.d.ts +3 -0
  103. package/dist/string/trimNull.js +20 -0
  104. package/dist/string/trimNull.mjs +14 -0
  105. package/dist/string/url.d.ts +33 -0
  106. package/dist/string/url.js +89 -0
  107. package/dist/string/url.mjs +3 -0
  108. package/dist/string.d.ts +35 -0
  109. package/dist/string.js +107 -0
  110. package/dist/string.mjs +3 -0
  111. package/package.json +2 -5
@@ -0,0 +1,68 @@
1
+ import { isNull } from './chunk-5AL36RZR.mjs';
2
+
3
+ // src/string/url.ts
4
+ var urlRegex = /(https?:\/\/[^\s]+)/g;
5
+ var addQueryParam = (_url, key, value) => {
6
+ _url += (_url.split("?")[1] ? "&" : "?") + `${key}=${value}`;
7
+ return _url;
8
+ };
9
+ var getUrlParams = (parameter, staticURL, decode = true) => {
10
+ if (typeof window == "undefined")
11
+ return "";
12
+ staticURL = staticURL == void 0 ? window.location.host : staticURL;
13
+ var currLocation = staticURL.length > 0 ? staticURL : window.location.search;
14
+ if (currLocation.split("?").length < 2)
15
+ return "";
16
+ var parArr = currLocation.split("?")[1].split("&"), returnBool = true;
17
+ for (var i = 0; i < parArr.length; i++) {
18
+ var parr = parArr[i].split("=");
19
+ if (parr[0] == parameter) {
20
+ return decode ? decodeURIComponent(parr[1]) : parr[1];
21
+ } else {
22
+ returnBool = false;
23
+ }
24
+ }
25
+ if (!returnBool)
26
+ return false;
27
+ };
28
+ var isLink = (str) => {
29
+ return urlRegex.test(str);
30
+ };
31
+ var getFileNameWithoutExtension = (url) => {
32
+ url = decodeURIComponent(url);
33
+ if (url) {
34
+ const m = url.toString().match(/.*\/(.+?)\./);
35
+ if (m && m.length > 1) {
36
+ return m[1];
37
+ }
38
+ if (!isNull(url)) {
39
+ return url.split(".").shift();
40
+ }
41
+ }
42
+ return "";
43
+ };
44
+ var getFileNameWithExtension = (url) => {
45
+ url = decodeURIComponent(url);
46
+ if (url) {
47
+ const m = url.toString().match(/.*\/(.*)$/);
48
+ if (m && m.length > 1) {
49
+ return m[1].split("/").pop().split("?")[0];
50
+ }
51
+ if (!isNull(url)) {
52
+ return url;
53
+ }
54
+ }
55
+ return "";
56
+ };
57
+ var getFileExtension = (url) => {
58
+ return getFileNameWithExtension(url).split(".").pop();
59
+ };
60
+ var isImage = (url) => {
61
+ const arr = ["png", "jpg", "jpeg", "jpe", "jif", "jfif", "gif", "svg"];
62
+ const index = arr.findIndex((item) => {
63
+ return getFileExtension(url).toLowerCase() == item;
64
+ });
65
+ return index >= 0;
66
+ };
67
+
68
+ export { addQueryParam, getFileExtension, getFileNameWithExtension, getFileNameWithoutExtension, getUrlParams, isImage, isLink };
@@ -0,0 +1,12 @@
1
+ declare const random: (hex?: boolean) => string;
2
+ declare const pSBC: (p: any, c0: any, c1?: any, l?: any) => string;
3
+ declare const hexToRgb: (hex: string) => {
4
+ r: number;
5
+ g: number;
6
+ b: number;
7
+ };
8
+ declare const hexDarken: (hex: string, amount: number) => string;
9
+ declare const hexLighten: (hex: string, amount: number) => string;
10
+ declare const RGBToHex: (rgb: string | any) => string;
11
+
12
+ export { RGBToHex, hexDarken, hexLighten, hexToRgb, pSBC, random };
package/dist/color.js ADDED
@@ -0,0 +1,69 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ // src/color.ts
6
+ var random = (hex = false) => {
7
+ return (hex ? "#" : "") + Math.floor(Math.random() * 16777215).toString(16);
8
+ };
9
+ var pSBC = (p, c0, c1, l) => {
10
+ let r, g, b, P, f, t, h, i = parseInt, m = Math.round, a = typeof c1 == "string";
11
+ if (typeof p != "number" || p < -1 || p > 1 || typeof c0 != "string" || c0[0] != "r" && c0[0] != "#" || c1 && !a)
12
+ return null;
13
+ const pSBCr = (d) => {
14
+ let n = d.length, x = { r: 0, g: 0, b: 0, a: 1 };
15
+ if (n > 9) {
16
+ [r, g, b, a] = d = d.split(","), n = d.length;
17
+ if (n < 3 || n > 4)
18
+ return null;
19
+ x.r = i(r[3] == "a" ? r.slice(5) : r.slice(4)), x.g = i(g), x.b = i(b), x.a = a ? parseFloat(a.toString()) : -1;
20
+ } else {
21
+ if (n == 8 || n == 6 || n < 4)
22
+ return null;
23
+ if (n < 6)
24
+ d = "#" + d[1] + d[1] + d[2] + d[2] + d[3] + d[3] + (n > 4 ? d[4] + d[4] : "");
25
+ d = i(d.slice(1), 16);
26
+ if (n == 9 || n == 5)
27
+ x.r = d >> 24 & 255, x.g = d >> 16 & 255, x.b = d >> 8 & 255, x.a = m((d & 255) / 0.255) / 1e3;
28
+ else
29
+ x.r = d >> 16, x.g = d >> 8 & 255, x.b = d & 255, x.a = -1;
30
+ }
31
+ return x;
32
+ };
33
+ h = c0.length > 9, h = a ? c1.length > 9 ? true : c1 == "c" ? !h : false : h, f = pSBCr(c0), P = p < 0, t = c1 && c1 != "c" ? pSBCr(c1) : P ? { r: 0, g: 0, b: 0, a: -1 } : { r: 255, g: 255, b: 255, a: -1 }, p = P ? p * -1 : p, P = 1 - p;
34
+ if (!f || !t)
35
+ return null;
36
+ if (l)
37
+ r = m(P * f.r + p * t.r), g = m(P * f.g + p * t.g), b = m(P * f.b + p * t.b);
38
+ else
39
+ r = m((P * f.r ** 2 + p * t.r ** 2) ** 0.5), g = m((P * f.g ** 2 + p * t.g ** 2) ** 0.5), b = m((P * f.b ** 2 + p * t.b ** 2) ** 0.5);
40
+ a = f.a, t = t.a, f = a >= 0 || t >= 0, a = f ? a < 0 ? t : t < 0 ? a : a * P + t * p : 0;
41
+ if (h)
42
+ return "rgb" + (f ? "a(" : "(") + r + "," + g + "," + b + (f ? "," + m(a * 1e3) / 1e3 : "") + ")";
43
+ else
44
+ return "#" + (4294967296 + r * 16777216 + g * 65536 + b * 256 + (f ? m(a * 255) : 0)).toString(16).slice(1, f ? void 0 : -2);
45
+ };
46
+ var hexToRgb = (hex) => {
47
+ var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
48
+ return result ? {
49
+ r: parseInt(result[1], 16),
50
+ g: parseInt(result[2], 16),
51
+ b: parseInt(result[3], 16)
52
+ } : null;
53
+ };
54
+ var hexDarken = (hex, amount) => {
55
+ return pSBC(-amount, hex);
56
+ };
57
+ var hexLighten = (hex, amount) => {
58
+ return pSBC(amount, hex);
59
+ };
60
+ var RGBToHex = (rgb) => {
61
+ return pSBC(0, rgb, "c", true);
62
+ };
63
+
64
+ exports.RGBToHex = RGBToHex;
65
+ exports.hexDarken = hexDarken;
66
+ exports.hexLighten = hexLighten;
67
+ exports.hexToRgb = hexToRgb;
68
+ exports.pSBC = pSBC;
69
+ exports.random = random;
package/dist/color.mjs ADDED
@@ -0,0 +1,62 @@
1
+ import './chunk-AKU6F3WT.mjs';
2
+
3
+ // src/color.ts
4
+ var random = (hex = false) => {
5
+ return (hex ? "#" : "") + Math.floor(Math.random() * 16777215).toString(16);
6
+ };
7
+ var pSBC = (p, c0, c1, l) => {
8
+ let r, g, b, P, f, t, h, i = parseInt, m = Math.round, a = typeof c1 == "string";
9
+ if (typeof p != "number" || p < -1 || p > 1 || typeof c0 != "string" || c0[0] != "r" && c0[0] != "#" || c1 && !a)
10
+ return null;
11
+ const pSBCr = (d) => {
12
+ let n = d.length, x = { r: 0, g: 0, b: 0, a: 1 };
13
+ if (n > 9) {
14
+ [r, g, b, a] = d = d.split(","), n = d.length;
15
+ if (n < 3 || n > 4)
16
+ return null;
17
+ x.r = i(r[3] == "a" ? r.slice(5) : r.slice(4)), x.g = i(g), x.b = i(b), x.a = a ? parseFloat(a.toString()) : -1;
18
+ } else {
19
+ if (n == 8 || n == 6 || n < 4)
20
+ return null;
21
+ if (n < 6)
22
+ d = "#" + d[1] + d[1] + d[2] + d[2] + d[3] + d[3] + (n > 4 ? d[4] + d[4] : "");
23
+ d = i(d.slice(1), 16);
24
+ if (n == 9 || n == 5)
25
+ x.r = d >> 24 & 255, x.g = d >> 16 & 255, x.b = d >> 8 & 255, x.a = m((d & 255) / 0.255) / 1e3;
26
+ else
27
+ x.r = d >> 16, x.g = d >> 8 & 255, x.b = d & 255, x.a = -1;
28
+ }
29
+ return x;
30
+ };
31
+ h = c0.length > 9, h = a ? c1.length > 9 ? true : c1 == "c" ? !h : false : h, f = pSBCr(c0), P = p < 0, t = c1 && c1 != "c" ? pSBCr(c1) : P ? { r: 0, g: 0, b: 0, a: -1 } : { r: 255, g: 255, b: 255, a: -1 }, p = P ? p * -1 : p, P = 1 - p;
32
+ if (!f || !t)
33
+ return null;
34
+ if (l)
35
+ r = m(P * f.r + p * t.r), g = m(P * f.g + p * t.g), b = m(P * f.b + p * t.b);
36
+ else
37
+ r = m((P * f.r ** 2 + p * t.r ** 2) ** 0.5), g = m((P * f.g ** 2 + p * t.g ** 2) ** 0.5), b = m((P * f.b ** 2 + p * t.b ** 2) ** 0.5);
38
+ a = f.a, t = t.a, f = a >= 0 || t >= 0, a = f ? a < 0 ? t : t < 0 ? a : a * P + t * p : 0;
39
+ if (h)
40
+ return "rgb" + (f ? "a(" : "(") + r + "," + g + "," + b + (f ? "," + m(a * 1e3) / 1e3 : "") + ")";
41
+ else
42
+ return "#" + (4294967296 + r * 16777216 + g * 65536 + b * 256 + (f ? m(a * 255) : 0)).toString(16).slice(1, f ? void 0 : -2);
43
+ };
44
+ var hexToRgb = (hex) => {
45
+ var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
46
+ return result ? {
47
+ r: parseInt(result[1], 16),
48
+ g: parseInt(result[2], 16),
49
+ b: parseInt(result[3], 16)
50
+ } : null;
51
+ };
52
+ var hexDarken = (hex, amount) => {
53
+ return pSBC(-amount, hex);
54
+ };
55
+ var hexLighten = (hex, amount) => {
56
+ return pSBC(amount, hex);
57
+ };
58
+ var RGBToHex = (rgb) => {
59
+ return pSBC(0, rgb, "c", true);
60
+ };
61
+
62
+ export { RGBToHex, hexDarken, hexLighten, hexToRgb, pSBC, random };
@@ -0,0 +1,3 @@
1
+ declare function enableConsole(): Console;
2
+
3
+ export { enableConsole as default };
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ var cloneDeep = require('lodash/cloneDeep');
4
+
5
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
6
+
7
+ var cloneDeep__default = /*#__PURE__*/_interopDefaultLegacy(cloneDeep);
8
+
9
+ // src/console/enableConsole.ts
10
+ var _console = cloneDeep__default["default"](console);
11
+ function enableConsole() {
12
+ return _console;
13
+ }
14
+
15
+ module.exports = enableConsole;
@@ -0,0 +1,2 @@
1
+ export { enableConsole as default } from '../chunk-AHFJBIQJ.mjs';
2
+ import '../chunk-AKU6F3WT.mjs';
@@ -0,0 +1,5 @@
1
+ declare const disableConsole: (params: any) => void;
2
+ declare const removeConsole: (params: any) => void;
3
+ declare const showCredit: (params: any) => void;
4
+
5
+ export { disableConsole, removeConsole, showCredit };
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ // src/console/index.ts
6
+ var disableConsole = (params) => {
7
+ for (var key in console) {
8
+ console[key] = function() {
9
+ };
10
+ }
11
+ };
12
+ var removeConsole = disableConsole;
13
+ var showCredit = (params) => {
14
+ console.log("Developed by Digitop | https://www.wearetopgroup.com/?utm_src=console");
15
+ };
16
+
17
+ exports.disableConsole = disableConsole;
18
+ exports.removeConsole = removeConsole;
19
+ exports.showCredit = showCredit;
@@ -0,0 +1,2 @@
1
+ export { disableConsole, removeConsole, showCredit } from '../chunk-LXQIKFED.mjs';
2
+ import '../chunk-AKU6F3WT.mjs';
@@ -0,0 +1,7 @@
1
+ declare const isPotrait: () => boolean;
2
+ declare const isLandscape: () => boolean;
3
+ declare const ua: () => any;
4
+ declare const isFacebookWebview: () => boolean;
5
+ declare const isInAppWebview: () => boolean;
6
+
7
+ export { isFacebookWebview, isInAppWebview, isLandscape, isPotrait, ua };
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ // src/device/browser.ts
6
+ var isPotrait = () => {
7
+ if (typeof window == "undefined")
8
+ return false;
9
+ if (!window.orientation)
10
+ return window.matchMedia("(orientation: portrait)").matches;
11
+ return !(window.orientation === 90 || window.orientation === -90);
12
+ };
13
+ var isLandscape = () => {
14
+ return !isPotrait();
15
+ };
16
+ var ua = () => {
17
+ if (typeof navigator == "undefined")
18
+ return null;
19
+ if (typeof window == "undefined")
20
+ return null;
21
+ return navigator.userAgent || navigator.vendor || window.opera;
22
+ };
23
+ var isFacebookWebview = () => {
24
+ var ua2 = ua2();
25
+ if (typeof ua2 != "undefined")
26
+ return ua2.indexOf("FBAN") > -1 || ua2.indexOf("FBAV") > -1;
27
+ };
28
+ var isInAppWebview = () => {
29
+ const rules = ["WebView", "(iPhone|iPod|iPad)(?!.*Safari/)", "Android.*(wv|.0.0.0)"];
30
+ const regex = new RegExp(`(${rules.join("|")})`, "ig");
31
+ if (ua())
32
+ return Boolean(ua().match(regex));
33
+ return false;
34
+ };
35
+
36
+ exports.isFacebookWebview = isFacebookWebview;
37
+ exports.isInAppWebview = isInAppWebview;
38
+ exports.isLandscape = isLandscape;
39
+ exports.isPotrait = isPotrait;
40
+ exports.ua = ua;
@@ -0,0 +1,2 @@
1
+ export { isFacebookWebview, isInAppWebview, isLandscape, isPotrait, ua } from '../chunk-FOWYH6LL.mjs';
2
+ import '../chunk-AKU6F3WT.mjs';
@@ -0,0 +1,16 @@
1
+ /**
2
+ *
3
+ * @param {{
4
+ * container,
5
+ * facingMode : environment | user,
6
+ * audio : boolean,
7
+ * }} param0
8
+ * @returns
9
+ */
10
+ declare function getWebcam({ container, facingMode, audio, }: {
11
+ container: any;
12
+ facingMode?: string;
13
+ audio?: boolean;
14
+ }): Promise<unknown>;
15
+
16
+ export { getWebcam };
@@ -0,0 +1,164 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ // src/permission/requestCamera.ts
6
+ var requestCamera = ({ audio = true, video = true }) => {
7
+ if (typeof window == "undefined")
8
+ return false;
9
+ return new Promise((resolve, reject) => {
10
+ if (navigator.mediaDevices.getUserMedia === void 0) {
11
+ navigator.mediaDevices.getUserMedia = function(constraints) {
12
+ var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
13
+ if (!getUserMedia) {
14
+ return Promise.reject(new Error("getUserMedia is not implemented in this browser"));
15
+ }
16
+ return new Promise(function(resolve2, reject2) {
17
+ getUserMedia.call(navigator, constraints, resolve2, reject2);
18
+ });
19
+ };
20
+ }
21
+ navigator.mediaDevices.getUserMedia({ audio, video }).then(function(stream) {
22
+ resolve(true);
23
+ }).catch(function(err) {
24
+ console.log(err.name + ": " + err.message);
25
+ resolve(false);
26
+ });
27
+ });
28
+ };
29
+ var requestCamera_default = requestCamera;
30
+
31
+ // src/device/camera.ts
32
+ function getWebcam({
33
+ container,
34
+ facingMode = "environment",
35
+ audio = false
36
+ }) {
37
+ if (typeof window == "undefined")
38
+ return;
39
+ container = container || document.body;
40
+ return new Promise(async (resolve, reject) => {
41
+ const video = document.createElement("video");
42
+ video.style.position = "absolute";
43
+ video.style.top = "0";
44
+ video.style.left = "0";
45
+ video.style.width = "100%";
46
+ video.style.height = "100%";
47
+ container.append(video);
48
+ let inputCameras = [];
49
+ let currentCamera;
50
+ const requestedMediaConstraints = {
51
+ video: {
52
+ facingMode: { exact: facingMode }
53
+ },
54
+ audio
55
+ };
56
+ console.log("[Camera.js] Requesting:", requestedMediaConstraints);
57
+ const res = await requestCamera_default({ audio });
58
+ if (!res) {
59
+ setTimeout(function() {
60
+ handleError({ name: "Error", message: "NotSupported" });
61
+ }, 50);
62
+ }
63
+ navigator.mediaDevices.enumerateDevices().then(parseDevices).catch(handleError);
64
+ function parseDevices(devices) {
65
+ inputCameras = [];
66
+ let backCameras = [];
67
+ devices.forEach(function(device) {
68
+ if (device.kind == "videoinput" && typeof device.deviceId != "undefined" && device.deviceId != "") {
69
+ inputCameras.push(device);
70
+ }
71
+ });
72
+ console.log("[Camera.js] inputCameras:", inputCameras);
73
+ if (inputCameras.length > 0) {
74
+ let cams = "";
75
+ let backCamera;
76
+ inputCameras.map((cam, index) => {
77
+ cams += `[${cam.deviceId}] ${cam.kind} | ${cam.label}
78
+ `;
79
+ let label = cam.label.toLowerCase();
80
+ if (label.indexOf("back") > -1 || label.indexOf("facetime") > -1) {
81
+ backCamera = cam;
82
+ backCameras.push(backCamera);
83
+ }
84
+ });
85
+ if (backCameras.length > 1) {
86
+ backCamera = backCameras[backCameras.length - 1];
87
+ }
88
+ console.log(`[Camera.js] All input sources:`, cams);
89
+ console.log(`[Camera.js] This device has ${backCameras.length} back camera${backCameras.length > 1 ? "s" : ""}.`);
90
+ console.log("[Camera.js] backCameras:", JSON.stringify(backCameras));
91
+ currentCamera = backCamera;
92
+ getStreamOfCameraId(backCamera.deviceId).then(onStreamReceived).catch((e) => {
93
+ if (backCameras.length > 1) {
94
+ backCamera = backCameras[backCameras.length - 2];
95
+ getStreamOfCameraId(backCamera.deviceId).then(onStreamReceived).catch(handleError);
96
+ } else if (backCameras.length > 2) {
97
+ backCamera = backCameras[backCameras.length - 3];
98
+ getStreamOfCameraId(backCamera.deviceId).then(onStreamReceived).catch(handleError);
99
+ } else {
100
+ handleError(e);
101
+ }
102
+ });
103
+ } else {
104
+ navigator.mediaDevices.getUserMedia(requestedMediaConstraints).then(onStreamReceived).catch(handleError);
105
+ }
106
+ }
107
+ function onStreamReceived(stream2) {
108
+ if (inputCameras.length == 0) {
109
+ console.log("[Camera.js] Not found any back cameras, request again?");
110
+ navigator.mediaDevices.enumerateDevices().then(parseDevices).catch(handleError);
111
+ return;
112
+ }
113
+ playWebcamVideo(stream2);
114
+ }
115
+ function playWebcamVideo(_stream) {
116
+ if ("srcObject" in video) {
117
+ video.srcObject = _stream;
118
+ } else {
119
+ video.src = window.URL.createObjectURL(_stream);
120
+ }
121
+ video.setAttribute("playsinline", "true");
122
+ video.setAttribute("muted", "true");
123
+ video.setAttribute("autoplay", "true");
124
+ video.muted = true;
125
+ video.autoplay = true;
126
+ video.style.objectFit = "cover";
127
+ video.play();
128
+ video.addEventListener("canplay", function(e) {
129
+ });
130
+ video.addEventListener("canplaythrough", function(e) {
131
+ });
132
+ video.addEventListener("error", (e) => console.log("[Camera.js] <video> error:", e));
133
+ video.addEventListener("stalled", function(e) {
134
+ console.log("[Camera.js] <video> stalled:", e);
135
+ reject();
136
+ });
137
+ video.addEventListener("loadedmetadata", function(e) {
138
+ if (currentCamera.label.toLowerCase().indexOf("facetime") > -1) {
139
+ video.style.transform = "scaleX(-1)";
140
+ video.style.webkitTransform = "scaleX(-1)";
141
+ }
142
+ video.play();
143
+ resolve(video);
144
+ });
145
+ }
146
+ function getStreamOfCameraId(id) {
147
+ const constraints = {
148
+ video: { deviceId: { exact: id } },
149
+ audio: false
150
+ };
151
+ return new Promise((resolve2, reject2) => {
152
+ navigator.mediaDevices.getUserMedia(constraints).then(resolve2).catch(reject2);
153
+ });
154
+ }
155
+ function handleError(err) {
156
+ console.error(err);
157
+ const errMsg = "[Camera.js] " + err.name + ": " + err.message;
158
+ console.error(errMsg);
159
+ reject();
160
+ }
161
+ });
162
+ }
163
+
164
+ exports.getWebcam = getWebcam;
@@ -0,0 +1,3 @@
1
+ export { getWebcam } from '../chunk-7IYY7BKN.mjs';
2
+ import '../chunk-JKYSZLBF.mjs';
3
+ import '../chunk-AKU6F3WT.mjs';
@@ -0,0 +1,6 @@
1
+ declare const isIos: () => boolean;
2
+ declare const isAndroid: () => boolean;
3
+ declare const isMobile: () => boolean;
4
+ declare const checkOS: () => any;
5
+
6
+ export { checkOS, isAndroid, isIos, isMobile };