@wizishop/angular-components 15.1.114 → 15.1.116
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/angular-components.scss +224 -3
- package/esm2020/lib/components/border-picker/border-picker.component.mjs +108 -0
- package/esm2020/lib/components/color-picker/color-picker.component.mjs +90 -0
- package/esm2020/lib/components/shared-components.module.mjs +17 -5
- package/esm2020/lib/components/tabs/tabs.component.mjs +7 -4
- package/esm2020/public-api.mjs +3 -1
- package/fesm2015/wizishop-angular-components.mjs +206 -8
- package/fesm2015/wizishop-angular-components.mjs.map +1 -1
- package/fesm2020/wizishop-angular-components.mjs +206 -8
- package/fesm2020/wizishop-angular-components.mjs.map +1 -1
- package/lib/components/border-picker/border-picker.component.d.ts +32 -0
- package/lib/components/color-picker/color-picker.component.d.ts +21 -0
- package/lib/components/shared-components.module.d.ts +30 -27
- package/lib/components/tabs/tabs.component.d.ts +2 -1
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/wizishop-angular-components-15.1.116.tgz +0 -0
- package/wizishop-angular-components-15.1.114.tgz +0 -0
package/angular-components.scss
CHANGED
|
@@ -140,7 +140,8 @@ $wac-token-dark: #E8BF09!default;
|
|
|
140
140
|
$wac-token-main: #1D2A3B!default;
|
|
141
141
|
$wac-token-disabled: #EFF2F4!default;
|
|
142
142
|
$wac-token-disabled-dark: #8A98B2!default;
|
|
143
|
-
|
|
143
|
+
|
|
144
|
+
$wac-tab-colunm-blue: #3ba6ec!default;.zindexToggle {
|
|
144
145
|
z-index: 9!important;
|
|
145
146
|
position: relative;
|
|
146
147
|
}
|
|
@@ -944,7 +945,157 @@ wac-block {
|
|
|
944
945
|
margin-right: 0;
|
|
945
946
|
}
|
|
946
947
|
}
|
|
947
|
-
.
|
|
948
|
+
.w-border-picker {
|
|
949
|
+
display: flex;
|
|
950
|
+
flex-direction: column;
|
|
951
|
+
|
|
952
|
+
.bp-label {
|
|
953
|
+
font-weight: 500;
|
|
954
|
+
}
|
|
955
|
+
|
|
956
|
+
.w-input {
|
|
957
|
+
width: 210px;
|
|
958
|
+
height: 40px;
|
|
959
|
+
display: flex;
|
|
960
|
+
align-items: center;
|
|
961
|
+
gap: 10px;
|
|
962
|
+
padding: 5px;
|
|
963
|
+
border: 1px solid #dee2ed;
|
|
964
|
+
border-radius: 3px;
|
|
965
|
+
position: relative;
|
|
966
|
+
|
|
967
|
+
.border-preview {
|
|
968
|
+
position: relative;
|
|
969
|
+
width: 30px;
|
|
970
|
+
height: 30px;
|
|
971
|
+
border: 2px solid #1d2a3b;
|
|
972
|
+
border-radius: 3px;
|
|
973
|
+
|
|
974
|
+
.mask1, .mask2 {
|
|
975
|
+
background: #fff;
|
|
976
|
+
position: absolute;
|
|
977
|
+
top: 50%;
|
|
978
|
+
left: 50%;
|
|
979
|
+
transform: translate(-50%, -50%);
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
.mask1 {
|
|
983
|
+
width: 30px;
|
|
984
|
+
height: 14px;
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
.mask2 {
|
|
988
|
+
width: 14px;
|
|
989
|
+
height: 30px;
|
|
990
|
+
}
|
|
991
|
+
}
|
|
992
|
+
|
|
993
|
+
.bp-input {
|
|
994
|
+
width: 70%;
|
|
995
|
+
height: 100%;
|
|
996
|
+
border: none;
|
|
997
|
+
font-size: 14px;
|
|
998
|
+
color: #1d2a3b;
|
|
999
|
+
font-weight: 400;
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
.slider-popup {
|
|
1003
|
+
display: flex;
|
|
1004
|
+
flex-direction: column;
|
|
1005
|
+
gap: 10px;
|
|
1006
|
+
position: absolute;
|
|
1007
|
+
top: 50px;
|
|
1008
|
+
left: 0;
|
|
1009
|
+
min-width: 270px;
|
|
1010
|
+
background: white;
|
|
1011
|
+
border: 1px solid #dee2ed;
|
|
1012
|
+
padding: 10px;
|
|
1013
|
+
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
|
|
1014
|
+
z-index: 10;
|
|
1015
|
+
display: flex;
|
|
1016
|
+
align-items: center;
|
|
1017
|
+
gap: 10px;
|
|
1018
|
+
|
|
1019
|
+
&::before {
|
|
1020
|
+
content: '';
|
|
1021
|
+
position: absolute;
|
|
1022
|
+
top: -20px;
|
|
1023
|
+
left: 8px;
|
|
1024
|
+
border: 10px solid transparent;
|
|
1025
|
+
border-bottom-color: #dee2ed;
|
|
1026
|
+
}
|
|
1027
|
+
|
|
1028
|
+
.slider {
|
|
1029
|
+
width: 100%;
|
|
1030
|
+
display: flex;
|
|
1031
|
+
align-items: center;
|
|
1032
|
+
gap: 10px;
|
|
1033
|
+
|
|
1034
|
+
input[type="range"] {
|
|
1035
|
+
-webkit-appearance: none;
|
|
1036
|
+
width: 100%;
|
|
1037
|
+
height: 8px;
|
|
1038
|
+
background: #dee2ed;
|
|
1039
|
+
border-radius: 5px;
|
|
1040
|
+
outline: none;
|
|
1041
|
+
opacity: 0.7;
|
|
1042
|
+
transition: opacity .2s;
|
|
1043
|
+
|
|
1044
|
+
&:hover {
|
|
1045
|
+
opacity: 1;
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1048
|
+
&::-webkit-slider-thumb {
|
|
1049
|
+
-webkit-appearance: none;
|
|
1050
|
+
appearance: none;
|
|
1051
|
+
width: 20px;
|
|
1052
|
+
height: 20px;
|
|
1053
|
+
background: #52aecd;
|
|
1054
|
+
cursor: pointer;
|
|
1055
|
+
border-radius: 50%;
|
|
1056
|
+
box-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1059
|
+
&::-moz-range-thumb {
|
|
1060
|
+
width: 20px;
|
|
1061
|
+
height: 20px;
|
|
1062
|
+
background: #52aecd;
|
|
1063
|
+
cursor: pointer;
|
|
1064
|
+
border-radius: 50%;
|
|
1065
|
+
box-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
|
|
1066
|
+
}
|
|
1067
|
+
}
|
|
1068
|
+
}
|
|
1069
|
+
|
|
1070
|
+
.preset-buttons {
|
|
1071
|
+
display: flex;
|
|
1072
|
+
gap: 10px;
|
|
1073
|
+
align-items: center;
|
|
1074
|
+
|
|
1075
|
+
button {
|
|
1076
|
+
border: 1px solid #dee2ed;
|
|
1077
|
+
background-color: #f5f5f5;
|
|
1078
|
+
color: #1d2a3b;
|
|
1079
|
+
font-size: 14px;
|
|
1080
|
+
border-radius: 12px;
|
|
1081
|
+
padding: 5px 15px;
|
|
1082
|
+
cursor: pointer;
|
|
1083
|
+
transition: background-color 0.3s, box-shadow 0.3s;
|
|
1084
|
+
|
|
1085
|
+
&:hover {
|
|
1086
|
+
background-color: #e0e0e0;
|
|
1087
|
+
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
&:active {
|
|
1091
|
+
background-color: #d0d0d0;
|
|
1092
|
+
box-shadow: inset 0 2px 5px rgba(0, 0, 0, 0.2);
|
|
1093
|
+
}
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
}
|
|
1097
|
+
}
|
|
1098
|
+
}.wac-breadcrumbs {
|
|
948
1099
|
width: 100%;
|
|
949
1100
|
display: flex;
|
|
950
1101
|
align-items: center;
|
|
@@ -3593,7 +3744,41 @@ wac-calendar {
|
|
|
3593
3744
|
}
|
|
3594
3745
|
}
|
|
3595
3746
|
}
|
|
3596
|
-
.
|
|
3747
|
+
.w-color-picker {
|
|
3748
|
+
display: flex;
|
|
3749
|
+
flex-direction: column;
|
|
3750
|
+
|
|
3751
|
+
.cp-label {
|
|
3752
|
+
font-weight: 500;
|
|
3753
|
+
}
|
|
3754
|
+
|
|
3755
|
+
.w-input {
|
|
3756
|
+
width: 210px;
|
|
3757
|
+
height: 40px;
|
|
3758
|
+
display: flex;
|
|
3759
|
+
align-items: center;
|
|
3760
|
+
gap: 10px;
|
|
3761
|
+
padding: 5px;
|
|
3762
|
+
border: 1px solid #dee2ed;
|
|
3763
|
+
border-radius: 3px;
|
|
3764
|
+
|
|
3765
|
+
.color-preview {
|
|
3766
|
+
width: 30px;
|
|
3767
|
+
height: 30px;
|
|
3768
|
+
border: 1px solid #dee2ed;
|
|
3769
|
+
border-radius: 3px;
|
|
3770
|
+
}
|
|
3771
|
+
|
|
3772
|
+
.cp-input {
|
|
3773
|
+
width: 70%;
|
|
3774
|
+
height: 100%;
|
|
3775
|
+
border: none;
|
|
3776
|
+
font-size: 14px;
|
|
3777
|
+
color: #1d2a3b;
|
|
3778
|
+
font-weight: 400;
|
|
3779
|
+
}
|
|
3780
|
+
}
|
|
3781
|
+
}.wac-confirm-delete {
|
|
3597
3782
|
position: absolute;
|
|
3598
3783
|
right: 0;
|
|
3599
3784
|
top: 0;
|
|
@@ -7413,6 +7598,42 @@ wac-optional-disable-container {
|
|
|
7413
7598
|
}
|
|
7414
7599
|
}
|
|
7415
7600
|
|
|
7601
|
+
&--column {
|
|
7602
|
+
.wac-tabs__wrapper {
|
|
7603
|
+
flex-direction: column;
|
|
7604
|
+
|
|
7605
|
+
&::before {
|
|
7606
|
+
position: absolute;
|
|
7607
|
+
content: "";
|
|
7608
|
+
width: 1px;
|
|
7609
|
+
height: 100%;
|
|
7610
|
+
top: 0;
|
|
7611
|
+
left: -15px;
|
|
7612
|
+
background-color: $wac-border-form;
|
|
7613
|
+
}
|
|
7614
|
+
|
|
7615
|
+
.wac-tabs__wrapper__tab {
|
|
7616
|
+
&::after {
|
|
7617
|
+
background-color: $wac-tab-colunm-blue;
|
|
7618
|
+
height: 0;
|
|
7619
|
+
width: 1px;
|
|
7620
|
+
left: -15px;
|
|
7621
|
+
top: 0;
|
|
7622
|
+
}
|
|
7623
|
+
|
|
7624
|
+
&--selected {
|
|
7625
|
+
color: $wac-tab-colunm-blue;
|
|
7626
|
+
font-weight: 400;
|
|
7627
|
+
|
|
7628
|
+
&::after {
|
|
7629
|
+
height: 100%;
|
|
7630
|
+
transition: height 0.3s ease-in-out;
|
|
7631
|
+
}
|
|
7632
|
+
}
|
|
7633
|
+
}
|
|
7634
|
+
}
|
|
7635
|
+
}
|
|
7636
|
+
|
|
7416
7637
|
wac-tab-body {
|
|
7417
7638
|
width: 100%;
|
|
7418
7639
|
max-width: 100%;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { CommonModule } from "@angular/common";
|
|
2
|
+
import { Component, EventEmitter, Input, Output, HostListener, forwardRef } from "@angular/core";
|
|
3
|
+
import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
export class BorderPickerComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.gap = '12px';
|
|
10
|
+
this.fontSize = '14px';
|
|
11
|
+
this.borderRadius = '0px';
|
|
12
|
+
this.firstBtnOption = 'Small';
|
|
13
|
+
this.secondBtnOption = 'Medium';
|
|
14
|
+
this.thirdBtnOption = 'Full';
|
|
15
|
+
this.disabled = false;
|
|
16
|
+
this.value = '';
|
|
17
|
+
this.blurred = new EventEmitter();
|
|
18
|
+
this.borderRadiusChange = new EventEmitter();
|
|
19
|
+
this.showSlider = false;
|
|
20
|
+
this.sliderValue = 0;
|
|
21
|
+
this.onChange = () => { };
|
|
22
|
+
this.onTouched = () => { };
|
|
23
|
+
}
|
|
24
|
+
writeValue(value) {
|
|
25
|
+
if (value !== undefined) {
|
|
26
|
+
this.value = value;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
registerOnChange(fn) {
|
|
30
|
+
this.onChange = fn;
|
|
31
|
+
}
|
|
32
|
+
registerOnTouched(fn) {
|
|
33
|
+
this.onTouched = fn;
|
|
34
|
+
}
|
|
35
|
+
setValue(event) {
|
|
36
|
+
this.value = event.target.value;
|
|
37
|
+
this.onChange(this.value);
|
|
38
|
+
this.borderRadiusChange.emit(this.value);
|
|
39
|
+
}
|
|
40
|
+
onFocusOut() {
|
|
41
|
+
}
|
|
42
|
+
openSlider() {
|
|
43
|
+
this.showSlider = true;
|
|
44
|
+
this.sliderValue = parseInt(this.value.replace('px', ''), 10) || 0;
|
|
45
|
+
}
|
|
46
|
+
updateBorderRadius(value) {
|
|
47
|
+
this.value = value + 'px';
|
|
48
|
+
this.onChange(this.value); // Notifie Angular du changement
|
|
49
|
+
this.borderRadiusChange.emit(this.value);
|
|
50
|
+
}
|
|
51
|
+
setBorderRadius(value) {
|
|
52
|
+
this.sliderValue = value;
|
|
53
|
+
this.updateBorderRadius(value);
|
|
54
|
+
}
|
|
55
|
+
onClickOutside(event) {
|
|
56
|
+
const target = event.target;
|
|
57
|
+
if (!target.closest('.w-input')) {
|
|
58
|
+
this.showSlider = false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
BorderPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BorderPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
63
|
+
BorderPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: BorderPickerComponent, isStandalone: true, selector: "wac-border-picker", inputs: { label: "label", gap: "gap", fontSize: "fontSize", borderRadius: "borderRadius", firstBtnOption: "firstBtnOption", secondBtnOption: "secondBtnOption", thirdBtnOption: "thirdBtnOption", disabled: "disabled", value: "value" }, outputs: { blurred: "blurred", borderRadiusChange: "borderRadiusChange" }, host: { listeners: { "document:click": "onClickOutside($event)" } }, providers: [
|
|
64
|
+
{
|
|
65
|
+
provide: NG_VALUE_ACCESSOR,
|
|
66
|
+
useExisting: forwardRef(() => BorderPickerComponent),
|
|
67
|
+
multi: true
|
|
68
|
+
}
|
|
69
|
+
], ngImport: i0, template: "<div class=\"w-border-picker\" [ngStyle]=\"{'gap': gap}\">\r\n\r\n <label class=\"bp-label\" for=\"borderPicker\" [ngStyle]=\"{'font-size': fontSize}\">{{ label }}</label>\r\n\r\n <div class=\"w-input\">\r\n\r\n <div class=\"border-preview\" [ngStyle]=\"{'border-radius': value}\">\r\n <div class=\"mask1\"></div>\r\n <div class=\"mask2\"></div>\r\n </div>\r\n\r\n <input\r\n class=\"bp-input\"\r\n id=\"borderPicker\"\r\n placeholder=\"8px\"\r\n maxlength=\"5\"\r\n [(ngModel)]=\"value\"\r\n (focus)=\"openSlider()\"\r\n (ngModelChange)=\"onChange($event)\"\r\n [disabled]=\"disabled\"\r\n (focusout)=\"onFocusOut()\"\r\n (input)=\"setValue($event)\"\r\n />\r\n\r\n <div class=\"slider-popup\" *ngIf=\"showSlider\">\r\n\r\n <div class=\"slider\">\r\n <input\r\n type=\"range\"\r\n min=\"0\"\r\n max=\"100\"\r\n [(ngModel)]=\"sliderValue\"\r\n (ngModelChange)=\"updateBorderRadius($event)\"\r\n />\r\n <span>{{ sliderValue }}px</span>\r\n </div>\r\n\r\n <div class=\"preset-buttons\">\r\n <button (click)=\"setBorderRadius(4)\">{{ firstBtnOption }}</button>\r\n <button (click)=\"setBorderRadius(8)\">{{ secondBtnOption }}</button>\r\n <button (click)=\"setBorderRadius(100)\">{{ thirdBtnOption }}</button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n</div>\r\n", styles: [".w-border-picker{display:flex;flex-direction:column}.w-border-picker .bp-label{font-weight:500}.w-border-picker .w-input{width:210px;height:40px;display:flex;align-items:center;gap:10px;padding:5px;border:1px solid #dee2ed;border-radius:3px;position:relative}.w-border-picker .w-input .border-preview{position:relative;width:30px;height:30px;border:2px solid #1d2a3b;border-radius:3px}.w-border-picker .w-input .border-preview .mask1,.w-border-picker .w-input .border-preview .mask2{background:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.w-border-picker .w-input .border-preview .mask1{width:30px;height:14px}.w-border-picker .w-input .border-preview .mask2{width:14px;height:30px}.w-border-picker .w-input .bp-input{width:70%;height:100%;border:none;font-size:14px;color:#1d2a3b;font-weight:400}.w-border-picker .w-input .slider-popup{flex-direction:column;position:absolute;top:50px;left:0;min-width:270px;background:white;border:1px solid #dee2ed;padding:10px;box-shadow:0 2px 10px #0000001a;z-index:10;display:flex;align-items:center;gap:10px}.w-border-picker .w-input .slider-popup:before{content:\"\";position:absolute;top:-20px;left:8px;border:10px solid transparent;border-bottom-color:#dee2ed}.w-border-picker .w-input .slider-popup .slider{width:100%;display:flex;align-items:center;gap:10px}.w-border-picker .w-input .slider-popup .slider input[type=range]{-webkit-appearance:none;width:100%;height:8px;background:#dee2ed;border-radius:5px;outline:none;opacity:.7;transition:opacity .2s}.w-border-picker .w-input .slider-popup .slider input[type=range]:hover{opacity:1}.w-border-picker .w-input .slider-popup .slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;background:#52aecd;cursor:pointer;border-radius:50%;box-shadow:0 0 2px #00000080}.w-border-picker .w-input .slider-popup .slider input[type=range]::-moz-range-thumb{width:20px;height:20px;background:#52aecd;cursor:pointer;border-radius:50%;box-shadow:0 0 2px #00000080}.w-border-picker .w-input .slider-popup .preset-buttons{display:flex;gap:10px;align-items:center}.w-border-picker .w-input .slider-popup .preset-buttons button{border:1px solid #dee2ed;background-color:#f5f5f5;color:#1d2a3b;font-size:14px;border-radius:12px;padding:5px 15px;cursor:pointer;transition:background-color .3s,box-shadow .3s}.w-border-picker .w-input .slider-popup .preset-buttons button:hover{background-color:#e0e0e0;box-shadow:0 2px 5px #0000001a}.w-border-picker .w-input .slider-popup .preset-buttons button:active{background-color:#d0d0d0;box-shadow:inset 0 2px 5px #0003}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BorderPickerComponent, decorators: [{
|
|
71
|
+
type: Component,
|
|
72
|
+
args: [{ selector: "wac-border-picker", standalone: true, imports: [
|
|
73
|
+
CommonModule,
|
|
74
|
+
FormsModule,
|
|
75
|
+
], providers: [
|
|
76
|
+
{
|
|
77
|
+
provide: NG_VALUE_ACCESSOR,
|
|
78
|
+
useExisting: forwardRef(() => BorderPickerComponent),
|
|
79
|
+
multi: true
|
|
80
|
+
}
|
|
81
|
+
], template: "<div class=\"w-border-picker\" [ngStyle]=\"{'gap': gap}\">\r\n\r\n <label class=\"bp-label\" for=\"borderPicker\" [ngStyle]=\"{'font-size': fontSize}\">{{ label }}</label>\r\n\r\n <div class=\"w-input\">\r\n\r\n <div class=\"border-preview\" [ngStyle]=\"{'border-radius': value}\">\r\n <div class=\"mask1\"></div>\r\n <div class=\"mask2\"></div>\r\n </div>\r\n\r\n <input\r\n class=\"bp-input\"\r\n id=\"borderPicker\"\r\n placeholder=\"8px\"\r\n maxlength=\"5\"\r\n [(ngModel)]=\"value\"\r\n (focus)=\"openSlider()\"\r\n (ngModelChange)=\"onChange($event)\"\r\n [disabled]=\"disabled\"\r\n (focusout)=\"onFocusOut()\"\r\n (input)=\"setValue($event)\"\r\n />\r\n\r\n <div class=\"slider-popup\" *ngIf=\"showSlider\">\r\n\r\n <div class=\"slider\">\r\n <input\r\n type=\"range\"\r\n min=\"0\"\r\n max=\"100\"\r\n [(ngModel)]=\"sliderValue\"\r\n (ngModelChange)=\"updateBorderRadius($event)\"\r\n />\r\n <span>{{ sliderValue }}px</span>\r\n </div>\r\n\r\n <div class=\"preset-buttons\">\r\n <button (click)=\"setBorderRadius(4)\">{{ firstBtnOption }}</button>\r\n <button (click)=\"setBorderRadius(8)\">{{ secondBtnOption }}</button>\r\n <button (click)=\"setBorderRadius(100)\">{{ thirdBtnOption }}</button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n</div>\r\n", styles: [".w-border-picker{display:flex;flex-direction:column}.w-border-picker .bp-label{font-weight:500}.w-border-picker .w-input{width:210px;height:40px;display:flex;align-items:center;gap:10px;padding:5px;border:1px solid #dee2ed;border-radius:3px;position:relative}.w-border-picker .w-input .border-preview{position:relative;width:30px;height:30px;border:2px solid #1d2a3b;border-radius:3px}.w-border-picker .w-input .border-preview .mask1,.w-border-picker .w-input .border-preview .mask2{background:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.w-border-picker .w-input .border-preview .mask1{width:30px;height:14px}.w-border-picker .w-input .border-preview .mask2{width:14px;height:30px}.w-border-picker .w-input .bp-input{width:70%;height:100%;border:none;font-size:14px;color:#1d2a3b;font-weight:400}.w-border-picker .w-input .slider-popup{flex-direction:column;position:absolute;top:50px;left:0;min-width:270px;background:white;border:1px solid #dee2ed;padding:10px;box-shadow:0 2px 10px #0000001a;z-index:10;display:flex;align-items:center;gap:10px}.w-border-picker .w-input .slider-popup:before{content:\"\";position:absolute;top:-20px;left:8px;border:10px solid transparent;border-bottom-color:#dee2ed}.w-border-picker .w-input .slider-popup .slider{width:100%;display:flex;align-items:center;gap:10px}.w-border-picker .w-input .slider-popup .slider input[type=range]{-webkit-appearance:none;width:100%;height:8px;background:#dee2ed;border-radius:5px;outline:none;opacity:.7;transition:opacity .2s}.w-border-picker .w-input .slider-popup .slider input[type=range]:hover{opacity:1}.w-border-picker .w-input .slider-popup .slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;background:#52aecd;cursor:pointer;border-radius:50%;box-shadow:0 0 2px #00000080}.w-border-picker .w-input .slider-popup .slider input[type=range]::-moz-range-thumb{width:20px;height:20px;background:#52aecd;cursor:pointer;border-radius:50%;box-shadow:0 0 2px #00000080}.w-border-picker .w-input .slider-popup .preset-buttons{display:flex;gap:10px;align-items:center}.w-border-picker .w-input .slider-popup .preset-buttons button{border:1px solid #dee2ed;background-color:#f5f5f5;color:#1d2a3b;font-size:14px;border-radius:12px;padding:5px 15px;cursor:pointer;transition:background-color .3s,box-shadow .3s}.w-border-picker .w-input .slider-popup .preset-buttons button:hover{background-color:#e0e0e0;box-shadow:0 2px 5px #0000001a}.w-border-picker .w-input .slider-popup .preset-buttons button:active{background-color:#d0d0d0;box-shadow:inset 0 2px 5px #0003}\n"] }]
|
|
82
|
+
}], ctorParameters: function () { return []; }, propDecorators: { label: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], gap: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], fontSize: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], borderRadius: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], firstBtnOption: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], secondBtnOption: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], thirdBtnOption: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}], disabled: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}], value: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}], blurred: [{
|
|
101
|
+
type: Output
|
|
102
|
+
}], borderRadiusChange: [{
|
|
103
|
+
type: Output
|
|
104
|
+
}], onClickOutside: [{
|
|
105
|
+
type: HostListener,
|
|
106
|
+
args: ['document:click', ['$event']]
|
|
107
|
+
}] } });
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9yZGVyLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JvcmRlci1waWNrZXIvYm9yZGVyLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JvcmRlci1waWNrZXIvYm9yZGVyLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTBCLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBb0J0RixNQUFNLE9BQU8scUJBQXFCO0lBaUJoQztRQWZTLFFBQUcsR0FBVyxNQUFNLENBQUM7UUFDckIsYUFBUSxHQUFXLE1BQU0sQ0FBQztRQUMxQixpQkFBWSxHQUFXLEtBQUssQ0FBQztRQUM3QixtQkFBYyxHQUFXLE9BQU8sQ0FBQztRQUNqQyxvQkFBZSxHQUFXLFFBQVEsQ0FBQztRQUNuQyxtQkFBYyxHQUFXLE1BQU0sQ0FBQztRQUNoQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFFbEIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbkMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUUxRCxlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBSXhCLGFBQVEsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDekIsY0FBUyxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUhYLENBQUM7SUFLaEIsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUdELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUdELFVBQVU7SUFDVixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsZ0NBQWdDO1FBQzNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYTtRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUdELGNBQWMsQ0FBQyxLQUFZO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFxQixDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQzs7a0hBckVVLHFCQUFxQjtzR0FBckIscUJBQXFCLDBiQVRyQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDO1lBQ3BELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRiwwQkNuQkgsMjZDQStDQSxxbkZEckNJLFlBQVksdU5BQ1osV0FBVzsyRkFXRixxQkFBcUI7a0JBbEJqQyxTQUFTOytCQUNFLG1CQUFtQixjQUdqQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3FCQUNaLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUM7NEJBQ3BELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzBFQUlRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQW9EUCxjQUFjO3NCQURiLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIEhvc3RMaXN0ZW5lciwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgZm9yd2FyZFJlZn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQgKHtcclxuICBzZWxlY3RvcjogXCJ3YWMtYm9yZGVyLXBpY2tlclwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vYm9yZGVyLXBpY2tlci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9ib3JkZXItcGlja2VyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJvcmRlclBpY2tlckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEJvcmRlclBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGdhcDogc3RyaW5nID0gJzEycHgnO1xyXG4gIEBJbnB1dCgpIGZvbnRTaXplOiBzdHJpbmcgPSAnMTRweCc7XHJcbiAgQElucHV0KCkgYm9yZGVyUmFkaXVzOiBzdHJpbmcgPSAnMHB4JztcclxuICBASW5wdXQoKSBmaXJzdEJ0bk9wdGlvbjogc3RyaW5nID0gJ1NtYWxsJztcclxuICBASW5wdXQoKSBzZWNvbmRCdG5PcHRpb246IHN0cmluZyA9ICdNZWRpdW0nO1xyXG4gIEBJbnB1dCgpIHRoaXJkQnRuT3B0aW9uOiBzdHJpbmcgPSAnRnVsbCc7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBPdXRwdXQoKSBibHVycmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBib3JkZXJSYWRpdXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgc2hvd1NsaWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNsaWRlclZhbHVlOiBudW1iZXIgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcclxuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXRWYWx1ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMuYm9yZGVyUmFkaXVzQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25Gb2N1c091dCgpIHtcclxuICB9XHJcblxyXG4gIG9wZW5TbGlkZXIoKSB7XHJcbiAgICB0aGlzLnNob3dTbGlkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5zbGlkZXJWYWx1ZSA9IHBhcnNlSW50KHRoaXMudmFsdWUucmVwbGFjZSgncHgnLCAnJyksIDEwKSB8fCAwO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQm9yZGVyUmFkaXVzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSArICdweCc7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpOyAvLyBOb3RpZmllIEFuZ3VsYXIgZHUgY2hhbmdlbWVudFxyXG4gICAgdGhpcy5ib3JkZXJSYWRpdXNDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHNldEJvcmRlclJhZGl1cyh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnNsaWRlclZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLnVwZGF0ZUJvcmRlclJhZGl1cyh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25DbGlja091dHNpZGUoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcudy1pbnB1dCcpKSB7XHJcbiAgICAgIHRoaXMuc2hvd1NsaWRlciA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidy1ib3JkZXItcGlja2VyXCIgW25nU3R5bGVdPVwieydnYXAnOiBnYXB9XCI+XHJcblxyXG4gIDxsYWJlbCBjbGFzcz1cImJwLWxhYmVsXCIgZm9yPVwiYm9yZGVyUGlja2VyXCIgW25nU3R5bGVdPVwieydmb250LXNpemUnOiBmb250U2l6ZX1cIj57eyBsYWJlbCB9fTwvbGFiZWw+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ3LWlucHV0XCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImJvcmRlci1wcmV2aWV3XCIgW25nU3R5bGVdPVwieydib3JkZXItcmFkaXVzJzogdmFsdWV9XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYXNrMVwiPjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWFzazJcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxpbnB1dFxyXG4gICAgICBjbGFzcz1cImJwLWlucHV0XCJcclxuICAgICAgaWQ9XCJib3JkZXJQaWNrZXJcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cIjhweFwiXHJcbiAgICAgIG1heGxlbmd0aD1cIjVcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgKGZvY3VzKT1cIm9wZW5TbGlkZXIoKVwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgpXCJcclxuICAgICAgKGlucHV0KT1cInNldFZhbHVlKCRldmVudClcIlxyXG4gICAgLz5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic2xpZGVyLXBvcHVwXCIgKm5nSWY9XCJzaG93U2xpZGVyXCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwicmFuZ2VcIlxyXG4gICAgICAgICAgbWluPVwiMFwiXHJcbiAgICAgICAgICBtYXg9XCIxMDBcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzbGlkZXJWYWx1ZVwiXHJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVCb3JkZXJSYWRpdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8c3Bhbj57eyBzbGlkZXJWYWx1ZSB9fXB4PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwcmVzZXQtYnV0dG9uc1wiPlxyXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNldEJvcmRlclJhZGl1cyg0KVwiPnt7IGZpcnN0QnRuT3B0aW9uIH19PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2V0Qm9yZGVyUmFkaXVzKDgpXCI+e3sgc2Vjb25kQnRuT3B0aW9uIH19PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2V0Qm9yZGVyUmFkaXVzKDEwMClcIj57eyB0aGlyZEJ0bk9wdGlvbiB9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { CommonModule } from "@angular/common";
|
|
2
|
+
import { Component, EventEmitter, forwardRef, Input, Output } from "@angular/core";
|
|
3
|
+
import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import { ColorPickerModule } from "ngx-color-picker";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "@angular/forms";
|
|
8
|
+
import * as i3 from "ngx-color-picker";
|
|
9
|
+
export class ColorPickerComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.value = '';
|
|
12
|
+
this.gap = '12px';
|
|
13
|
+
this.fontSize = '14px';
|
|
14
|
+
this.colorChange = new EventEmitter();
|
|
15
|
+
this.onChange = () => { };
|
|
16
|
+
this.onTouched = () => { };
|
|
17
|
+
}
|
|
18
|
+
writeValue(value) {
|
|
19
|
+
if (value !== undefined) {
|
|
20
|
+
this.value = value;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
registerOnChange(fn) {
|
|
24
|
+
this.onChange = fn;
|
|
25
|
+
}
|
|
26
|
+
registerOnTouched(fn) {
|
|
27
|
+
this.onTouched = fn;
|
|
28
|
+
}
|
|
29
|
+
setValue(event) {
|
|
30
|
+
this.value = event.target.value;
|
|
31
|
+
this.onChange(this.value);
|
|
32
|
+
this.colorChange.emit(this.value);
|
|
33
|
+
}
|
|
34
|
+
changeColor(color) {
|
|
35
|
+
// Remove any non-hexadecimal characters
|
|
36
|
+
color = color.replace(/[^a-fA-F0-9]/g, '');
|
|
37
|
+
// Add '#' if not present
|
|
38
|
+
if (!color.startsWith('#')) {
|
|
39
|
+
color = '#' + color;
|
|
40
|
+
}
|
|
41
|
+
// Validate and update color
|
|
42
|
+
if (this.isValidColor(color)) {
|
|
43
|
+
this.value = color;
|
|
44
|
+
this.onChange(this.value); // 🔥 AJOUT de cette ligne pour informer Angular du changement
|
|
45
|
+
this.colorChange.emit(this.value);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
// If invalid, reset to previous valid color
|
|
49
|
+
this.colorChange.emit(this.value);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
isValidColor(color) {
|
|
53
|
+
const s = new Option().style;
|
|
54
|
+
s.color = color;
|
|
55
|
+
return s.color !== '';
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
ColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: ColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
59
|
+
ColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: ColorPickerComponent, isStandalone: true, selector: "wac-color-picker", inputs: { label: "label", value: "value", gap: "gap", fontSize: "fontSize" }, outputs: { colorChange: "colorChange" }, providers: [
|
|
60
|
+
{
|
|
61
|
+
provide: NG_VALUE_ACCESSOR,
|
|
62
|
+
useExisting: forwardRef(() => ColorPickerComponent),
|
|
63
|
+
multi: true
|
|
64
|
+
}
|
|
65
|
+
], ngImport: i0, template: "<div class=\"w-color-picker\" [ngStyle]=\"{'gap': gap}\">\r\n\r\n <label class=\"cp-label\" for=\"colorPicker\" [ngStyle]=\"{'font-size': fontSize}\">{{ label }}</label>\r\n\r\n <div class=\"w-input\">\r\n\r\n <div\r\n class=\"color-preview\"\r\n [colorPicker]=\"value\"\r\n (click)=\"colorPickerInput.openDialog()\"\r\n [ngStyle]=\"{'background-color': value}\"\r\n [cpPosition]=\"'bottom'\"\r\n [cpPositionOffset]=\"'-35'\"\r\n ></div>\r\n\r\n <input\r\n class=\"cp-input\"\r\n id=\"colorPicker\"\r\n #colorPickerInput=\"ngxColorPicker\"\r\n maxlength=\"7\"\r\n placeholder=\"#000000\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"changeColor($event)\"\r\n [colorPicker]=\"value\"\r\n (colorPickerChange)=\"changeColor($event)\"\r\n [cpPosition]=\"'bottom'\"\r\n [cpPositionOffset]=\"'-35'\"\r\n (input)=\"setValue($event)\"\r\n />\r\n\r\n </div>\r\n\r\n</div>\r\n", styles: [".w-color-picker{display:flex;flex-direction:column}.w-color-picker .cp-label{font-weight:500}.w-color-picker .w-input{width:210px;height:40px;display:flex;align-items:center;gap:10px;padding:5px;border:1px solid #dee2ed;border-radius:3px}.w-color-picker .w-input .color-preview{width:30px;height:30px;border:1px solid #dee2ed;border-radius:3px}.w-color-picker .w-input .cp-input{width:70%;height:100%;border:none;font-size:14px;color:#1d2a3b;font-weight:400}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ColorPickerModule }, { kind: "directive", type: i3.ColorPickerDirective, selector: "[colorPicker]", inputs: ["colorPicker", "cpWidth", "cpHeight", "cpToggle", "cpDisabled", "cpIgnoredElements", "cpFallbackColor", "cpColorMode", "cpCmykEnabled", "cpOutputFormat", "cpAlphaChannel", "cpDisableInput", "cpDialogDisplay", "cpSaveClickOutside", "cpCloseClickOutside", "cpUseRootViewContainer", "cpPosition", "cpPositionOffset", "cpPositionRelativeToArrow", "cpOKButton", "cpOKButtonText", "cpOKButtonClass", "cpCancelButton", "cpCancelButtonText", "cpCancelButtonClass", "cpEyeDropper", "cpPresetLabel", "cpPresetColors", "cpPresetColorsClass", "cpMaxPresetColorsLength", "cpPresetEmptyMessage", "cpPresetEmptyMessageClass", "cpAddColorButton", "cpAddColorButtonText", "cpAddColorButtonClass", "cpRemoveColorButtonClass", "cpArrowPosition", "cpExtraTemplate"], outputs: ["cpInputChange", "cpToggleChange", "cpSliderChange", "cpSliderDragEnd", "cpSliderDragStart", "colorPickerOpen", "colorPickerClose", "colorPickerCancel", "colorPickerSelect", "colorPickerChange", "cpCmykColorChange", "cpPresetColorsChange"], exportAs: ["ngxColorPicker"] }] });
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: ColorPickerComponent, decorators: [{
|
|
67
|
+
type: Component,
|
|
68
|
+
args: [{ selector: "wac-color-picker", standalone: true, imports: [
|
|
69
|
+
CommonModule,
|
|
70
|
+
FormsModule,
|
|
71
|
+
ColorPickerModule
|
|
72
|
+
], providers: [
|
|
73
|
+
{
|
|
74
|
+
provide: NG_VALUE_ACCESSOR,
|
|
75
|
+
useExisting: forwardRef(() => ColorPickerComponent),
|
|
76
|
+
multi: true
|
|
77
|
+
}
|
|
78
|
+
], template: "<div class=\"w-color-picker\" [ngStyle]=\"{'gap': gap}\">\r\n\r\n <label class=\"cp-label\" for=\"colorPicker\" [ngStyle]=\"{'font-size': fontSize}\">{{ label }}</label>\r\n\r\n <div class=\"w-input\">\r\n\r\n <div\r\n class=\"color-preview\"\r\n [colorPicker]=\"value\"\r\n (click)=\"colorPickerInput.openDialog()\"\r\n [ngStyle]=\"{'background-color': value}\"\r\n [cpPosition]=\"'bottom'\"\r\n [cpPositionOffset]=\"'-35'\"\r\n ></div>\r\n\r\n <input\r\n class=\"cp-input\"\r\n id=\"colorPicker\"\r\n #colorPickerInput=\"ngxColorPicker\"\r\n maxlength=\"7\"\r\n placeholder=\"#000000\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"changeColor($event)\"\r\n [colorPicker]=\"value\"\r\n (colorPickerChange)=\"changeColor($event)\"\r\n [cpPosition]=\"'bottom'\"\r\n [cpPositionOffset]=\"'-35'\"\r\n (input)=\"setValue($event)\"\r\n />\r\n\r\n </div>\r\n\r\n</div>\r\n", styles: [".w-color-picker{display:flex;flex-direction:column}.w-color-picker .cp-label{font-weight:500}.w-color-picker .w-input{width:210px;height:40px;display:flex;align-items:center;gap:10px;padding:5px;border:1px solid #dee2ed;border-radius:3px}.w-color-picker .w-input .color-preview{width:30px;height:30px;border:1px solid #dee2ed;border-radius:3px}.w-color-picker .w-input .cp-input{width:70%;height:100%;border:none;font-size:14px;color:#1d2a3b;font-weight:400}\n"] }]
|
|
79
|
+
}], ctorParameters: function () { return []; }, propDecorators: { label: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], value: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}], gap: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}], fontSize: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], colorChange: [{
|
|
88
|
+
type: Output
|
|
89
|
+
}] } });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY29sb3ItcGlja2VyL2NvbG9yLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9jb2xvci1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBdUIsV0FBVyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7O0FBcUJyRCxNQUFNLE9BQU8sb0JBQW9CO0lBTy9CO1FBTFMsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixRQUFHLEdBQVcsTUFBTSxDQUFDO1FBQ3JCLGFBQVEsR0FBVyxNQUFNLENBQUM7UUFDekIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBSW5ELGFBQVEsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDekIsY0FBUyxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUhYLENBQUM7SUFLaEIsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUdELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2Qix3Q0FBd0M7UUFDeEMsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTNDLHlCQUF5QjtRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxQixLQUFLLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQztTQUNyQjtRQUVELDRCQUE0QjtRQUM1QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyw4REFBOEQ7WUFDekYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ25DO2FBQU07WUFDTCw0Q0FBNEM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUdELFlBQVksQ0FBQyxLQUFhO1FBQ3hCLE1BQU0sQ0FBQyxHQUFHLElBQUksTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7aUhBMURVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLHNMQVRwQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO1lBQ25ELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRiwwQkNyQkgsZzlCQWlDQSxxZ0JEdEJJLFlBQVksbUhBQ1osV0FBVyxpeEJBQ1gsaUJBQWlCOzJGQVdSLG9CQUFvQjtrQkFuQmhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBR2hCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsaUJBQWlCO3FCQUNsQixhQUNVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjswRUFJUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPdXRwdXR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb2xvclBpY2tlck1vZHVsZSB9IGZyb20gXCJuZ3gtY29sb3ItcGlja2VyXCI7XHJcblxyXG5AQ29tcG9uZW50ICh7XHJcbiAgc2VsZWN0b3I6IFwid2FjLWNvbG9yLXBpY2tlclwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vY29sb3ItcGlja2VyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2NvbG9yLXBpY2tlci5jb21wb25lbnQuc2Nzc1wiXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29sb3JQaWNrZXJNb2R1bGVcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ29sb3JQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBDb2xvclBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBnYXA6IHN0cmluZyA9ICcxMnB4JztcclxuICBASW5wdXQoKSBmb250U2l6ZTogc3RyaW5nID0gJzE0cHgnO1xyXG4gIEBPdXRwdXQoKSBjb2xvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcclxuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXRWYWx1ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMuY29sb3JDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZUNvbG9yKGNvbG9yOiBzdHJpbmcpIHtcclxuICAgIC8vIFJlbW92ZSBhbnkgbm9uLWhleGFkZWNpbWFsIGNoYXJhY3RlcnNcclxuICAgIGNvbG9yID0gY29sb3IucmVwbGFjZSgvW15hLWZBLUYwLTldL2csICcnKTtcclxuXHJcbiAgICAvLyBBZGQgJyMnIGlmIG5vdCBwcmVzZW50XHJcbiAgICBpZiAoIWNvbG9yLnN0YXJ0c1dpdGgoJyMnKSkge1xyXG4gICAgICBjb2xvciA9ICcjJyArIGNvbG9yO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFZhbGlkYXRlIGFuZCB1cGRhdGUgY29sb3JcclxuICAgIGlmICh0aGlzLmlzVmFsaWRDb2xvcihjb2xvcikpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IGNvbG9yO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpOyAvLyDwn5SlIEFKT1VUIGRlIGNldHRlIGxpZ25lIHBvdXIgaW5mb3JtZXIgQW5ndWxhciBkdSBjaGFuZ2VtZW50XHJcbiAgICAgIHRoaXMuY29sb3JDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIElmIGludmFsaWQsIHJlc2V0IHRvIHByZXZpb3VzIHZhbGlkIGNvbG9yXHJcbiAgICAgIHRoaXMuY29sb3JDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBpc1ZhbGlkQ29sb3IoY29sb3I6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcyA9IG5ldyBPcHRpb24oKS5zdHlsZTtcclxuICAgIHMuY29sb3IgPSBjb2xvcjtcclxuICAgIHJldHVybiBzLmNvbG9yICE9PSAnJztcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInctY29sb3ItcGlja2VyXCIgW25nU3R5bGVdPVwieydnYXAnOiBnYXB9XCI+XHJcblxyXG4gIDxsYWJlbCBjbGFzcz1cImNwLWxhYmVsXCIgZm9yPVwiY29sb3JQaWNrZXJcIiBbbmdTdHlsZV09XCJ7J2ZvbnQtc2l6ZSc6IGZvbnRTaXplfVwiPnt7IGxhYmVsIH19PC9sYWJlbD5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInctaW5wdXRcIj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiY29sb3ItcHJldmlld1wiXHJcbiAgICAgIFtjb2xvclBpY2tlcl09XCJ2YWx1ZVwiXHJcbiAgICAgIChjbGljayk9XCJjb2xvclBpY2tlcklucHV0Lm9wZW5EaWFsb2coKVwiXHJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6IHZhbHVlfVwiXHJcbiAgICAgIFtjcFBvc2l0aW9uXT1cIidib3R0b20nXCJcclxuICAgICAgW2NwUG9zaXRpb25PZmZzZXRdPVwiJy0zNSdcIlxyXG4gICAgPjwvZGl2PlxyXG5cclxuICAgIDxpbnB1dFxyXG4gICAgICBjbGFzcz1cImNwLWlucHV0XCJcclxuICAgICAgaWQ9XCJjb2xvclBpY2tlclwiXHJcbiAgICAgICNjb2xvclBpY2tlcklucHV0PVwibmd4Q29sb3JQaWNrZXJcIlxyXG4gICAgICBtYXhsZW5ndGg9XCI3XCJcclxuICAgICAgcGxhY2Vob2xkZXI9XCIjMDAwMDAwXCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUNvbG9yKCRldmVudClcIlxyXG4gICAgICBbY29sb3JQaWNrZXJdPVwidmFsdWVcIlxyXG4gICAgICAoY29sb3JQaWNrZXJDaGFuZ2UpPVwiY2hhbmdlQ29sb3IoJGV2ZW50KVwiXHJcbiAgICAgIFtjcFBvc2l0aW9uXT1cIidib3R0b20nXCJcclxuICAgICAgW2NwUG9zaXRpb25PZmZzZXRdPVwiJy0zNSdcIlxyXG4gICAgICAoaW5wdXQpPVwic2V0VmFsdWUoJGV2ZW50KVwiXHJcbiAgICAvPlxyXG5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
|