@libs-ui/components-inputs-color 0.2.356-40 → 0.2.356-42
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.
|
@@ -131,10 +131,10 @@ export class LibsUiComponentsInputsColorComponent {
|
|
|
131
131
|
this.popoverAddColorFunctionControl()?.removePopoverOverlay();
|
|
132
132
|
}
|
|
133
133
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsColorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
134
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsInputsColorComponent, isStandalone: true, selector: "libs_ui-components-inputs-color", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, customOptions: { classPropertyName: "customOptions", publicName: "customOptions", isSignal: true, isRequired: false, transformFunction: null }, functionGetListColorDefault: { classPropertyName: "functionGetListColorDefault", publicName: "functionGetListColorDefault", isSignal: true, isRequired: false, transformFunction: null }, functionGetListColorCustom: { classPropertyName: "functionGetListColorCustom", publicName: "functionGetListColorCustom", isSignal: true, isRequired: false, transformFunction: null }, functionSetListColorCustom: { classPropertyName: "functionSetListColorCustom", publicName: "functionSetListColorCustom", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { data: "dataChange", zIndex: "zIndexChange", outColorChange: "outColorChange" }, ngImport: i0, template: "<div\n class=\"w-full flex justify-between rounded-[4px] h-[32px]\"\n [class.libs-ui-border-general]=\"!showPopup()\"\n [class.libs-ui-border-primary-focus-general]=\"showPopup()\">\n <div\n LibsUiComponentsPopoverDirective\n class=\"w-full flex\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n template: element,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex(),\n classInclude: 'w-[334px]',\n direction: 'left',\n directionDistance: 4,\n position: {\n mode: 'start',\n distance: 0,\n },\n }\"\n [flagMouse]=\"flagMouse()\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\">\n <div class=\"px-[16px] flex items-center\">\n <span\n class=\"w-[16px] h-[16px] rounded-[4px] libs-ui-border-general\"\n [style.background-color]=\"data().color\"></span>\n <span class=\"libs-ui-font-h5r ml-[8px]\">{{ data().color }}</span>\n </div>\n </div>\n <div class=\"w-[80px] shrink-0 libs-ui-border-left-general\">\n <libs_ui-components-inputs-valid\n [noBorder]=\"true\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [(item)]=\"data\"\n [fieldNameBind]=\"'opacity'\"\n [unitsRight]=\"[{ id: '%', label: '%' }]\"\n [keySelectedUnitRight]=\"'%'\"\n [classIncludeInput]=\"'text-center !p-0 !h-[28px] !min-h-[28px]'\"\n [configUnitRight]=\"{ classInclude: '!h-[30px]', fieldKey: 'id', fieldLabel: 'label' }\"\n (outValueChange)=\"handlerChangeOpacity()\" />\n </div>\n</div>\n\n<ng-template #element>\n <div class=\"p-[16px] w-full\">\n <div class=\"mb-[16px] grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorDefault(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (keyup.enter)=\"handlerSelectColor($event, color)\"></div>\n </div>\n }\n </div>\n <div class=\"flex items-center justify-between\">\n <span class=\"libs-ui-font-h5m color-[#6a7383]\">{{ 'i18n_color_custom' | translate }}</span>\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n [classIconLeft]=\"'libs-ui-icon-add'\"\n [label]=\"'i18n_add_new'\"\n [popover]=\"{\n mode: 'click-toggle',\n ignoreHiddenPopoverContentWhenMouseLeave: true,\n config: {\n template: colorPicker,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex() + 1,\n classInclude: 'w-[350px]',\n direction: 'left',\n directionDistance: -100,\n position: {\n mode: 'start',\n distance: -165,\n },\n },\n }\"\n [classInclude]=\"'py-[2px] px-[0]'\"\n (outPopoverEvent)=\"handlerPopoverAddColorEvent($event)\"\n (outFunctionsControl)=\"handlerAddColorFunctionControl($event)\" />\n </div>\n @if (colorCustom().length) {\n <div class=\"grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorCustom(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (keyup.enter)=\"handlerSelectColor($event, color)\"></div>\n </div>\n }\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #colorPicker>\n <div class=\"p-[16px] w-auto h-auto\">\n <libs_ui-components-color_picker\n [customOptions]=\"customOptions()\"\n (outColorChange)=\"handlerColorChange($event)\" />\n <div class=\"flex items-center justify-end pt-[16px]\">\n <libs_ui-components-buttons-button\n [label]=\"'i18n_cancel'\"\n [type]=\"'button-third'\"\n (outClick)=\"handlerAction($event, 'cancel')\" />\n <libs_ui-components-buttons-button\n [label]=\"'i18n_apply'\"\n [classInclude]=\"'ml-[16px]'\"\n (outClick)=\"handlerAction($event, 'apply')\" />\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: LowerCasePipe, name: "lowercase" }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsInputsValidComponent, selector: "libs_ui-components-inputs-valid", inputs: ["item", "labelConfig", "emitEmptyInDataTypeNumber", "ignoreBlockInputMaxValue", "fieldNameBind", "showCount", "typeComponentSelectItem", "valueComponentSelectItem", "disableComponentSelectItem", "tagInput", "dataType", "typeInput", "modeInput", "resetAutoCompletePassword", "textAreaEnterNotNewLine", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "ignoreWidthInput100", "classIncludeInput", "classContainerInput", "readonly", "disable", "noBorder", "backgroundNone", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "classContainerBottomInput", "autoRemoveEmoji", "defaultHeight", "maxHeightTextArea", "minHeightTextArea", "ignoreShowError", "ignoreShowMessageError", "borderError", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "zIndexPopoverContent", "unitsLeft", "configUnitLeft", "keySelectedUnitLeft", "unitsRight", "configUnitRight", "keySelectedUnitRight", "maxValueNumber", "minValueNumber", "ignoreContentLeft", "ignoreContentRight", "isBaselineStyle", "valuePatternShowError", "validPattern", "validRequired", "validMinLength", "validMinValue", "validMaxValue", "validMaxLength", "functionValid", "maxLength", "positionMessageErrorStartInput", "classInclude", "resize", "templateLeftBottomInput", "templateRightBottomInput", "onlyAcceptNegativeValue", "autoAddZeroLessThan10InTypeInt", "maxLengthNumberCount", "classMessageErrorInclude", "ignoreStopPropagationEvent", "ignoreUnitRightClassReadOnly", "paddingRightCustomSpecific", "focusTimeOut", "debounceTimeValidate"], outputs: ["itemChange", "outValueChange", "outSelect", "outIconLeft", "outIconRight", "outClickButtonLabel", "outSwitchEventLabel", "outLabelRightClick", "outEnterInputEvent", "outHeightAreaChange", "outFunctionsControl", "outFocusAndBlur", "outChangeValueByButtonUpDown"] }, { kind: "component", type: LibsUiComponentsColorPickerComponent, selector: "libs_ui-components-color_picker", inputs: ["customOptions", "noEmitEventColorWhenInitComponent"], outputs: ["outColorChange", "outColorChangeMultipleType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
134
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsInputsColorComponent, isStandalone: true, selector: "libs_ui-components-inputs-color", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, customOptions: { classPropertyName: "customOptions", publicName: "customOptions", isSignal: true, isRequired: false, transformFunction: null }, functionGetListColorDefault: { classPropertyName: "functionGetListColorDefault", publicName: "functionGetListColorDefault", isSignal: true, isRequired: false, transformFunction: null }, functionGetListColorCustom: { classPropertyName: "functionGetListColorCustom", publicName: "functionGetListColorCustom", isSignal: true, isRequired: false, transformFunction: null }, functionSetListColorCustom: { classPropertyName: "functionSetListColorCustom", publicName: "functionSetListColorCustom", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { data: "dataChange", zIndex: "zIndexChange", outColorChange: "outColorChange" }, ngImport: i0, template: "<div\n class=\"w-full flex justify-between rounded-[4px] h-[32px]\"\n [class.libs-ui-border-general]=\"!showPopup()\"\n [class.libs-ui-border-primary-focus-general]=\"showPopup()\">\n <div\n LibsUiComponentsPopoverDirective\n class=\"w-full flex\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n template: element,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex(),\n classInclude: 'w-[334px]',\n direction: 'left',\n directionDistance: 4,\n position: {\n mode: 'start',\n distance: 0,\n },\n }\"\n [flagMouse]=\"flagMouse()\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\">\n <div class=\"px-[16px] flex items-center\">\n <span\n class=\"w-[16px] h-[16px] rounded-[4px] libs-ui-border-general\"\n [style.background-color]=\"data().color\"></span>\n <span class=\"libs-ui-font-h5r ml-[8px]\">{{ data().color }}</span>\n </div>\n </div>\n <div class=\"w-[80px] shrink-0 libs-ui-border-left-general\">\n <libs_ui-components-inputs-valid\n [noBorder]=\"true\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [(item)]=\"data\"\n [fieldNameBind]=\"'opacity'\"\n [unitsRight]=\"[{ id: '%', label: '%' }]\"\n [keySelectedUnitRight]=\"'%'\"\n [classIncludeInput]=\"'text-center !p-0 !h-[28px] !min-h-[28px]'\"\n [configUnitRight]=\"{ classInclude: '!h-[30px]', fieldKey: 'id', fieldLabel: 'label' }\"\n (outValueChange)=\"handlerChangeOpacity()\" />\n </div>\n</div>\n\n<ng-template #element>\n <div class=\"p-[16px] w-full\">\n <div class=\"mb-[16px] grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorDefault(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (keydown.enter)=\"handlerSelectColor($event, color)\"></div>\n </div>\n }\n </div>\n <div class=\"flex items-center justify-between\">\n <span class=\"libs-ui-font-h5m color-[#6a7383]\">{{ 'i18n_color_custom' | translate }}</span>\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n [classIconLeft]=\"'libs-ui-icon-add'\"\n [label]=\"'i18n_add_new'\"\n [popover]=\"{\n mode: 'click-toggle',\n ignoreHiddenPopoverContentWhenMouseLeave: true,\n config: {\n template: colorPicker,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex() + 1,\n classInclude: 'w-[350px]',\n direction: 'left',\n directionDistance: -100,\n position: {\n mode: 'start',\n distance: -165,\n },\n },\n }\"\n [classInclude]=\"'py-[2px] px-[0]'\"\n (outPopoverEvent)=\"handlerPopoverAddColorEvent($event)\"\n (outFunctionsControl)=\"handlerAddColorFunctionControl($event)\" />\n </div>\n @if (colorCustom().length) {\n <div class=\"grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorCustom(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (keydown.enter)=\"handlerSelectColor($event, color)\"></div>\n </div>\n }\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #colorPicker>\n <div class=\"p-[16px] w-auto h-auto\">\n <libs_ui-components-color_picker\n [customOptions]=\"customOptions()\"\n (outColorChange)=\"handlerColorChange($event)\" />\n <div class=\"flex items-center justify-end pt-[16px]\">\n <libs_ui-components-buttons-button\n [label]=\"'i18n_cancel'\"\n [type]=\"'button-third'\"\n (outClick)=\"handlerAction($event, 'cancel')\" />\n <libs_ui-components-buttons-button\n [label]=\"'i18n_apply'\"\n [classInclude]=\"'ml-[16px]'\"\n (outClick)=\"handlerAction($event, 'apply')\" />\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: LowerCasePipe, name: "lowercase" }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsInputsValidComponent, selector: "libs_ui-components-inputs-valid", inputs: ["item", "labelConfig", "emitEmptyInDataTypeNumber", "ignoreBlockInputMaxValue", "fieldNameBind", "showCount", "typeComponentSelectItem", "valueComponentSelectItem", "disableComponentSelectItem", "tagInput", "dataType", "typeInput", "modeInput", "resetAutoCompletePassword", "textAreaEnterNotNewLine", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "ignoreWidthInput100", "classIncludeInput", "classContainerInput", "readonly", "disable", "noBorder", "backgroundNone", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "classContainerBottomInput", "autoRemoveEmoji", "defaultHeight", "maxHeightTextArea", "minHeightTextArea", "ignoreShowError", "ignoreShowMessageError", "borderError", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "zIndexPopoverContent", "unitsLeft", "configUnitLeft", "keySelectedUnitLeft", "unitsRight", "configUnitRight", "keySelectedUnitRight", "maxValueNumber", "minValueNumber", "ignoreContentLeft", "ignoreContentRight", "isBaselineStyle", "valuePatternShowError", "validPattern", "validRequired", "validMinLength", "validMinValue", "validMaxValue", "validMaxLength", "functionValid", "maxLength", "positionMessageErrorStartInput", "classInclude", "resize", "templateLeftBottomInput", "templateRightBottomInput", "onlyAcceptNegativeValue", "autoAddZeroLessThan10InTypeInt", "maxLengthNumberCount", "classMessageErrorInclude", "ignoreStopPropagationEvent", "ignoreUnitRightClassReadOnly", "paddingRightCustomSpecific", "focusTimeOut", "debounceTimeValidate"], outputs: ["itemChange", "outValueChange", "outSelect", "outIconLeft", "outIconRight", "outClickButtonLabel", "outSwitchEventLabel", "outLabelRightClick", "outEnterInputEvent", "outHeightAreaChange", "outFunctionsControl", "outFocusAndBlur", "outChangeValueByButtonUpDown"] }, { kind: "component", type: LibsUiComponentsColorPickerComponent, selector: "libs_ui-components-color_picker", inputs: ["customOptions", "noEmitEventColorWhenInitComponent"], outputs: ["outColorChange", "outColorChangeMultipleType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
135
135
|
}
|
|
136
136
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsColorComponent, decorators: [{
|
|
137
137
|
type: Component,
|
|
138
|
-
args: [{ selector: 'libs_ui-components-inputs-color', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, LowerCasePipe, LibsUiComponentsPopoverComponent, LibsUiComponentsButtonsButtonComponent, LibsUiComponentsInputsValidComponent, LibsUiComponentsColorPickerComponent], template: "<div\n class=\"w-full flex justify-between rounded-[4px] h-[32px]\"\n [class.libs-ui-border-general]=\"!showPopup()\"\n [class.libs-ui-border-primary-focus-general]=\"showPopup()\">\n <div\n LibsUiComponentsPopoverDirective\n class=\"w-full flex\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n template: element,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex(),\n classInclude: 'w-[334px]',\n direction: 'left',\n directionDistance: 4,\n position: {\n mode: 'start',\n distance: 0,\n },\n }\"\n [flagMouse]=\"flagMouse()\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\">\n <div class=\"px-[16px] flex items-center\">\n <span\n class=\"w-[16px] h-[16px] rounded-[4px] libs-ui-border-general\"\n [style.background-color]=\"data().color\"></span>\n <span class=\"libs-ui-font-h5r ml-[8px]\">{{ data().color }}</span>\n </div>\n </div>\n <div class=\"w-[80px] shrink-0 libs-ui-border-left-general\">\n <libs_ui-components-inputs-valid\n [noBorder]=\"true\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [(item)]=\"data\"\n [fieldNameBind]=\"'opacity'\"\n [unitsRight]=\"[{ id: '%', label: '%' }]\"\n [keySelectedUnitRight]=\"'%'\"\n [classIncludeInput]=\"'text-center !p-0 !h-[28px] !min-h-[28px]'\"\n [configUnitRight]=\"{ classInclude: '!h-[30px]', fieldKey: 'id', fieldLabel: 'label' }\"\n (outValueChange)=\"handlerChangeOpacity()\" />\n </div>\n</div>\n\n<ng-template #element>\n <div class=\"p-[16px] w-full\">\n <div class=\"mb-[16px] grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorDefault(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (
|
|
138
|
+
args: [{ selector: 'libs_ui-components-inputs-color', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, LowerCasePipe, LibsUiComponentsPopoverComponent, LibsUiComponentsButtonsButtonComponent, LibsUiComponentsInputsValidComponent, LibsUiComponentsColorPickerComponent], template: "<div\n class=\"w-full flex justify-between rounded-[4px] h-[32px]\"\n [class.libs-ui-border-general]=\"!showPopup()\"\n [class.libs-ui-border-primary-focus-general]=\"showPopup()\">\n <div\n LibsUiComponentsPopoverDirective\n class=\"w-full flex\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n template: element,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex(),\n classInclude: 'w-[334px]',\n direction: 'left',\n directionDistance: 4,\n position: {\n mode: 'start',\n distance: 0,\n },\n }\"\n [flagMouse]=\"flagMouse()\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\">\n <div class=\"px-[16px] flex items-center\">\n <span\n class=\"w-[16px] h-[16px] rounded-[4px] libs-ui-border-general\"\n [style.background-color]=\"data().color\"></span>\n <span class=\"libs-ui-font-h5r ml-[8px]\">{{ data().color }}</span>\n </div>\n </div>\n <div class=\"w-[80px] shrink-0 libs-ui-border-left-general\">\n <libs_ui-components-inputs-valid\n [noBorder]=\"true\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [(item)]=\"data\"\n [fieldNameBind]=\"'opacity'\"\n [unitsRight]=\"[{ id: '%', label: '%' }]\"\n [keySelectedUnitRight]=\"'%'\"\n [classIncludeInput]=\"'text-center !p-0 !h-[28px] !min-h-[28px]'\"\n [configUnitRight]=\"{ classInclude: '!h-[30px]', fieldKey: 'id', fieldLabel: 'label' }\"\n (outValueChange)=\"handlerChangeOpacity()\" />\n </div>\n</div>\n\n<ng-template #element>\n <div class=\"p-[16px] w-full\">\n <div class=\"mb-[16px] grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorDefault(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (keydown.enter)=\"handlerSelectColor($event, color)\"></div>\n </div>\n }\n </div>\n <div class=\"flex items-center justify-between\">\n <span class=\"libs-ui-font-h5m color-[#6a7383]\">{{ 'i18n_color_custom' | translate }}</span>\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n [classIconLeft]=\"'libs-ui-icon-add'\"\n [label]=\"'i18n_add_new'\"\n [popover]=\"{\n mode: 'click-toggle',\n ignoreHiddenPopoverContentWhenMouseLeave: true,\n config: {\n template: colorPicker,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex() + 1,\n classInclude: 'w-[350px]',\n direction: 'left',\n directionDistance: -100,\n position: {\n mode: 'start',\n distance: -165,\n },\n },\n }\"\n [classInclude]=\"'py-[2px] px-[0]'\"\n (outPopoverEvent)=\"handlerPopoverAddColorEvent($event)\"\n (outFunctionsControl)=\"handlerAddColorFunctionControl($event)\" />\n </div>\n @if (colorCustom().length) {\n <div class=\"grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorCustom(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (keydown.enter)=\"handlerSelectColor($event, color)\"></div>\n </div>\n }\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #colorPicker>\n <div class=\"p-[16px] w-auto h-auto\">\n <libs_ui-components-color_picker\n [customOptions]=\"customOptions()\"\n (outColorChange)=\"handlerColorChange($event)\" />\n <div class=\"flex items-center justify-end pt-[16px]\">\n <libs_ui-components-buttons-button\n [label]=\"'i18n_cancel'\"\n [type]=\"'button-third'\"\n (outClick)=\"handlerAction($event, 'cancel')\" />\n <libs_ui-components-buttons-button\n [label]=\"'i18n_apply'\"\n [classInclude]=\"'ml-[16px]'\"\n (outClick)=\"handlerAction($event, 'apply')\" />\n </div>\n </div>\n</ng-template>\n" }]
|
|
139
139
|
}] });
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRzLWNvbG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvY29sb3Ivc3JjL2lucHV0cy1jb2xvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL2NvbG9yL3NyYy9pbnB1dHMtY29sb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RixPQUFPLEVBQXdCLG9DQUFvQyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUcsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDeEYsT0FBTyxFQUE0QyxnQ0FBZ0MsRUFBc0IsTUFBTSw2QkFBNkIsQ0FBQztBQUM3SSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFHdEQ7OztHQUdHO0FBU0gsTUFBTSxPQUFPLG9DQUFvQztJQUMvQyxtQkFBbUI7SUFDVCxZQUFZLEdBQUcsTUFBTSxDQUFnQixFQUFFLENBQUMsQ0FBQztJQUN6QyxTQUFTLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ25DLFdBQVcsR0FBRyxNQUFNLENBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLFNBQVMsR0FBRyxNQUFNLENBQWEsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLG1CQUFt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RUFBRSxDQUFDO0lBQ2hFLENBQUM7d0dBcEpVLG9DQUFvQzs0RkFBcEMsb0NBQW9DLDBtQ0N0QmpELHVxS0F1SUEsMkNEbkhZLGVBQWUsdUZBQUUsYUFBYSxrREFBRSxnQ0FBZ0Msb2dCQUFFLHNDQUFzQyxzakJBQUUsb0NBQW9DLGczREFBRSxvQ0FBb0M7OzRGQUVuTCxvQ0FBb0M7a0JBUmhELFNBQVM7K0JBRUUsaUNBQWlDLGNBRS9CLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsZ0NBQWdDLEVBQUUsc0NBQXNDLEVBQUUsb0NBQW9DLEVBQUUsb0NBQW9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb3dlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGlucHV0LCBtb2RlbCwgT25EZXN0cm95LCBPbkluaXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b24nO1xuaW1wb3J0IHsgSVBpY2tlckN1c3RvbU9wdGlvbnMsIExpYnNVaUNvbXBvbmVudHNDb2xvclBpY2tlckNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtY29sb3ItcGlja2VyJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNJbnB1dHNWYWxpZENvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtaW5wdXRzLXZhbGlkJztcbmltcG9ydCB7IElGbGFnTW91c2UsIElQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQsIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50LCBUWVBFX1BPUE9WRVJfRVZFTlQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXInO1xuaW1wb3J0IHsgVXRpbHNDYWNoZSB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgSUNvbG9yUGlja2VyRGF0YSB9IGZyb20gJy4vaW50ZXJmYWNlcy9jb2xvci5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIENvbXBvbmVudCBpbnB1dCBjaOG7jW4gbcOgdSBz4bqvYyAoQ29sb3IgUGlja2VyKSBo4buXIHRy4bujIMSR4buZIG3hu50gKG9wYWNpdHkpXG4gKiBDdW5nIGPhuqVwIGLhuqNuZyBtw6B1IG3hurdjIMSR4buLbmggdsOgIGNobyBwaMOpcCBuZ8aw4budaSBkw7luZyBsxrB1IGLhuqNuZyBtw6B1IHTDuXkgY2jhu4luaFxuICovXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtaW5wdXRzLWNvbG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0cy1jb2xvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBMb3dlckNhc2VQaXBlLCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCwgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQsIExpYnNVaUNvbXBvbmVudHNJbnB1dHNWYWxpZENvbXBvbmVudCwgTGlic1VpQ29tcG9uZW50c0NvbG9yUGlja2VyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0lucHV0c0NvbG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByb3RlY3RlZCBjb2xvckRlZmF1bHQgPSBzaWduYWw8QXJyYXk8c3RyaW5nPj4oW10pO1xuICBwcm90ZWN0ZWQgc2hvd1BvcHVwID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGNvbG9yQ3VzdG9tID0gc2lnbmFsPEFycmF5PHN0cmluZz4+KFtdKTtcbiAgcHJvdGVjdGVkIGZsYWdNb3VzZSA9IHNpZ25hbDxJRmxhZ01vdXNlPih7IGlzTW91c2VFbnRlcjogZmFsc2UsIGlzTW91c2VFbnRlckNvbnRlbnQ6IGZhbHNlIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29sb3JBZGQgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBvcG92ZXJGdW5jdGlvbkNvbnRyb2wgPSBzaWduYWw8SVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwb3BvdmVyQWRkQ29sb3JGdW5jdGlvbkNvbnRyb2wgPSBzaWduYWw8SVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvLyAjcmVnaW9uIElOUFVUXG4gIC8qKiBE4buvIGxp4buHdSBtw6B1IHPhuq9jIHbDoCDEkeG7mSBt4budIGhp4buHbiB04bqhaSAqL1xuICByZWFkb25seSBkYXRhID0gbW9kZWw8SUNvbG9yUGlja2VyRGF0YT4oeyBjb2xvcjogJycsIG9wYWNpdHk6IDEwMCB9KTtcblxuICAvKiogWi1pbmRleCBjaG8gcG9wb3ZlciBi4bqjbmcgbcOgdSAqL1xuICByZWFkb25seSB6SW5kZXggPSBtb2RlbDxudW1iZXI+KDEyMDApO1xuXG4gIC8qKiBD4bqldSBow6xuaCB0w7l5IGNo4buJbmggY2hvIGNvbG9yIHBpY2tlciAqL1xuICByZWFkb25seSBjdXN0b21PcHRpb25zID0gaW5wdXQ8SVBpY2tlckN1c3RvbU9wdGlvbnM+KCk7XG5cbiAgLyoqIEZ1bmN0aW9uIGzhuqV5IGRhbmggc8OhY2ggbcOgdSBt4bq3YyDEkeG7i25oICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uR2V0TGlzdENvbG9yRGVmYXVsdCA9IGlucHV0PCgpID0+IFByb21pc2U8QXJyYXk8c3RyaW5nPj4+KCk7XG5cbiAgLyoqIEZ1bmN0aW9uIGzhuqV5IGRhbmggc8OhY2ggbcOgdSB0w7l5IGNo4buJbmggxJHDoyBsxrB1ICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uR2V0TGlzdENvbG9yQ3VzdG9tID0gaW5wdXQ8KCkgPT4gUHJvbWlzZTxBcnJheTxzdHJpbmc+Pj4oKTtcblxuICAvKiogRnVuY3Rpb24gbMawdSBkYW5oIHPDoWNoIG3DoHUgdMO5eSBjaOG7iW5oIG3hu5tpICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uU2V0TGlzdENvbG9yQ3VzdG9tID0gaW5wdXQ8KGNvbG9yczogQXJyYXk8c3RyaW5nPikgPT4gUHJvbWlzZTx2b2lkPj4oKTtcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICAvKiogRW1pdCBraGkgbcOgdSBz4bqvYyBob+G6t2MgxJHhu5kgbeG7nSB0aGF5IMSR4buVaSAqL1xuICByZWFkb25seSBvdXRDb2xvckNoYW5nZSA9IG91dHB1dDxJQ29sb3JQaWNrZXJEYXRhPigpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ2V0TGlzdENvbG9yRGVmYXVsdCgpO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHByaXZhdGUgYXN5bmMgZ2V0TGlzdENvbG9yRGVmYXVsdCgpIHtcbiAgICBjb25zdCBmdW5jdGlvbkdldExpc3RDb2xvckRlZmF1bHQgPSB0aGlzLmZ1bmN0aW9uR2V0TGlzdENvbG9yRGVmYXVsdCgpO1xuXG4gICAgaWYgKGZ1bmN0aW9uR2V0TGlzdENvbG9yRGVmYXVsdCkge1xuICAgICAgdGhpcy5jb2xvckRlZmF1bHQuc2V0KGF3YWl0IGZ1bmN0aW9uR2V0TGlzdENvbG9yRGVmYXVsdCgpKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbG9yRGVmYXVsdC5zZXQoKGF3YWl0IFV0aWxzQ2FjaGUuR2V0QXN5bmMoJ2tuZmpzZGZ3ZW5jbHNkbmNranNkZnNkZnNkZnNoaW1kc2pkZmprc3V3ZXNmc2Rmc2RmJykpIHx8IFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0TGlzdENvbG9yQ3VzdG9tKCkge1xuICAgIGNvbnN0IGZ1bmN0aW9uR2V0TGlzdENvbG9yQ3VzdG9tID0gdGhpcy5mdW5jdGlvbkdldExpc3RDb2xvckN1c3RvbSgpO1xuXG4gICAgaWYgKGZ1bmN0aW9uR2V0TGlzdENvbG9yQ3VzdG9tKSB7XG4gICAgICB0aGlzLmNvbG9yQ3VzdG9tLnNldChhd2FpdCBmdW5jdGlvbkdldExpc3RDb2xvckN1c3RvbSgpKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbG9yQ3VzdG9tLnNldCgoYXdhaXQgVXRpbHNDYWNoZS5HZXRBc3luYygna25manNkZndlbmNsc2RuY2tqc2Rmc2Rmc2Rmc2hpbWRzamRmamtzdWR2c2phaGR2amFzamRod2VzZnNkZnNkZicpKSB8fCBbXSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclBvcG92ZXJFdmVudCh0eXBlOiBUWVBFX1BPUE9WRVJfRVZFTlQpIHtcbiAgICBpZiAodHlwZSA9PT0gJ3Nob3cnKSB7XG4gICAgICB0aGlzLnNob3dQb3B1cC5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmdldExpc3RDb2xvckN1c3RvbSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAncmVtb3ZlJykge1xuICAgICAgdGhpcy5zaG93UG9wdXAuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdENvbG9yKGV2ZW50OiBFdmVudCwgY29sb3I6IHN0cmluZykge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZGF0YS51cGRhdGUoKHZhbHVlKSA9PiAoeyAuLi52YWx1ZSwgY29sb3IgfSkpO1xuICAgIHRoaXMub3V0Q29sb3JDaGFuZ2UuZW1pdCh0aGlzLmRhdGEoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNoYW5nZU9wYWNpdHkoKSB7XG4gICAgdGhpcy5vdXRDb2xvckNoYW5nZS5lbWl0KHRoaXMuZGF0YSgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ29sb3JDaGFuZ2UoZXZlbnQ6IHN0cmluZykge1xuICAgIHRoaXMuY29sb3JBZGQuc2V0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyUG9wb3ZlckFkZENvbG9yRXZlbnQodHlwZTogVFlQRV9QT1BPVkVSX0VWRU5UKSB7XG4gICAgaWYgKHR5cGUgPT09ICdzaG93Jykge1xuICAgICAgdGhpcy5mbGFnTW91c2Uuc2V0KHsgaXNNb3VzZUVudGVyOiB0cnVlLCBpc01vdXNlRW50ZXJDb250ZW50OiB0cnVlIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAncmVtb3ZlJykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmxhZ01vdXNlLnNldCh7IGlzTW91c2VFbnRlcjogZmFsc2UsIGlzTW91c2VFbnRlckNvbnRlbnQ6IGZhbHNlIH0pO1xuICAgICAgfSwgNTAwKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckZ1bmN0aW9uQ29udHJvbChldmVudDogSVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCkge1xuICAgIHRoaXMucG9wb3ZlckZ1bmN0aW9uQ29udHJvbC5zZXQoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJBZGRDb2xvckZ1bmN0aW9uQ29udHJvbChldmVudDogSVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCkge1xuICAgIHRoaXMucG9wb3ZlckFkZENvbG9yRnVuY3Rpb25Db250cm9sLnNldChldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckFjdGlvbihldmVudDogRXZlbnQsIGFjdGlvbjogJ2NhbmNlbCcgfCAnYXBwbHknKSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5wb3BvdmVyQWRkQ29sb3JGdW5jdGlvbkNvbnRyb2woKT8ucmVtb3ZlUG9wb3Zlck92ZXJsYXkoKTtcbiAgICBpZiAoYWN0aW9uID09PSAnY2FuY2VsJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb2xvckFkZCA9IHRoaXMuY29sb3JBZGQoKTtcblxuICAgIGlmICghY29sb3JBZGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5oYW5kbGVyU2VsZWN0Q29sb3IoZXZlbnQsIGNvbG9yQWRkKTtcbiAgICBpZiAodGhpcy5jb2xvckN1c3RvbSgpLmZpbmQoKGNvbG9yKSA9PiBjb2xvciA9PT0gY29sb3JBZGQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY29sb3JDdXN0b20udXBkYXRlKCh2YWx1ZSkgPT4ge1xuICAgICAgdmFsdWUudW5zaGlmdChjb2xvckFkZCk7XG4gICAgICBpZiAodmFsdWUubGVuZ3RoID4gOCkge1xuICAgICAgICB2YWx1ZS5zcGxpY2UoOCwgdmFsdWUubGVuZ3RoIC0gOCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbLi4udmFsdWVdO1xuICAgIH0pO1xuICAgIHRoaXMuc2V0Q29sb3JDdXN0b20oKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0Q29sb3JDdXN0b20oKSB7XG4gICAgY29uc3QgZnVuY3Rpb25TZXRMaXN0Q29sb3JDdXN0b20gPSB0aGlzLmZ1bmN0aW9uU2V0TGlzdENvbG9yQ3VzdG9tKCk7XG5cbiAgICBpZiAoZnVuY3Rpb25TZXRMaXN0Q29sb3JDdXN0b20pIHtcbiAgICAgIGF3YWl0IGZ1bmN0aW9uU2V0TGlzdENvbG9yQ3VzdG9tKHRoaXMuY29sb3JDdXN0b20oKSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgVXRpbHNDYWNoZS5TZXRBc3luYygna25manNkZndlbmNsc2RuY2tqc2Rmc2Rmc2Rmc2hpbWRzamRmamtzdWR2c2phaGR2amFzamRod2VzZnNkZnNkZicsIHRoaXMuY29sb3JDdXN0b20oKSwgVXRpbHNDYWNoZS5DQUNIRV9FWFBJUkVfTk9ORSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2woKT8ucmVtb3ZlUG9wb3Zlck92ZXJsYXkoKTtcbiAgICB0aGlzLnBvcG92ZXJBZGRDb2xvckZ1bmN0aW9uQ29udHJvbCgpPy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwidy1mdWxsIGZsZXgganVzdGlmeS1iZXR3ZWVuIHJvdW5kZWQtWzRweF0gaC1bMzJweF1cIlxuICBbY2xhc3MubGlicy11aS1ib3JkZXItZ2VuZXJhbF09XCIhc2hvd1BvcHVwKClcIlxuICBbY2xhc3MubGlicy11aS1ib3JkZXItcHJpbWFyeS1mb2N1cy1nZW5lcmFsXT1cInNob3dQb3B1cCgpXCI+XG4gIDxkaXZcbiAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZVxuICAgIGNsYXNzPVwidy1mdWxsIGZsZXhcIlxuICAgIFttb2RlXT1cIidjbGljay10b2dnbGUnXCJcbiAgICBbaWdub3JlSGlkZGVuUG9wb3ZlckNvbnRlbnRXaGVuTW91c2VMZWF2ZV09XCJ0cnVlXCJcbiAgICBbY29uZmlnXT1cIntcbiAgICAgIHRlbXBsYXRlOiBlbGVtZW50LFxuICAgICAgd2hpdGVUaGVtZTogdHJ1ZSxcbiAgICAgIGlnbm9yZUFycm93OiB0cnVlLFxuICAgICAgd2lkdGhCeVBhcmVudDogZmFsc2UsXG4gICAgICBtYXhXaWR0aDogNTAwLFxuICAgICAgbWF4SGVpZ2h0OiA1MDAsXG4gICAgICB6SW5kZXg6IHpJbmRleCgpLFxuICAgICAgY2xhc3NJbmNsdWRlOiAndy1bMzM0cHhdJyxcbiAgICAgIGRpcmVjdGlvbjogJ2xlZnQnLFxuICAgICAgZGlyZWN0aW9uRGlzdGFuY2U6IDQsXG4gICAgICBwb3NpdGlvbjoge1xuICAgICAgICBtb2RlOiAnc3RhcnQnLFxuICAgICAgICBkaXN0YW5jZTogMCxcbiAgICAgIH0sXG4gICAgfVwiXG4gICAgW2ZsYWdNb3VzZV09XCJmbGFnTW91c2UoKVwiXG4gICAgKG91dEV2ZW50KT1cImhhbmRsZXJQb3BvdmVyRXZlbnQoJGV2ZW50KVwiXG4gICAgKG91dEZ1bmN0aW9uc0NvbnRyb2wpPVwiaGFuZGxlckZ1bmN0aW9uQ29udHJvbCgkZXZlbnQpXCI+XG4gICAgPGRpdiBjbGFzcz1cInB4LVsxNnB4XSBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJ3LVsxNnB4XSBoLVsxNnB4XSByb3VuZGVkLVs0cHhdIGxpYnMtdWktYm9yZGVyLWdlbmVyYWxcIlxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJkYXRhKCkuY29sb3JcIj48L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oNXIgbWwtWzhweF1cIj57eyBkYXRhKCkuY29sb3IgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwidy1bODBweF0gc2hyaW5rLTAgbGlicy11aS1ib3JkZXItbGVmdC1nZW5lcmFsXCI+XG4gICAgPGxpYnNfdWktY29tcG9uZW50cy1pbnB1dHMtdmFsaWRcbiAgICAgIFtub0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgIFtkYXRhVHlwZV09XCInaW50J1wiXG4gICAgICBbbWluVmFsdWVOdW1iZXJdPVwiMFwiXG4gICAgICBbbWF4VmFsdWVOdW1iZXJdPVwiMTAwXCJcbiAgICAgIFsoaXRlbSldPVwiZGF0YVwiXG4gICAgICBbZmllbGROYW1lQmluZF09XCInb3BhY2l0eSdcIlxuICAgICAgW3VuaXRzUmlnaHRdPVwiW3sgaWQ6ICclJywgbGFiZWw6ICclJyB9XVwiXG4gICAgICBba2V5U2VsZWN0ZWRVbml0UmlnaHRdPVwiJyUnXCJcbiAgICAgIFtjbGFzc0luY2x1ZGVJbnB1dF09XCIndGV4dC1jZW50ZXIgIXAtMCAhaC1bMjhweF0gIW1pbi1oLVsyOHB4XSdcIlxuICAgICAgW2NvbmZpZ1VuaXRSaWdodF09XCJ7IGNsYXNzSW5jbHVkZTogJyFoLVszMHB4XScsIGZpZWxkS2V5OiAnaWQnLCBmaWVsZExhYmVsOiAnbGFiZWwnIH1cIlxuICAgICAgKG91dFZhbHVlQ2hhbmdlKT1cImhhbmRsZXJDaGFuZ2VPcGFjaXR5KClcIiAvPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2VsZW1lbnQ+XG4gIDxkaXYgY2xhc3M9XCJwLVsxNnB4XSB3LWZ1bGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWItWzE2cHhdIGdyaWQgZ2FwLXktWzRweF0gZ2FwLXgtWzJweF0gZ3JpZC1jb2xzLThcIj5cbiAgICAgIEBmb3IgKGNvbG9yIG9mIGNvbG9yRGVmYXVsdCgpOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJweS1bNXB4XSBweC1bOHB4XSByZWxhdGl2ZVwiPlxuICAgICAgICAgIEBpZiAoKGNvbG9yIHwgbG93ZXJjYXNlKSA9PT0gKGRhdGEoKS5jb2xvciB8IGxvd2VyY2FzZSkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LVszMHB4XSBoLVszMHB4XSByb3VuZGVkLVszMHB4XSB0b3AtMCBsZWZ0LVszcHhdIGFic29sdXRlIGxpYnMtdWktYm9yZGVyLXByaW1hcnktZ2VuZXJhbCAhYm9yZGVyLTJcIj48L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJ3LVsyMHB4XSBoLVsyMHB4XSByb3VuZGVkLVsyMHB4XSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MubGlicy11aS1ib3JkZXItZ2VuZXJhbF09XCIoY29sb3IgfCBsb3dlcmNhc2UpID09PSAnI2ZmZmZmZidcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiY29sb3JcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZXJTZWxlY3RDb2xvcigkZXZlbnQsIGNvbG9yKVwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiaGFuZGxlclNlbGVjdENvbG9yKCRldmVudCwgY29sb3IpXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibGlicy11aS1mb250LWg1bSBjb2xvci1bIzZhNzM4M11cIj57eyAnaTE4bl9jb2xvcl9jdXN0b20nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblxuICAgICAgICBbdHlwZV09XCInYnV0dG9uLWxpbmstcHJpbWFyeSdcIlxuICAgICAgICBbY2xhc3NJY29uTGVmdF09XCInbGlicy11aS1pY29uLWFkZCdcIlxuICAgICAgICBbbGFiZWxdPVwiJ2kxOG5fYWRkX25ldydcIlxuICAgICAgICBbcG9wb3Zlcl09XCJ7XG4gICAgICAgICAgbW9kZTogJ2NsaWNrLXRvZ2dsZScsXG4gICAgICAgICAgaWdub3JlSGlkZGVuUG9wb3ZlckNvbnRlbnRXaGVuTW91c2VMZWF2ZTogdHJ1ZSxcbiAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgIHRlbXBsYXRlOiBjb2xvclBpY2tlcixcbiAgICAgICAgICAgIHdoaXRlVGhlbWU6IHRydWUsXG4gICAgICAgICAgICBpZ25vcmVBcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgIHdpZHRoQnlQYXJlbnQ6IGZhbHNlLFxuICAgICAgICAgICAgbWF4V2lkdGg6IDUwMCxcbiAgICAgICAgICAgIG1heEhlaWdodDogNTAwLFxuICAgICAgICAgICAgekluZGV4OiB6SW5kZXgoKSArIDEsXG4gICAgICAgICAgICBjbGFzc0luY2x1ZGU6ICd3LVszNTBweF0nLFxuICAgICAgICAgICAgZGlyZWN0aW9uOiAnbGVmdCcsXG4gICAgICAgICAgICBkaXJlY3Rpb25EaXN0YW5jZTogLTEwMCxcbiAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgIG1vZGU6ICdzdGFydCcsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiAtMTY1LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9XCJcbiAgICAgICAgW2NsYXNzSW5jbHVkZV09XCIncHktWzJweF0gcHgtWzBdJ1wiXG4gICAgICAgIChvdXRQb3BvdmVyRXZlbnQpPVwiaGFuZGxlclBvcG92ZXJBZGRDb2xvckV2ZW50KCRldmVudClcIlxuICAgICAgICAob3V0RnVuY3Rpb25zQ29udHJvbCk9XCJoYW5kbGVyQWRkQ29sb3JGdW5jdGlvbkNvbnRyb2woJGV2ZW50KVwiIC8+XG4gICAgPC9kaXY+XG4gICAgQGlmIChjb2xvckN1c3RvbSgpLmxlbmd0aCkge1xuICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ2FwLXktWzRweF0gZ2FwLXgtWzJweF0gZ3JpZC1jb2xzLThcIj5cbiAgICAgICAgQGZvciAoY29sb3Igb2YgY29sb3JDdXN0b20oKTsgdHJhY2sgJGluZGV4OyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS1bNXB4XSBweC1bOHB4XSByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgQGlmICgoY29sb3IgfCBsb3dlcmNhc2UpID09PSAoZGF0YSgpLmNvbG9yIHwgbG93ZXJjYXNlKSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1bMzBweF0gaC1bMzBweF0gcm91bmRlZC1bMzBweF0gdG9wLTAgbGVmdC1bM3B4XSBhYnNvbHV0ZSBsaWJzLXVpLWJvcmRlci1wcmltYXJ5LWdlbmVyYWwgIWJvcmRlci0yXCI+PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidy1bMjBweF0gaC1bMjBweF0gcm91bmRlZC1bMjBweF0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICBbY2xhc3MubGlicy11aS1ib3JkZXItZ2VuZXJhbF09XCIoY29sb3IgfCBsb3dlcmNhc2UpID09PSAnI2ZmZmZmZidcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJjb2xvclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVyU2VsZWN0Q29sb3IoJGV2ZW50LCBjb2xvcilcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiaGFuZGxlclNlbGVjdENvbG9yKCRldmVudCwgY29sb3IpXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbG9yUGlja2VyPlxuICA8ZGl2IGNsYXNzPVwicC1bMTZweF0gdy1hdXRvIGgtYXV0b1wiPlxuICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtY29sb3JfcGlja2VyXG4gICAgICBbY3VzdG9tT3B0aW9uc109XCJjdXN0b21PcHRpb25zKClcIlxuICAgICAgKG91dENvbG9yQ2hhbmdlKT1cImhhbmRsZXJDb2xvckNoYW5nZSgkZXZlbnQpXCIgLz5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcHQtWzE2cHhdXCI+XG4gICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uXG4gICAgICAgIFtsYWJlbF09XCInaTE4bl9jYW5jZWwnXCJcbiAgICAgICAgW3R5cGVdPVwiJ2J1dHRvbi10aGlyZCdcIlxuICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlckFjdGlvbigkZXZlbnQsICdjYW5jZWwnKVwiIC8+XG4gICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uXG4gICAgICAgIFtsYWJlbF09XCInaTE4bl9hcHBseSdcIlxuICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIidtbC1bMTZweF0nXCJcbiAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJBY3Rpb24oJGV2ZW50LCAnYXBwbHknKVwiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRzLWNvbG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvY29sb3Ivc3JjL2lucHV0cy1jb2xvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL2NvbG9yL3NyYy9pbnB1dHMtY29sb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RixPQUFPLEVBQXdCLG9DQUFvQyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUcsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDeEYsT0FBTyxFQUE0QyxnQ0FBZ0MsRUFBc0IsTUFBTSw2QkFBNkIsQ0FBQztBQUM3SSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFHdEQ7OztHQUdHO0FBU0gsTUFBTSxPQUFPLG9DQUFvQztJQUMvQyxtQkFBbUI7SUFDVCxZQUFZLEdBQUcsTUFBTSxDQUFnQixFQUFFLENBQUMsQ0FBQztJQUN6QyxTQUFTLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ25DLFdBQVcsR0FBRyxNQUFNLENBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLFNBQVMsR0FBRyxNQUFNLENBQWEsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLG1CQUFt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RUFBRSxDQUFDO0lBQ2hFLENBQUM7d0dBcEpVLG9DQUFvQzs0RkFBcEMsb0NBQW9DLDBtQ0N0QmpELDJxS0F1SUEsMkNEbkhZLGVBQWUsdUZBQUUsYUFBYSxrREFBRSxnQ0FBZ0Msb2dCQUFFLHNDQUFzQyxzakJBQUUsb0NBQW9DLGczREFBRSxvQ0FBb0M7OzRGQUVuTCxvQ0FBb0M7a0JBUmhELFNBQVM7K0JBRUUsaUNBQWlDLGNBRS9CLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsZ0NBQWdDLEVBQUUsc0NBQXNDLEVBQUUsb0NBQW9DLEVBQUUsb0NBQW9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb3dlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGlucHV0LCBtb2RlbCwgT25EZXN0cm95LCBPbkluaXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b24nO1xuaW1wb3J0IHsgSVBpY2tlckN1c3RvbU9wdGlvbnMsIExpYnNVaUNvbXBvbmVudHNDb2xvclBpY2tlckNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtY29sb3ItcGlja2VyJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNJbnB1dHNWYWxpZENvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtaW5wdXRzLXZhbGlkJztcbmltcG9ydCB7IElGbGFnTW91c2UsIElQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQsIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50LCBUWVBFX1BPUE9WRVJfRVZFTlQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXInO1xuaW1wb3J0IHsgVXRpbHNDYWNoZSB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgSUNvbG9yUGlja2VyRGF0YSB9IGZyb20gJy4vaW50ZXJmYWNlcy9jb2xvci5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIENvbXBvbmVudCBpbnB1dCBjaOG7jW4gbcOgdSBz4bqvYyAoQ29sb3IgUGlja2VyKSBo4buXIHRy4bujIMSR4buZIG3hu50gKG9wYWNpdHkpXG4gKiBDdW5nIGPhuqVwIGLhuqNuZyBtw6B1IG3hurdjIMSR4buLbmggdsOgIGNobyBwaMOpcCBuZ8aw4budaSBkw7luZyBsxrB1IGLhuqNuZyBtw6B1IHTDuXkgY2jhu4luaFxuICovXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtaW5wdXRzLWNvbG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0cy1jb2xvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBMb3dlckNhc2VQaXBlLCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCwgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQsIExpYnNVaUNvbXBvbmVudHNJbnB1dHNWYWxpZENvbXBvbmVudCwgTGlic1VpQ29tcG9uZW50c0NvbG9yUGlja2VyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0lucHV0c0NvbG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByb3RlY3RlZCBjb2xvckRlZmF1bHQgPSBzaWduYWw8QXJyYXk8c3RyaW5nPj4oW10pO1xuICBwcm90ZWN0ZWQgc2hvd1BvcHVwID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGNvbG9yQ3VzdG9tID0gc2lnbmFsPEFycmF5PHN0cmluZz4+KFtdKTtcbiAgcHJvdGVjdGVkIGZsYWdNb3VzZSA9IHNpZ25hbDxJRmxhZ01vdXNlPih7IGlzTW91c2VFbnRlcjogZmFsc2UsIGlzTW91c2VFbnRlckNvbnRlbnQ6IGZhbHNlIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29sb3JBZGQgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBvcG92ZXJGdW5jdGlvbkNvbnRyb2wgPSBzaWduYWw8SVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwb3BvdmVyQWRkQ29sb3JGdW5jdGlvbkNvbnRyb2wgPSBzaWduYWw8SVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvLyAjcmVnaW9uIElOUFVUXG4gIC8qKiBE4buvIGxp4buHdSBtw6B1IHPhuq9jIHbDoCDEkeG7mSBt4budIGhp4buHbiB04bqhaSAqL1xuICByZWFkb25seSBkYXRhID0gbW9kZWw8SUNvbG9yUGlja2VyRGF0YT4oeyBjb2xvcjogJycsIG9wYWNpdHk6IDEwMCB9KTtcblxuICAvKiogWi1pbmRleCBjaG8gcG9wb3ZlciBi4bqjbmcgbcOgdSAqL1xuICByZWFkb25seSB6SW5kZXggPSBtb2RlbDxudW1iZXI+KDEyMDApO1xuXG4gIC8qKiBD4bqldSBow6xuaCB0w7l5IGNo4buJbmggY2hvIGNvbG9yIHBpY2tlciAqL1xuICByZWFkb25seSBjdXN0b21PcHRpb25zID0gaW5wdXQ8SVBpY2tlckN1c3RvbU9wdGlvbnM+KCk7XG5cbiAgLyoqIEZ1bmN0aW9uIGzhuqV5IGRhbmggc8OhY2ggbcOgdSBt4bq3YyDEkeG7i25oICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uR2V0TGlzdENvbG9yRGVmYXVsdCA9IGlucHV0PCgpID0+IFByb21pc2U8QXJyYXk8c3RyaW5nPj4+KCk7XG5cbiAgLyoqIEZ1bmN0aW9uIGzhuqV5IGRhbmggc8OhY2ggbcOgdSB0w7l5IGNo4buJbmggxJHDoyBsxrB1ICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uR2V0TGlzdENvbG9yQ3VzdG9tID0gaW5wdXQ8KCkgPT4gUHJvbWlzZTxBcnJheTxzdHJpbmc+Pj4oKTtcblxuICAvKiogRnVuY3Rpb24gbMawdSBkYW5oIHPDoWNoIG3DoHUgdMO5eSBjaOG7iW5oIG3hu5tpICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uU2V0TGlzdENvbG9yQ3VzdG9tID0gaW5wdXQ8KGNvbG9yczogQXJyYXk8c3RyaW5nPikgPT4gUHJvbWlzZTx2b2lkPj4oKTtcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICAvKiogRW1pdCBraGkgbcOgdSBz4bqvYyBob+G6t2MgxJHhu5kgbeG7nSB0aGF5IMSR4buVaSAqL1xuICByZWFkb25seSBvdXRDb2xvckNoYW5nZSA9IG91dHB1dDxJQ29sb3JQaWNrZXJEYXRhPigpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ2V0TGlzdENvbG9yRGVmYXVsdCgpO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHByaXZhdGUgYXN5bmMgZ2V0TGlzdENvbG9yRGVmYXVsdCgpIHtcbiAgICBjb25zdCBmdW5jdGlvbkdldExpc3RDb2xvckRlZmF1bHQgPSB0aGlzLmZ1bmN0aW9uR2V0TGlzdENvbG9yRGVmYXVsdCgpO1xuXG4gICAgaWYgKGZ1bmN0aW9uR2V0TGlzdENvbG9yRGVmYXVsdCkge1xuICAgICAgdGhpcy5jb2xvckRlZmF1bHQuc2V0KGF3YWl0IGZ1bmN0aW9uR2V0TGlzdENvbG9yRGVmYXVsdCgpKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbG9yRGVmYXVsdC5zZXQoKGF3YWl0IFV0aWxzQ2FjaGUuR2V0QXN5bmMoJ2tuZmpzZGZ3ZW5jbHNkbmNranNkZnNkZnNkZnNoaW1kc2pkZmprc3V3ZXNmc2Rmc2RmJykpIHx8IFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0TGlzdENvbG9yQ3VzdG9tKCkge1xuICAgIGNvbnN0IGZ1bmN0aW9uR2V0TGlzdENvbG9yQ3VzdG9tID0gdGhpcy5mdW5jdGlvbkdldExpc3RDb2xvckN1c3RvbSgpO1xuXG4gICAgaWYgKGZ1bmN0aW9uR2V0TGlzdENvbG9yQ3VzdG9tKSB7XG4gICAgICB0aGlzLmNvbG9yQ3VzdG9tLnNldChhd2FpdCBmdW5jdGlvbkdldExpc3RDb2xvckN1c3RvbSgpKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbG9yQ3VzdG9tLnNldCgoYXdhaXQgVXRpbHNDYWNoZS5HZXRBc3luYygna25manNkZndlbmNsc2RuY2tqc2Rmc2Rmc2Rmc2hpbWRzamRmamtzdWR2c2phaGR2amFzamRod2VzZnNkZnNkZicpKSB8fCBbXSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclBvcG92ZXJFdmVudCh0eXBlOiBUWVBFX1BPUE9WRVJfRVZFTlQpIHtcbiAgICBpZiAodHlwZSA9PT0gJ3Nob3cnKSB7XG4gICAgICB0aGlzLnNob3dQb3B1cC5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmdldExpc3RDb2xvckN1c3RvbSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAncmVtb3ZlJykge1xuICAgICAgdGhpcy5zaG93UG9wdXAuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdENvbG9yKGV2ZW50OiBFdmVudCwgY29sb3I6IHN0cmluZykge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZGF0YS51cGRhdGUoKHZhbHVlKSA9PiAoeyAuLi52YWx1ZSwgY29sb3IgfSkpO1xuICAgIHRoaXMub3V0Q29sb3JDaGFuZ2UuZW1pdCh0aGlzLmRhdGEoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNoYW5nZU9wYWNpdHkoKSB7XG4gICAgdGhpcy5vdXRDb2xvckNoYW5nZS5lbWl0KHRoaXMuZGF0YSgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ29sb3JDaGFuZ2UoZXZlbnQ6IHN0cmluZykge1xuICAgIHRoaXMuY29sb3JBZGQuc2V0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyUG9wb3ZlckFkZENvbG9yRXZlbnQodHlwZTogVFlQRV9QT1BPVkVSX0VWRU5UKSB7XG4gICAgaWYgKHR5cGUgPT09ICdzaG93Jykge1xuICAgICAgdGhpcy5mbGFnTW91c2Uuc2V0KHsgaXNNb3VzZUVudGVyOiB0cnVlLCBpc01vdXNlRW50ZXJDb250ZW50OiB0cnVlIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAncmVtb3ZlJykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmxhZ01vdXNlLnNldCh7IGlzTW91c2VFbnRlcjogZmFsc2UsIGlzTW91c2VFbnRlckNvbnRlbnQ6IGZhbHNlIH0pO1xuICAgICAgfSwgNTAwKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckZ1bmN0aW9uQ29udHJvbChldmVudDogSVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCkge1xuICAgIHRoaXMucG9wb3ZlckZ1bmN0aW9uQ29udHJvbC5zZXQoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJBZGRDb2xvckZ1bmN0aW9uQ29udHJvbChldmVudDogSVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCkge1xuICAgIHRoaXMucG9wb3ZlckFkZENvbG9yRnVuY3Rpb25Db250cm9sLnNldChldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckFjdGlvbihldmVudDogRXZlbnQsIGFjdGlvbjogJ2NhbmNlbCcgfCAnYXBwbHknKSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5wb3BvdmVyQWRkQ29sb3JGdW5jdGlvbkNvbnRyb2woKT8ucmVtb3ZlUG9wb3Zlck92ZXJsYXkoKTtcbiAgICBpZiAoYWN0aW9uID09PSAnY2FuY2VsJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb2xvckFkZCA9IHRoaXMuY29sb3JBZGQoKTtcblxuICAgIGlmICghY29sb3JBZGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5oYW5kbGVyU2VsZWN0Q29sb3IoZXZlbnQsIGNvbG9yQWRkKTtcbiAgICBpZiAodGhpcy5jb2xvckN1c3RvbSgpLmZpbmQoKGNvbG9yKSA9PiBjb2xvciA9PT0gY29sb3JBZGQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY29sb3JDdXN0b20udXBkYXRlKCh2YWx1ZSkgPT4ge1xuICAgICAgdmFsdWUudW5zaGlmdChjb2xvckFkZCk7XG4gICAgICBpZiAodmFsdWUubGVuZ3RoID4gOCkge1xuICAgICAgICB2YWx1ZS5zcGxpY2UoOCwgdmFsdWUubGVuZ3RoIC0gOCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbLi4udmFsdWVdO1xuICAgIH0pO1xuICAgIHRoaXMuc2V0Q29sb3JDdXN0b20oKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0Q29sb3JDdXN0b20oKSB7XG4gICAgY29uc3QgZnVuY3Rpb25TZXRMaXN0Q29sb3JDdXN0b20gPSB0aGlzLmZ1bmN0aW9uU2V0TGlzdENvbG9yQ3VzdG9tKCk7XG5cbiAgICBpZiAoZnVuY3Rpb25TZXRMaXN0Q29sb3JDdXN0b20pIHtcbiAgICAgIGF3YWl0IGZ1bmN0aW9uU2V0TGlzdENvbG9yQ3VzdG9tKHRoaXMuY29sb3JDdXN0b20oKSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgVXRpbHNDYWNoZS5TZXRBc3luYygna25manNkZndlbmNsc2RuY2tqc2Rmc2Rmc2Rmc2hpbWRzamRmamtzdWR2c2phaGR2amFzamRod2VzZnNkZnNkZicsIHRoaXMuY29sb3JDdXN0b20oKSwgVXRpbHNDYWNoZS5DQUNIRV9FWFBJUkVfTk9ORSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2woKT8ucmVtb3ZlUG9wb3Zlck92ZXJsYXkoKTtcbiAgICB0aGlzLnBvcG92ZXJBZGRDb2xvckZ1bmN0aW9uQ29udHJvbCgpPy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwidy1mdWxsIGZsZXgganVzdGlmeS1iZXR3ZWVuIHJvdW5kZWQtWzRweF0gaC1bMzJweF1cIlxuICBbY2xhc3MubGlicy11aS1ib3JkZXItZ2VuZXJhbF09XCIhc2hvd1BvcHVwKClcIlxuICBbY2xhc3MubGlicy11aS1ib3JkZXItcHJpbWFyeS1mb2N1cy1nZW5lcmFsXT1cInNob3dQb3B1cCgpXCI+XG4gIDxkaXZcbiAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZVxuICAgIGNsYXNzPVwidy1mdWxsIGZsZXhcIlxuICAgIFttb2RlXT1cIidjbGljay10b2dnbGUnXCJcbiAgICBbaWdub3JlSGlkZGVuUG9wb3ZlckNvbnRlbnRXaGVuTW91c2VMZWF2ZV09XCJ0cnVlXCJcbiAgICBbY29uZmlnXT1cIntcbiAgICAgIHRlbXBsYXRlOiBlbGVtZW50LFxuICAgICAgd2hpdGVUaGVtZTogdHJ1ZSxcbiAgICAgIGlnbm9yZUFycm93OiB0cnVlLFxuICAgICAgd2lkdGhCeVBhcmVudDogZmFsc2UsXG4gICAgICBtYXhXaWR0aDogNTAwLFxuICAgICAgbWF4SGVpZ2h0OiA1MDAsXG4gICAgICB6SW5kZXg6IHpJbmRleCgpLFxuICAgICAgY2xhc3NJbmNsdWRlOiAndy1bMzM0cHhdJyxcbiAgICAgIGRpcmVjdGlvbjogJ2xlZnQnLFxuICAgICAgZGlyZWN0aW9uRGlzdGFuY2U6IDQsXG4gICAgICBwb3NpdGlvbjoge1xuICAgICAgICBtb2RlOiAnc3RhcnQnLFxuICAgICAgICBkaXN0YW5jZTogMCxcbiAgICAgIH0sXG4gICAgfVwiXG4gICAgW2ZsYWdNb3VzZV09XCJmbGFnTW91c2UoKVwiXG4gICAgKG91dEV2ZW50KT1cImhhbmRsZXJQb3BvdmVyRXZlbnQoJGV2ZW50KVwiXG4gICAgKG91dEZ1bmN0aW9uc0NvbnRyb2wpPVwiaGFuZGxlckZ1bmN0aW9uQ29udHJvbCgkZXZlbnQpXCI+XG4gICAgPGRpdiBjbGFzcz1cInB4LVsxNnB4XSBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJ3LVsxNnB4XSBoLVsxNnB4XSByb3VuZGVkLVs0cHhdIGxpYnMtdWktYm9yZGVyLWdlbmVyYWxcIlxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJkYXRhKCkuY29sb3JcIj48L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oNXIgbWwtWzhweF1cIj57eyBkYXRhKCkuY29sb3IgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwidy1bODBweF0gc2hyaW5rLTAgbGlicy11aS1ib3JkZXItbGVmdC1nZW5lcmFsXCI+XG4gICAgPGxpYnNfdWktY29tcG9uZW50cy1pbnB1dHMtdmFsaWRcbiAgICAgIFtub0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgIFtkYXRhVHlwZV09XCInaW50J1wiXG4gICAgICBbbWluVmFsdWVOdW1iZXJdPVwiMFwiXG4gICAgICBbbWF4VmFsdWVOdW1iZXJdPVwiMTAwXCJcbiAgICAgIFsoaXRlbSldPVwiZGF0YVwiXG4gICAgICBbZmllbGROYW1lQmluZF09XCInb3BhY2l0eSdcIlxuICAgICAgW3VuaXRzUmlnaHRdPVwiW3sgaWQ6ICclJywgbGFiZWw6ICclJyB9XVwiXG4gICAgICBba2V5U2VsZWN0ZWRVbml0UmlnaHRdPVwiJyUnXCJcbiAgICAgIFtjbGFzc0luY2x1ZGVJbnB1dF09XCIndGV4dC1jZW50ZXIgIXAtMCAhaC1bMjhweF0gIW1pbi1oLVsyOHB4XSdcIlxuICAgICAgW2NvbmZpZ1VuaXRSaWdodF09XCJ7IGNsYXNzSW5jbHVkZTogJyFoLVszMHB4XScsIGZpZWxkS2V5OiAnaWQnLCBmaWVsZExhYmVsOiAnbGFiZWwnIH1cIlxuICAgICAgKG91dFZhbHVlQ2hhbmdlKT1cImhhbmRsZXJDaGFuZ2VPcGFjaXR5KClcIiAvPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2VsZW1lbnQ+XG4gIDxkaXYgY2xhc3M9XCJwLVsxNnB4XSB3LWZ1bGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWItWzE2cHhdIGdyaWQgZ2FwLXktWzRweF0gZ2FwLXgtWzJweF0gZ3JpZC1jb2xzLThcIj5cbiAgICAgIEBmb3IgKGNvbG9yIG9mIGNvbG9yRGVmYXVsdCgpOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJweS1bNXB4XSBweC1bOHB4XSByZWxhdGl2ZVwiPlxuICAgICAgICAgIEBpZiAoKGNvbG9yIHwgbG93ZXJjYXNlKSA9PT0gKGRhdGEoKS5jb2xvciB8IGxvd2VyY2FzZSkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LVszMHB4XSBoLVszMHB4XSByb3VuZGVkLVszMHB4XSB0b3AtMCBsZWZ0LVszcHhdIGFic29sdXRlIGxpYnMtdWktYm9yZGVyLXByaW1hcnktZ2VuZXJhbCAhYm9yZGVyLTJcIj48L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJ3LVsyMHB4XSBoLVsyMHB4XSByb3VuZGVkLVsyMHB4XSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MubGlicy11aS1ib3JkZXItZ2VuZXJhbF09XCIoY29sb3IgfCBsb3dlcmNhc2UpID09PSAnI2ZmZmZmZidcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiY29sb3JcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZXJTZWxlY3RDb2xvcigkZXZlbnQsIGNvbG9yKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJoYW5kbGVyU2VsZWN0Q29sb3IoJGV2ZW50LCBjb2xvcilcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDVtIGNvbG9yLVsjNmE3MzgzXVwiPnt7ICdpMThuX2NvbG9yX2N1c3RvbScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uXG4gICAgICAgIFt0eXBlXT1cIididXR0b24tbGluay1wcmltYXJ5J1wiXG4gICAgICAgIFtjbGFzc0ljb25MZWZ0XT1cIidsaWJzLXVpLWljb24tYWRkJ1wiXG4gICAgICAgIFtsYWJlbF09XCInaTE4bl9hZGRfbmV3J1wiXG4gICAgICAgIFtwb3BvdmVyXT1cIntcbiAgICAgICAgICBtb2RlOiAnY2xpY2stdG9nZ2xlJyxcbiAgICAgICAgICBpZ25vcmVIaWRkZW5Qb3BvdmVyQ29udGVudFdoZW5Nb3VzZUxlYXZlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgdGVtcGxhdGU6IGNvbG9yUGlja2VyLFxuICAgICAgICAgICAgd2hpdGVUaGVtZTogdHJ1ZSxcbiAgICAgICAgICAgIGlnbm9yZUFycm93OiB0cnVlLFxuICAgICAgICAgICAgd2lkdGhCeVBhcmVudDogZmFsc2UsXG4gICAgICAgICAgICBtYXhXaWR0aDogNTAwLFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiA1MDAsXG4gICAgICAgICAgICB6SW5kZXg6IHpJbmRleCgpICsgMSxcbiAgICAgICAgICAgIGNsYXNzSW5jbHVkZTogJ3ctWzM1MHB4XScsXG4gICAgICAgICAgICBkaXJlY3Rpb246ICdsZWZ0JyxcbiAgICAgICAgICAgIGRpcmVjdGlvbkRpc3RhbmNlOiAtMTAwLFxuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgbW9kZTogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IC0xNjUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cIlxuICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIidweS1bMnB4XSBweC1bMF0nXCJcbiAgICAgICAgKG91dFBvcG92ZXJFdmVudCk9XCJoYW5kbGVyUG9wb3ZlckFkZENvbG9yRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgIChvdXRGdW5jdGlvbnNDb250cm9sKT1cImhhbmRsZXJBZGRDb2xvckZ1bmN0aW9uQ29udHJvbCgkZXZlbnQpXCIgLz5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGNvbG9yQ3VzdG9tKCkubGVuZ3RoKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBnYXAteS1bNHB4XSBnYXAteC1bMnB4XSBncmlkLWNvbHMtOFwiPlxuICAgICAgICBAZm9yIChjb2xvciBvZiBjb2xvckN1c3RvbSgpOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInB5LVs1cHhdIHB4LVs4cHhdIHJlbGF0aXZlXCI+XG4gICAgICAgICAgICBAaWYgKChjb2xvciB8IGxvd2VyY2FzZSkgPT09IChkYXRhKCkuY29sb3IgfCBsb3dlcmNhc2UpKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LVszMHB4XSBoLVszMHB4XSByb3VuZGVkLVszMHB4XSB0b3AtMCBsZWZ0LVszcHhdIGFic29sdXRlIGxpYnMtdWktYm9yZGVyLXByaW1hcnktZ2VuZXJhbCAhYm9yZGVyLTJcIj48L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ3LVsyMHB4XSBoLVsyMHB4XSByb3VuZGVkLVsyMHB4XSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWJvcmRlci1nZW5lcmFsXT1cIihjb2xvciB8IGxvd2VyY2FzZSkgPT09ICcjZmZmZmZmJ1wiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZXJTZWxlY3RDb2xvcigkZXZlbnQsIGNvbG9yKVwiXG4gICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImhhbmRsZXJTZWxlY3RDb2xvcigkZXZlbnQsIGNvbG9yKVwiPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb2xvclBpY2tlcj5cbiAgPGRpdiBjbGFzcz1cInAtWzE2cHhdIHctYXV0byBoLWF1dG9cIj5cbiAgICA8bGlic191aS1jb21wb25lbnRzLWNvbG9yX3BpY2tlclxuICAgICAgW2N1c3RvbU9wdGlvbnNdPVwiY3VzdG9tT3B0aW9ucygpXCJcbiAgICAgIChvdXRDb2xvckNoYW5nZSk9XCJoYW5kbGVyQ29sb3JDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIHB0LVsxNnB4XVwiPlxuICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblxuICAgICAgICBbbGFiZWxdPVwiJ2kxOG5fY2FuY2VsJ1wiXG4gICAgICAgIFt0eXBlXT1cIididXR0b24tdGhpcmQnXCJcbiAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJBY3Rpb24oJGV2ZW50LCAnY2FuY2VsJylcIiAvPlxuICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblxuICAgICAgICBbbGFiZWxdPVwiJ2kxOG5fYXBwbHknXCJcbiAgICAgICAgW2NsYXNzSW5jbHVkZV09XCInbWwtWzE2cHhdJ1wiXG4gICAgICAgIChvdXRDbGljayk9XCJoYW5kbGVyQWN0aW9uKCRldmVudCwgJ2FwcGx5JylcIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -132,11 +132,11 @@ class LibsUiComponentsInputsColorComponent {
|
|
|
132
132
|
this.popoverAddColorFunctionControl()?.removePopoverOverlay();
|
|
133
133
|
}
|
|
134
134
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsColorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
135
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsInputsColorComponent, isStandalone: true, selector: "libs_ui-components-inputs-color", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, customOptions: { classPropertyName: "customOptions", publicName: "customOptions", isSignal: true, isRequired: false, transformFunction: null }, functionGetListColorDefault: { classPropertyName: "functionGetListColorDefault", publicName: "functionGetListColorDefault", isSignal: true, isRequired: false, transformFunction: null }, functionGetListColorCustom: { classPropertyName: "functionGetListColorCustom", publicName: "functionGetListColorCustom", isSignal: true, isRequired: false, transformFunction: null }, functionSetListColorCustom: { classPropertyName: "functionSetListColorCustom", publicName: "functionSetListColorCustom", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { data: "dataChange", zIndex: "zIndexChange", outColorChange: "outColorChange" }, ngImport: i0, template: "<div\n class=\"w-full flex justify-between rounded-[4px] h-[32px]\"\n [class.libs-ui-border-general]=\"!showPopup()\"\n [class.libs-ui-border-primary-focus-general]=\"showPopup()\">\n <div\n LibsUiComponentsPopoverDirective\n class=\"w-full flex\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n template: element,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex(),\n classInclude: 'w-[334px]',\n direction: 'left',\n directionDistance: 4,\n position: {\n mode: 'start',\n distance: 0,\n },\n }\"\n [flagMouse]=\"flagMouse()\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\">\n <div class=\"px-[16px] flex items-center\">\n <span\n class=\"w-[16px] h-[16px] rounded-[4px] libs-ui-border-general\"\n [style.background-color]=\"data().color\"></span>\n <span class=\"libs-ui-font-h5r ml-[8px]\">{{ data().color }}</span>\n </div>\n </div>\n <div class=\"w-[80px] shrink-0 libs-ui-border-left-general\">\n <libs_ui-components-inputs-valid\n [noBorder]=\"true\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [(item)]=\"data\"\n [fieldNameBind]=\"'opacity'\"\n [unitsRight]=\"[{ id: '%', label: '%' }]\"\n [keySelectedUnitRight]=\"'%'\"\n [classIncludeInput]=\"'text-center !p-0 !h-[28px] !min-h-[28px]'\"\n [configUnitRight]=\"{ classInclude: '!h-[30px]', fieldKey: 'id', fieldLabel: 'label' }\"\n (outValueChange)=\"handlerChangeOpacity()\" />\n </div>\n</div>\n\n<ng-template #element>\n <div class=\"p-[16px] w-full\">\n <div class=\"mb-[16px] grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorDefault(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (keyup.enter)=\"handlerSelectColor($event, color)\"></div>\n </div>\n }\n </div>\n <div class=\"flex items-center justify-between\">\n <span class=\"libs-ui-font-h5m color-[#6a7383]\">{{ 'i18n_color_custom' | translate }}</span>\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n [classIconLeft]=\"'libs-ui-icon-add'\"\n [label]=\"'i18n_add_new'\"\n [popover]=\"{\n mode: 'click-toggle',\n ignoreHiddenPopoverContentWhenMouseLeave: true,\n config: {\n template: colorPicker,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex() + 1,\n classInclude: 'w-[350px]',\n direction: 'left',\n directionDistance: -100,\n position: {\n mode: 'start',\n distance: -165,\n },\n },\n }\"\n [classInclude]=\"'py-[2px] px-[0]'\"\n (outPopoverEvent)=\"handlerPopoverAddColorEvent($event)\"\n (outFunctionsControl)=\"handlerAddColorFunctionControl($event)\" />\n </div>\n @if (colorCustom().length) {\n <div class=\"grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorCustom(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (keyup.enter)=\"handlerSelectColor($event, color)\"></div>\n </div>\n }\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #colorPicker>\n <div class=\"p-[16px] w-auto h-auto\">\n <libs_ui-components-color_picker\n [customOptions]=\"customOptions()\"\n (outColorChange)=\"handlerColorChange($event)\" />\n <div class=\"flex items-center justify-end pt-[16px]\">\n <libs_ui-components-buttons-button\n [label]=\"'i18n_cancel'\"\n [type]=\"'button-third'\"\n (outClick)=\"handlerAction($event, 'cancel')\" />\n <libs_ui-components-buttons-button\n [label]=\"'i18n_apply'\"\n [classInclude]=\"'ml-[16px]'\"\n (outClick)=\"handlerAction($event, 'apply')\" />\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: LowerCasePipe, name: "lowercase" }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsInputsValidComponent, selector: "libs_ui-components-inputs-valid", inputs: ["item", "labelConfig", "emitEmptyInDataTypeNumber", "ignoreBlockInputMaxValue", "fieldNameBind", "showCount", "typeComponentSelectItem", "valueComponentSelectItem", "disableComponentSelectItem", "tagInput", "dataType", "typeInput", "modeInput", "resetAutoCompletePassword", "textAreaEnterNotNewLine", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "ignoreWidthInput100", "classIncludeInput", "classContainerInput", "readonly", "disable", "noBorder", "backgroundNone", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "classContainerBottomInput", "autoRemoveEmoji", "defaultHeight", "maxHeightTextArea", "minHeightTextArea", "ignoreShowError", "ignoreShowMessageError", "borderError", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "zIndexPopoverContent", "unitsLeft", "configUnitLeft", "keySelectedUnitLeft", "unitsRight", "configUnitRight", "keySelectedUnitRight", "maxValueNumber", "minValueNumber", "ignoreContentLeft", "ignoreContentRight", "isBaselineStyle", "valuePatternShowError", "validPattern", "validRequired", "validMinLength", "validMinValue", "validMaxValue", "validMaxLength", "functionValid", "maxLength", "positionMessageErrorStartInput", "classInclude", "resize", "templateLeftBottomInput", "templateRightBottomInput", "onlyAcceptNegativeValue", "autoAddZeroLessThan10InTypeInt", "maxLengthNumberCount", "classMessageErrorInclude", "ignoreStopPropagationEvent", "ignoreUnitRightClassReadOnly", "paddingRightCustomSpecific", "focusTimeOut", "debounceTimeValidate"], outputs: ["itemChange", "outValueChange", "outSelect", "outIconLeft", "outIconRight", "outClickButtonLabel", "outSwitchEventLabel", "outLabelRightClick", "outEnterInputEvent", "outHeightAreaChange", "outFunctionsControl", "outFocusAndBlur", "outChangeValueByButtonUpDown"] }, { kind: "component", type: LibsUiComponentsColorPickerComponent, selector: "libs_ui-components-color_picker", inputs: ["customOptions", "noEmitEventColorWhenInitComponent"], outputs: ["outColorChange", "outColorChangeMultipleType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
135
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsInputsColorComponent, isStandalone: true, selector: "libs_ui-components-inputs-color", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, customOptions: { classPropertyName: "customOptions", publicName: "customOptions", isSignal: true, isRequired: false, transformFunction: null }, functionGetListColorDefault: { classPropertyName: "functionGetListColorDefault", publicName: "functionGetListColorDefault", isSignal: true, isRequired: false, transformFunction: null }, functionGetListColorCustom: { classPropertyName: "functionGetListColorCustom", publicName: "functionGetListColorCustom", isSignal: true, isRequired: false, transformFunction: null }, functionSetListColorCustom: { classPropertyName: "functionSetListColorCustom", publicName: "functionSetListColorCustom", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { data: "dataChange", zIndex: "zIndexChange", outColorChange: "outColorChange" }, ngImport: i0, template: "<div\n class=\"w-full flex justify-between rounded-[4px] h-[32px]\"\n [class.libs-ui-border-general]=\"!showPopup()\"\n [class.libs-ui-border-primary-focus-general]=\"showPopup()\">\n <div\n LibsUiComponentsPopoverDirective\n class=\"w-full flex\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n template: element,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex(),\n classInclude: 'w-[334px]',\n direction: 'left',\n directionDistance: 4,\n position: {\n mode: 'start',\n distance: 0,\n },\n }\"\n [flagMouse]=\"flagMouse()\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\">\n <div class=\"px-[16px] flex items-center\">\n <span\n class=\"w-[16px] h-[16px] rounded-[4px] libs-ui-border-general\"\n [style.background-color]=\"data().color\"></span>\n <span class=\"libs-ui-font-h5r ml-[8px]\">{{ data().color }}</span>\n </div>\n </div>\n <div class=\"w-[80px] shrink-0 libs-ui-border-left-general\">\n <libs_ui-components-inputs-valid\n [noBorder]=\"true\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [(item)]=\"data\"\n [fieldNameBind]=\"'opacity'\"\n [unitsRight]=\"[{ id: '%', label: '%' }]\"\n [keySelectedUnitRight]=\"'%'\"\n [classIncludeInput]=\"'text-center !p-0 !h-[28px] !min-h-[28px]'\"\n [configUnitRight]=\"{ classInclude: '!h-[30px]', fieldKey: 'id', fieldLabel: 'label' }\"\n (outValueChange)=\"handlerChangeOpacity()\" />\n </div>\n</div>\n\n<ng-template #element>\n <div class=\"p-[16px] w-full\">\n <div class=\"mb-[16px] grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorDefault(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (keydown.enter)=\"handlerSelectColor($event, color)\"></div>\n </div>\n }\n </div>\n <div class=\"flex items-center justify-between\">\n <span class=\"libs-ui-font-h5m color-[#6a7383]\">{{ 'i18n_color_custom' | translate }}</span>\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n [classIconLeft]=\"'libs-ui-icon-add'\"\n [label]=\"'i18n_add_new'\"\n [popover]=\"{\n mode: 'click-toggle',\n ignoreHiddenPopoverContentWhenMouseLeave: true,\n config: {\n template: colorPicker,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex() + 1,\n classInclude: 'w-[350px]',\n direction: 'left',\n directionDistance: -100,\n position: {\n mode: 'start',\n distance: -165,\n },\n },\n }\"\n [classInclude]=\"'py-[2px] px-[0]'\"\n (outPopoverEvent)=\"handlerPopoverAddColorEvent($event)\"\n (outFunctionsControl)=\"handlerAddColorFunctionControl($event)\" />\n </div>\n @if (colorCustom().length) {\n <div class=\"grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorCustom(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (keydown.enter)=\"handlerSelectColor($event, color)\"></div>\n </div>\n }\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #colorPicker>\n <div class=\"p-[16px] w-auto h-auto\">\n <libs_ui-components-color_picker\n [customOptions]=\"customOptions()\"\n (outColorChange)=\"handlerColorChange($event)\" />\n <div class=\"flex items-center justify-end pt-[16px]\">\n <libs_ui-components-buttons-button\n [label]=\"'i18n_cancel'\"\n [type]=\"'button-third'\"\n (outClick)=\"handlerAction($event, 'cancel')\" />\n <libs_ui-components-buttons-button\n [label]=\"'i18n_apply'\"\n [classInclude]=\"'ml-[16px]'\"\n (outClick)=\"handlerAction($event, 'apply')\" />\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: LowerCasePipe, name: "lowercase" }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsInputsValidComponent, selector: "libs_ui-components-inputs-valid", inputs: ["item", "labelConfig", "emitEmptyInDataTypeNumber", "ignoreBlockInputMaxValue", "fieldNameBind", "showCount", "typeComponentSelectItem", "valueComponentSelectItem", "disableComponentSelectItem", "tagInput", "dataType", "typeInput", "modeInput", "resetAutoCompletePassword", "textAreaEnterNotNewLine", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "ignoreWidthInput100", "classIncludeInput", "classContainerInput", "readonly", "disable", "noBorder", "backgroundNone", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "classContainerBottomInput", "autoRemoveEmoji", "defaultHeight", "maxHeightTextArea", "minHeightTextArea", "ignoreShowError", "ignoreShowMessageError", "borderError", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "zIndexPopoverContent", "unitsLeft", "configUnitLeft", "keySelectedUnitLeft", "unitsRight", "configUnitRight", "keySelectedUnitRight", "maxValueNumber", "minValueNumber", "ignoreContentLeft", "ignoreContentRight", "isBaselineStyle", "valuePatternShowError", "validPattern", "validRequired", "validMinLength", "validMinValue", "validMaxValue", "validMaxLength", "functionValid", "maxLength", "positionMessageErrorStartInput", "classInclude", "resize", "templateLeftBottomInput", "templateRightBottomInput", "onlyAcceptNegativeValue", "autoAddZeroLessThan10InTypeInt", "maxLengthNumberCount", "classMessageErrorInclude", "ignoreStopPropagationEvent", "ignoreUnitRightClassReadOnly", "paddingRightCustomSpecific", "focusTimeOut", "debounceTimeValidate"], outputs: ["itemChange", "outValueChange", "outSelect", "outIconLeft", "outIconRight", "outClickButtonLabel", "outSwitchEventLabel", "outLabelRightClick", "outEnterInputEvent", "outHeightAreaChange", "outFunctionsControl", "outFocusAndBlur", "outChangeValueByButtonUpDown"] }, { kind: "component", type: LibsUiComponentsColorPickerComponent, selector: "libs_ui-components-color_picker", inputs: ["customOptions", "noEmitEventColorWhenInitComponent"], outputs: ["outColorChange", "outColorChangeMultipleType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
136
136
|
}
|
|
137
137
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsColorComponent, decorators: [{
|
|
138
138
|
type: Component,
|
|
139
|
-
args: [{ selector: 'libs_ui-components-inputs-color', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, LowerCasePipe, LibsUiComponentsPopoverComponent, LibsUiComponentsButtonsButtonComponent, LibsUiComponentsInputsValidComponent, LibsUiComponentsColorPickerComponent], template: "<div\n class=\"w-full flex justify-between rounded-[4px] h-[32px]\"\n [class.libs-ui-border-general]=\"!showPopup()\"\n [class.libs-ui-border-primary-focus-general]=\"showPopup()\">\n <div\n LibsUiComponentsPopoverDirective\n class=\"w-full flex\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n template: element,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex(),\n classInclude: 'w-[334px]',\n direction: 'left',\n directionDistance: 4,\n position: {\n mode: 'start',\n distance: 0,\n },\n }\"\n [flagMouse]=\"flagMouse()\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\">\n <div class=\"px-[16px] flex items-center\">\n <span\n class=\"w-[16px] h-[16px] rounded-[4px] libs-ui-border-general\"\n [style.background-color]=\"data().color\"></span>\n <span class=\"libs-ui-font-h5r ml-[8px]\">{{ data().color }}</span>\n </div>\n </div>\n <div class=\"w-[80px] shrink-0 libs-ui-border-left-general\">\n <libs_ui-components-inputs-valid\n [noBorder]=\"true\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [(item)]=\"data\"\n [fieldNameBind]=\"'opacity'\"\n [unitsRight]=\"[{ id: '%', label: '%' }]\"\n [keySelectedUnitRight]=\"'%'\"\n [classIncludeInput]=\"'text-center !p-0 !h-[28px] !min-h-[28px]'\"\n [configUnitRight]=\"{ classInclude: '!h-[30px]', fieldKey: 'id', fieldLabel: 'label' }\"\n (outValueChange)=\"handlerChangeOpacity()\" />\n </div>\n</div>\n\n<ng-template #element>\n <div class=\"p-[16px] w-full\">\n <div class=\"mb-[16px] grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorDefault(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (
|
|
139
|
+
args: [{ selector: 'libs_ui-components-inputs-color', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, LowerCasePipe, LibsUiComponentsPopoverComponent, LibsUiComponentsButtonsButtonComponent, LibsUiComponentsInputsValidComponent, LibsUiComponentsColorPickerComponent], template: "<div\n class=\"w-full flex justify-between rounded-[4px] h-[32px]\"\n [class.libs-ui-border-general]=\"!showPopup()\"\n [class.libs-ui-border-primary-focus-general]=\"showPopup()\">\n <div\n LibsUiComponentsPopoverDirective\n class=\"w-full flex\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n template: element,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex(),\n classInclude: 'w-[334px]',\n direction: 'left',\n directionDistance: 4,\n position: {\n mode: 'start',\n distance: 0,\n },\n }\"\n [flagMouse]=\"flagMouse()\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\">\n <div class=\"px-[16px] flex items-center\">\n <span\n class=\"w-[16px] h-[16px] rounded-[4px] libs-ui-border-general\"\n [style.background-color]=\"data().color\"></span>\n <span class=\"libs-ui-font-h5r ml-[8px]\">{{ data().color }}</span>\n </div>\n </div>\n <div class=\"w-[80px] shrink-0 libs-ui-border-left-general\">\n <libs_ui-components-inputs-valid\n [noBorder]=\"true\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [(item)]=\"data\"\n [fieldNameBind]=\"'opacity'\"\n [unitsRight]=\"[{ id: '%', label: '%' }]\"\n [keySelectedUnitRight]=\"'%'\"\n [classIncludeInput]=\"'text-center !p-0 !h-[28px] !min-h-[28px]'\"\n [configUnitRight]=\"{ classInclude: '!h-[30px]', fieldKey: 'id', fieldLabel: 'label' }\"\n (outValueChange)=\"handlerChangeOpacity()\" />\n </div>\n</div>\n\n<ng-template #element>\n <div class=\"p-[16px] w-full\">\n <div class=\"mb-[16px] grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorDefault(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (keydown.enter)=\"handlerSelectColor($event, color)\"></div>\n </div>\n }\n </div>\n <div class=\"flex items-center justify-between\">\n <span class=\"libs-ui-font-h5m color-[#6a7383]\">{{ 'i18n_color_custom' | translate }}</span>\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n [classIconLeft]=\"'libs-ui-icon-add'\"\n [label]=\"'i18n_add_new'\"\n [popover]=\"{\n mode: 'click-toggle',\n ignoreHiddenPopoverContentWhenMouseLeave: true,\n config: {\n template: colorPicker,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex() + 1,\n classInclude: 'w-[350px]',\n direction: 'left',\n directionDistance: -100,\n position: {\n mode: 'start',\n distance: -165,\n },\n },\n }\"\n [classInclude]=\"'py-[2px] px-[0]'\"\n (outPopoverEvent)=\"handlerPopoverAddColorEvent($event)\"\n (outFunctionsControl)=\"handlerAddColorFunctionControl($event)\" />\n </div>\n @if (colorCustom().length) {\n <div class=\"grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorCustom(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (keydown.enter)=\"handlerSelectColor($event, color)\"></div>\n </div>\n }\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #colorPicker>\n <div class=\"p-[16px] w-auto h-auto\">\n <libs_ui-components-color_picker\n [customOptions]=\"customOptions()\"\n (outColorChange)=\"handlerColorChange($event)\" />\n <div class=\"flex items-center justify-end pt-[16px]\">\n <libs_ui-components-buttons-button\n [label]=\"'i18n_cancel'\"\n [type]=\"'button-third'\"\n (outClick)=\"handlerAction($event, 'cancel')\" />\n <libs_ui-components-buttons-button\n [label]=\"'i18n_apply'\"\n [classInclude]=\"'ml-[16px]'\"\n (outClick)=\"handlerAction($event, 'apply')\" />\n </div>\n </div>\n</ng-template>\n" }]
|
|
140
140
|
}] });
|
|
141
141
|
|
|
142
142
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libs-ui-components-inputs-color.mjs","sources":["../../../../../../libs-ui/components/inputs/color/src/inputs-color.component.ts","../../../../../../libs-ui/components/inputs/color/src/inputs-color.component.html","../../../../../../libs-ui/components/inputs/color/src/libs-ui-components-inputs-color.ts"],"sourcesContent":["import { LowerCasePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, model, OnDestroy, OnInit, output, signal } from '@angular/core';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { IPickerCustomOptions, LibsUiComponentsColorPickerComponent } from '@libs-ui/components-color-picker';\nimport { LibsUiComponentsInputsValidComponent } from '@libs-ui/components-inputs-valid';\nimport { IFlagMouse, IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent, TYPE_POPOVER_EVENT } from '@libs-ui/components-popover';\nimport { UtilsCache } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { IColorPickerData } from './interfaces/color.interface';\n\n/**\n * Component input chọn màu sắc (Color Picker) hỗ trợ độ mờ (opacity)\n * Cung cấp bảng màu mặc định và cho phép người dùng lưu bảng màu tùy chỉnh\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-color',\n templateUrl: './inputs-color.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, LowerCasePipe, LibsUiComponentsPopoverComponent, LibsUiComponentsButtonsButtonComponent, LibsUiComponentsInputsValidComponent, LibsUiComponentsColorPickerComponent],\n})\nexport class LibsUiComponentsInputsColorComponent implements OnInit, OnDestroy {\n // #region PROPERTY\n protected colorDefault = signal<Array<string>>([]);\n protected showPopup = signal<boolean>(false);\n protected colorCustom = signal<Array<string>>([]);\n protected flagMouse = signal<IFlagMouse>({ isMouseEnter: false, isMouseEnterContent: false });\n\n private readonly colorAdd = signal<string | undefined>(undefined);\n private readonly popoverFunctionControl = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n private readonly popoverAddColorFunctionControl = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n\n // #region INPUT\n /** Dữ liệu màu sắc và độ mờ hiện tại */\n readonly data = model<IColorPickerData>({ color: '', opacity: 100 });\n\n /** Z-index cho popover bảng màu */\n readonly zIndex = model<number>(1200);\n\n /** Cấu hình tùy chỉnh cho color picker */\n readonly customOptions = input<IPickerCustomOptions>();\n\n /** Function lấy danh sách màu mặc định */\n readonly functionGetListColorDefault = input<() => Promise<Array<string>>>();\n\n /** Function lấy danh sách màu tùy chỉnh đã lưu */\n readonly functionGetListColorCustom = input<() => Promise<Array<string>>>();\n\n /** Function lưu danh sách màu tùy chỉnh mới */\n readonly functionSetListColorCustom = input<(colors: Array<string>) => Promise<void>>();\n\n // #region OUTPUT\n /** Emit khi màu sắc hoặc độ mờ thay đổi */\n readonly outColorChange = output<IColorPickerData>();\n\n ngOnInit() {\n this.getListColorDefault();\n }\n\n /* FUNCTIONS */\n private async getListColorDefault() {\n const functionGetListColorDefault = this.functionGetListColorDefault();\n\n if (functionGetListColorDefault) {\n this.colorDefault.set(await functionGetListColorDefault());\n\n return;\n }\n this.colorDefault.set((await UtilsCache.GetAsync('knfjsdfwenclsdnckjsdfsdfsdfshimdsjdfjksuwesfsdfsdf')) || []);\n }\n\n private async getListColorCustom() {\n const functionGetListColorCustom = this.functionGetListColorCustom();\n\n if (functionGetListColorCustom) {\n this.colorCustom.set(await functionGetListColorCustom());\n\n return;\n }\n this.colorCustom.set((await UtilsCache.GetAsync('knfjsdfwenclsdnckjsdfsdfsdfshimdsjdfjksudvsjahdvjasjdhwesfsdfsdf')) || []);\n }\n\n protected handlerPopoverEvent(type: TYPE_POPOVER_EVENT) {\n if (type === 'show') {\n this.showPopup.set(true);\n this.getListColorCustom();\n\n return;\n }\n if (type === 'remove') {\n this.showPopup.set(false);\n }\n }\n\n protected handlerSelectColor(event: Event, color: string) {\n event.stopPropagation();\n this.data.update((value) => ({ ...value, color }));\n this.outColorChange.emit(this.data());\n }\n\n protected handlerChangeOpacity() {\n this.outColorChange.emit(this.data());\n }\n\n protected handlerColorChange(event: string) {\n this.colorAdd.set(event);\n }\n\n protected handlerPopoverAddColorEvent(type: TYPE_POPOVER_EVENT) {\n if (type === 'show') {\n this.flagMouse.set({ isMouseEnter: true, isMouseEnterContent: true });\n\n return;\n }\n if (type === 'remove') {\n setTimeout(() => {\n this.flagMouse.set({ isMouseEnter: false, isMouseEnterContent: false });\n }, 500);\n }\n }\n\n protected handlerFunctionControl(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControl.set(event);\n }\n\n protected handlerAddColorFunctionControl(event: IPopoverFunctionControlEvent) {\n this.popoverAddColorFunctionControl.set(event);\n }\n\n protected handlerAction(event: Event, action: 'cancel' | 'apply') {\n event.stopPropagation();\n this.popoverAddColorFunctionControl()?.removePopoverOverlay();\n if (action === 'cancel') {\n return;\n }\n const colorAdd = this.colorAdd();\n\n if (!colorAdd) {\n return;\n }\n this.handlerSelectColor(event, colorAdd);\n if (this.colorCustom().find((color) => color === colorAdd)) {\n return;\n }\n this.colorCustom.update((value) => {\n value.unshift(colorAdd);\n if (value.length > 8) {\n value.splice(8, value.length - 8);\n }\n\n return [...value];\n });\n this.setColorCustom();\n }\n\n private async setColorCustom() {\n const functionSetListColorCustom = this.functionSetListColorCustom();\n\n if (functionSetListColorCustom) {\n await functionSetListColorCustom(this.colorCustom());\n\n return;\n }\n UtilsCache.SetAsync('knfjsdfwenclsdnckjsdfsdfsdfshimdsjdfjksudvsjahdvjasjdhwesfsdfsdf', this.colorCustom(), UtilsCache.CACHE_EXPIRE_NONE);\n }\n\n ngOnDestroy() {\n this.popoverFunctionControl()?.removePopoverOverlay();\n this.popoverAddColorFunctionControl()?.removePopoverOverlay();\n }\n}\n","<div\n class=\"w-full flex justify-between rounded-[4px] h-[32px]\"\n [class.libs-ui-border-general]=\"!showPopup()\"\n [class.libs-ui-border-primary-focus-general]=\"showPopup()\">\n <div\n LibsUiComponentsPopoverDirective\n class=\"w-full flex\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n template: element,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex(),\n classInclude: 'w-[334px]',\n direction: 'left',\n directionDistance: 4,\n position: {\n mode: 'start',\n distance: 0,\n },\n }\"\n [flagMouse]=\"flagMouse()\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\">\n <div class=\"px-[16px] flex items-center\">\n <span\n class=\"w-[16px] h-[16px] rounded-[4px] libs-ui-border-general\"\n [style.background-color]=\"data().color\"></span>\n <span class=\"libs-ui-font-h5r ml-[8px]\">{{ data().color }}</span>\n </div>\n </div>\n <div class=\"w-[80px] shrink-0 libs-ui-border-left-general\">\n <libs_ui-components-inputs-valid\n [noBorder]=\"true\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [(item)]=\"data\"\n [fieldNameBind]=\"'opacity'\"\n [unitsRight]=\"[{ id: '%', label: '%' }]\"\n [keySelectedUnitRight]=\"'%'\"\n [classIncludeInput]=\"'text-center !p-0 !h-[28px] !min-h-[28px]'\"\n [configUnitRight]=\"{ classInclude: '!h-[30px]', fieldKey: 'id', fieldLabel: 'label' }\"\n (outValueChange)=\"handlerChangeOpacity()\" />\n </div>\n</div>\n\n<ng-template #element>\n <div class=\"p-[16px] w-full\">\n <div class=\"mb-[16px] grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorDefault(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (keyup.enter)=\"handlerSelectColor($event, color)\"></div>\n </div>\n }\n </div>\n <div class=\"flex items-center justify-between\">\n <span class=\"libs-ui-font-h5m color-[#6a7383]\">{{ 'i18n_color_custom' | translate }}</span>\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n [classIconLeft]=\"'libs-ui-icon-add'\"\n [label]=\"'i18n_add_new'\"\n [popover]=\"{\n mode: 'click-toggle',\n ignoreHiddenPopoverContentWhenMouseLeave: true,\n config: {\n template: colorPicker,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex() + 1,\n classInclude: 'w-[350px]',\n direction: 'left',\n directionDistance: -100,\n position: {\n mode: 'start',\n distance: -165,\n },\n },\n }\"\n [classInclude]=\"'py-[2px] px-[0]'\"\n (outPopoverEvent)=\"handlerPopoverAddColorEvent($event)\"\n (outFunctionsControl)=\"handlerAddColorFunctionControl($event)\" />\n </div>\n @if (colorCustom().length) {\n <div class=\"grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorCustom(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (keyup.enter)=\"handlerSelectColor($event, color)\"></div>\n </div>\n }\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #colorPicker>\n <div class=\"p-[16px] w-auto h-auto\">\n <libs_ui-components-color_picker\n [customOptions]=\"customOptions()\"\n (outColorChange)=\"handlerColorChange($event)\" />\n <div class=\"flex items-center justify-end pt-[16px]\">\n <libs_ui-components-buttons-button\n [label]=\"'i18n_cancel'\"\n [type]=\"'button-third'\"\n (outClick)=\"handlerAction($event, 'cancel')\" />\n <libs_ui-components-buttons-button\n [label]=\"'i18n_apply'\"\n [classInclude]=\"'ml-[16px]'\"\n (outClick)=\"handlerAction($event, 'apply')\" />\n </div>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"libs-ui-components-inputs-color.mjs","sources":["../../../../../../libs-ui/components/inputs/color/src/inputs-color.component.ts","../../../../../../libs-ui/components/inputs/color/src/inputs-color.component.html","../../../../../../libs-ui/components/inputs/color/src/libs-ui-components-inputs-color.ts"],"sourcesContent":["import { LowerCasePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, model, OnDestroy, OnInit, output, signal } from '@angular/core';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { IPickerCustomOptions, LibsUiComponentsColorPickerComponent } from '@libs-ui/components-color-picker';\nimport { LibsUiComponentsInputsValidComponent } from '@libs-ui/components-inputs-valid';\nimport { IFlagMouse, IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent, TYPE_POPOVER_EVENT } from '@libs-ui/components-popover';\nimport { UtilsCache } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { IColorPickerData } from './interfaces/color.interface';\n\n/**\n * Component input chọn màu sắc (Color Picker) hỗ trợ độ mờ (opacity)\n * Cung cấp bảng màu mặc định và cho phép người dùng lưu bảng màu tùy chỉnh\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-color',\n templateUrl: './inputs-color.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, LowerCasePipe, LibsUiComponentsPopoverComponent, LibsUiComponentsButtonsButtonComponent, LibsUiComponentsInputsValidComponent, LibsUiComponentsColorPickerComponent],\n})\nexport class LibsUiComponentsInputsColorComponent implements OnInit, OnDestroy {\n // #region PROPERTY\n protected colorDefault = signal<Array<string>>([]);\n protected showPopup = signal<boolean>(false);\n protected colorCustom = signal<Array<string>>([]);\n protected flagMouse = signal<IFlagMouse>({ isMouseEnter: false, isMouseEnterContent: false });\n\n private readonly colorAdd = signal<string | undefined>(undefined);\n private readonly popoverFunctionControl = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n private readonly popoverAddColorFunctionControl = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n\n // #region INPUT\n /** Dữ liệu màu sắc và độ mờ hiện tại */\n readonly data = model<IColorPickerData>({ color: '', opacity: 100 });\n\n /** Z-index cho popover bảng màu */\n readonly zIndex = model<number>(1200);\n\n /** Cấu hình tùy chỉnh cho color picker */\n readonly customOptions = input<IPickerCustomOptions>();\n\n /** Function lấy danh sách màu mặc định */\n readonly functionGetListColorDefault = input<() => Promise<Array<string>>>();\n\n /** Function lấy danh sách màu tùy chỉnh đã lưu */\n readonly functionGetListColorCustom = input<() => Promise<Array<string>>>();\n\n /** Function lưu danh sách màu tùy chỉnh mới */\n readonly functionSetListColorCustom = input<(colors: Array<string>) => Promise<void>>();\n\n // #region OUTPUT\n /** Emit khi màu sắc hoặc độ mờ thay đổi */\n readonly outColorChange = output<IColorPickerData>();\n\n ngOnInit() {\n this.getListColorDefault();\n }\n\n /* FUNCTIONS */\n private async getListColorDefault() {\n const functionGetListColorDefault = this.functionGetListColorDefault();\n\n if (functionGetListColorDefault) {\n this.colorDefault.set(await functionGetListColorDefault());\n\n return;\n }\n this.colorDefault.set((await UtilsCache.GetAsync('knfjsdfwenclsdnckjsdfsdfsdfshimdsjdfjksuwesfsdfsdf')) || []);\n }\n\n private async getListColorCustom() {\n const functionGetListColorCustom = this.functionGetListColorCustom();\n\n if (functionGetListColorCustom) {\n this.colorCustom.set(await functionGetListColorCustom());\n\n return;\n }\n this.colorCustom.set((await UtilsCache.GetAsync('knfjsdfwenclsdnckjsdfsdfsdfshimdsjdfjksudvsjahdvjasjdhwesfsdfsdf')) || []);\n }\n\n protected handlerPopoverEvent(type: TYPE_POPOVER_EVENT) {\n if (type === 'show') {\n this.showPopup.set(true);\n this.getListColorCustom();\n\n return;\n }\n if (type === 'remove') {\n this.showPopup.set(false);\n }\n }\n\n protected handlerSelectColor(event: Event, color: string) {\n event.stopPropagation();\n this.data.update((value) => ({ ...value, color }));\n this.outColorChange.emit(this.data());\n }\n\n protected handlerChangeOpacity() {\n this.outColorChange.emit(this.data());\n }\n\n protected handlerColorChange(event: string) {\n this.colorAdd.set(event);\n }\n\n protected handlerPopoverAddColorEvent(type: TYPE_POPOVER_EVENT) {\n if (type === 'show') {\n this.flagMouse.set({ isMouseEnter: true, isMouseEnterContent: true });\n\n return;\n }\n if (type === 'remove') {\n setTimeout(() => {\n this.flagMouse.set({ isMouseEnter: false, isMouseEnterContent: false });\n }, 500);\n }\n }\n\n protected handlerFunctionControl(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControl.set(event);\n }\n\n protected handlerAddColorFunctionControl(event: IPopoverFunctionControlEvent) {\n this.popoverAddColorFunctionControl.set(event);\n }\n\n protected handlerAction(event: Event, action: 'cancel' | 'apply') {\n event.stopPropagation();\n this.popoverAddColorFunctionControl()?.removePopoverOverlay();\n if (action === 'cancel') {\n return;\n }\n const colorAdd = this.colorAdd();\n\n if (!colorAdd) {\n return;\n }\n this.handlerSelectColor(event, colorAdd);\n if (this.colorCustom().find((color) => color === colorAdd)) {\n return;\n }\n this.colorCustom.update((value) => {\n value.unshift(colorAdd);\n if (value.length > 8) {\n value.splice(8, value.length - 8);\n }\n\n return [...value];\n });\n this.setColorCustom();\n }\n\n private async setColorCustom() {\n const functionSetListColorCustom = this.functionSetListColorCustom();\n\n if (functionSetListColorCustom) {\n await functionSetListColorCustom(this.colorCustom());\n\n return;\n }\n UtilsCache.SetAsync('knfjsdfwenclsdnckjsdfsdfsdfshimdsjdfjksudvsjahdvjasjdhwesfsdfsdf', this.colorCustom(), UtilsCache.CACHE_EXPIRE_NONE);\n }\n\n ngOnDestroy() {\n this.popoverFunctionControl()?.removePopoverOverlay();\n this.popoverAddColorFunctionControl()?.removePopoverOverlay();\n }\n}\n","<div\n class=\"w-full flex justify-between rounded-[4px] h-[32px]\"\n [class.libs-ui-border-general]=\"!showPopup()\"\n [class.libs-ui-border-primary-focus-general]=\"showPopup()\">\n <div\n LibsUiComponentsPopoverDirective\n class=\"w-full flex\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n template: element,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex(),\n classInclude: 'w-[334px]',\n direction: 'left',\n directionDistance: 4,\n position: {\n mode: 'start',\n distance: 0,\n },\n }\"\n [flagMouse]=\"flagMouse()\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\">\n <div class=\"px-[16px] flex items-center\">\n <span\n class=\"w-[16px] h-[16px] rounded-[4px] libs-ui-border-general\"\n [style.background-color]=\"data().color\"></span>\n <span class=\"libs-ui-font-h5r ml-[8px]\">{{ data().color }}</span>\n </div>\n </div>\n <div class=\"w-[80px] shrink-0 libs-ui-border-left-general\">\n <libs_ui-components-inputs-valid\n [noBorder]=\"true\"\n [dataType]=\"'int'\"\n [minValueNumber]=\"0\"\n [maxValueNumber]=\"100\"\n [(item)]=\"data\"\n [fieldNameBind]=\"'opacity'\"\n [unitsRight]=\"[{ id: '%', label: '%' }]\"\n [keySelectedUnitRight]=\"'%'\"\n [classIncludeInput]=\"'text-center !p-0 !h-[28px] !min-h-[28px]'\"\n [configUnitRight]=\"{ classInclude: '!h-[30px]', fieldKey: 'id', fieldLabel: 'label' }\"\n (outValueChange)=\"handlerChangeOpacity()\" />\n </div>\n</div>\n\n<ng-template #element>\n <div class=\"p-[16px] w-full\">\n <div class=\"mb-[16px] grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorDefault(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (keydown.enter)=\"handlerSelectColor($event, color)\"></div>\n </div>\n }\n </div>\n <div class=\"flex items-center justify-between\">\n <span class=\"libs-ui-font-h5m color-[#6a7383]\">{{ 'i18n_color_custom' | translate }}</span>\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n [classIconLeft]=\"'libs-ui-icon-add'\"\n [label]=\"'i18n_add_new'\"\n [popover]=\"{\n mode: 'click-toggle',\n ignoreHiddenPopoverContentWhenMouseLeave: true,\n config: {\n template: colorPicker,\n whiteTheme: true,\n ignoreArrow: true,\n widthByParent: false,\n maxWidth: 500,\n maxHeight: 500,\n zIndex: zIndex() + 1,\n classInclude: 'w-[350px]',\n direction: 'left',\n directionDistance: -100,\n position: {\n mode: 'start',\n distance: -165,\n },\n },\n }\"\n [classInclude]=\"'py-[2px] px-[0]'\"\n (outPopoverEvent)=\"handlerPopoverAddColorEvent($event)\"\n (outFunctionsControl)=\"handlerAddColorFunctionControl($event)\" />\n </div>\n @if (colorCustom().length) {\n <div class=\"grid gap-y-[4px] gap-x-[2px] grid-cols-8\">\n @for (color of colorCustom(); track $index; let i = $index) {\n <div class=\"py-[5px] px-[8px] relative\">\n @if ((color | lowercase) === (data().color | lowercase)) {\n <div class=\"w-[30px] h-[30px] rounded-[30px] top-0 left-[3px] absolute libs-ui-border-primary-general !border-2\"></div>\n }\n <div\n class=\"w-[20px] h-[20px] rounded-[20px] cursor-pointer\"\n [class.libs-ui-border-general]=\"(color | lowercase) === '#ffffff'\"\n [style.background-color]=\"color\"\n (click)=\"handlerSelectColor($event, color)\"\n (keydown.enter)=\"handlerSelectColor($event, color)\"></div>\n </div>\n }\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #colorPicker>\n <div class=\"p-[16px] w-auto h-auto\">\n <libs_ui-components-color_picker\n [customOptions]=\"customOptions()\"\n (outColorChange)=\"handlerColorChange($event)\" />\n <div class=\"flex items-center justify-end pt-[16px]\">\n <libs_ui-components-buttons-button\n [label]=\"'i18n_cancel'\"\n [type]=\"'button-third'\"\n (outClick)=\"handlerAction($event, 'cancel')\" />\n <libs_ui-components-buttons-button\n [label]=\"'i18n_apply'\"\n [classInclude]=\"'ml-[16px]'\"\n (outClick)=\"handlerAction($event, 'apply')\" />\n </div>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libs-ui/components-inputs-color",
|
|
3
|
-
"version": "0.2.356-
|
|
3
|
+
"version": "0.2.356-42",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": ">=18.0.0",
|
|
6
6
|
"@angular/core": ">=18.0.0",
|
|
7
|
-
"@libs-ui/components-buttons-button": "0.2.356-
|
|
8
|
-
"@libs-ui/components-inputs-valid": "0.2.356-
|
|
9
|
-
"@libs-ui/components-popover": "0.2.356-
|
|
10
|
-
"@libs-ui/utils": "0.2.356-
|
|
7
|
+
"@libs-ui/components-buttons-button": "0.2.356-42",
|
|
8
|
+
"@libs-ui/components-inputs-valid": "0.2.356-42",
|
|
9
|
+
"@libs-ui/components-popover": "0.2.356-42",
|
|
10
|
+
"@libs-ui/utils": "0.2.356-42",
|
|
11
11
|
"@ngx-translate/core": "^15.0.0",
|
|
12
|
-
"@libs-ui/components-color-picker": "0.2.356-
|
|
12
|
+
"@libs-ui/components-color-picker": "0.2.356-42"
|
|
13
13
|
},
|
|
14
14
|
"sideEffects": false,
|
|
15
15
|
"module": "fesm2022/libs-ui-components-inputs-color.mjs",
|