@libs-ui/components-radio-group 0.1.1-1
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/README.md +3 -0
- package/esm2022/group.component.mjs +128 -0
- package/esm2022/index.mjs +3 -0
- package/esm2022/interfaces/function-control.interface.mjs +2 -0
- package/esm2022/interfaces/group.interface.mjs +2 -0
- package/esm2022/interfaces/index.mjs +3 -0
- package/esm2022/libs-ui-components-radio-group.mjs +5 -0
- package/fesm2022/libs-ui-components-radio-group.mjs +135 -0
- package/fesm2022/libs-ui-components-radio-group.mjs.map +1 -0
- package/group.component.d.ts +46 -0
- package/index.d.ts +2 -0
- package/interfaces/function-control.interface.d.ts +5 -0
- package/interfaces/group.interface.d.ts +10 -0
- package/interfaces/index.d.ts +2 -0
- package/package.json +31 -0
package/README.md
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
3
|
+
import { ChangeDetectionStrategy, Component, effect, input, model, output, signal, untracked } from '@angular/core';
|
|
4
|
+
import { LibsUiComponentsLabelComponent } from '@libs-ui/components-label';
|
|
5
|
+
import { LibsUiComponentsRadioSingleComponent } from '@libs-ui/components-radio-single';
|
|
6
|
+
import { ERROR_MESSAGE_EMPTY_VALID, isNil } from '@libs-ui/utils';
|
|
7
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@ngx-translate/core";
|
|
10
|
+
export class LibsUiComponentsRadioGroupComponent {
|
|
11
|
+
// #region PROPERTY
|
|
12
|
+
ERROR_MESSAGE_EMPTY_VALID = ERROR_MESSAGE_EMPTY_VALID;
|
|
13
|
+
isErrorRequired = signal(false);
|
|
14
|
+
// #region INPUT
|
|
15
|
+
fieldKey = input('key', { transform: (value) => value || 'key' });
|
|
16
|
+
keyActive = input();
|
|
17
|
+
keysDisable = input();
|
|
18
|
+
groups = model([]);
|
|
19
|
+
disable = input(false, { transform: (value) => value ?? false });
|
|
20
|
+
clickExactly = input(true, { transform: (value) => value ?? true });
|
|
21
|
+
horizontal = input(false, { transform: (value) => value ?? false });
|
|
22
|
+
labelConfig = input();
|
|
23
|
+
validRequired = input();
|
|
24
|
+
ignoreClassMarginLastItem = input(false);
|
|
25
|
+
typeRadio = input('normal', { transform: (value) => value ?? 'normal' });
|
|
26
|
+
classInclude = input('', { transform: (value) => value ?? '' });
|
|
27
|
+
classLabelInclude = input('', { transform: (value) => value ?? '' });
|
|
28
|
+
classItemInclude = input('py-[4px]', { transform: (value) => value ?? 'py-[4px]' });
|
|
29
|
+
alwaysShowSubText = input();
|
|
30
|
+
horizontalClassInclude = input('', { transform: (value) => value ?? '' });
|
|
31
|
+
// #region OUTPUT
|
|
32
|
+
outClickButton = output();
|
|
33
|
+
outChange = output();
|
|
34
|
+
outFunctionsControl = output();
|
|
35
|
+
constructor() {
|
|
36
|
+
effect(() => {
|
|
37
|
+
if (isNil(this.keyActive()) || !this.fieldKey()) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
untracked(() => {
|
|
41
|
+
this.groups.update((data) => {
|
|
42
|
+
return data.map((group) => {
|
|
43
|
+
group.item.active = false;
|
|
44
|
+
if (group.item && group.item[this.fieldKey()] === this.keyActive()) {
|
|
45
|
+
group.item.active = true;
|
|
46
|
+
}
|
|
47
|
+
return group;
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
effect(() => {
|
|
53
|
+
if (!Array.isArray(this.keysDisable()) || !this.fieldKey()) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
untracked(() => {
|
|
57
|
+
this.groups.update((data) => {
|
|
58
|
+
return data.map((group) => {
|
|
59
|
+
group.disableByKeys = false;
|
|
60
|
+
if (group.item && this.keysDisable()?.includes(group.item[this.fieldKey()])) {
|
|
61
|
+
group.disableByKeys = true;
|
|
62
|
+
}
|
|
63
|
+
return group;
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
ngOnInit() {
|
|
70
|
+
this.outFunctionsControl.emit(this.FunctionsControl);
|
|
71
|
+
}
|
|
72
|
+
// #region FUNCTIONS
|
|
73
|
+
get FunctionsControl() {
|
|
74
|
+
return {
|
|
75
|
+
checkIsValid: this.checkValid.bind(this),
|
|
76
|
+
resetError: this.resetError.bind(this),
|
|
77
|
+
reset: async () => {
|
|
78
|
+
this.groups.update((data) => {
|
|
79
|
+
return data.map((group) => {
|
|
80
|
+
group.item.active = false;
|
|
81
|
+
return group;
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
this.resetError();
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
async handlerClickButton(event) {
|
|
89
|
+
this.outClickButton.emit(event);
|
|
90
|
+
}
|
|
91
|
+
async handlerChange(dataEvent) {
|
|
92
|
+
if (this.disable()) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const event = dataEvent;
|
|
96
|
+
this.groups.update((data) => {
|
|
97
|
+
return data.map((group) => {
|
|
98
|
+
const item = group.item;
|
|
99
|
+
item.active = false;
|
|
100
|
+
if (item[this.fieldKey()] === dataEvent.key) {
|
|
101
|
+
item.active = dataEvent.active;
|
|
102
|
+
event.item = item;
|
|
103
|
+
}
|
|
104
|
+
return group;
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
this.outChange.emit(event);
|
|
108
|
+
this.checkValid();
|
|
109
|
+
}
|
|
110
|
+
async checkValid() {
|
|
111
|
+
this.isErrorRequired.set(false);
|
|
112
|
+
if (!this.validRequired()) {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
this.isErrorRequired.set(!this.groups()?.some((group) => group.item?.active));
|
|
116
|
+
return !this.isErrorRequired();
|
|
117
|
+
}
|
|
118
|
+
async resetError() {
|
|
119
|
+
this.isErrorRequired.set(false);
|
|
120
|
+
}
|
|
121
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsRadioGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
122
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsRadioGroupComponent, isStandalone: true, selector: "libs_ui-components-radio-group", inputs: { fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: false, transformFunction: null }, keyActive: { classPropertyName: "keyActive", publicName: "keyActive", isSignal: true, isRequired: false, transformFunction: null }, keysDisable: { classPropertyName: "keysDisable", publicName: "keysDisable", isSignal: true, isRequired: false, transformFunction: null }, groups: { classPropertyName: "groups", publicName: "groups", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, clickExactly: { classPropertyName: "clickExactly", publicName: "clickExactly", isSignal: true, isRequired: false, transformFunction: null }, horizontal: { classPropertyName: "horizontal", publicName: "horizontal", isSignal: true, isRequired: false, transformFunction: null }, labelConfig: { classPropertyName: "labelConfig", publicName: "labelConfig", isSignal: true, isRequired: false, transformFunction: null }, validRequired: { classPropertyName: "validRequired", publicName: "validRequired", isSignal: true, isRequired: false, transformFunction: null }, ignoreClassMarginLastItem: { classPropertyName: "ignoreClassMarginLastItem", publicName: "ignoreClassMarginLastItem", isSignal: true, isRequired: false, transformFunction: null }, typeRadio: { classPropertyName: "typeRadio", publicName: "typeRadio", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, classLabelInclude: { classPropertyName: "classLabelInclude", publicName: "classLabelInclude", isSignal: true, isRequired: false, transformFunction: null }, classItemInclude: { classPropertyName: "classItemInclude", publicName: "classItemInclude", isSignal: true, isRequired: false, transformFunction: null }, alwaysShowSubText: { classPropertyName: "alwaysShowSubText", publicName: "alwaysShowSubText", isSignal: true, isRequired: false, transformFunction: null }, horizontalClassInclude: { classPropertyName: "horizontalClassInclude", publicName: "horizontalClassInclude", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { groups: "groupsChange", outClickButton: "outClickButton", outChange: "outChange", outFunctionsControl: "outFunctionsControl" }, ngImport: i0, template: "<div class=\"flex flex-col w-full\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\"\n (outClickButton)=\"handlerClickButton($event)\" />\n }\n @if (isErrorRequired()) {\n <div class=\"flex items-center mb-[8px]\">\n @let constHtmlMessage = validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID;\n <span\n class=\"libs-ui-font-h5r libs-ui-text-error\"\n [innerHtml]=\"constHtmlMessage | translate: validRequired()?.interpolateParams\"></span>\n </div>\n }\n <div\n class=\"libs-ui-radio-group\"\n [class.flex]=\"horizontal()\">\n @for (group of groups(); track group; let isLast = $last) {\n <div [class]=\"horizontal() ? (isLast && ignoreClassMarginLastItem() ? '' : horizontalClassInclude() || 'mr-[24px]') : ''\">\n <div [class]=\"classItemInclude()\">\n <libs_ui-components-radio-single\n [labelInterpolateParams]=\"group.item.labelInterpolateParams\"\n [label]=\"group.item.label || ' '\"\n [active]=\"group.item.active || false\"\n [key]=\"group.item[fieldKey()]\"\n [disable]=\"group['disableByKeys'] || disable() || group.item.disable || false\"\n [disableLabel]=\"group.item.disableLabel || false\"\n [classLabelInclude]=\"classLabelInclude() || group.item.classLabelInclude || 'libs-ui-font-h5r'\"\n [classInclude]=\"classInclude() || group.item.classInclude || ''\"\n [zIndexLabel]=\"group.item.zIndexLabel\"\n [typeRadio]=\"typeRadio()\"\n [avatarConfig]=\"group.item.avatarConfig\"\n (outChange)=\"handlerChange($event)\"\n [popover]=\"group.item.popover\"\n [clickExactly]=\"clickExactly()\" />\n </div>\n @if (group.item.active || alwaysShowSubText()) {\n @if (group.subText) {\n <div\n [class]=\"'libs-ui-radio-group-sub-text libs-ui-font-h7r ' + (group.classIncludeSubText ? group.classIncludeSubText : '')\"\n [innerHtml]=\"group.subText | translate\"></div>\n }\n <ng-container *ngTemplateOutlet=\"group?.subTemplate || null; context: { item: group.item }\" />\n }\n </div>\n }\n </div>\n</div>\n", styles: [".libs-ui-radio-group .libs-ui-radio-group-sub-text{color:#9ca2ad;margin-left:24px;margin-bottom:4px;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LibsUiComponentsLabelComponent, selector: "libs_ui-components-label", inputs: ["iconPopoverClass", "classInclude", "labelLeft", "labelLeftClass", "labelLeftBehindToggleButton", "popover", "required", "buttonsLeft", "disableButtonsLeft", "buttonsRight", "disableButtonsRight", "labelRight", "labelRightClass", "labelRightRequired", "hasToggle", "toggleSize", "toggleActive", "toggleDisable", "description", "descriptionClass", "buttonsDescription", "disableButtonsDescription", "buttonsDescriptionContainerClass", "onlyShowCount", "zIndexPopover", "timerDestroyPopover", "count", "limitLength"], outputs: ["outClickButton", "outSwitchEvent", "outLabelRightClick", "outLabelLeftClick"] }, { kind: "component", type: LibsUiComponentsRadioSingleComponent, selector: "libs_ui-components-radio-single", inputs: ["key", "active", "classInclude", "label", "labelInterpolateParams", "ignorePopoverLabel", "classLabelInclude", "linkImage", "linkImageError", "avatarConfig", "classImageInclude", "imgTypeIcon", "bullet", "popover", "disable", "disableLabel", "clickExactly", "typeRadio", "ignoreRadio", "zIndexLabel", "classIncludeIcon", "dataComponentOutlet", "componentOutlet"], outputs: ["activeChange", "outClickLabel", "outChange", "outChangStageFlagMousePopover"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
123
|
+
}
|
|
124
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsRadioGroupComponent, decorators: [{
|
|
125
|
+
type: Component,
|
|
126
|
+
args: [{ selector: 'libs_ui-components-radio-group', standalone: true, imports: [TranslateModule, NgTemplateOutlet, LibsUiComponentsLabelComponent, LibsUiComponentsRadioSingleComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col w-full\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\"\n (outClickButton)=\"handlerClickButton($event)\" />\n }\n @if (isErrorRequired()) {\n <div class=\"flex items-center mb-[8px]\">\n @let constHtmlMessage = validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID;\n <span\n class=\"libs-ui-font-h5r libs-ui-text-error\"\n [innerHtml]=\"constHtmlMessage | translate: validRequired()?.interpolateParams\"></span>\n </div>\n }\n <div\n class=\"libs-ui-radio-group\"\n [class.flex]=\"horizontal()\">\n @for (group of groups(); track group; let isLast = $last) {\n <div [class]=\"horizontal() ? (isLast && ignoreClassMarginLastItem() ? '' : horizontalClassInclude() || 'mr-[24px]') : ''\">\n <div [class]=\"classItemInclude()\">\n <libs_ui-components-radio-single\n [labelInterpolateParams]=\"group.item.labelInterpolateParams\"\n [label]=\"group.item.label || ' '\"\n [active]=\"group.item.active || false\"\n [key]=\"group.item[fieldKey()]\"\n [disable]=\"group['disableByKeys'] || disable() || group.item.disable || false\"\n [disableLabel]=\"group.item.disableLabel || false\"\n [classLabelInclude]=\"classLabelInclude() || group.item.classLabelInclude || 'libs-ui-font-h5r'\"\n [classInclude]=\"classInclude() || group.item.classInclude || ''\"\n [zIndexLabel]=\"group.item.zIndexLabel\"\n [typeRadio]=\"typeRadio()\"\n [avatarConfig]=\"group.item.avatarConfig\"\n (outChange)=\"handlerChange($event)\"\n [popover]=\"group.item.popover\"\n [clickExactly]=\"clickExactly()\" />\n </div>\n @if (group.item.active || alwaysShowSubText()) {\n @if (group.subText) {\n <div\n [class]=\"'libs-ui-radio-group-sub-text libs-ui-font-h7r ' + (group.classIncludeSubText ? group.classIncludeSubText : '')\"\n [innerHtml]=\"group.subText | translate\"></div>\n }\n <ng-container *ngTemplateOutlet=\"group?.subTemplate || null; context: { item: group.item }\" />\n }\n </div>\n }\n </div>\n</div>\n", styles: [".libs-ui-radio-group .libs-ui-radio-group-sub-text{color:#9ca2ad;margin-left:24px;margin-bottom:4px;width:100%}\n"] }]
|
|
127
|
+
}], ctorParameters: () => [] });
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3JhZGlvL2dyb3VwL3NyYy9ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcmFkaW8vZ3JvdXAvc3JjL2dyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVILE9BQU8sRUFBVSw4QkFBOEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25GLE9BQU8sRUFBZSxvQ0FBb0MsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQVl0RCxNQUFNLE9BQU8sbUNBQW1DO0lBQzlDLG1CQUFtQjtJQUNBLHlCQUF5QixHQUFHLHlCQUF5QixDQUFDO0lBQy9ELGVBQWUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFbkQsZ0JBQWdCO0lBQ1AsUUFBUSxHQUFHLEtBQUssQ0FBaUIsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNsRixTQUFTLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFDN0IsV0FBVyxHQUFHLEtBQUssRUFBaUIsQ0FBQztJQUNyQyxNQUFN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QVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxLQUFLLENBQUMsVUFBVTtRQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBc0IsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRS9GLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVPLEtBQUssQ0FBQyxVQUFVO1FBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7d0dBaklVLG1DQUFtQzs0RkFBbkMsbUNBQW1DLHcrRUNuQmhELCs1R0FxRUEsMEtEckRZLGVBQWUsNEZBQUUsZ0JBQWdCLG9KQUFFLDhCQUE4Qiw0cUJBQUUsb0NBQW9DOzs0RkFHdEcsbUNBQW1DO2tCQVQvQyxTQUFTOytCQUVFLGdDQUFnQyxjQUc5QixJQUFJLFdBQ1AsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsOEJBQThCLEVBQUUsb0NBQW9DLENBQUMsbUJBQ2pHLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdCwgZWZmZWN0LCBpbnB1dCwgbW9kZWwsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElCdXR0b24gfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uJztcbmltcG9ydCB7IElMYWJlbCwgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1sYWJlbCc7XG5pbXBvcnQgeyBJUmFkaW9FdmVudCwgTGlic1VpQ29tcG9uZW50c1JhZGlvU2luZ2xlQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1yYWRpby1zaW5nbGUnO1xuaW1wb3J0IHsgRVJST1JfTUVTU0FHRV9FTVBUWV9WQUxJRCwgaXNOaWwgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IElSYWRpb0dyb3VwRnVuY3Rpb25Db250cm9sRXZlbnQsIElSYWRpb0dyb3VwSXRlbSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1yYWRpby1ncm91cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtUcmFuc2xhdGVNb2R1bGUsIE5nVGVtcGxhdGVPdXRsZXQsIExpYnNVaUNvbXBvbmVudHNMYWJlbENvbXBvbmVudCwgTGlic1VpQ29tcG9uZW50c1JhZGlvU2luZ2xlQ29tcG9uZW50XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNSYWRpb0dyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gI3JlZ2lvbiBQUk9QRVJUWVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRVJST1JfTUVTU0FHRV9FTVBUWV9WQUxJRCA9IEVSUk9SX01FU1NBR0VfRU1QVFlfVkFMSUQ7XG4gIHByb3RlY3RlZCBpc0Vycm9yUmVxdWlyZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIC8vICNyZWdpb24gSU5QVVRcbiAgcmVhZG9ubHkgZmllbGRLZXkgPSBpbnB1dDxzdHJpbmcsIHN0cmluZz4oJ2tleScsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlIHx8ICdrZXknIH0pO1xuICByZWFkb25seSBrZXlBY3RpdmUgPSBpbnB1dDx1bmtub3duPigpO1xuICByZWFkb25seSBrZXlzRGlzYWJsZSA9IGlucHV0PEFycmF5PHN0cmluZz4+KCk7XG4gIHJlYWRvbmx5IGdyb3VwcyA9IG1vZGVsPEFycmF5PElSYWRpb0dyb3VwSXRlbT4+KFtdKTtcbiAgcmVhZG9ubHkgZGlzYWJsZSA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQsIGJvb2xlYW4gfCB1bmRlZmluZWQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyBmYWxzZSB9KTtcbiAgcmVhZG9ubHkgY2xpY2tFeGFjdGx5ID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZCwgYm9vbGVhbiB8IHVuZGVmaW5lZD4odHJ1ZSwgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gdHJ1ZSB9KTtcbiAgcmVhZG9ubHkgaG9yaXpvbnRhbCA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQsIGJvb2xlYW4gfCB1bmRlZmluZWQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyBmYWxzZSB9KTtcbiAgcmVhZG9ubHkgbGFiZWxDb25maWcgPSBpbnB1dDxJTGFiZWwgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IHZhbGlkUmVxdWlyZWQgPSBpbnB1dDxcbiAgICB8IHtcbiAgICAgICAgbWVzc2FnZT86IHN0cmluZztcbiAgICAgICAgaW50ZXJwb2xhdGVQYXJhbXM/OiB7IGFueTogYW55IH07XG4gICAgICB9XG4gICAgfCB1bmRlZmluZWRcbiAgPigpO1xuICByZWFkb25seSBpZ25vcmVDbGFzc01hcmdpbkxhc3RJdGVtID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4oZmFsc2UpO1xuICByZWFkb25seSB0eXBlUmFkaW8gPSBpbnB1dDwnbm9ybWFsJyB8ICdtZWRpdW0nIHwgdW5kZWZpbmVkLCAnbm9ybWFsJyB8ICdtZWRpdW0nIHwgdW5kZWZpbmVkPignbm9ybWFsJywgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gJ25vcm1hbCcgfSk7XG4gIHJlYWRvbmx5IGNsYXNzSW5jbHVkZSA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZCwgc3RyaW5nIHwgdW5kZWZpbmVkPignJywgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gJycgfSk7XG4gIHJlYWRvbmx5IGNsYXNzTGFiZWxJbmNsdWRlID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkLCBzdHJpbmcgfCB1bmRlZmluZWQ+KCcnLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyAnJyB9KTtcbiAgcmVhZG9ubHkgY2xhc3NJdGVtSW5jbHVkZSA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZCwgc3RyaW5nIHwgdW5kZWZpbmVkPigncHktWzRweF0nLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyAncHktWzRweF0nIH0pO1xuICByZWFkb25seSBhbHdheXNTaG93U3ViVGV4dCA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGhvcml6b250YWxDbGFzc0luY2x1ZGUgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQsIHN0cmluZyB8IHVuZGVmaW5lZD4oJycsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/ICcnIH0pO1xuXG4gIC8vICNyZWdpb24gT1VUUFVUXG4gIHJlYWRvbmx5IG91dENsaWNrQnV0dG9uID0gb3V0cHV0PElCdXR0b24+KCk7XG4gIHJlYWRvbmx5IG91dENoYW5nZSA9IG91dHB1dDxJUmFkaW9FdmVudD4oKTtcbiAgcmVhZG9ubHkgb3V0RnVuY3Rpb25zQ29udHJvbCA9IG91dHB1dDxJUmFkaW9Hcm91cEZ1bmN0aW9uQ29udHJvbEV2ZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoaXNOaWwodGhpcy5rZXlBY3RpdmUoKSkgfHwgIXRoaXMuZmllbGRLZXkoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICB0aGlzLmdyb3Vwcy51cGRhdGUoKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gZGF0YS5tYXA8SVJhZGlvR3JvdXBJdGVtPigoZ3JvdXApID0+IHtcbiAgICAgICAgICAgIGdyb3VwLml0ZW0uYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoZ3JvdXAuaXRlbSAmJiBncm91cC5pdGVtW3RoaXMuZmllbGRLZXkoKV0gPT09IHRoaXMua2V5QWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgZ3JvdXAuaXRlbS5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLmtleXNEaXNhYmxlKCkpIHx8ICF0aGlzLmZpZWxkS2V5KCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgdGhpcy5ncm91cHMudXBkYXRlKChkYXRhKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGRhdGEubWFwPElSYWRpb0dyb3VwSXRlbT4oKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICBncm91cC5kaXNhYmxlQnlLZXlzID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoZ3JvdXAuaXRlbSAmJiB0aGlzLmtleXNEaXNhYmxlKCk/LmluY2x1ZGVzKGdyb3VwLml0ZW1bdGhpcy5maWVsZEtleSgpXSkpIHtcbiAgICAgICAgICAgICAgZ3JvdXAuZGlzYWJsZUJ5S2V5cyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm91dEZ1bmN0aW9uc0NvbnRyb2wuZW1pdCh0aGlzLkZ1bmN0aW9uc0NvbnRyb2wpO1xuICB9XG5cbiAgLy8gI3JlZ2lvbiBGVU5DVElPTlNcbiAgcHVibGljIGdldCBGdW5jdGlvbnNDb250cm9sKCk6IElSYWRpb0dyb3VwRnVuY3Rpb25Db250cm9sRXZlbnQge1xuICAgIHJldHVybiB7XG4gICAgICBjaGVja0lzVmFsaWQ6IHRoaXMuY2hlY2tWYWxpZC5iaW5kKHRoaXMpLFxuICAgICAgcmVzZXRFcnJvcjogdGhpcy5yZXNldEVycm9yLmJpbmQodGhpcyksXG4gICAgICByZXNldDogYXN5bmMgKCkgPT4ge1xuICAgICAgICB0aGlzLmdyb3Vwcy51cGRhdGUoKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gZGF0YS5tYXA8SVJhZGlvR3JvdXBJdGVtPigoZ3JvdXApID0+IHtcbiAgICAgICAgICAgIGdyb3VwLml0ZW0uYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlc2V0RXJyb3IoKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckNsaWNrQnV0dG9uKGV2ZW50OiBJQnV0dG9uKSB7XG4gICAgdGhpcy5vdXRDbGlja0J1dHRvbi5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyQ2hhbmdlKGRhdGFFdmVudDogeyBhY3RpdmU6IGJvb2xlYW47IGtleTogYW55IH0pIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZXZlbnQ6IGFueSA9IGRhdGFFdmVudDtcblxuICAgIHRoaXMuZ3JvdXBzLnVwZGF0ZSgoZGF0YSkgPT4ge1xuICAgICAgcmV0dXJuIGRhdGEubWFwPElSYWRpb0dyb3VwSXRlbT4oKGdyb3VwKSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBncm91cC5pdGVtO1xuXG4gICAgICAgIGl0ZW0uYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIGlmIChpdGVtW3RoaXMuZmllbGRLZXkoKV0gPT09IGRhdGFFdmVudC5rZXkpIHtcbiAgICAgICAgICBpdGVtLmFjdGl2ZSA9IGRhdGFFdmVudC5hY3RpdmU7XG4gICAgICAgICAgZXZlbnQuaXRlbSA9IGl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5vdXRDaGFuZ2UuZW1pdChldmVudCk7XG4gICAgdGhpcy5jaGVja1ZhbGlkKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNoZWNrVmFsaWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhpcy5pc0Vycm9yUmVxdWlyZWQuc2V0KGZhbHNlKTtcbiAgICBpZiAoIXRoaXMudmFsaWRSZXF1aXJlZCgpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLmlzRXJyb3JSZXF1aXJlZC5zZXQoIXRoaXMuZ3JvdXBzKCk/LnNvbWUoKGdyb3VwOiBJUmFkaW9Hcm91cEl0ZW0pID0+IGdyb3VwLml0ZW0/LmFjdGl2ZSkpO1xuXG4gICAgcmV0dXJuICF0aGlzLmlzRXJyb3JSZXF1aXJlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXNldEVycm9yKCkge1xuICAgIHRoaXMuaXNFcnJvclJlcXVpcmVkLnNldChmYWxzZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHctZnVsbFwiPlxuICBAaWYgKGxhYmVsQ29uZmlnKCk7IGFzIGxhYmVsQ29uZmlnKSB7XG4gICAgPGxpYnNfdWktY29tcG9uZW50cy1sYWJlbFxuICAgICAgW2NsYXNzSW5jbHVkZV09XCJsYWJlbENvbmZpZy5jbGFzc0luY2x1ZGVcIlxuICAgICAgW2xhYmVsTGVmdF09XCJsYWJlbENvbmZpZy5sYWJlbExlZnRcIlxuICAgICAgW2xhYmVsTGVmdENsYXNzXT1cImxhYmVsQ29uZmlnLmxhYmVsTGVmdENsYXNzXCJcbiAgICAgIFtyZXF1aXJlZF09XCJsYWJlbENvbmZpZy5yZXF1aXJlZFwiXG4gICAgICBbZGVzY3JpcHRpb25dPVwibGFiZWxDb25maWcuZGVzY3JpcHRpb25cIlxuICAgICAgW2Rlc2NyaXB0aW9uQ2xhc3NdPVwibGFiZWxDb25maWcuZGVzY3JpcHRpb25DbGFzc1wiXG4gICAgICBbbGFiZWxSaWdodF09XCJsYWJlbENvbmZpZy5sYWJlbFJpZ2h0XCJcbiAgICAgIFtsYWJlbFJpZ2h0Q2xhc3NdPVwibGFiZWxDb25maWcubGFiZWxSaWdodENsYXNzXCJcbiAgICAgIFtvbmx5U2hvd0NvdW50XT1cImxhYmVsQ29uZmlnLm9ubHlTaG93Q291bnRcIlxuICAgICAgW2J1dHRvbnNMZWZ0XT1cImxhYmVsQ29uZmlnLmJ1dHRvbnNMZWZ0XCJcbiAgICAgIFtkaXNhYmxlQnV0dG9uc0xlZnRdPVwibGFiZWxDb25maWcuZGlzYWJsZUJ1dHRvbnNMZWZ0IHx8IGRpc2FibGUoKVwiXG4gICAgICBbaGFzVG9nZ2xlXT1cImxhYmVsQ29uZmlnLmhhc1RvZ2dsZVwiXG4gICAgICBbdG9nZ2xlQWN0aXZlXT1cImxhYmVsQ29uZmlnLnRvZ2dsZUFjdGl2ZVwiXG4gICAgICBbdG9nZ2xlRGlzYWJsZV09XCJsYWJlbENvbmZpZy50b2dnbGVEaXNhYmxlIHx8IGRpc2FibGUoKVwiXG4gICAgICBbcG9wb3Zlcl09XCJsYWJlbENvbmZpZy5wb3BvdmVyXCJcbiAgICAgIFtpY29uUG9wb3ZlckNsYXNzXT1cImxhYmVsQ29uZmlnLmljb25Qb3BvdmVyQ2xhc3NcIlxuICAgICAgW29ubHlTaG93Q291bnRdPVwibGFiZWxDb25maWcub25seVNob3dDb3VudFwiXG4gICAgICBbbGltaXRMZW5ndGhdPVwibGFiZWxDb25maWcubGltaXRMZW5ndGhcIlxuICAgICAgW2J1dHRvbnNEZXNjcmlwdGlvbl09XCJsYWJlbENvbmZpZy5idXR0b25zRGVzY3JpcHRpb25cIlxuICAgICAgW2Rpc2FibGVCdXR0b25zRGVzY3JpcHRpb25dPVwibGFiZWxDb25maWcuZGlzYWJsZUJ1dHRvbnNEZXNjcmlwdGlvbiB8fCBkaXNhYmxlKClcIlxuICAgICAgW2J1dHRvbnNEZXNjcmlwdGlvbkNvbnRhaW5lckNsYXNzXT1cImxhYmVsQ29uZmlnLmJ1dHRvbnNEZXNjcmlwdGlvbkNvbnRhaW5lckNsYXNzXCJcbiAgICAgIFtjb3VudF09XCJsYWJlbENvbmZpZy5jb3VudFwiXG4gICAgICAob3V0Q2xpY2tCdXR0b24pPVwiaGFuZGxlckNsaWNrQnV0dG9uKCRldmVudClcIiAvPlxuICB9XG4gIEBpZiAoaXNFcnJvclJlcXVpcmVkKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgbWItWzhweF1cIj5cbiAgICAgIEBsZXQgY29uc3RIdG1sTWVzc2FnZSA9IHZhbGlkUmVxdWlyZWQoKT8ubWVzc2FnZSB8fCBFUlJPUl9NRVNTQUdFX0VNUFRZX1ZBTElEO1xuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDVyIGxpYnMtdWktdGV4dC1lcnJvclwiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiY29uc3RIdG1sTWVzc2FnZSB8IHRyYW5zbGF0ZTogdmFsaWRSZXF1aXJlZCgpPy5pbnRlcnBvbGF0ZVBhcmFtc1wiPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgfVxuICA8ZGl2XG4gICAgY2xhc3M9XCJsaWJzLXVpLXJhZGlvLWdyb3VwXCJcbiAgICBbY2xhc3MuZmxleF09XCJob3Jpem9udGFsKClcIj5cbiAgICBAZm9yIChncm91cCBvZiBncm91cHMoKTsgdHJhY2sgZ3JvdXA7IGxldCBpc0xhc3QgPSAkbGFzdCkge1xuICAgICAgPGRpdiBbY2xhc3NdPVwiaG9yaXpvbnRhbCgpID8gKGlzTGFzdCAmJiBpZ25vcmVDbGFzc01hcmdpbkxhc3RJdGVtKCkgPyAnJyA6IGhvcml6b250YWxDbGFzc0luY2x1ZGUoKSB8fCAnbXItWzI0cHhdJykgOiAnJ1wiPlxuICAgICAgICA8ZGl2IFtjbGFzc109XCJjbGFzc0l0ZW1JbmNsdWRlKClcIj5cbiAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXJhZGlvLXNpbmdsZVxuICAgICAgICAgICAgW2xhYmVsSW50ZXJwb2xhdGVQYXJhbXNdPVwiZ3JvdXAuaXRlbS5sYWJlbEludGVycG9sYXRlUGFyYW1zXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJncm91cC5pdGVtLmxhYmVsIHx8ICcgJ1wiXG4gICAgICAgICAgICBbYWN0aXZlXT1cImdyb3VwLml0ZW0uYWN0aXZlIHx8IGZhbHNlXCJcbiAgICAgICAgICAgIFtrZXldPVwiZ3JvdXAuaXRlbVtmaWVsZEtleSgpXVwiXG4gICAgICAgICAgICBbZGlzYWJsZV09XCJncm91cFsnZGlzYWJsZUJ5S2V5cyddIHx8IGRpc2FibGUoKSB8fCBncm91cC5pdGVtLmRpc2FibGUgfHwgZmFsc2VcIlxuICAgICAgICAgICAgW2Rpc2FibGVMYWJlbF09XCJncm91cC5pdGVtLmRpc2FibGVMYWJlbCB8fCBmYWxzZVwiXG4gICAgICAgICAgICBbY2xhc3NMYWJlbEluY2x1ZGVdPVwiY2xhc3NMYWJlbEluY2x1ZGUoKSB8fCBncm91cC5pdGVtLmNsYXNzTGFiZWxJbmNsdWRlIHx8ICdsaWJzLXVpLWZvbnQtaDVyJ1wiXG4gICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cImNsYXNzSW5jbHVkZSgpIHx8IGdyb3VwLml0ZW0uY2xhc3NJbmNsdWRlIHx8ICcnXCJcbiAgICAgICAgICAgIFt6SW5kZXhMYWJlbF09XCJncm91cC5pdGVtLnpJbmRleExhYmVsXCJcbiAgICAgICAgICAgIFt0eXBlUmFkaW9dPVwidHlwZVJhZGlvKClcIlxuICAgICAgICAgICAgW2F2YXRhckNvbmZpZ109XCJncm91cC5pdGVtLmF2YXRhckNvbmZpZ1wiXG4gICAgICAgICAgICAob3V0Q2hhbmdlKT1cImhhbmRsZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBbcG9wb3Zlcl09XCJncm91cC5pdGVtLnBvcG92ZXJcIlxuICAgICAgICAgICAgW2NsaWNrRXhhY3RseV09XCJjbGlja0V4YWN0bHkoKVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKGdyb3VwLml0ZW0uYWN0aXZlIHx8IGFsd2F5c1Nob3dTdWJUZXh0KCkpIHtcbiAgICAgICAgICBAaWYgKGdyb3VwLnN1YlRleHQpIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgW2NsYXNzXT1cIidsaWJzLXVpLXJhZGlvLWdyb3VwLXN1Yi10ZXh0IGxpYnMtdWktZm9udC1oN3IgJyArIChncm91cC5jbGFzc0luY2x1ZGVTdWJUZXh0ID8gZ3JvdXAuY2xhc3NJbmNsdWRlU3ViVGV4dCA6ICcnKVwiXG4gICAgICAgICAgICAgIFtpbm5lckh0bWxdPVwiZ3JvdXAuc3ViVGV4dCB8IHRyYW5zbGF0ZVwiPjwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ3JvdXA/LnN1YlRlbXBsYXRlIHx8IG51bGw7IGNvbnRleHQ6IHsgaXRlbTogZ3JvdXAuaXRlbSB9XCIgLz5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './group.component';
|
|
2
|
+
export * from './interfaces';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcmFkaW8vZ3JvdXAvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2dyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMnO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tY29udHJvbC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcmFkaW8vZ3JvdXAvc3JjL2ludGVyZmFjZXMvZnVuY3Rpb24tY29udHJvbC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSVJhZGlvR3JvdXBGdW5jdGlvbkNvbnRyb2xFdmVudCB7XG4gIGNoZWNrSXNWYWxpZDogKCkgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgcmVzZXRFcnJvcjogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcmVzZXQ6ICgpID0+IFByb21pc2U8dm9pZD47XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3JhZGlvL2dyb3VwL3NyYy9pbnRlcmZhY2VzL2dyb3VwLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElSYWRpb0l0ZW0gfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXJhZGlvLXNpbmdsZSc7XG5pbXBvcnQgeyBUWVBFX1RFTVBMQVRFX1JFRiB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSYWRpb0dyb3VwSXRlbSB7XG4gIGl0ZW06IElSYWRpb0l0ZW07XG4gIHN1YlRleHQ/OiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZVN1YlRleHQ/OiBzdHJpbmc7XG4gIHN1YlRlbXBsYXRlPzogVGVtcGxhdGVSZWY8VFlQRV9URU1QTEFURV9SRUY+O1xuICBkaXNhYmxlQnlLZXlzPzogYm9vbGVhbjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './group.interface';
|
|
2
|
+
export * from './function-control.interface';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcmFkaW8vZ3JvdXAvc3JjL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ncm91cC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9mdW5jdGlvbi1jb250cm9sLmludGVyZmFjZSc7XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicy11aS1jb21wb25lbnRzLXJhZGlvLWdyb3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3JhZGlvL2dyb3VwL3NyYy9saWJzLXVpLWNvbXBvbmVudHMtcmFkaW8tZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { signal, input, model, output, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
4
|
+
import { LibsUiComponentsLabelComponent } from '@libs-ui/components-label';
|
|
5
|
+
import { LibsUiComponentsRadioSingleComponent } from '@libs-ui/components-radio-single';
|
|
6
|
+
import { ERROR_MESSAGE_EMPTY_VALID, isNil } from '@libs-ui/utils';
|
|
7
|
+
import * as i1 from '@ngx-translate/core';
|
|
8
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
9
|
+
|
|
10
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
11
|
+
class LibsUiComponentsRadioGroupComponent {
|
|
12
|
+
// #region PROPERTY
|
|
13
|
+
ERROR_MESSAGE_EMPTY_VALID = ERROR_MESSAGE_EMPTY_VALID;
|
|
14
|
+
isErrorRequired = signal(false);
|
|
15
|
+
// #region INPUT
|
|
16
|
+
fieldKey = input('key', { transform: (value) => value || 'key' });
|
|
17
|
+
keyActive = input();
|
|
18
|
+
keysDisable = input();
|
|
19
|
+
groups = model([]);
|
|
20
|
+
disable = input(false, { transform: (value) => value ?? false });
|
|
21
|
+
clickExactly = input(true, { transform: (value) => value ?? true });
|
|
22
|
+
horizontal = input(false, { transform: (value) => value ?? false });
|
|
23
|
+
labelConfig = input();
|
|
24
|
+
validRequired = input();
|
|
25
|
+
ignoreClassMarginLastItem = input(false);
|
|
26
|
+
typeRadio = input('normal', { transform: (value) => value ?? 'normal' });
|
|
27
|
+
classInclude = input('', { transform: (value) => value ?? '' });
|
|
28
|
+
classLabelInclude = input('', { transform: (value) => value ?? '' });
|
|
29
|
+
classItemInclude = input('py-[4px]', { transform: (value) => value ?? 'py-[4px]' });
|
|
30
|
+
alwaysShowSubText = input();
|
|
31
|
+
horizontalClassInclude = input('', { transform: (value) => value ?? '' });
|
|
32
|
+
// #region OUTPUT
|
|
33
|
+
outClickButton = output();
|
|
34
|
+
outChange = output();
|
|
35
|
+
outFunctionsControl = output();
|
|
36
|
+
constructor() {
|
|
37
|
+
effect(() => {
|
|
38
|
+
if (isNil(this.keyActive()) || !this.fieldKey()) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
untracked(() => {
|
|
42
|
+
this.groups.update((data) => {
|
|
43
|
+
return data.map((group) => {
|
|
44
|
+
group.item.active = false;
|
|
45
|
+
if (group.item && group.item[this.fieldKey()] === this.keyActive()) {
|
|
46
|
+
group.item.active = true;
|
|
47
|
+
}
|
|
48
|
+
return group;
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
effect(() => {
|
|
54
|
+
if (!Array.isArray(this.keysDisable()) || !this.fieldKey()) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
untracked(() => {
|
|
58
|
+
this.groups.update((data) => {
|
|
59
|
+
return data.map((group) => {
|
|
60
|
+
group.disableByKeys = false;
|
|
61
|
+
if (group.item && this.keysDisable()?.includes(group.item[this.fieldKey()])) {
|
|
62
|
+
group.disableByKeys = true;
|
|
63
|
+
}
|
|
64
|
+
return group;
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
ngOnInit() {
|
|
71
|
+
this.outFunctionsControl.emit(this.FunctionsControl);
|
|
72
|
+
}
|
|
73
|
+
// #region FUNCTIONS
|
|
74
|
+
get FunctionsControl() {
|
|
75
|
+
return {
|
|
76
|
+
checkIsValid: this.checkValid.bind(this),
|
|
77
|
+
resetError: this.resetError.bind(this),
|
|
78
|
+
reset: async () => {
|
|
79
|
+
this.groups.update((data) => {
|
|
80
|
+
return data.map((group) => {
|
|
81
|
+
group.item.active = false;
|
|
82
|
+
return group;
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
this.resetError();
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
async handlerClickButton(event) {
|
|
90
|
+
this.outClickButton.emit(event);
|
|
91
|
+
}
|
|
92
|
+
async handlerChange(dataEvent) {
|
|
93
|
+
if (this.disable()) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const event = dataEvent;
|
|
97
|
+
this.groups.update((data) => {
|
|
98
|
+
return data.map((group) => {
|
|
99
|
+
const item = group.item;
|
|
100
|
+
item.active = false;
|
|
101
|
+
if (item[this.fieldKey()] === dataEvent.key) {
|
|
102
|
+
item.active = dataEvent.active;
|
|
103
|
+
event.item = item;
|
|
104
|
+
}
|
|
105
|
+
return group;
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
this.outChange.emit(event);
|
|
109
|
+
this.checkValid();
|
|
110
|
+
}
|
|
111
|
+
async checkValid() {
|
|
112
|
+
this.isErrorRequired.set(false);
|
|
113
|
+
if (!this.validRequired()) {
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
this.isErrorRequired.set(!this.groups()?.some((group) => group.item?.active));
|
|
117
|
+
return !this.isErrorRequired();
|
|
118
|
+
}
|
|
119
|
+
async resetError() {
|
|
120
|
+
this.isErrorRequired.set(false);
|
|
121
|
+
}
|
|
122
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsRadioGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
123
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsRadioGroupComponent, isStandalone: true, selector: "libs_ui-components-radio-group", inputs: { fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: false, transformFunction: null }, keyActive: { classPropertyName: "keyActive", publicName: "keyActive", isSignal: true, isRequired: false, transformFunction: null }, keysDisable: { classPropertyName: "keysDisable", publicName: "keysDisable", isSignal: true, isRequired: false, transformFunction: null }, groups: { classPropertyName: "groups", publicName: "groups", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, clickExactly: { classPropertyName: "clickExactly", publicName: "clickExactly", isSignal: true, isRequired: false, transformFunction: null }, horizontal: { classPropertyName: "horizontal", publicName: "horizontal", isSignal: true, isRequired: false, transformFunction: null }, labelConfig: { classPropertyName: "labelConfig", publicName: "labelConfig", isSignal: true, isRequired: false, transformFunction: null }, validRequired: { classPropertyName: "validRequired", publicName: "validRequired", isSignal: true, isRequired: false, transformFunction: null }, ignoreClassMarginLastItem: { classPropertyName: "ignoreClassMarginLastItem", publicName: "ignoreClassMarginLastItem", isSignal: true, isRequired: false, transformFunction: null }, typeRadio: { classPropertyName: "typeRadio", publicName: "typeRadio", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, classLabelInclude: { classPropertyName: "classLabelInclude", publicName: "classLabelInclude", isSignal: true, isRequired: false, transformFunction: null }, classItemInclude: { classPropertyName: "classItemInclude", publicName: "classItemInclude", isSignal: true, isRequired: false, transformFunction: null }, alwaysShowSubText: { classPropertyName: "alwaysShowSubText", publicName: "alwaysShowSubText", isSignal: true, isRequired: false, transformFunction: null }, horizontalClassInclude: { classPropertyName: "horizontalClassInclude", publicName: "horizontalClassInclude", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { groups: "groupsChange", outClickButton: "outClickButton", outChange: "outChange", outFunctionsControl: "outFunctionsControl" }, ngImport: i0, template: "<div class=\"flex flex-col w-full\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\"\n (outClickButton)=\"handlerClickButton($event)\" />\n }\n @if (isErrorRequired()) {\n <div class=\"flex items-center mb-[8px]\">\n @let constHtmlMessage = validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID;\n <span\n class=\"libs-ui-font-h5r libs-ui-text-error\"\n [innerHtml]=\"constHtmlMessage | translate: validRequired()?.interpolateParams\"></span>\n </div>\n }\n <div\n class=\"libs-ui-radio-group\"\n [class.flex]=\"horizontal()\">\n @for (group of groups(); track group; let isLast = $last) {\n <div [class]=\"horizontal() ? (isLast && ignoreClassMarginLastItem() ? '' : horizontalClassInclude() || 'mr-[24px]') : ''\">\n <div [class]=\"classItemInclude()\">\n <libs_ui-components-radio-single\n [labelInterpolateParams]=\"group.item.labelInterpolateParams\"\n [label]=\"group.item.label || ' '\"\n [active]=\"group.item.active || false\"\n [key]=\"group.item[fieldKey()]\"\n [disable]=\"group['disableByKeys'] || disable() || group.item.disable || false\"\n [disableLabel]=\"group.item.disableLabel || false\"\n [classLabelInclude]=\"classLabelInclude() || group.item.classLabelInclude || 'libs-ui-font-h5r'\"\n [classInclude]=\"classInclude() || group.item.classInclude || ''\"\n [zIndexLabel]=\"group.item.zIndexLabel\"\n [typeRadio]=\"typeRadio()\"\n [avatarConfig]=\"group.item.avatarConfig\"\n (outChange)=\"handlerChange($event)\"\n [popover]=\"group.item.popover\"\n [clickExactly]=\"clickExactly()\" />\n </div>\n @if (group.item.active || alwaysShowSubText()) {\n @if (group.subText) {\n <div\n [class]=\"'libs-ui-radio-group-sub-text libs-ui-font-h7r ' + (group.classIncludeSubText ? group.classIncludeSubText : '')\"\n [innerHtml]=\"group.subText | translate\"></div>\n }\n <ng-container *ngTemplateOutlet=\"group?.subTemplate || null; context: { item: group.item }\" />\n }\n </div>\n }\n </div>\n</div>\n", styles: [".libs-ui-radio-group .libs-ui-radio-group-sub-text{color:#9ca2ad;margin-left:24px;margin-bottom:4px;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LibsUiComponentsLabelComponent, selector: "libs_ui-components-label", inputs: ["iconPopoverClass", "classInclude", "labelLeft", "labelLeftClass", "labelLeftBehindToggleButton", "popover", "required", "buttonsLeft", "disableButtonsLeft", "buttonsRight", "disableButtonsRight", "labelRight", "labelRightClass", "labelRightRequired", "hasToggle", "toggleSize", "toggleActive", "toggleDisable", "description", "descriptionClass", "buttonsDescription", "disableButtonsDescription", "buttonsDescriptionContainerClass", "onlyShowCount", "zIndexPopover", "timerDestroyPopover", "count", "limitLength"], outputs: ["outClickButton", "outSwitchEvent", "outLabelRightClick", "outLabelLeftClick"] }, { kind: "component", type: LibsUiComponentsRadioSingleComponent, selector: "libs_ui-components-radio-single", inputs: ["key", "active", "classInclude", "label", "labelInterpolateParams", "ignorePopoverLabel", "classLabelInclude", "linkImage", "linkImageError", "avatarConfig", "classImageInclude", "imgTypeIcon", "bullet", "popover", "disable", "disableLabel", "clickExactly", "typeRadio", "ignoreRadio", "zIndexLabel", "classIncludeIcon", "dataComponentOutlet", "componentOutlet"], outputs: ["activeChange", "outClickLabel", "outChange", "outChangStageFlagMousePopover"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
124
|
+
}
|
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsRadioGroupComponent, decorators: [{
|
|
126
|
+
type: Component,
|
|
127
|
+
args: [{ selector: 'libs_ui-components-radio-group', standalone: true, imports: [TranslateModule, NgTemplateOutlet, LibsUiComponentsLabelComponent, LibsUiComponentsRadioSingleComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col w-full\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\"\n (outClickButton)=\"handlerClickButton($event)\" />\n }\n @if (isErrorRequired()) {\n <div class=\"flex items-center mb-[8px]\">\n @let constHtmlMessage = validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID;\n <span\n class=\"libs-ui-font-h5r libs-ui-text-error\"\n [innerHtml]=\"constHtmlMessage | translate: validRequired()?.interpolateParams\"></span>\n </div>\n }\n <div\n class=\"libs-ui-radio-group\"\n [class.flex]=\"horizontal()\">\n @for (group of groups(); track group; let isLast = $last) {\n <div [class]=\"horizontal() ? (isLast && ignoreClassMarginLastItem() ? '' : horizontalClassInclude() || 'mr-[24px]') : ''\">\n <div [class]=\"classItemInclude()\">\n <libs_ui-components-radio-single\n [labelInterpolateParams]=\"group.item.labelInterpolateParams\"\n [label]=\"group.item.label || ' '\"\n [active]=\"group.item.active || false\"\n [key]=\"group.item[fieldKey()]\"\n [disable]=\"group['disableByKeys'] || disable() || group.item.disable || false\"\n [disableLabel]=\"group.item.disableLabel || false\"\n [classLabelInclude]=\"classLabelInclude() || group.item.classLabelInclude || 'libs-ui-font-h5r'\"\n [classInclude]=\"classInclude() || group.item.classInclude || ''\"\n [zIndexLabel]=\"group.item.zIndexLabel\"\n [typeRadio]=\"typeRadio()\"\n [avatarConfig]=\"group.item.avatarConfig\"\n (outChange)=\"handlerChange($event)\"\n [popover]=\"group.item.popover\"\n [clickExactly]=\"clickExactly()\" />\n </div>\n @if (group.item.active || alwaysShowSubText()) {\n @if (group.subText) {\n <div\n [class]=\"'libs-ui-radio-group-sub-text libs-ui-font-h7r ' + (group.classIncludeSubText ? group.classIncludeSubText : '')\"\n [innerHtml]=\"group.subText | translate\"></div>\n }\n <ng-container *ngTemplateOutlet=\"group?.subTemplate || null; context: { item: group.item }\" />\n }\n </div>\n }\n </div>\n</div>\n", styles: [".libs-ui-radio-group .libs-ui-radio-group-sub-text{color:#9ca2ad;margin-left:24px;margin-bottom:4px;width:100%}\n"] }]
|
|
128
|
+
}], ctorParameters: () => [] });
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Generated bundle index. Do not edit.
|
|
132
|
+
*/
|
|
133
|
+
|
|
134
|
+
export { LibsUiComponentsRadioGroupComponent };
|
|
135
|
+
//# sourceMappingURL=libs-ui-components-radio-group.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"libs-ui-components-radio-group.mjs","sources":["../../../../../../libs-ui/components/radio/group/src/group.component.ts","../../../../../../libs-ui/components/radio/group/src/group.component.html","../../../../../../libs-ui/components/radio/group/src/libs-ui-components-radio-group.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, OnInit, effect, input, model, output, signal, untracked } from '@angular/core';\nimport { IButton } from '@libs-ui/components-buttons-button';\nimport { ILabel, LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { IRadioEvent, LibsUiComponentsRadioSingleComponent } from '@libs-ui/components-radio-single';\nimport { ERROR_MESSAGE_EMPTY_VALID, isNil } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { IRadioGroupFunctionControlEvent, IRadioGroupItem } from './interfaces';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-radio-group',\n templateUrl: './group.component.html',\n styleUrls: ['./group.component.scss'],\n standalone: true,\n imports: [TranslateModule, NgTemplateOutlet, LibsUiComponentsLabelComponent, LibsUiComponentsRadioSingleComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsRadioGroupComponent implements OnInit {\n // #region PROPERTY\n protected readonly ERROR_MESSAGE_EMPTY_VALID = ERROR_MESSAGE_EMPTY_VALID;\n protected isErrorRequired = signal<boolean>(false);\n\n // #region INPUT\n readonly fieldKey = input<string, string>('key', { transform: (value) => value || 'key' });\n readonly keyActive = input<unknown>();\n readonly keysDisable = input<Array<string>>();\n readonly groups = model<Array<IRadioGroupItem>>([]);\n readonly disable = input<boolean | undefined, boolean | undefined>(false, { transform: (value) => value ?? false });\n readonly clickExactly = input<boolean | undefined, boolean | undefined>(true, { transform: (value) => value ?? true });\n readonly horizontal = input<boolean | undefined, boolean | undefined>(false, { transform: (value) => value ?? false });\n readonly labelConfig = input<ILabel | undefined>();\n readonly validRequired = input<\n | {\n message?: string;\n interpolateParams?: { any: any };\n }\n | undefined\n >();\n readonly ignoreClassMarginLastItem = input<boolean | undefined>(false);\n readonly typeRadio = input<'normal' | 'medium' | undefined, 'normal' | 'medium' | undefined>('normal', { transform: (value) => value ?? 'normal' });\n readonly classInclude = input<string | undefined, string | undefined>('', { transform: (value) => value ?? '' });\n readonly classLabelInclude = input<string | undefined, string | undefined>('', { transform: (value) => value ?? '' });\n readonly classItemInclude = input<string | undefined, string | undefined>('py-[4px]', { transform: (value) => value ?? 'py-[4px]' });\n readonly alwaysShowSubText = input<boolean | undefined>();\n readonly horizontalClassInclude = input<string | undefined, string | undefined>('', { transform: (value) => value ?? '' });\n\n // #region OUTPUT\n readonly outClickButton = output<IButton>();\n readonly outChange = output<IRadioEvent>();\n readonly outFunctionsControl = output<IRadioGroupFunctionControlEvent>();\n\n constructor() {\n effect(() => {\n if (isNil(this.keyActive()) || !this.fieldKey()) {\n return;\n }\n untracked(() => {\n this.groups.update((data) => {\n return data.map<IRadioGroupItem>((group) => {\n group.item.active = false;\n if (group.item && group.item[this.fieldKey()] === this.keyActive()) {\n group.item.active = true;\n }\n return group;\n });\n });\n });\n });\n\n effect(() => {\n if (!Array.isArray(this.keysDisable()) || !this.fieldKey()) {\n return;\n }\n untracked(() => {\n this.groups.update((data) => {\n return data.map<IRadioGroupItem>((group) => {\n group.disableByKeys = false;\n if (group.item && this.keysDisable()?.includes(group.item[this.fieldKey()])) {\n group.disableByKeys = true;\n }\n return group;\n });\n });\n });\n });\n }\n\n ngOnInit() {\n this.outFunctionsControl.emit(this.FunctionsControl);\n }\n\n // #region FUNCTIONS\n public get FunctionsControl(): IRadioGroupFunctionControlEvent {\n return {\n checkIsValid: this.checkValid.bind(this),\n resetError: this.resetError.bind(this),\n reset: async () => {\n this.groups.update((data) => {\n return data.map<IRadioGroupItem>((group) => {\n group.item.active = false;\n return group;\n });\n });\n this.resetError();\n },\n };\n }\n protected async handlerClickButton(event: IButton) {\n this.outClickButton.emit(event);\n }\n\n protected async handlerChange(dataEvent: { active: boolean; key: any }) {\n if (this.disable()) {\n return;\n }\n const event: any = dataEvent;\n\n this.groups.update((data) => {\n return data.map<IRadioGroupItem>((group) => {\n const item = group.item;\n\n item.active = false;\n if (item[this.fieldKey()] === dataEvent.key) {\n item.active = dataEvent.active;\n event.item = item;\n }\n return group;\n });\n });\n this.outChange.emit(event);\n this.checkValid();\n }\n\n private async checkValid(): Promise<boolean> {\n this.isErrorRequired.set(false);\n if (!this.validRequired()) {\n return true;\n }\n\n this.isErrorRequired.set(!this.groups()?.some((group: IRadioGroupItem) => group.item?.active));\n\n return !this.isErrorRequired();\n }\n\n private async resetError() {\n this.isErrorRequired.set(false);\n }\n}\n","<div class=\"flex flex-col w-full\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\"\n (outClickButton)=\"handlerClickButton($event)\" />\n }\n @if (isErrorRequired()) {\n <div class=\"flex items-center mb-[8px]\">\n @let constHtmlMessage = validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID;\n <span\n class=\"libs-ui-font-h5r libs-ui-text-error\"\n [innerHtml]=\"constHtmlMessage | translate: validRequired()?.interpolateParams\"></span>\n </div>\n }\n <div\n class=\"libs-ui-radio-group\"\n [class.flex]=\"horizontal()\">\n @for (group of groups(); track group; let isLast = $last) {\n <div [class]=\"horizontal() ? (isLast && ignoreClassMarginLastItem() ? '' : horizontalClassInclude() || 'mr-[24px]') : ''\">\n <div [class]=\"classItemInclude()\">\n <libs_ui-components-radio-single\n [labelInterpolateParams]=\"group.item.labelInterpolateParams\"\n [label]=\"group.item.label || ' '\"\n [active]=\"group.item.active || false\"\n [key]=\"group.item[fieldKey()]\"\n [disable]=\"group['disableByKeys'] || disable() || group.item.disable || false\"\n [disableLabel]=\"group.item.disableLabel || false\"\n [classLabelInclude]=\"classLabelInclude() || group.item.classLabelInclude || 'libs-ui-font-h5r'\"\n [classInclude]=\"classInclude() || group.item.classInclude || ''\"\n [zIndexLabel]=\"group.item.zIndexLabel\"\n [typeRadio]=\"typeRadio()\"\n [avatarConfig]=\"group.item.avatarConfig\"\n (outChange)=\"handlerChange($event)\"\n [popover]=\"group.item.popover\"\n [clickExactly]=\"clickExactly()\" />\n </div>\n @if (group.item.active || alwaysShowSubText()) {\n @if (group.subText) {\n <div\n [class]=\"'libs-ui-radio-group-sub-text libs-ui-font-h7r ' + (group.classIncludeSubText ? group.classIncludeSubText : '')\"\n [innerHtml]=\"group.subText | translate\"></div>\n }\n <ng-container *ngTemplateOutlet=\"group?.subTemplate || null; context: { item: group.item }\" />\n }\n </div>\n }\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { IButton } from '@libs-ui/components-buttons-button';
|
|
3
|
+
import { ILabel } from '@libs-ui/components-label';
|
|
4
|
+
import { IRadioEvent } from '@libs-ui/components-radio-single';
|
|
5
|
+
import { IRadioGroupFunctionControlEvent, IRadioGroupItem } from './interfaces';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export declare class LibsUiComponentsRadioGroupComponent implements OnInit {
|
|
8
|
+
protected readonly ERROR_MESSAGE_EMPTY_VALID = "i18n_valid_empty_message";
|
|
9
|
+
protected isErrorRequired: import("@angular/core").WritableSignal<boolean>;
|
|
10
|
+
readonly fieldKey: import("@angular/core").InputSignalWithTransform<string, string>;
|
|
11
|
+
readonly keyActive: import("@angular/core").InputSignal<unknown>;
|
|
12
|
+
readonly keysDisable: import("@angular/core").InputSignal<string[] | undefined>;
|
|
13
|
+
readonly groups: import("@angular/core").ModelSignal<IRadioGroupItem[]>;
|
|
14
|
+
readonly disable: import("@angular/core").InputSignalWithTransform<boolean | undefined, boolean | undefined>;
|
|
15
|
+
readonly clickExactly: import("@angular/core").InputSignalWithTransform<boolean | undefined, boolean | undefined>;
|
|
16
|
+
readonly horizontal: import("@angular/core").InputSignalWithTransform<boolean | undefined, boolean | undefined>;
|
|
17
|
+
readonly labelConfig: import("@angular/core").InputSignal<ILabel | undefined>;
|
|
18
|
+
readonly validRequired: import("@angular/core").InputSignal<{
|
|
19
|
+
message?: string;
|
|
20
|
+
interpolateParams?: {
|
|
21
|
+
any: any;
|
|
22
|
+
};
|
|
23
|
+
} | undefined>;
|
|
24
|
+
readonly ignoreClassMarginLastItem: import("@angular/core").InputSignal<boolean | undefined>;
|
|
25
|
+
readonly typeRadio: import("@angular/core").InputSignalWithTransform<"normal" | "medium" | undefined, "normal" | "medium" | undefined>;
|
|
26
|
+
readonly classInclude: import("@angular/core").InputSignalWithTransform<string | undefined, string | undefined>;
|
|
27
|
+
readonly classLabelInclude: import("@angular/core").InputSignalWithTransform<string | undefined, string | undefined>;
|
|
28
|
+
readonly classItemInclude: import("@angular/core").InputSignalWithTransform<string | undefined, string | undefined>;
|
|
29
|
+
readonly alwaysShowSubText: import("@angular/core").InputSignal<boolean | undefined>;
|
|
30
|
+
readonly horizontalClassInclude: import("@angular/core").InputSignalWithTransform<string | undefined, string | undefined>;
|
|
31
|
+
readonly outClickButton: import("@angular/core").OutputEmitterRef<IButton>;
|
|
32
|
+
readonly outChange: import("@angular/core").OutputEmitterRef<IRadioEvent>;
|
|
33
|
+
readonly outFunctionsControl: import("@angular/core").OutputEmitterRef<IRadioGroupFunctionControlEvent>;
|
|
34
|
+
constructor();
|
|
35
|
+
ngOnInit(): void;
|
|
36
|
+
get FunctionsControl(): IRadioGroupFunctionControlEvent;
|
|
37
|
+
protected handlerClickButton(event: IButton): Promise<void>;
|
|
38
|
+
protected handlerChange(dataEvent: {
|
|
39
|
+
active: boolean;
|
|
40
|
+
key: any;
|
|
41
|
+
}): Promise<void>;
|
|
42
|
+
private checkValid;
|
|
43
|
+
private resetError;
|
|
44
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiComponentsRadioGroupComponent, never>;
|
|
45
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsRadioGroupComponent, "libs_ui-components-radio-group", never, { "fieldKey": { "alias": "fieldKey"; "required": false; "isSignal": true; }; "keyActive": { "alias": "keyActive"; "required": false; "isSignal": true; }; "keysDisable": { "alias": "keysDisable"; "required": false; "isSignal": true; }; "groups": { "alias": "groups"; "required": false; "isSignal": true; }; "disable": { "alias": "disable"; "required": false; "isSignal": true; }; "clickExactly": { "alias": "clickExactly"; "required": false; "isSignal": true; }; "horizontal": { "alias": "horizontal"; "required": false; "isSignal": true; }; "labelConfig": { "alias": "labelConfig"; "required": false; "isSignal": true; }; "validRequired": { "alias": "validRequired"; "required": false; "isSignal": true; }; "ignoreClassMarginLastItem": { "alias": "ignoreClassMarginLastItem"; "required": false; "isSignal": true; }; "typeRadio": { "alias": "typeRadio"; "required": false; "isSignal": true; }; "classInclude": { "alias": "classInclude"; "required": false; "isSignal": true; }; "classLabelInclude": { "alias": "classLabelInclude"; "required": false; "isSignal": true; }; "classItemInclude": { "alias": "classItemInclude"; "required": false; "isSignal": true; }; "alwaysShowSubText": { "alias": "alwaysShowSubText"; "required": false; "isSignal": true; }; "horizontalClassInclude": { "alias": "horizontalClassInclude"; "required": false; "isSignal": true; }; }, { "groups": "groupsChange"; "outClickButton": "outClickButton"; "outChange": "outChange"; "outFunctionsControl": "outFunctionsControl"; }, never, never, true, never>;
|
|
46
|
+
}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TemplateRef } from '@angular/core';
|
|
2
|
+
import { IRadioItem } from '@libs-ui/components-radio-single';
|
|
3
|
+
import { TYPE_TEMPLATE_REF } from '@libs-ui/interfaces-types';
|
|
4
|
+
export interface IRadioGroupItem {
|
|
5
|
+
item: IRadioItem;
|
|
6
|
+
subText?: string;
|
|
7
|
+
classIncludeSubText?: string;
|
|
8
|
+
subTemplate?: TemplateRef<TYPE_TEMPLATE_REF>;
|
|
9
|
+
disableByKeys?: boolean;
|
|
10
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@libs-ui/components-radio-group",
|
|
3
|
+
"version": "0.1.1-1",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": ">=18.0.0",
|
|
6
|
+
"@angular/core": ">=18.0.0",
|
|
7
|
+
"@libs-ui/components-buttons-button": "0.1.1-1",
|
|
8
|
+
"@libs-ui/components-label": "0.1.1-1",
|
|
9
|
+
"@libs-ui/components-radio-single": "0.1.1-1",
|
|
10
|
+
"@libs-ui/utils": "0.1.1-1",
|
|
11
|
+
"@ngx-translate/core": "^15.0.0",
|
|
12
|
+
"@libs-ui/interfaces-types": "0.1.1-1"
|
|
13
|
+
},
|
|
14
|
+
"sideEffects": false,
|
|
15
|
+
"module": "fesm2022/libs-ui-components-radio-group.mjs",
|
|
16
|
+
"typings": "index.d.ts",
|
|
17
|
+
"exports": {
|
|
18
|
+
"./package.json": {
|
|
19
|
+
"default": "./package.json"
|
|
20
|
+
},
|
|
21
|
+
".": {
|
|
22
|
+
"types": "./index.d.ts",
|
|
23
|
+
"esm2022": "./esm2022/libs-ui-components-radio-group.mjs",
|
|
24
|
+
"esm": "./esm2022/libs-ui-components-radio-group.mjs",
|
|
25
|
+
"default": "./fesm2022/libs-ui-components-radio-group.mjs"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"tslib": "^2.3.0"
|
|
30
|
+
}
|
|
31
|
+
}
|