@testgorilla/tgo-ui 1.7.0 → 1.9.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/components/accordion/accordion.component.d.ts +47 -0
- package/components/accordion/accordion.component.module.d.ts +12 -0
- package/components/autocomplete/autocomplete.component.d.ts +16 -4
- package/components/button/button.component.d.ts +19 -3
- package/components/button/button.model.d.ts +1 -0
- package/components/card/card.component.d.ts +9 -1
- package/components/card/card.model.d.ts +1 -0
- package/components/checkbox/checkbox.component.d.ts +2 -2
- package/components/confirm-dialog/confirm-dialog.component.d.ts +3 -3
- package/components/confirm-dialog/confirm-dialog.component.module.d.ts +2 -1
- package/components/datepicker/datepicker.component.d.ts +16 -3
- package/components/datepicker/datepicker.component.module.d.ts +2 -1
- package/components/dialog/dialog.component.d.ts +21 -2
- package/components/dialog/dialog.component.module.d.ts +2 -1
- package/components/divider/divider.component.d.ts +21 -0
- package/components/divider/divider.component.module.d.ts +9 -0
- package/components/divider/divider.model.d.ts +1 -0
- package/components/dropdown/dropdown.component.d.ts +12 -2
- package/components/dropdown/dropdown.component.module.d.ts +2 -1
- package/components/empty-state/empty-state.component.d.ts +14 -3
- package/components/field/field.component.d.ts +13 -2
- package/components/field/field.component.module.d.ts +2 -1
- package/components/file-upload/file-upload.component.d.ts +21 -2
- package/components/file-upload/file-upload.component.module.d.ts +2 -1
- package/components/icon/icon.config.d.ts +1 -1
- package/components/navbar/navbar.component.d.ts +16 -4
- package/components/navbar/navbar.component.module.d.ts +2 -1
- package/components/navigation/navigation.component.d.ts +3 -3
- package/components/navigation/navigation.component.module.d.ts +1 -2
- package/components/navigation/navigation.model.d.ts +12 -0
- package/components/page-header/page-header.component.d.ts +39 -0
- package/components/page-header/page-header.component.module.d.ts +10 -0
- package/components/progress-bar/progress-bar.component.d.ts +2 -2
- package/components/radio-button/radio-button.component.d.ts +2 -2
- package/components/side-sheet/side-sheet.component.d.ts +12 -2
- package/components/skeleton/skeleton.component.d.ts +9 -3
- package/components/skeleton/skeleton.model.d.ts +2 -0
- package/components/slider/slider.component.d.ts +97 -0
- package/components/slider/slider.component.module.d.ts +14 -0
- package/components/slider/slider.model.d.ts +4 -0
- package/components/snackbar/snackbar.component.module.d.ts +0 -2
- package/components/spinner/spinner.component.d.ts +10 -1
- package/components/spinner/spinner.model.d.ts +1 -0
- package/components/spinner/spinner.module.d.ts +2 -1
- package/components/stepper/stepper.component.d.ts +15 -4
- package/components/tabs/tab.directive.d.ts +18 -0
- package/components/tabs/tabs.component.d.ts +24 -0
- package/components/tabs/tabs.component.module.d.ts +11 -0
- package/components/tabs/tabs.model.d.ts +9 -0
- package/esm2022/components/accordion/accordion.component.mjs +74 -0
- package/esm2022/components/accordion/accordion.component.module.mjs +37 -0
- package/esm2022/components/alert-banner/alert-banner.component.mjs +3 -3
- package/esm2022/components/autocomplete/autocomplete.component.mjs +48 -29
- package/esm2022/components/avatar/avatar.component.mjs +2 -2
- package/esm2022/components/badge/badge.component.mjs +2 -2
- package/esm2022/components/banner-action/banner-action.component.mjs +2 -2
- package/esm2022/components/button/button.component.mjs +61 -7
- package/esm2022/components/button/button.model.mjs +1 -1
- package/esm2022/components/card/card.component.mjs +17 -5
- package/esm2022/components/card/card.model.mjs +2 -0
- package/esm2022/components/checkbox/checkbox.component.mjs +6 -6
- package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +7 -7
- package/esm2022/components/confirm-dialog/confirm-dialog.component.module.mjs +23 -5
- package/esm2022/components/datepicker/datepicker.component.mjs +45 -24
- package/esm2022/components/datepicker/datepicker.component.module.mjs +29 -6
- package/esm2022/components/deprecated-paginator/deprecated-paginator.component.mjs +2 -2
- package/esm2022/components/deprecated-table/deprecated-table.component.mjs +3 -3
- package/esm2022/components/dialog/dialog.component.mjs +41 -9
- package/esm2022/components/dialog/dialog.component.module.mjs +32 -6
- package/esm2022/components/divider/divider.component.mjs +37 -0
- package/esm2022/components/divider/divider.component.module.mjs +19 -0
- package/esm2022/components/divider/divider.model.mjs +2 -0
- package/esm2022/components/dropdown/dropdown.component.mjs +31 -13
- package/esm2022/components/dropdown/dropdown.component.module.mjs +29 -6
- package/esm2022/components/elevation-shadow/elevation-shadow.component.mjs +2 -2
- package/esm2022/components/empty-state/empty-state.component.mjs +28 -10
- package/esm2022/components/field/field.component.mjs +32 -13
- package/esm2022/components/field/field.component.module.mjs +29 -6
- package/esm2022/components/file-upload/file-upload.component.mjs +43 -11
- package/esm2022/components/file-upload/file-upload.component.module.mjs +43 -6
- package/esm2022/components/icon/icon.component.mjs +2 -2
- package/esm2022/components/icon/icon.config.mjs +7 -1
- package/esm2022/components/navbar/navbar.component.mjs +34 -13
- package/esm2022/components/navbar/navbar.component.module.mjs +29 -6
- package/esm2022/components/navigation/navigation.component.mjs +3 -4
- package/esm2022/components/navigation/navigation.component.module.mjs +4 -5
- package/esm2022/components/navigation/navigation.model.mjs +7 -0
- package/esm2022/components/page-header/page-header.component.mjs +68 -0
- package/esm2022/components/page-header/page-header.component.module.mjs +39 -0
- package/esm2022/components/paginator/paginator.component.mjs +2 -2
- package/esm2022/components/progress-bar/progress-bar.component.mjs +5 -5
- package/esm2022/components/radial-progress/radial-progress.component.mjs +2 -2
- package/esm2022/components/radio-button/radio-button.component.mjs +5 -5
- package/esm2022/components/rating/rating.component.mjs +2 -2
- package/esm2022/components/segmented-bar/segmented-bar.component.mjs +2 -2
- package/esm2022/components/side-sheet/side-sheet.component.mjs +28 -11
- package/esm2022/components/skeleton/skeleton.component.mjs +34 -7
- package/esm2022/components/skeleton/skeleton.model.mjs +2 -0
- package/esm2022/components/slider/slider.component.mjs +181 -0
- package/esm2022/components/slider/slider.component.module.mjs +68 -0
- package/esm2022/components/slider/slider.model.mjs +2 -0
- package/esm2022/components/snackbar/snackbar.component.mjs +4 -3
- package/esm2022/components/snackbar/snackbar.component.module.mjs +2 -2
- package/esm2022/components/spinner/spinner.component.mjs +18 -5
- package/esm2022/components/spinner/spinner.model.mjs +2 -0
- package/esm2022/components/spinner/spinner.module.mjs +4 -2
- package/esm2022/components/step/step.component.mjs +2 -2
- package/esm2022/components/stepper/stepper.component.mjs +33 -14
- package/esm2022/components/table/table.component.mjs +2 -2
- package/esm2022/components/tabs/tab.directive.mjs +42 -0
- package/esm2022/components/tabs/tabs.component.mjs +43 -0
- package/esm2022/components/tabs/tabs.component.module.mjs +32 -0
- package/esm2022/components/tabs/tabs.model.mjs +2 -0
- package/esm2022/components/tag/tag.component.mjs +2 -2
- package/esm2022/components/toggle/toggle.component.mjs +2 -2
- package/esm2022/public-api.mjs +23 -21
- package/esm2022/utils/color-contrast.mjs +117 -0
- package/fesm2022/testgorilla-tgo-ui.mjs +1861 -1380
- package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +17 -15
- package/src/assets/i18n/en.json +64 -1
- package/src/assets/icons/Fire.svg +10 -0
- package/src/assets/icons/Gift.svg +7 -0
- package/src/assets/icons/Grab.svg +3 -0
- package/src/assets/icons/Share.svg +3 -0
- package/src/assets/icons/Sparkles.svg +18 -0
- package/src/assets/icons/Video-stop.svg +3 -0
- package/src/theme/_core.scss +1 -1
- package/src/theme/_variables.scss +52 -1
- package/utils/color-contrast.d.ts +9 -0
- package/components/confirm-dialog/confirm-dialog.constants.d.ts +0 -5
- package/components/create-account/create-account.component.d.ts +0 -75
- package/components/create-account/create-account.component.module.d.ts +0 -14
- package/components/create-account/create-account.constant.d.ts +0 -13
- package/components/create-account/create-account.model.d.ts +0 -17
- package/components/create-password/create-password.component.d.ts +0 -43
- package/components/create-password/create-password.component.module.d.ts +0 -13
- package/components/create-password/create-password.constant.d.ts +0 -5
- package/components/create-password/create-password.model.d.ts +0 -8
- package/components/forgot-password/forgot-password.component.d.ts +0 -48
- package/components/forgot-password/forgot-password.component.module.d.ts +0 -13
- package/components/forgot-password/forgot-password.constant.d.ts +0 -6
- package/components/forgot-password/forgot-password.model.d.ts +0 -9
- package/components/label/label.component.d.ts +0 -46
- package/components/label/label.component.module.d.ts +0 -8
- package/components/label/label.model.d.ts +0 -16
- package/components/login/login.component.d.ts +0 -57
- package/components/login/login.component.module.d.ts +0 -13
- package/components/login/login.constant.d.ts +0 -10
- package/components/login/login.model.d.ts +0 -15
- package/esm2022/components/confirm-dialog/confirm-dialog.constants.mjs +0 -6
- package/esm2022/components/create-account/create-account.component.mjs +0 -148
- package/esm2022/components/create-account/create-account.component.module.mjs +0 -48
- package/esm2022/components/create-account/create-account.constant.mjs +0 -14
- package/esm2022/components/create-account/create-account.model.mjs +0 -2
- package/esm2022/components/create-password/create-password.component.mjs +0 -83
- package/esm2022/components/create-password/create-password.component.module.mjs +0 -44
- package/esm2022/components/create-password/create-password.constant.mjs +0 -6
- package/esm2022/components/create-password/create-password.model.mjs +0 -2
- package/esm2022/components/forgot-password/forgot-password.component.mjs +0 -86
- package/esm2022/components/forgot-password/forgot-password.component.module.mjs +0 -44
- package/esm2022/components/forgot-password/forgot-password.constant.mjs +0 -7
- package/esm2022/components/forgot-password/forgot-password.model.mjs +0 -2
- package/esm2022/components/label/label.component.mjs +0 -64
- package/esm2022/components/label/label.component.module.mjs +0 -19
- package/esm2022/components/label/label.model.mjs +0 -9
- package/esm2022/components/login/login.component.mjs +0 -113
- package/esm2022/components/login/login.component.module.mjs +0 -44
- package/esm2022/components/login/login.constant.mjs +0 -11
- package/esm2022/components/login/login.model.mjs +0 -2
- package/esm2022/utils/validators.utils.mjs +0 -8
- package/utils/validators.utils.d.ts +0 -4
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Function for adjusting the lightness of a color based on different events (hover, pressed, disabled).
|
|
3
|
+
* Accepts a hex color, transforms it to HSL, and based on color's L and event darkens or lightens it.
|
|
4
|
+
* Used to manage different colors based on application configuration
|
|
5
|
+
*
|
|
6
|
+
* @param hexColor color in hex format
|
|
7
|
+
* @param typeEvent interaction event
|
|
8
|
+
*/
|
|
9
|
+
export const adjustLightness = (hexColor, typeEvent) => {
|
|
10
|
+
const hexRegex = /^#([0-9A-F]{3}){1,2}$/i;
|
|
11
|
+
if (!hexRegex.test(hexColor)) {
|
|
12
|
+
throw new Error('Invalid HEX color format');
|
|
13
|
+
}
|
|
14
|
+
const hslColor = hexToHsl(hexColor);
|
|
15
|
+
const lightness = hslColor.l * 100;
|
|
16
|
+
if (lightness > 70 && typeEvent === 'hover') {
|
|
17
|
+
hslColor.l = clamp(hslColor.l - 10 / 100);
|
|
18
|
+
}
|
|
19
|
+
else if (lightness < 30 && typeEvent === 'hover') {
|
|
20
|
+
hslColor.l = clamp(hslColor.l + 10 / 100);
|
|
21
|
+
}
|
|
22
|
+
else if (lightness < 70 && lightness > 30 && typeEvent === 'hover') {
|
|
23
|
+
hslColor.l = clamp(hslColor.l - 10 / 100);
|
|
24
|
+
}
|
|
25
|
+
else if (lightness > 70 && typeEvent === 'pressed') {
|
|
26
|
+
hslColor.l = clamp(hslColor.l - 20 / 100);
|
|
27
|
+
}
|
|
28
|
+
else if (lightness < 30 && typeEvent === 'pressed') {
|
|
29
|
+
hslColor.l = clamp(hslColor.l + 30 / 100);
|
|
30
|
+
}
|
|
31
|
+
else if (lightness < 70 && lightness > 30 && typeEvent === 'pressed') {
|
|
32
|
+
hslColor.l = clamp(hslColor.l - 20 / 100);
|
|
33
|
+
}
|
|
34
|
+
else if (lightness > 70 && typeEvent === 'disabled') {
|
|
35
|
+
hslColor.l = clamp(hslColor.l + 10 / 100);
|
|
36
|
+
}
|
|
37
|
+
else if (lightness < 30 && typeEvent === 'disabled') {
|
|
38
|
+
hslColor.l = clamp(hslColor.l + 50 / 100);
|
|
39
|
+
}
|
|
40
|
+
else if (lightness < 70 && lightness > 30 && typeEvent === 'disabled') {
|
|
41
|
+
hslColor.l = clamp(hslColor.l + 20 / 100);
|
|
42
|
+
}
|
|
43
|
+
return hslToHex(hslColor);
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Transforms hex color to HSL in object variation.
|
|
47
|
+
* @param hexColor string value with hex color
|
|
48
|
+
*/
|
|
49
|
+
const hexToHsl = (hexColor) => {
|
|
50
|
+
const rgbColor = parseInt(hexColor.slice(1), 16);
|
|
51
|
+
const r = ((rgbColor >> 16) & 255) / 255;
|
|
52
|
+
const g = ((rgbColor >> 8) & 255) / 255;
|
|
53
|
+
const b = (rgbColor & 255) / 255;
|
|
54
|
+
const max = Math.max(r, g, b);
|
|
55
|
+
const min = Math.min(r, g, b);
|
|
56
|
+
let h = 0;
|
|
57
|
+
let s;
|
|
58
|
+
const l = (max + min) / 2;
|
|
59
|
+
if (max === min) {
|
|
60
|
+
h = s = 0; // grayscale
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
const d = max - min;
|
|
64
|
+
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
65
|
+
switch (max) {
|
|
66
|
+
case r:
|
|
67
|
+
h = (g - b) / d + (g < b ? 6 : 0);
|
|
68
|
+
break;
|
|
69
|
+
case g:
|
|
70
|
+
h = (b - r) / d + 2;
|
|
71
|
+
break;
|
|
72
|
+
case b:
|
|
73
|
+
h = (r - g) / d + 4;
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
h /= 6;
|
|
77
|
+
}
|
|
78
|
+
return { h, s, l };
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Transforms HSL color, represented as an object and transforms it to hex string.
|
|
82
|
+
* @param hslColor accepts the HSL color like an object.
|
|
83
|
+
*/
|
|
84
|
+
const hslToHex = (hslColor) => {
|
|
85
|
+
const { h, s, l } = hslColor;
|
|
86
|
+
const hueToRgb = (p, q, t) => {
|
|
87
|
+
if (t < 0) {
|
|
88
|
+
t += 1;
|
|
89
|
+
}
|
|
90
|
+
if (t > 1) {
|
|
91
|
+
t -= 1;
|
|
92
|
+
}
|
|
93
|
+
if (t < 1 / 6) {
|
|
94
|
+
return p + (q - p) * 6 * t;
|
|
95
|
+
}
|
|
96
|
+
if (t < 1 / 2) {
|
|
97
|
+
return q;
|
|
98
|
+
}
|
|
99
|
+
if (t < 2 / 3) {
|
|
100
|
+
return p + (q - p) * (2 / 3 - t) * 6;
|
|
101
|
+
}
|
|
102
|
+
return p;
|
|
103
|
+
};
|
|
104
|
+
const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
|
|
105
|
+
const p = 2 * l - q;
|
|
106
|
+
const r = hueToRgb(p, q, h + 1 / 3);
|
|
107
|
+
const g = hueToRgb(p, q, h);
|
|
108
|
+
const b = hueToRgb(p, q, h - 1 / 3);
|
|
109
|
+
const rgbColor = (Math.round(r * 255) << 16) | (Math.round(g * 255) << 8) | Math.round(b * 255);
|
|
110
|
+
return `#${rgbColor.toString(16).padStart(6, '0')}`;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Restricts the value to be within the range [0, 1].
|
|
114
|
+
* @param value
|
|
115
|
+
*/
|
|
116
|
+
const clamp = (value) => Math.min(Math.max(value, 0), 1);
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItY29udHJhc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvY29sb3ItY29udHJhc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLFFBQWdCLEVBQUUsU0FBMkMsRUFBVSxFQUFFO0lBQ3ZHLE1BQU0sUUFBUSxHQUFHLHdCQUF3QixDQUFDO0lBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztLQUM3QztJQUVELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUVuQyxJQUFJLFNBQVMsR0FBRyxFQUFFLElBQUksU0FBUyxLQUFLLE9BQU8sRUFBRTtRQUMzQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztLQUMzQztTQUFNLElBQUksU0FBUyxHQUFHLEVBQUUsSUFBSSxTQUFTLEtBQUssT0FBTyxFQUFFO1FBQ2xELFFBQVEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0tBQzNDO1NBQU0sSUFBSSxTQUFTLEdBQUcsRUFBRSxJQUFJLFNBQVMsR0FBRyxFQUFFLElBQUksU0FBUyxLQUFLLE9BQU8sRUFBRTtRQUNwRSxRQUFRLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztLQUMzQztTQUFNLElBQUksU0FBUyxHQUFHLEVBQUUsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFO1FBQ3BELFFBQVEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0tBQzNDO1NBQU0sSUFBSSxTQUFTLEdBQUcsRUFBRSxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUU7UUFDcEQsUUFBUSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7S0FDM0M7U0FBTSxJQUFJLFNBQVMsR0FBRyxFQUFFLElBQUksU0FBUyxHQUFHLEVBQUUsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFO1FBQ3RFLFFBQVEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0tBQzNDO1NBQU0sSUFBSSxTQUFTLEdBQUcsRUFBRSxJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUU7UUFDckQsUUFBUSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7S0FDM0M7U0FBTSxJQUFJLFNBQVMsR0FBRyxFQUFFLElBQUksU0FBUyxLQUFLLFVBQVUsRUFBRTtRQUNyRCxRQUFRLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztLQUMzQztTQUFNLElBQUksU0FBUyxHQUFHLEVBQUUsSUFBSSxTQUFTLEdBQUcsRUFBRSxJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUU7UUFDdkUsUUFBUSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7S0FDM0M7SUFFRCxPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFD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QUFDLEVBQUUsQ0FBQztBQUN0RCxDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQWEsRUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRnVuY3Rpb24gZm9yIGFkanVzdGluZyB0aGUgbGlnaHRuZXNzIG9mIGEgY29sb3IgYmFzZWQgb24gZGlmZmVyZW50IGV2ZW50cyAoaG92ZXIsIHByZXNzZWQsIGRpc2FibGVkKS5cbiAqIEFjY2VwdHMgYSBoZXggY29sb3IsIHRyYW5zZm9ybXMgaXQgdG8gSFNMLCBhbmQgYmFzZWQgb24gY29sb3IncyBMIGFuZCBldmVudCBkYXJrZW5zIG9yIGxpZ2h0ZW5zIGl0LlxuICogVXNlZCB0byBtYW5hZ2UgZGlmZmVyZW50IGNvbG9ycyBiYXNlZCBvbiBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uXG4gKlxuICogQHBhcmFtIGhleENvbG9yIGNvbG9yIGluIGhleCBmb3JtYXRcbiAqIEBwYXJhbSB0eXBlRXZlbnQgaW50ZXJhY3Rpb24gZXZlbnRcbiAqL1xuZXhwb3J0IGNvbnN0IGFkanVzdExpZ2h0bmVzcyA9IChoZXhDb2xvcjogc3RyaW5nLCB0eXBlRXZlbnQ6ICdob3ZlcicgfCAncHJlc3NlZCcgfCAnZGlzYWJsZWQnKTogc3RyaW5nID0+IHtcbiAgY29uc3QgaGV4UmVnZXggPSAvXiMoWzAtOUEtRl17M30pezEsMn0kL2k7XG4gIGlmICghaGV4UmVnZXgudGVzdChoZXhDb2xvcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSEVYIGNvbG9yIGZvcm1hdCcpO1xuICB9XG5cbiAgY29uc3QgaHNsQ29sb3IgPSBoZXhUb0hzbChoZXhDb2xvcik7XG4gIGNvbnN0IGxpZ2h0bmVzcyA9IGhzbENvbG9yLmwgKiAxMDA7XG5cbiAgaWYgKGxpZ2h0bmVzcyA+IDcwICYmIHR5cGVFdmVudCA9PT0gJ2hvdmVyJykge1xuICAgIGhzbENvbG9yLmwgPSBjbGFtcChoc2xDb2xvci5sIC0gMTAgLyAxMDApO1xuICB9IGVsc2UgaWYgKGxpZ2h0bmVzcyA8IDMwICYmIHR5cGVFdmVudCA9PT0gJ2hvdmVyJykge1xuICAgIGhzbENvbG9yLmwgPSBjbGFtcChoc2xDb2xvci5sICsgMTAgLyAxMDApO1xuICB9IGVsc2UgaWYgKGxpZ2h0bmVzcyA8IDcwICYmIGxpZ2h0bmVzcyA+IDMwICYmIHR5cGVFdmVudCA9PT0gJ2hvdmVyJykge1xuICAgIGhzbENvbG9yLmwgPSBjbGFtcChoc2xDb2xvci5sIC0gMTAgLyAxMDApO1xuICB9IGVsc2UgaWYgKGxpZ2h0bmVzcyA+IDcwICYmIHR5cGVFdmVudCA9PT0gJ3ByZXNzZWQnKSB7XG4gICAgaHNsQ29sb3IubCA9IGNsYW1wKGhzbENvbG9yLmwgLSAyMCAvIDEwMCk7XG4gIH0gZWxzZSBpZiAobGlnaHRuZXNzIDwgMzAgJiYgdHlwZUV2ZW50ID09PSAncHJlc3NlZCcpIHtcbiAgICBoc2xDb2xvci5sID0gY2xhbXAoaHNsQ29sb3IubCArIDMwIC8gMTAwKTtcbiAgfSBlbHNlIGlmIChsaWdodG5lc3MgPCA3MCAmJiBsaWdodG5lc3MgPiAzMCAmJiB0eXBlRXZlbnQgPT09ICdwcmVzc2VkJykge1xuICAgIGhzbENvbG9yLmwgPSBjbGFtcChoc2xDb2xvci5sIC0gMjAgLyAxMDApO1xuICB9IGVsc2UgaWYgKGxpZ2h0bmVzcyA+IDcwICYmIHR5cGVFdmVudCA9PT0gJ2Rpc2FibGVkJykge1xuICAgIGhzbENvbG9yLmwgPSBjbGFtcChoc2xDb2xvci5sICsgMTAgLyAxMDApO1xuICB9IGVsc2UgaWYgKGxpZ2h0bmVzcyA8IDMwICYmIHR5cGVFdmVudCA9PT0gJ2Rpc2FibGVkJykge1xuICAgIGhzbENvbG9yLmwgPSBjbGFtcChoc2xDb2xvci5sICsgNTAgLyAxMDApO1xuICB9IGVsc2UgaWYgKGxpZ2h0bmVzcyA8IDcwICYmIGxpZ2h0bmVzcyA+IDMwICYmIHR5cGVFdmVudCA9PT0gJ2Rpc2FibGVkJykge1xuICAgIGhzbENvbG9yLmwgPSBjbGFtcChoc2xDb2xvci5sICsgMjAgLyAxMDApO1xuICB9XG5cbiAgcmV0dXJuIGhzbFRvSGV4KGhzbENvbG9yKTtcbn07XG5cbi8qKlxuICogVHJhbnNmb3JtcyBoZXggY29sb3IgdG8gSFNMIGluIG9iamVjdCB2YXJpYXRpb24uXG4gKiBAcGFyYW0gaGV4Q29sb3Igc3RyaW5nIHZhbHVlIHdpdGggaGV4IGNvbG9yXG4gKi9cbmNvbnN0IGhleFRvSHNsID0gKGhleENvbG9yOiBzdHJpbmcpOiB7IGg6IG51bWJlcjsgczogbnVtYmVyOyBsOiBudW1iZXIgfSA9PiB7XG4gIGNvbnN0IHJnYkNvbG9yID0gcGFyc2VJbnQoaGV4Q29sb3Iuc2xpY2UoMSksIDE2KTtcbiAgY29uc3QgciA9ICgocmdiQ29sb3IgPj4gMTYpICYgMjU1KSAvIDI1NTtcbiAgY29uc3QgZyA9ICgocmdiQ29sb3IgPj4gOCkgJiAyNTUpIC8gMjU1O1xuICBjb25zdCBiID0gKHJnYkNvbG9yICYgMjU1KSAvIDI1NTtcblxuICBjb25zdCBtYXggPSBNYXRoLm1heChyLCBnLCBiKTtcbiAgY29uc3QgbWluID0gTWF0aC5taW4ociwgZywgYik7XG5cbiAgbGV0IGggPSAwO1xuICBsZXQgcztcbiAgY29uc3QgbCA9IChtYXggKyBtaW4pIC8gMjtcblxuICBpZiAobWF4ID09PSBtaW4pIHtcbiAgICBoID0gcyA9IDA7IC8vIGdyYXlzY2FsZVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGQgPSBtYXggLSBtaW47XG4gICAgcyA9IGwgPiAwLjUgPyBkIC8gKDIgLSBtYXggLSBtaW4pIDogZCAvIChtYXggKyBtaW4pO1xuXG4gICAgc3dpdGNoIChtYXgpIHtcbiAgICAgIGNhc2UgcjpcbiAgICAgICAgaCA9IChnIC0gYikgLyBkICsgKGcgPCBiID8gNiA6IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZzpcbiAgICAgICAgaCA9IChiIC0gcikgLyBkICsgMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGI6XG4gICAgICAgIGggPSAociAtIGcpIC8gZCArIDQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGggLz0gNjtcbiAgfVxuXG4gIHJldHVybiB7IGgsIHMsIGwgfTtcbn07XG5cbi8qKlxuICogVHJhbnNmb3JtcyBIU0wgY29sb3IsIHJlcHJlc2VudGVkIGFzIGFuIG9iamVjdCBhbmQgdHJhbnNmb3JtcyBpdCB0byBoZXggc3RyaW5nLlxuICogQHBhcmFtIGhzbENvbG9yIGFjY2VwdHMgdGhlIEhTTCBjb2xvciBsaWtlIGFuIG9iamVjdC5cbiAqL1xuY29uc3QgaHNsVG9IZXggPSAoaHNsQ29sb3I6IHsgaDogbnVtYmVyOyBzOiBudW1iZXI7IGw6IG51bWJlciB9KTogc3RyaW5nID0+IHtcbiAgY29uc3QgeyBoLCBzLCBsIH0gPSBoc2xDb2xvcjtcblxuICBjb25zdCBodWVUb1JnYiA9IChwOiBudW1iZXIsIHE6IG51bWJlciwgdDogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICBpZiAodCA8IDApIHtcbiAgICAgIHQgKz0gMTtcbiAgICB9XG4gICAgaWYgKHQgPiAxKSB7XG4gICAgICB0IC09IDE7XG4gICAgfVxuICAgIGlmICh0IDwgMSAvIDYpIHtcbiAgICAgIHJldHVybiBwICsgKHEgLSBwKSAqIDYgKiB0O1xuICAgIH1cbiAgICBpZiAodCA8IDEgLyAyKSB7XG4gICAgICByZXR1cm4gcTtcbiAgICB9XG4gICAgaWYgKHQgPCAyIC8gMykge1xuICAgICAgcmV0dXJuIHAgKyAocSAtIHApICogKDIgLyAzIC0gdCkgKiA2O1xuICAgIH1cbiAgICByZXR1cm4gcDtcbiAgfTtcblxuICBjb25zdCBxID0gbCA8IDAuNSA/IGwgKiAoMSArIHMpIDogbCArIHMgLSBsICogcztcbiAgY29uc3QgcCA9IDIgKiBsIC0gcTtcblxuICBjb25zdCByID0gaHVlVG9SZ2IocCwgcSwgaCArIDEgLyAzKTtcbiAgY29uc3QgZyA9IGh1ZVRvUmdiKHAsIHEsIGgpO1xuICBjb25zdCBiID0gaHVlVG9SZ2IocCwgcSwgaCAtIDEgLyAzKTtcblxuICBjb25zdCByZ2JDb2xvciA9IChNYXRoLnJvdW5kKHIgKiAyNTUpIDw8IDE2KSB8IChNYXRoLnJvdW5kKGcgKiAyNTUpIDw8IDgpIHwgTWF0aC5yb3VuZChiICogMjU1KTtcblxuICByZXR1cm4gYCMke3JnYkNvbG9yLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg2LCAnMCcpfWA7XG59O1xuXG4vKipcbiAqIFJlc3RyaWN0cyB0aGUgdmFsdWUgdG8gYmUgd2l0aGluIHRoZSByYW5nZSBbMCwgMV0uXG4gKiBAcGFyYW0gdmFsdWVcbiAqL1xuY29uc3QgY2xhbXAgPSAodmFsdWU6IG51bWJlcik6IG51bWJlciA9PiBNYXRoLm1pbihNYXRoLm1heCh2YWx1ZSwgMCksIDEpO1xuIl19
|