nxt-color-picker 14.0.0 → 14.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/color-picker/color-picker.component.mjs +4 -4
- package/esm2020/lib/color-picker.directive.mjs +10 -4
- package/esm2020/lib/color-picker.module.mjs +4 -4
- package/esm2020/lib/color-picker.service.mjs +3 -3
- package/esm2020/lib/slider.directive.mjs +3 -3
- package/esm2020/lib/text.directive.mjs +3 -3
- package/esm2020/util/color.mjs +2 -2
- package/fesm2015/nxt-color-picker.mjs +27 -21
- package/fesm2015/nxt-color-picker.mjs.map +1 -1
- package/fesm2020/nxt-color-picker.mjs +27 -21
- package/fesm2020/nxt-color-picker.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -565,11 +565,11 @@ export class ColorPickerComponent {
|
|
|
565
565
|
return new Array(n).fill(1);
|
|
566
566
|
}
|
|
567
567
|
}
|
|
568
|
-
ColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
569
|
-
ColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.1", type: ColorPickerComponent, selector: "cp-color-picker", host: { listeners: { "document:keyup.esc": "onCancel($event)", "document:keyup.enter": "onAccept($event)", "document:mousedown": "onFocusChange($event)", "document:focusin": "onFocusChange($event)" } }, ngImport: i0, template: "<div class=\"color-picker\"\n (click)=\"$event.stopPropagation()\"\n [ngStyle]=\"{\n visibility: !show ? 'hidden' : 'visible',\n width: cpWidth || '',\n height: cpHeight || ''\n }\"\n *ngIf=\"show\">\n <div *ngIf=\"cpDialogDisplay == dialogDisplay.popup\"\n class=\"color-picker__arrow\"\n [ngClass]=\"'color-picker__arrow--' + cpPosition\"></div>\n <div *ngIf=\"cpMode == colorModeInternal.color\"\n class=\"color-picker__sv\"\n cpSlider\n [rgX]=\"1\"\n [rgY]=\"1\"\n (newValue)=\"onColorChange($event)\"\n (dragStart)=\"onDragStart('saturation-lightness')\"\n (dragEnd)=\"onDragEnd('saturation-lightness')\"\n [ngStyle]=\"{ \n backgroundColor: hueSliderColor || ''\n }\">\n <div class=\"color-picker__cursor color-picker__cursor--sv\"\n [ngClass]=\"{ 'color-picker__cursor--light': svSliderLight }\"\n [ngStyle]=\"{\n top: (slider?.v || 0) * 100 + '%',\n left: (slider?.s || 0) * 100 + '%'\n }\"></div>\n </div>\n <div class=\"color-picker__controls\">\n <div class=\"color-picker__selected\">\n <div class=\"color-picker__selected-color\">\n <div [ngStyle]=\"{ \n backgroundColor: selectedColor || ''\n }\"><button\n *ngIf=\"cpAddColorButton && !(cpMaxPresetColors && (cpPresetColors?.length || 0) >= cpMaxPresetColors)\"\n type=\"button\"\n title=\"Add color to preset\"\n i18n-title=\"@@nxt-color-picker.button.add-color\"\n class=\"color-picker__add-selected\"\n [ngClass]=\"{ 'color-picker__add-selected--light': alphaSliderLight }\"\n (click)=\"onAddPresetColor(selectedColor)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\" />\n <path d=\"M0 0h24v24H0z\"\n fill=\"none\" />\n </svg></button></div>\n </div>\n </div>\n <div class=\"color-picker__hav\">\n <div *ngIf=\"cpMode == colorModeInternal.color\"\n class=\"color-picker__slider color-picker__slider--hue\"\n cpSlider\n [rgX]=\"1\"\n (newValue)=\"onHueChange($event)\"\n (dragStart)=\"onDragStart('hue')\"\n (dragEnd)=\"onDragEnd('hue')\">\n <div class=\"color-picker__cursor\"\n [ngClass]=\"{ 'color-picker__cursor--light': hueSliderLight }\"\n [ngStyle]=\"{\n left: (slider?.h || 0) * 100 + '%'\n }\"></div>\n </div>\n <div *ngIf=\"cpMode == colorModeInternal.grayscale\"\n class=\"color-picker__slider color-picker__slider--value\"\n cpSlider\n [rgX]=\"1\"\n (newValue)=\"onValueChange($event)\"\n (dragStart)=\"onDragStart('value')\"\n (dragEnd)=\"onDragEnd('value')\">\n <div class=\"color-picker__cursor\"\n [ngClass]=\"{ 'color-picker__cursor--light': valueSliderLight }\"\n [ngStyle]=\"{\n left: (1 - (slider?.v || 0)) * 100 + '%'\n }\"></div>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__slider color-picker__slider--alpha\"\n cpSlider\n [rgX]=\"1\"\n (newValue)=\"onAlphaChange($event)\"\n (dragStart)=\"onDragStart('alpha')\"\n (dragEnd)=\"onDragEnd('alpha')\">\n <div class=\"color-picker__slider--alpha-bg\"\n [ngStyle]=\"{\n backgroundImage: alphaSliderColor || ''\n }\">\n <div class=\"color-picker__cursor\"\n [ngClass]=\"{ 'color-picker__cursor--light': alphaSliderLight }\"\n [ngStyle]=\"{\n left: (slider?.a || 0) * 100 + '%'\n }\"></div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!cpDisableInput && (cpMode == colorModeInternal.color || cpMode == colorModeInternal.grayscale)\"\n class=\"color-picker__inputs\">\n <div class=\"color-picker__input-fields\">\n <ng-container *ngIf=\"cpMode == colorModeInternal.grayscale; else formatSwitch\">\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"hslaText?.l\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onValueInput($event)\" />\n <span class=\"color-picker__input-field-label\">V</span>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"hslaText?.a\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n <ng-template #formatSwitch>\n <ng-container [ngSwitch]=\"format\">\n <ng-container *ngSwitchCase=\"colorFormat.hsla\">\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"360\"\n cpText\n [rg]=\"360\"\n [value]=\"hslaText?.h\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onHueInput($event)\" />\n <span class=\"color-picker__input-field-label\">H</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"hslaText?.s\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onSaturationInput($event)\" />\n <span class=\"color-picker__input-field-label\">S</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"hslaText?.l\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onLightnessInput($event)\" />\n <span class=\"color-picker__input-field-label\">L</span>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"hslaText?.a\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"colorFormat.rgba\">\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"255\"\n cpText\n [rg]=\"255\"\n [value]=\"rgbaText?.r\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onRedInput($event)\" />\n <span class=\"color-picker__input-field-label\">R</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"255\"\n cpText\n [rg]=\"255\"\n [value]=\"rgbaText?.g\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onGreenInput($event)\" />\n <span class=\"color-picker__input-field-label\">G</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"255\"\n cpText\n [rg]=\"255\"\n [value]=\"rgbaText?.b\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onBlueInput($event)\" />\n <span class=\"color-picker__input-field-label\">B</span>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"hslaText?.a\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"colorFormat.cmyk\">\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"cmykText?.c\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onCyanInput($event)\" />\n <span class=\"color-picker__input-field-label\">C</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"cmykText?.m\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onMagentaInput($event)\" />\n <span class=\"color-picker__input-field-label\">M</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"cmykText?.y\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onYellowInput($event)\" />\n <span class=\"color-picker__input-field-label\">Y</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"cmykText?.k\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onBlackInput($event)\" />\n <span class=\"color-picker__input-field-label\">K</span>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"cmykText?.c\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"color-picker__input-field\">\n <input cpText\n [value]=\"hexText\"\n (blur)=\"onHexInput(null)\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onHexInput($event)\" />\n <span class=\"color-picker__input-field-label\">Hex</span>\n </div>\n <div *ngIf=\"cpAlphaChannel == alphaChannel.forced\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"hexAlpha\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n </ng-container>\n </ng-template>\n </div>\n <div *ngIf=\"cpMode == colorModeInternal.color\"\n class=\"color-picker__input-type\">\n <span class=\"color-picker__input-type-arrow\"\n (click)=\"onFormatToggle(1)\"></span>\n <span class=\"color-picker__input-type-arrow\"\n (click)=\"onFormatToggle(-1)\"></span>\n </div>\n </div>\n <ng-container *ngIf=\"cpPresetColors?.length\">\n <div class=\"color-picker__separator\"></div>\n <div class=\"color-picker__preset\">\n <div *ngIf=\"cpPresetLabel\"\n class=\"color-picker__preset-label\">\n <ng-container *ngIf=\"cpPresetLabel === true; else stringLabel\"\n i18n=\"@@nxt-color-picker.preset-colors\">Preset colors</ng-container>\n <ng-template #stringLabel>{{ cpPresetLabel }}</ng-template>\n </div>\n <div *ngIf=\"cpPresetColors?.length\"\n class=\"color-picker__preset-items\">\n <div *ngFor=\"let color of cpPresetColors\"\n class=\"color-picker__preset-item\"\n [title]=\"color\"\n (click)=\"setColorFromString(color)\">\n <div class=\"color-picker__preset-item-fill\"\n [ngStyle]=\"{ \n backgroundColor: color || ''\n }\"><button *ngIf=\"cpAddColorButton\"\n type=\"button\"\n title=\"Remove Color\"\n i18n-title=\"@@nxt-color-picker.button.remove-color\"\n class=\"color-picker__remove-selected\"\n (click)=\"onRemovePresetColor(color)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\">\n <path\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\n <path d=\"M0 0h24v24H0z\"\n fill=\"none\" />\n </svg></button></div>\n </div>\n <div *ngFor=\"let i of fill(50)\"\n class=\"color-picker__preset-item\"></div>\n </div>\n </div>\n </ng-container>\n <div *ngIf=\"cpOKButton || cpCancelButton\"\n class=\"color-picker__buttons\">\n <button *ngIf=\"cpCancelButton\"\n type=\"button\"\n (click)=\"onCancel($event)\"\n i18n=\"@@nxt-color-picker.button.cancel\">Cancel</button>\n <button *ngIf=\"cpOKButton\"\n type=\"button\"\n (click)=\"onAccept($event)\"\n i18n=\"@@nxt-color-picker.button.ok\">OK</button>\n </div>\n</div>\n", styles: [".color-picker{position:relative;-webkit-user-select:none;user-select:none;background-color:#fff;box-shadow:0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f,0 5px 5px -3px #0003;display:flex;flex-direction:column}.color-picker *{box-sizing:border-box;margin:0;font-size:12px}.color-picker .color-picker__arrow{height:0;width:0;border-style:solid;position:absolute;z-index:999999}.color-picker .color-picker__cursor{cursor:pointer;position:absolute;border-radius:50%;width:16px;height:16px;border:#222222 solid 2px;margin:0 -8px;transition:border .2s linear}.color-picker .color-picker__cursor.color-picker__cursor--sv{margin:-8px}.color-picker .color-picker__cursor.color-picker__cursor--light{border-color:#dadada}.color-picker .color-picker__sv{position:relative;direction:ltr;width:100%;height:130px;border:none;cursor:pointer;touch-action:manipulation;background-image:linear-gradient(to bottom,rgba(0,0,0,0) 0%,rgb(0,0,0) 100%),linear-gradient(to right,rgb(255,255,255) 0%,rgba(255,255,255,0) 100%);background-size:100% 100%}.color-picker .color-picker__controls{display:flex;margin:8px;align-items:center}.color-picker .color-picker__controls .color-picker__selected{margin:4px;flex:48px 0 0}.color-picker .color-picker__controls .color-picker__hav{margin:-4px -4px -4px 0;flex:auto 1 1}.color-picker .color-picker__selected-color{width:48px;height:48px;display:flex;align-items:stretch;justify-content:stretch;border-radius:50%;background-size:16px;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cmVjdCBmaWxsPSIjQ0NDQ0NDIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgeT0iNTAiIGZpbGw9IiNDQ0NDQ0MiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIvPjxyZWN0IHk9IjUwIiBmaWxsPSIjRkZGRkZGIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgZmlsbD0iI0ZGRkZGRiIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIi8+PC9zdmc+);background-repeat:repeat;box-shadow:0 0 8px -2px #00000080}.color-picker .color-picker__selected-color div{width:100%;height:100%;border-radius:50%}.color-picker .color-picker__add-selected{background:none;border:none;padding:0;width:100%;margin:0;color:#222;transition:color .2s linear;display:flex;align-items:center;justify-content:center;height:100%}.color-picker .color-picker__add-selected svg{fill:currentColor;width:24px;height:auto}.color-picker .color-picker__add-selected.color-picker__add-selected--light{color:#dadada}.color-picker .color-picker__hav{display:flex;flex-wrap:wrap}.color-picker .color-picker__slider{width:100%;flex:100% 1 1;height:16px;margin:8px;position:relative}.color-picker .color-picker__slider.color-picker__slider--hue{background-size:100% 100%;background-image:linear-gradient(to right,rgb(255,0,0) 0%,rgb(255,255,0) 16.6666666667%,rgb(0,255,0) 33.3333333333%,rgb(0,255,255) 50%,rgb(0,0,255) 66.6666666667%,rgb(255,0,255) 83.3333333333%,rgb(255,0,0) 100%)}.color-picker .color-picker__slider.color-picker__slider--value{background-size:100% 100%;background-image:linear-gradient(to right,rgb(0,0,0) 0%,rgb(255,255,255) 100%)}.color-picker .color-picker__slider.color-picker__slider--alpha{background-size:16px;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cmVjdCBmaWxsPSIjQ0NDQ0NDIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgeT0iNTAiIGZpbGw9IiNDQ0NDQ0MiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIvPjxyZWN0IHk9IjUwIiBmaWxsPSIjRkZGRkZGIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgZmlsbD0iI0ZGRkZGRiIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIi8+PC9zdmc+);background-repeat:repeat}.color-picker .color-picker__slider.color-picker__slider--alpha .color-picker__slider--alpha-bg{position:absolute;top:0;left:0;right:0;bottom:0}.color-picker .color-picker__inputs{display:flex;margin:8px;align-items:flex-start}.color-picker .color-picker__inputs .color-picker__input-fields{flex:auto 1 1}.color-picker .color-picker__inputs .color-picker__input-type{flex:24px 0 0}.color-picker .color-picker__input-fields{display:flex}.color-picker .color-picker__input-fields .color-picker__input-field{margin:4px;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;flex:20% 1 1}.color-picker .color-picker__input-fields .color-picker__input-field input{text-align:center;font-size:12px;height:24px;-webkit-appearance:none;appearance:none;flex:100% 1 1;padding:1px;border:#999 solid 1px;width:100%;background:none;min-width:0}.color-picker .color-picker__input-fields .color-picker__input-field input:invalid{box-shadow:none}.color-picker .color-picker__input-fields .color-picker__input-field input::-webkit-inner-spin-button,.color-picker .color-picker__input-fields .color-picker__input-field input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.color-picker .color-picker__input-fields .color-picker__input-field .color-picker__input-field-label{flex:100% 1 1;display:block;text-align:center;margin-top:4px}.color-picker .color-picker__input-type{width:24px;height:24px;margin-top:4px;display:flex;flex-wrap:wrap;background-size:contain;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cG9seWdvbiBmaWxsPSIjMzMzMzMzIiBwb2ludHM9IjUwIDE2IDMwIDQ0IDcwIDQ0ICIvPjxwb2x5Z29uIGZpbGw9IiMzMzMzMzMiIHBvaW50cz0iNTAgODQgNzAgNTYgMzAgNTYgIi8+PC9zdmc+);background-repeat:no-repeat;background-position:center}.color-picker .color-picker__input-type .color-picker__input-type-arrow{display:block;cursor:pointer;flex:100% 1 1;width:100%;height:50%}.color-picker .color-picker__separator{border-top:1px solid #999;margin-left:8px;margin-right:8px;flex:100% 1 1}.color-picker .color-picker__preset{display:flex;margin:8px;align-items:center;flex-wrap:wrap}.color-picker .color-picker__preset-label{margin:4px;flex:100% 1 1}.color-picker .color-picker__preset-items{display:flex;flex:100% 1 1;flex-wrap:wrap;align-items:flex-start}.color-picker .color-picker__preset-items .color-picker__preset-item{position:relative;flex:20px 1 1;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cmVjdCBmaWxsPSIjQ0NDQ0NDIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgeT0iNTAiIGZpbGw9IiNDQ0NDQ0MiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIvPjxyZWN0IHk9IjUwIiBmaWxsPSIjRkZGRkZGIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgZmlsbD0iI0ZGRkZGRiIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIi8+PC9zdmc+);background-size:100% 100%;margin:4px;border-radius:4px;border:1px solid #999;cursor:pointer}.color-picker .color-picker__preset-items .color-picker__preset-item .color-picker__preset-item-fill{position:relative;width:100%;padding-bottom:100%;border-radius:3px}.color-picker .color-picker__preset-items .color-picker__preset-item:empty{margin-top:0;margin-bottom:0;border-top:0;border-bottom:0}.color-picker .color-picker__remove-selected{border:none;padding:0;margin:0;color:#222;transition:color .2s linear;align-items:center;justify-content:center;box-shadow:0 0 8px -2px #00000080;position:absolute;width:12px;height:12px;right:-6px;top:-6px;background:#fff;border-radius:50%;display:flex}.color-picker .color-picker__remove-selected svg{fill:currentColor;width:100%;height:auto}.color-picker .color-picker__buttons{display:flex;margin:0 8px 8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.color-picker .color-picker__buttons button{flex:auto 0 0;margin:4px}:host-context(.color-picker__arrow--top) .color-picker{margin-bottom:16px}:host-context(.color-picker__arrow--top) .color-picker__arrow{border-width:12px 6px;border-color:#999 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);left:12px;bottom:-24px}:host-context(.color-picker__arrow--left) .color-picker{margin-right:16px}:host-context(.color-picker__arrow--left) .color-picker__arrow{border-width:6px 12px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) #999;top:12px;left:230px}:host-context(.color-picker__arrow--right) .color-picker{margin-left:16px}:host-context(.color-picker__arrow--right) .color-picker__arrow{border-width:6px 12px;border-color:rgba(0,0,0,0) #999 rgba(0,0,0,0) rgba(0,0,0,0);top:12px;left:-24px}:host-context(.color-picker__arrow--bottom) .color-picker{margin-top:16px}:host-context(.color-picker__arrow--bottom) .color-picker__arrow{border-width:12px 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #999 rgba(0,0,0,0);top:-24px;left:12px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.TextDirective, selector: "[cpText]", inputs: ["rg", "text"], outputs: ["newValue"] }, { kind: "directive", type: i4.SliderDirective, selector: "[cpSlider]", inputs: ["rgX", "rgY", "slider"], outputs: ["dragEnd", "dragStart", "newValue"] }] });
|
|
570
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
568
|
+
ColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: ColorPickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.ColorPickerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
569
|
+
ColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: ColorPickerComponent, selector: "cp-color-picker", host: { listeners: { "document:keyup.esc": "onCancel($event)", "document:keyup.enter": "onAccept($event)", "document:mousedown": "onFocusChange($event)", "document:focusin": "onFocusChange($event)" } }, ngImport: i0, template: "<div class=\"color-picker\"\n (click)=\"$event.stopPropagation()\"\n [ngStyle]=\"{\n visibility: !show ? 'hidden' : 'visible',\n width: cpWidth || '',\n height: cpHeight || ''\n }\"\n *ngIf=\"show\">\n <div *ngIf=\"cpDialogDisplay == dialogDisplay.popup\"\n class=\"color-picker__arrow\"\n [ngClass]=\"'color-picker__arrow--' + cpPosition\"></div>\n <div *ngIf=\"cpMode == colorModeInternal.color\"\n class=\"color-picker__sv\"\n cpSlider\n [rgX]=\"1\"\n [rgY]=\"1\"\n (newValue)=\"onColorChange($event)\"\n (dragStart)=\"onDragStart('saturation-lightness')\"\n (dragEnd)=\"onDragEnd('saturation-lightness')\"\n [ngStyle]=\"{ \n backgroundColor: hueSliderColor || ''\n }\">\n <div class=\"color-picker__cursor color-picker__cursor--sv\"\n [ngClass]=\"{ 'color-picker__cursor--light': svSliderLight }\"\n [ngStyle]=\"{\n top: (slider?.v || 0) * 100 + '%',\n left: (slider?.s || 0) * 100 + '%'\n }\"></div>\n </div>\n <div class=\"color-picker__controls\">\n <div class=\"color-picker__selected\">\n <div class=\"color-picker__selected-color\">\n <div [ngStyle]=\"{ \n backgroundColor: selectedColor || ''\n }\"><button\n *ngIf=\"cpAddColorButton && !(cpMaxPresetColors && (cpPresetColors?.length || 0) >= cpMaxPresetColors)\"\n type=\"button\"\n title=\"Add color to preset\"\n i18n-title=\"@@nxt-color-picker.button.add-color\"\n class=\"color-picker__add-selected\"\n [ngClass]=\"{ 'color-picker__add-selected--light': alphaSliderLight }\"\n (click)=\"onAddPresetColor(selectedColor)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\" />\n <path d=\"M0 0h24v24H0z\"\n fill=\"none\" />\n </svg></button></div>\n </div>\n </div>\n <div class=\"color-picker__hav\">\n <div *ngIf=\"cpMode == colorModeInternal.color\"\n class=\"color-picker__slider color-picker__slider--hue\"\n cpSlider\n [rgX]=\"1\"\n (newValue)=\"onHueChange($event)\"\n (dragStart)=\"onDragStart('hue')\"\n (dragEnd)=\"onDragEnd('hue')\">\n <div class=\"color-picker__cursor\"\n [ngClass]=\"{ 'color-picker__cursor--light': hueSliderLight }\"\n [ngStyle]=\"{\n left: (slider?.h || 0) * 100 + '%'\n }\"></div>\n </div>\n <div *ngIf=\"cpMode == colorModeInternal.grayscale\"\n class=\"color-picker__slider color-picker__slider--value\"\n cpSlider\n [rgX]=\"1\"\n (newValue)=\"onValueChange($event)\"\n (dragStart)=\"onDragStart('value')\"\n (dragEnd)=\"onDragEnd('value')\">\n <div class=\"color-picker__cursor\"\n [ngClass]=\"{ 'color-picker__cursor--light': valueSliderLight }\"\n [ngStyle]=\"{\n left: (1 - (slider?.v || 0)) * 100 + '%'\n }\"></div>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__slider color-picker__slider--alpha\"\n cpSlider\n [rgX]=\"1\"\n (newValue)=\"onAlphaChange($event)\"\n (dragStart)=\"onDragStart('alpha')\"\n (dragEnd)=\"onDragEnd('alpha')\">\n <div class=\"color-picker__slider--alpha-bg\"\n [ngStyle]=\"{\n backgroundImage: alphaSliderColor || ''\n }\">\n <div class=\"color-picker__cursor\"\n [ngClass]=\"{ 'color-picker__cursor--light': alphaSliderLight }\"\n [ngStyle]=\"{\n left: (slider?.a || 0) * 100 + '%'\n }\"></div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!cpDisableInput && (cpMode == colorModeInternal.color || cpMode == colorModeInternal.grayscale)\"\n class=\"color-picker__inputs\">\n <div class=\"color-picker__input-fields\">\n <ng-container *ngIf=\"cpMode == colorModeInternal.grayscale; else formatSwitch\">\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"hslaText?.l\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onValueInput($event)\" />\n <span class=\"color-picker__input-field-label\">V</span>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"hslaText?.a\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n <ng-template #formatSwitch>\n <ng-container [ngSwitch]=\"format\">\n <ng-container *ngSwitchCase=\"colorFormat.hsla\">\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"360\"\n cpText\n [rg]=\"360\"\n [value]=\"hslaText?.h\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onHueInput($event)\" />\n <span class=\"color-picker__input-field-label\">H</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"hslaText?.s\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onSaturationInput($event)\" />\n <span class=\"color-picker__input-field-label\">S</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"hslaText?.l\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onLightnessInput($event)\" />\n <span class=\"color-picker__input-field-label\">L</span>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"hslaText?.a\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"colorFormat.rgba\">\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"255\"\n cpText\n [rg]=\"255\"\n [value]=\"rgbaText?.r\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onRedInput($event)\" />\n <span class=\"color-picker__input-field-label\">R</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"255\"\n cpText\n [rg]=\"255\"\n [value]=\"rgbaText?.g\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onGreenInput($event)\" />\n <span class=\"color-picker__input-field-label\">G</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"255\"\n cpText\n [rg]=\"255\"\n [value]=\"rgbaText?.b\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onBlueInput($event)\" />\n <span class=\"color-picker__input-field-label\">B</span>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"hslaText?.a\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"colorFormat.cmyk\">\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"cmykText?.c\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onCyanInput($event)\" />\n <span class=\"color-picker__input-field-label\">C</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"cmykText?.m\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onMagentaInput($event)\" />\n <span class=\"color-picker__input-field-label\">M</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"cmykText?.y\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onYellowInput($event)\" />\n <span class=\"color-picker__input-field-label\">Y</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"cmykText?.k\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onBlackInput($event)\" />\n <span class=\"color-picker__input-field-label\">K</span>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"cmykText?.c\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"color-picker__input-field\">\n <input cpText\n [value]=\"hexText\"\n (blur)=\"onHexInput(null)\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onHexInput($event)\" />\n <span class=\"color-picker__input-field-label\">Hex</span>\n </div>\n <div *ngIf=\"cpAlphaChannel == alphaChannel.forced\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"hexAlpha\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n </ng-container>\n </ng-template>\n </div>\n <div *ngIf=\"cpMode == colorModeInternal.color\"\n class=\"color-picker__input-type\">\n <span class=\"color-picker__input-type-arrow\"\n (click)=\"onFormatToggle(1)\"></span>\n <span class=\"color-picker__input-type-arrow\"\n (click)=\"onFormatToggle(-1)\"></span>\n </div>\n </div>\n <ng-container *ngIf=\"cpPresetColors?.length\">\n <div class=\"color-picker__separator\"></div>\n <div class=\"color-picker__preset\">\n <div *ngIf=\"cpPresetLabel\"\n class=\"color-picker__preset-label\">\n <ng-container *ngIf=\"cpPresetLabel === true; else stringLabel\"\n i18n=\"@@nxt-color-picker.preset-colors\">Preset colors</ng-container>\n <ng-template #stringLabel>{{ cpPresetLabel }}</ng-template>\n </div>\n <div *ngIf=\"cpPresetColors?.length\"\n class=\"color-picker__preset-items\">\n <div *ngFor=\"let color of cpPresetColors\"\n class=\"color-picker__preset-item\"\n [title]=\"color\"\n (click)=\"setColorFromString(color)\">\n <div class=\"color-picker__preset-item-fill\"\n [ngStyle]=\"{ \n backgroundColor: color || ''\n }\"><button *ngIf=\"cpAddColorButton\"\n type=\"button\"\n title=\"Remove Color\"\n i18n-title=\"@@nxt-color-picker.button.remove-color\"\n class=\"color-picker__remove-selected\"\n (click)=\"onRemovePresetColor(color)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\">\n <path\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\n <path d=\"M0 0h24v24H0z\"\n fill=\"none\" />\n </svg></button></div>\n </div>\n <div *ngFor=\"let i of fill(50)\"\n class=\"color-picker__preset-item\"></div>\n </div>\n </div>\n </ng-container>\n <div *ngIf=\"cpOKButton || cpCancelButton\"\n class=\"color-picker__buttons\">\n <button *ngIf=\"cpCancelButton\"\n type=\"button\"\n (click)=\"onCancel($event)\"\n i18n=\"@@nxt-color-picker.button.cancel\">Cancel</button>\n <button *ngIf=\"cpOKButton\"\n type=\"button\"\n (click)=\"onAccept($event)\"\n i18n=\"@@nxt-color-picker.button.ok\">OK</button>\n </div>\n</div>\n", styles: [".color-picker{position:relative;-webkit-user-select:none;user-select:none;background-color:#fff;box-shadow:0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f,0 5px 5px -3px #0003;display:flex;flex-direction:column}.color-picker *{box-sizing:border-box;margin:0;font-size:12px}.color-picker .color-picker__arrow{height:0;width:0;border-style:solid;position:absolute;z-index:999999}.color-picker .color-picker__cursor{cursor:pointer;position:absolute;border-radius:50%;width:16px;height:16px;border:#222222 solid 2px;margin:0 -8px;transition:border .2s linear}.color-picker .color-picker__cursor.color-picker__cursor--sv{margin:-8px}.color-picker .color-picker__cursor.color-picker__cursor--light{border-color:#dadada}.color-picker .color-picker__sv{position:relative;direction:ltr;width:100%;height:130px;border:none;cursor:pointer;touch-action:manipulation;background-image:linear-gradient(to bottom,rgba(0,0,0,0) 0%,rgb(0,0,0) 100%),linear-gradient(to right,rgb(255,255,255) 0%,rgba(255,255,255,0) 100%);background-size:100% 100%}.color-picker .color-picker__controls{display:flex;margin:8px;align-items:center}.color-picker .color-picker__controls .color-picker__selected{margin:4px;flex:48px 0 0}.color-picker .color-picker__controls .color-picker__hav{margin:-4px -4px -4px 0;flex:auto 1 1}.color-picker .color-picker__selected-color{width:48px;height:48px;display:flex;align-items:stretch;justify-content:stretch;border-radius:50%;background-size:16px;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cmVjdCBmaWxsPSIjQ0NDQ0NDIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgeT0iNTAiIGZpbGw9IiNDQ0NDQ0MiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIvPjxyZWN0IHk9IjUwIiBmaWxsPSIjRkZGRkZGIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgZmlsbD0iI0ZGRkZGRiIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIi8+PC9zdmc+);background-repeat:repeat;box-shadow:0 0 8px -2px #00000080}.color-picker .color-picker__selected-color div{width:100%;height:100%;border-radius:50%}.color-picker .color-picker__add-selected{background:none;border:none;padding:0;width:100%;margin:0;color:#222;transition:color .2s linear;display:flex;align-items:center;justify-content:center;height:100%}.color-picker .color-picker__add-selected svg{fill:currentcolor;width:24px;height:auto}.color-picker .color-picker__add-selected.color-picker__add-selected--light{color:#dadada}.color-picker .color-picker__hav{display:flex;flex-wrap:wrap}.color-picker .color-picker__slider{width:100%;flex:100% 1 1;height:16px;margin:8px;position:relative}.color-picker .color-picker__slider.color-picker__slider--hue{background-size:100% 100%;background-image:linear-gradient(to right,rgb(255,0,0) 0%,rgb(255,255,0) 16.6666666667%,rgb(0,255,0) 33.3333333333%,rgb(0,255,255) 50%,rgb(0,0,255) 66.6666666667%,rgb(255,0,255) 83.3333333333%,rgb(255,0,0) 100%)}.color-picker .color-picker__slider.color-picker__slider--value{background-size:100% 100%;background-image:linear-gradient(to right,rgb(0,0,0) 0%,rgb(255,255,255) 100%)}.color-picker .color-picker__slider.color-picker__slider--alpha{background-size:16px;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cmVjdCBmaWxsPSIjQ0NDQ0NDIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgeT0iNTAiIGZpbGw9IiNDQ0NDQ0MiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIvPjxyZWN0IHk9IjUwIiBmaWxsPSIjRkZGRkZGIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgZmlsbD0iI0ZGRkZGRiIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIi8+PC9zdmc+);background-repeat:repeat}.color-picker .color-picker__slider.color-picker__slider--alpha .color-picker__slider--alpha-bg{position:absolute;top:0;left:0;right:0;bottom:0}.color-picker .color-picker__inputs{display:flex;margin:8px;align-items:flex-start}.color-picker .color-picker__inputs .color-picker__input-fields{flex:auto 1 1}.color-picker .color-picker__inputs .color-picker__input-type{flex:24px 0 0}.color-picker .color-picker__input-fields{display:flex}.color-picker .color-picker__input-fields .color-picker__input-field{margin:4px;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;flex:20% 1 1}.color-picker .color-picker__input-fields .color-picker__input-field input{text-align:center;font-size:12px;height:24px;-webkit-appearance:none;appearance:none;flex:100% 1 1;padding:1px;border:#999 solid 1px;width:100%;background:none;min-width:0}.color-picker .color-picker__input-fields .color-picker__input-field input:invalid{box-shadow:none}.color-picker .color-picker__input-fields .color-picker__input-field input::-webkit-inner-spin-button,.color-picker .color-picker__input-fields .color-picker__input-field input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.color-picker .color-picker__input-fields .color-picker__input-field .color-picker__input-field-label{flex:100% 1 1;display:block;text-align:center;margin-top:4px}.color-picker .color-picker__input-type{width:24px;height:24px;margin-top:4px;display:flex;flex-wrap:wrap;background-size:contain;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cG9seWdvbiBmaWxsPSIjMzMzMzMzIiBwb2ludHM9IjUwIDE2IDMwIDQ0IDcwIDQ0ICIvPjxwb2x5Z29uIGZpbGw9IiMzMzMzMzMiIHBvaW50cz0iNTAgODQgNzAgNTYgMzAgNTYgIi8+PC9zdmc+);background-repeat:no-repeat;background-position:center}.color-picker .color-picker__input-type .color-picker__input-type-arrow{display:block;cursor:pointer;flex:100% 1 1;width:100%;height:50%}.color-picker .color-picker__separator{border-top:1px solid #999;margin-left:8px;margin-right:8px;flex:100% 1 1}.color-picker .color-picker__preset{display:flex;margin:8px;align-items:center;flex-wrap:wrap}.color-picker .color-picker__preset-label{margin:4px;flex:100% 1 1}.color-picker .color-picker__preset-items{display:flex;flex:100% 1 1;flex-wrap:wrap;align-items:flex-start}.color-picker .color-picker__preset-items .color-picker__preset-item{position:relative;flex:20px 1 1;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cmVjdCBmaWxsPSIjQ0NDQ0NDIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgeT0iNTAiIGZpbGw9IiNDQ0NDQ0MiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIvPjxyZWN0IHk9IjUwIiBmaWxsPSIjRkZGRkZGIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgZmlsbD0iI0ZGRkZGRiIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIi8+PC9zdmc+);background-size:100% 100%;margin:4px;border-radius:4px;border:1px solid #999;cursor:pointer}.color-picker .color-picker__preset-items .color-picker__preset-item .color-picker__preset-item-fill{position:relative;width:100%;padding-bottom:100%;border-radius:3px}.color-picker .color-picker__preset-items .color-picker__preset-item:empty{margin-top:0;margin-bottom:0;border-top:0;border-bottom:0}.color-picker .color-picker__remove-selected{border:none;padding:0;margin:0;color:#222;transition:color .2s linear;align-items:center;justify-content:center;box-shadow:0 0 8px -2px #00000080;position:absolute;width:12px;height:12px;right:-6px;top:-6px;background:#fff;border-radius:50%;display:flex}.color-picker .color-picker__remove-selected svg{fill:currentcolor;width:100%;height:auto}.color-picker .color-picker__buttons{display:flex;margin:0 8px 8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.color-picker .color-picker__buttons button{flex:auto 0 0;margin:4px}:host-context(.color-picker__arrow--top) .color-picker{margin-bottom:16px}:host-context(.color-picker__arrow--top) .color-picker__arrow{border-width:12px 6px;border-color:#999 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);left:12px;bottom:-24px}:host-context(.color-picker__arrow--left) .color-picker{margin-right:16px}:host-context(.color-picker__arrow--left) .color-picker__arrow{border-width:6px 12px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) #999;top:12px;left:230px}:host-context(.color-picker__arrow--right) .color-picker{margin-left:16px}:host-context(.color-picker__arrow--right) .color-picker__arrow{border-width:6px 12px;border-color:rgba(0,0,0,0) #999 rgba(0,0,0,0) rgba(0,0,0,0);top:12px;left:-24px}:host-context(.color-picker__arrow--bottom) .color-picker{margin-top:16px}:host-context(.color-picker__arrow--bottom) .color-picker__arrow{border-width:12px 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #999 rgba(0,0,0,0);top:-24px;left:12px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.TextDirective, selector: "[cpText]", inputs: ["rg", "text"], outputs: ["newValue"] }, { kind: "directive", type: i4.SliderDirective, selector: "[cpSlider]", inputs: ["rgX", "rgY", "slider"], outputs: ["dragEnd", "dragStart", "newValue"] }] });
|
|
570
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: ColorPickerComponent, decorators: [{
|
|
571
571
|
type: Component,
|
|
572
|
-
args: [{ selector: 'cp-color-picker', encapsulation: ViewEncapsulation.Emulated, template: "<div class=\"color-picker\"\n (click)=\"$event.stopPropagation()\"\n [ngStyle]=\"{\n visibility: !show ? 'hidden' : 'visible',\n width: cpWidth || '',\n height: cpHeight || ''\n }\"\n *ngIf=\"show\">\n <div *ngIf=\"cpDialogDisplay == dialogDisplay.popup\"\n class=\"color-picker__arrow\"\n [ngClass]=\"'color-picker__arrow--' + cpPosition\"></div>\n <div *ngIf=\"cpMode == colorModeInternal.color\"\n class=\"color-picker__sv\"\n cpSlider\n [rgX]=\"1\"\n [rgY]=\"1\"\n (newValue)=\"onColorChange($event)\"\n (dragStart)=\"onDragStart('saturation-lightness')\"\n (dragEnd)=\"onDragEnd('saturation-lightness')\"\n [ngStyle]=\"{ \n backgroundColor: hueSliderColor || ''\n }\">\n <div class=\"color-picker__cursor color-picker__cursor--sv\"\n [ngClass]=\"{ 'color-picker__cursor--light': svSliderLight }\"\n [ngStyle]=\"{\n top: (slider?.v || 0) * 100 + '%',\n left: (slider?.s || 0) * 100 + '%'\n }\"></div>\n </div>\n <div class=\"color-picker__controls\">\n <div class=\"color-picker__selected\">\n <div class=\"color-picker__selected-color\">\n <div [ngStyle]=\"{ \n backgroundColor: selectedColor || ''\n }\"><button\n *ngIf=\"cpAddColorButton && !(cpMaxPresetColors && (cpPresetColors?.length || 0) >= cpMaxPresetColors)\"\n type=\"button\"\n title=\"Add color to preset\"\n i18n-title=\"@@nxt-color-picker.button.add-color\"\n class=\"color-picker__add-selected\"\n [ngClass]=\"{ 'color-picker__add-selected--light': alphaSliderLight }\"\n (click)=\"onAddPresetColor(selectedColor)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\" />\n <path d=\"M0 0h24v24H0z\"\n fill=\"none\" />\n </svg></button></div>\n </div>\n </div>\n <div class=\"color-picker__hav\">\n <div *ngIf=\"cpMode == colorModeInternal.color\"\n class=\"color-picker__slider color-picker__slider--hue\"\n cpSlider\n [rgX]=\"1\"\n (newValue)=\"onHueChange($event)\"\n (dragStart)=\"onDragStart('hue')\"\n (dragEnd)=\"onDragEnd('hue')\">\n <div class=\"color-picker__cursor\"\n [ngClass]=\"{ 'color-picker__cursor--light': hueSliderLight }\"\n [ngStyle]=\"{\n left: (slider?.h || 0) * 100 + '%'\n }\"></div>\n </div>\n <div *ngIf=\"cpMode == colorModeInternal.grayscale\"\n class=\"color-picker__slider color-picker__slider--value\"\n cpSlider\n [rgX]=\"1\"\n (newValue)=\"onValueChange($event)\"\n (dragStart)=\"onDragStart('value')\"\n (dragEnd)=\"onDragEnd('value')\">\n <div class=\"color-picker__cursor\"\n [ngClass]=\"{ 'color-picker__cursor--light': valueSliderLight }\"\n [ngStyle]=\"{\n left: (1 - (slider?.v || 0)) * 100 + '%'\n }\"></div>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__slider color-picker__slider--alpha\"\n cpSlider\n [rgX]=\"1\"\n (newValue)=\"onAlphaChange($event)\"\n (dragStart)=\"onDragStart('alpha')\"\n (dragEnd)=\"onDragEnd('alpha')\">\n <div class=\"color-picker__slider--alpha-bg\"\n [ngStyle]=\"{\n backgroundImage: alphaSliderColor || ''\n }\">\n <div class=\"color-picker__cursor\"\n [ngClass]=\"{ 'color-picker__cursor--light': alphaSliderLight }\"\n [ngStyle]=\"{\n left: (slider?.a || 0) * 100 + '%'\n }\"></div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!cpDisableInput && (cpMode == colorModeInternal.color || cpMode == colorModeInternal.grayscale)\"\n class=\"color-picker__inputs\">\n <div class=\"color-picker__input-fields\">\n <ng-container *ngIf=\"cpMode == colorModeInternal.grayscale; else formatSwitch\">\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"hslaText?.l\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onValueInput($event)\" />\n <span class=\"color-picker__input-field-label\">V</span>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"hslaText?.a\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n <ng-template #formatSwitch>\n <ng-container [ngSwitch]=\"format\">\n <ng-container *ngSwitchCase=\"colorFormat.hsla\">\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"360\"\n cpText\n [rg]=\"360\"\n [value]=\"hslaText?.h\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onHueInput($event)\" />\n <span class=\"color-picker__input-field-label\">H</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"hslaText?.s\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onSaturationInput($event)\" />\n <span class=\"color-picker__input-field-label\">S</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"hslaText?.l\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onLightnessInput($event)\" />\n <span class=\"color-picker__input-field-label\">L</span>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"hslaText?.a\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"colorFormat.rgba\">\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"255\"\n cpText\n [rg]=\"255\"\n [value]=\"rgbaText?.r\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onRedInput($event)\" />\n <span class=\"color-picker__input-field-label\">R</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"255\"\n cpText\n [rg]=\"255\"\n [value]=\"rgbaText?.g\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onGreenInput($event)\" />\n <span class=\"color-picker__input-field-label\">G</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"255\"\n cpText\n [rg]=\"255\"\n [value]=\"rgbaText?.b\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onBlueInput($event)\" />\n <span class=\"color-picker__input-field-label\">B</span>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"hslaText?.a\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"colorFormat.cmyk\">\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"cmykText?.c\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onCyanInput($event)\" />\n <span class=\"color-picker__input-field-label\">C</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"cmykText?.m\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onMagentaInput($event)\" />\n <span class=\"color-picker__input-field-label\">M</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"cmykText?.y\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onYellowInput($event)\" />\n <span class=\"color-picker__input-field-label\">Y</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"cmykText?.k\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onBlackInput($event)\" />\n <span class=\"color-picker__input-field-label\">K</span>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"cmykText?.c\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"color-picker__input-field\">\n <input cpText\n [value]=\"hexText\"\n (blur)=\"onHexInput(null)\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onHexInput($event)\" />\n <span class=\"color-picker__input-field-label\">Hex</span>\n </div>\n <div *ngIf=\"cpAlphaChannel == alphaChannel.forced\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"hexAlpha\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n </ng-container>\n </ng-template>\n </div>\n <div *ngIf=\"cpMode == colorModeInternal.color\"\n class=\"color-picker__input-type\">\n <span class=\"color-picker__input-type-arrow\"\n (click)=\"onFormatToggle(1)\"></span>\n <span class=\"color-picker__input-type-arrow\"\n (click)=\"onFormatToggle(-1)\"></span>\n </div>\n </div>\n <ng-container *ngIf=\"cpPresetColors?.length\">\n <div class=\"color-picker__separator\"></div>\n <div class=\"color-picker__preset\">\n <div *ngIf=\"cpPresetLabel\"\n class=\"color-picker__preset-label\">\n <ng-container *ngIf=\"cpPresetLabel === true; else stringLabel\"\n i18n=\"@@nxt-color-picker.preset-colors\">Preset colors</ng-container>\n <ng-template #stringLabel>{{ cpPresetLabel }}</ng-template>\n </div>\n <div *ngIf=\"cpPresetColors?.length\"\n class=\"color-picker__preset-items\">\n <div *ngFor=\"let color of cpPresetColors\"\n class=\"color-picker__preset-item\"\n [title]=\"color\"\n (click)=\"setColorFromString(color)\">\n <div class=\"color-picker__preset-item-fill\"\n [ngStyle]=\"{ \n backgroundColor: color || ''\n }\"><button *ngIf=\"cpAddColorButton\"\n type=\"button\"\n title=\"Remove Color\"\n i18n-title=\"@@nxt-color-picker.button.remove-color\"\n class=\"color-picker__remove-selected\"\n (click)=\"onRemovePresetColor(color)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\">\n <path\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\n <path d=\"M0 0h24v24H0z\"\n fill=\"none\" />\n </svg></button></div>\n </div>\n <div *ngFor=\"let i of fill(50)\"\n class=\"color-picker__preset-item\"></div>\n </div>\n </div>\n </ng-container>\n <div *ngIf=\"cpOKButton || cpCancelButton\"\n class=\"color-picker__buttons\">\n <button *ngIf=\"cpCancelButton\"\n type=\"button\"\n (click)=\"onCancel($event)\"\n i18n=\"@@nxt-color-picker.button.cancel\">Cancel</button>\n <button *ngIf=\"cpOKButton\"\n type=\"button\"\n (click)=\"onAccept($event)\"\n i18n=\"@@nxt-color-picker.button.ok\">OK</button>\n </div>\n</div>\n", styles: [".color-picker{position:relative;-webkit-user-select:none;user-select:none;background-color:#fff;box-shadow:0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f,0 5px 5px -3px #0003;display:flex;flex-direction:column}.color-picker *{box-sizing:border-box;margin:0;font-size:12px}.color-picker .color-picker__arrow{height:0;width:0;border-style:solid;position:absolute;z-index:999999}.color-picker .color-picker__cursor{cursor:pointer;position:absolute;border-radius:50%;width:16px;height:16px;border:#222222 solid 2px;margin:0 -8px;transition:border .2s linear}.color-picker .color-picker__cursor.color-picker__cursor--sv{margin:-8px}.color-picker .color-picker__cursor.color-picker__cursor--light{border-color:#dadada}.color-picker .color-picker__sv{position:relative;direction:ltr;width:100%;height:130px;border:none;cursor:pointer;touch-action:manipulation;background-image:linear-gradient(to bottom,rgba(0,0,0,0) 0%,rgb(0,0,0) 100%),linear-gradient(to right,rgb(255,255,255) 0%,rgba(255,255,255,0) 100%);background-size:100% 100%}.color-picker .color-picker__controls{display:flex;margin:8px;align-items:center}.color-picker .color-picker__controls .color-picker__selected{margin:4px;flex:48px 0 0}.color-picker .color-picker__controls .color-picker__hav{margin:-4px -4px -4px 0;flex:auto 1 1}.color-picker .color-picker__selected-color{width:48px;height:48px;display:flex;align-items:stretch;justify-content:stretch;border-radius:50%;background-size:16px;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cmVjdCBmaWxsPSIjQ0NDQ0NDIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgeT0iNTAiIGZpbGw9IiNDQ0NDQ0MiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIvPjxyZWN0IHk9IjUwIiBmaWxsPSIjRkZGRkZGIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgZmlsbD0iI0ZGRkZGRiIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIi8+PC9zdmc+);background-repeat:repeat;box-shadow:0 0 8px -2px #00000080}.color-picker .color-picker__selected-color div{width:100%;height:100%;border-radius:50%}.color-picker .color-picker__add-selected{background:none;border:none;padding:0;width:100%;margin:0;color:#222;transition:color .2s linear;display:flex;align-items:center;justify-content:center;height:100%}.color-picker .color-picker__add-selected svg{fill:currentColor;width:24px;height:auto}.color-picker .color-picker__add-selected.color-picker__add-selected--light{color:#dadada}.color-picker .color-picker__hav{display:flex;flex-wrap:wrap}.color-picker .color-picker__slider{width:100%;flex:100% 1 1;height:16px;margin:8px;position:relative}.color-picker .color-picker__slider.color-picker__slider--hue{background-size:100% 100%;background-image:linear-gradient(to right,rgb(255,0,0) 0%,rgb(255,255,0) 16.6666666667%,rgb(0,255,0) 33.3333333333%,rgb(0,255,255) 50%,rgb(0,0,255) 66.6666666667%,rgb(255,0,255) 83.3333333333%,rgb(255,0,0) 100%)}.color-picker .color-picker__slider.color-picker__slider--value{background-size:100% 100%;background-image:linear-gradient(to right,rgb(0,0,0) 0%,rgb(255,255,255) 100%)}.color-picker .color-picker__slider.color-picker__slider--alpha{background-size:16px;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cmVjdCBmaWxsPSIjQ0NDQ0NDIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgeT0iNTAiIGZpbGw9IiNDQ0NDQ0MiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIvPjxyZWN0IHk9IjUwIiBmaWxsPSIjRkZGRkZGIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgZmlsbD0iI0ZGRkZGRiIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIi8+PC9zdmc+);background-repeat:repeat}.color-picker .color-picker__slider.color-picker__slider--alpha .color-picker__slider--alpha-bg{position:absolute;top:0;left:0;right:0;bottom:0}.color-picker .color-picker__inputs{display:flex;margin:8px;align-items:flex-start}.color-picker .color-picker__inputs .color-picker__input-fields{flex:auto 1 1}.color-picker .color-picker__inputs .color-picker__input-type{flex:24px 0 0}.color-picker .color-picker__input-fields{display:flex}.color-picker .color-picker__input-fields .color-picker__input-field{margin:4px;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;flex:20% 1 1}.color-picker .color-picker__input-fields .color-picker__input-field input{text-align:center;font-size:12px;height:24px;-webkit-appearance:none;appearance:none;flex:100% 1 1;padding:1px;border:#999 solid 1px;width:100%;background:none;min-width:0}.color-picker .color-picker__input-fields .color-picker__input-field input:invalid{box-shadow:none}.color-picker .color-picker__input-fields .color-picker__input-field input::-webkit-inner-spin-button,.color-picker .color-picker__input-fields .color-picker__input-field input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.color-picker .color-picker__input-fields .color-picker__input-field .color-picker__input-field-label{flex:100% 1 1;display:block;text-align:center;margin-top:4px}.color-picker .color-picker__input-type{width:24px;height:24px;margin-top:4px;display:flex;flex-wrap:wrap;background-size:contain;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cG9seWdvbiBmaWxsPSIjMzMzMzMzIiBwb2ludHM9IjUwIDE2IDMwIDQ0IDcwIDQ0ICIvPjxwb2x5Z29uIGZpbGw9IiMzMzMzMzMiIHBvaW50cz0iNTAgODQgNzAgNTYgMzAgNTYgIi8+PC9zdmc+);background-repeat:no-repeat;background-position:center}.color-picker .color-picker__input-type .color-picker__input-type-arrow{display:block;cursor:pointer;flex:100% 1 1;width:100%;height:50%}.color-picker .color-picker__separator{border-top:1px solid #999;margin-left:8px;margin-right:8px;flex:100% 1 1}.color-picker .color-picker__preset{display:flex;margin:8px;align-items:center;flex-wrap:wrap}.color-picker .color-picker__preset-label{margin:4px;flex:100% 1 1}.color-picker .color-picker__preset-items{display:flex;flex:100% 1 1;flex-wrap:wrap;align-items:flex-start}.color-picker .color-picker__preset-items .color-picker__preset-item{position:relative;flex:20px 1 1;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cmVjdCBmaWxsPSIjQ0NDQ0NDIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgeT0iNTAiIGZpbGw9IiNDQ0NDQ0MiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIvPjxyZWN0IHk9IjUwIiBmaWxsPSIjRkZGRkZGIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgZmlsbD0iI0ZGRkZGRiIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIi8+PC9zdmc+);background-size:100% 100%;margin:4px;border-radius:4px;border:1px solid #999;cursor:pointer}.color-picker .color-picker__preset-items .color-picker__preset-item .color-picker__preset-item-fill{position:relative;width:100%;padding-bottom:100%;border-radius:3px}.color-picker .color-picker__preset-items .color-picker__preset-item:empty{margin-top:0;margin-bottom:0;border-top:0;border-bottom:0}.color-picker .color-picker__remove-selected{border:none;padding:0;margin:0;color:#222;transition:color .2s linear;align-items:center;justify-content:center;box-shadow:0 0 8px -2px #00000080;position:absolute;width:12px;height:12px;right:-6px;top:-6px;background:#fff;border-radius:50%;display:flex}.color-picker .color-picker__remove-selected svg{fill:currentColor;width:100%;height:auto}.color-picker .color-picker__buttons{display:flex;margin:0 8px 8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.color-picker .color-picker__buttons button{flex:auto 0 0;margin:4px}:host-context(.color-picker__arrow--top) .color-picker{margin-bottom:16px}:host-context(.color-picker__arrow--top) .color-picker__arrow{border-width:12px 6px;border-color:#999 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);left:12px;bottom:-24px}:host-context(.color-picker__arrow--left) .color-picker{margin-right:16px}:host-context(.color-picker__arrow--left) .color-picker__arrow{border-width:6px 12px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) #999;top:12px;left:230px}:host-context(.color-picker__arrow--right) .color-picker{margin-left:16px}:host-context(.color-picker__arrow--right) .color-picker__arrow{border-width:6px 12px;border-color:rgba(0,0,0,0) #999 rgba(0,0,0,0) rgba(0,0,0,0);top:12px;left:-24px}:host-context(.color-picker__arrow--bottom) .color-picker{margin-top:16px}:host-context(.color-picker__arrow--bottom) .color-picker__arrow{border-width:12px 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #999 rgba(0,0,0,0);top:-24px;left:12px}\n"] }]
|
|
572
|
+
args: [{ selector: 'cp-color-picker', encapsulation: ViewEncapsulation.Emulated, template: "<div class=\"color-picker\"\n (click)=\"$event.stopPropagation()\"\n [ngStyle]=\"{\n visibility: !show ? 'hidden' : 'visible',\n width: cpWidth || '',\n height: cpHeight || ''\n }\"\n *ngIf=\"show\">\n <div *ngIf=\"cpDialogDisplay == dialogDisplay.popup\"\n class=\"color-picker__arrow\"\n [ngClass]=\"'color-picker__arrow--' + cpPosition\"></div>\n <div *ngIf=\"cpMode == colorModeInternal.color\"\n class=\"color-picker__sv\"\n cpSlider\n [rgX]=\"1\"\n [rgY]=\"1\"\n (newValue)=\"onColorChange($event)\"\n (dragStart)=\"onDragStart('saturation-lightness')\"\n (dragEnd)=\"onDragEnd('saturation-lightness')\"\n [ngStyle]=\"{ \n backgroundColor: hueSliderColor || ''\n }\">\n <div class=\"color-picker__cursor color-picker__cursor--sv\"\n [ngClass]=\"{ 'color-picker__cursor--light': svSliderLight }\"\n [ngStyle]=\"{\n top: (slider?.v || 0) * 100 + '%',\n left: (slider?.s || 0) * 100 + '%'\n }\"></div>\n </div>\n <div class=\"color-picker__controls\">\n <div class=\"color-picker__selected\">\n <div class=\"color-picker__selected-color\">\n <div [ngStyle]=\"{ \n backgroundColor: selectedColor || ''\n }\"><button\n *ngIf=\"cpAddColorButton && !(cpMaxPresetColors && (cpPresetColors?.length || 0) >= cpMaxPresetColors)\"\n type=\"button\"\n title=\"Add color to preset\"\n i18n-title=\"@@nxt-color-picker.button.add-color\"\n class=\"color-picker__add-selected\"\n [ngClass]=\"{ 'color-picker__add-selected--light': alphaSliderLight }\"\n (click)=\"onAddPresetColor(selectedColor)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\" />\n <path d=\"M0 0h24v24H0z\"\n fill=\"none\" />\n </svg></button></div>\n </div>\n </div>\n <div class=\"color-picker__hav\">\n <div *ngIf=\"cpMode == colorModeInternal.color\"\n class=\"color-picker__slider color-picker__slider--hue\"\n cpSlider\n [rgX]=\"1\"\n (newValue)=\"onHueChange($event)\"\n (dragStart)=\"onDragStart('hue')\"\n (dragEnd)=\"onDragEnd('hue')\">\n <div class=\"color-picker__cursor\"\n [ngClass]=\"{ 'color-picker__cursor--light': hueSliderLight }\"\n [ngStyle]=\"{\n left: (slider?.h || 0) * 100 + '%'\n }\"></div>\n </div>\n <div *ngIf=\"cpMode == colorModeInternal.grayscale\"\n class=\"color-picker__slider color-picker__slider--value\"\n cpSlider\n [rgX]=\"1\"\n (newValue)=\"onValueChange($event)\"\n (dragStart)=\"onDragStart('value')\"\n (dragEnd)=\"onDragEnd('value')\">\n <div class=\"color-picker__cursor\"\n [ngClass]=\"{ 'color-picker__cursor--light': valueSliderLight }\"\n [ngStyle]=\"{\n left: (1 - (slider?.v || 0)) * 100 + '%'\n }\"></div>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__slider color-picker__slider--alpha\"\n cpSlider\n [rgX]=\"1\"\n (newValue)=\"onAlphaChange($event)\"\n (dragStart)=\"onDragStart('alpha')\"\n (dragEnd)=\"onDragEnd('alpha')\">\n <div class=\"color-picker__slider--alpha-bg\"\n [ngStyle]=\"{\n backgroundImage: alphaSliderColor || ''\n }\">\n <div class=\"color-picker__cursor\"\n [ngClass]=\"{ 'color-picker__cursor--light': alphaSliderLight }\"\n [ngStyle]=\"{\n left: (slider?.a || 0) * 100 + '%'\n }\"></div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!cpDisableInput && (cpMode == colorModeInternal.color || cpMode == colorModeInternal.grayscale)\"\n class=\"color-picker__inputs\">\n <div class=\"color-picker__input-fields\">\n <ng-container *ngIf=\"cpMode == colorModeInternal.grayscale; else formatSwitch\">\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"hslaText?.l\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onValueInput($event)\" />\n <span class=\"color-picker__input-field-label\">V</span>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"hslaText?.a\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n <ng-template #formatSwitch>\n <ng-container [ngSwitch]=\"format\">\n <ng-container *ngSwitchCase=\"colorFormat.hsla\">\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"360\"\n cpText\n [rg]=\"360\"\n [value]=\"hslaText?.h\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onHueInput($event)\" />\n <span class=\"color-picker__input-field-label\">H</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"hslaText?.s\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onSaturationInput($event)\" />\n <span class=\"color-picker__input-field-label\">S</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"hslaText?.l\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onLightnessInput($event)\" />\n <span class=\"color-picker__input-field-label\">L</span>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"hslaText?.a\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"colorFormat.rgba\">\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"255\"\n cpText\n [rg]=\"255\"\n [value]=\"rgbaText?.r\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onRedInput($event)\" />\n <span class=\"color-picker__input-field-label\">R</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"255\"\n cpText\n [rg]=\"255\"\n [value]=\"rgbaText?.g\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onGreenInput($event)\" />\n <span class=\"color-picker__input-field-label\">G</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"255\"\n cpText\n [rg]=\"255\"\n [value]=\"rgbaText?.b\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onBlueInput($event)\" />\n <span class=\"color-picker__input-field-label\">B</span>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"hslaText?.a\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"colorFormat.cmyk\">\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"cmykText?.c\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onCyanInput($event)\" />\n <span class=\"color-picker__input-field-label\">C</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"cmykText?.m\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onMagentaInput($event)\" />\n <span class=\"color-picker__input-field-label\">M</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"cmykText?.y\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onYellowInput($event)\" />\n <span class=\"color-picker__input-field-label\">Y</span>\n </div>\n <div class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n cpText\n [rg]=\"100\"\n [value]=\"cmykText?.k\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onBlackInput($event)\" />\n <span class=\"color-picker__input-field-label\">K</span>\n </div>\n <div *ngIf=\"cpAlphaChannel != alphaChannel.disabled\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"cmykText?.c\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"color-picker__input-field\">\n <input cpText\n [value]=\"hexText\"\n (blur)=\"onHexInput(null)\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onHexInput($event)\" />\n <span class=\"color-picker__input-field-label\">Hex</span>\n </div>\n <div *ngIf=\"cpAlphaChannel == alphaChannel.forced\"\n class=\"color-picker__input-field\">\n <input type=\"number\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n cpText\n [rg]=\"1\"\n [value]=\"hexAlpha\"\n (keyup.enter)=\"onAccept($event)\"\n (newValue)=\"onAlphaInput($event)\" />\n <span class=\"color-picker__input-field-label\">A</span>\n </div>\n </ng-container>\n </ng-container>\n </ng-template>\n </div>\n <div *ngIf=\"cpMode == colorModeInternal.color\"\n class=\"color-picker__input-type\">\n <span class=\"color-picker__input-type-arrow\"\n (click)=\"onFormatToggle(1)\"></span>\n <span class=\"color-picker__input-type-arrow\"\n (click)=\"onFormatToggle(-1)\"></span>\n </div>\n </div>\n <ng-container *ngIf=\"cpPresetColors?.length\">\n <div class=\"color-picker__separator\"></div>\n <div class=\"color-picker__preset\">\n <div *ngIf=\"cpPresetLabel\"\n class=\"color-picker__preset-label\">\n <ng-container *ngIf=\"cpPresetLabel === true; else stringLabel\"\n i18n=\"@@nxt-color-picker.preset-colors\">Preset colors</ng-container>\n <ng-template #stringLabel>{{ cpPresetLabel }}</ng-template>\n </div>\n <div *ngIf=\"cpPresetColors?.length\"\n class=\"color-picker__preset-items\">\n <div *ngFor=\"let color of cpPresetColors\"\n class=\"color-picker__preset-item\"\n [title]=\"color\"\n (click)=\"setColorFromString(color)\">\n <div class=\"color-picker__preset-item-fill\"\n [ngStyle]=\"{ \n backgroundColor: color || ''\n }\"><button *ngIf=\"cpAddColorButton\"\n type=\"button\"\n title=\"Remove Color\"\n i18n-title=\"@@nxt-color-picker.button.remove-color\"\n class=\"color-picker__remove-selected\"\n (click)=\"onRemovePresetColor(color)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\">\n <path\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\n <path d=\"M0 0h24v24H0z\"\n fill=\"none\" />\n </svg></button></div>\n </div>\n <div *ngFor=\"let i of fill(50)\"\n class=\"color-picker__preset-item\"></div>\n </div>\n </div>\n </ng-container>\n <div *ngIf=\"cpOKButton || cpCancelButton\"\n class=\"color-picker__buttons\">\n <button *ngIf=\"cpCancelButton\"\n type=\"button\"\n (click)=\"onCancel($event)\"\n i18n=\"@@nxt-color-picker.button.cancel\">Cancel</button>\n <button *ngIf=\"cpOKButton\"\n type=\"button\"\n (click)=\"onAccept($event)\"\n i18n=\"@@nxt-color-picker.button.ok\">OK</button>\n </div>\n</div>\n", styles: [".color-picker{position:relative;-webkit-user-select:none;user-select:none;background-color:#fff;box-shadow:0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f,0 5px 5px -3px #0003;display:flex;flex-direction:column}.color-picker *{box-sizing:border-box;margin:0;font-size:12px}.color-picker .color-picker__arrow{height:0;width:0;border-style:solid;position:absolute;z-index:999999}.color-picker .color-picker__cursor{cursor:pointer;position:absolute;border-radius:50%;width:16px;height:16px;border:#222222 solid 2px;margin:0 -8px;transition:border .2s linear}.color-picker .color-picker__cursor.color-picker__cursor--sv{margin:-8px}.color-picker .color-picker__cursor.color-picker__cursor--light{border-color:#dadada}.color-picker .color-picker__sv{position:relative;direction:ltr;width:100%;height:130px;border:none;cursor:pointer;touch-action:manipulation;background-image:linear-gradient(to bottom,rgba(0,0,0,0) 0%,rgb(0,0,0) 100%),linear-gradient(to right,rgb(255,255,255) 0%,rgba(255,255,255,0) 100%);background-size:100% 100%}.color-picker .color-picker__controls{display:flex;margin:8px;align-items:center}.color-picker .color-picker__controls .color-picker__selected{margin:4px;flex:48px 0 0}.color-picker .color-picker__controls .color-picker__hav{margin:-4px -4px -4px 0;flex:auto 1 1}.color-picker .color-picker__selected-color{width:48px;height:48px;display:flex;align-items:stretch;justify-content:stretch;border-radius:50%;background-size:16px;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cmVjdCBmaWxsPSIjQ0NDQ0NDIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgeT0iNTAiIGZpbGw9IiNDQ0NDQ0MiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIvPjxyZWN0IHk9IjUwIiBmaWxsPSIjRkZGRkZGIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgZmlsbD0iI0ZGRkZGRiIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIi8+PC9zdmc+);background-repeat:repeat;box-shadow:0 0 8px -2px #00000080}.color-picker .color-picker__selected-color div{width:100%;height:100%;border-radius:50%}.color-picker .color-picker__add-selected{background:none;border:none;padding:0;width:100%;margin:0;color:#222;transition:color .2s linear;display:flex;align-items:center;justify-content:center;height:100%}.color-picker .color-picker__add-selected svg{fill:currentcolor;width:24px;height:auto}.color-picker .color-picker__add-selected.color-picker__add-selected--light{color:#dadada}.color-picker .color-picker__hav{display:flex;flex-wrap:wrap}.color-picker .color-picker__slider{width:100%;flex:100% 1 1;height:16px;margin:8px;position:relative}.color-picker .color-picker__slider.color-picker__slider--hue{background-size:100% 100%;background-image:linear-gradient(to right,rgb(255,0,0) 0%,rgb(255,255,0) 16.6666666667%,rgb(0,255,0) 33.3333333333%,rgb(0,255,255) 50%,rgb(0,0,255) 66.6666666667%,rgb(255,0,255) 83.3333333333%,rgb(255,0,0) 100%)}.color-picker .color-picker__slider.color-picker__slider--value{background-size:100% 100%;background-image:linear-gradient(to right,rgb(0,0,0) 0%,rgb(255,255,255) 100%)}.color-picker .color-picker__slider.color-picker__slider--alpha{background-size:16px;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cmVjdCBmaWxsPSIjQ0NDQ0NDIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgeT0iNTAiIGZpbGw9IiNDQ0NDQ0MiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIvPjxyZWN0IHk9IjUwIiBmaWxsPSIjRkZGRkZGIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgZmlsbD0iI0ZGRkZGRiIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIi8+PC9zdmc+);background-repeat:repeat}.color-picker .color-picker__slider.color-picker__slider--alpha .color-picker__slider--alpha-bg{position:absolute;top:0;left:0;right:0;bottom:0}.color-picker .color-picker__inputs{display:flex;margin:8px;align-items:flex-start}.color-picker .color-picker__inputs .color-picker__input-fields{flex:auto 1 1}.color-picker .color-picker__inputs .color-picker__input-type{flex:24px 0 0}.color-picker .color-picker__input-fields{display:flex}.color-picker .color-picker__input-fields .color-picker__input-field{margin:4px;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;flex:20% 1 1}.color-picker .color-picker__input-fields .color-picker__input-field input{text-align:center;font-size:12px;height:24px;-webkit-appearance:none;appearance:none;flex:100% 1 1;padding:1px;border:#999 solid 1px;width:100%;background:none;min-width:0}.color-picker .color-picker__input-fields .color-picker__input-field input:invalid{box-shadow:none}.color-picker .color-picker__input-fields .color-picker__input-field input::-webkit-inner-spin-button,.color-picker .color-picker__input-fields .color-picker__input-field input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.color-picker .color-picker__input-fields .color-picker__input-field .color-picker__input-field-label{flex:100% 1 1;display:block;text-align:center;margin-top:4px}.color-picker .color-picker__input-type{width:24px;height:24px;margin-top:4px;display:flex;flex-wrap:wrap;background-size:contain;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cG9seWdvbiBmaWxsPSIjMzMzMzMzIiBwb2ludHM9IjUwIDE2IDMwIDQ0IDcwIDQ0ICIvPjxwb2x5Z29uIGZpbGw9IiMzMzMzMzMiIHBvaW50cz0iNTAgODQgNzAgNTYgMzAgNTYgIi8+PC9zdmc+);background-repeat:no-repeat;background-position:center}.color-picker .color-picker__input-type .color-picker__input-type-arrow{display:block;cursor:pointer;flex:100% 1 1;width:100%;height:50%}.color-picker .color-picker__separator{border-top:1px solid #999;margin-left:8px;margin-right:8px;flex:100% 1 1}.color-picker .color-picker__preset{display:flex;margin:8px;align-items:center;flex-wrap:wrap}.color-picker .color-picker__preset-label{margin:4px;flex:100% 1 1}.color-picker .color-picker__preset-items{display:flex;flex:100% 1 1;flex-wrap:wrap;align-items:flex-start}.color-picker .color-picker__preset-items .color-picker__preset-item{position:relative;flex:20px 1 1;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cmVjdCBmaWxsPSIjQ0NDQ0NDIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgeT0iNTAiIGZpbGw9IiNDQ0NDQ0MiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIvPjxyZWN0IHk9IjUwIiBmaWxsPSIjRkZGRkZGIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiLz48cmVjdCB4PSI1MCIgZmlsbD0iI0ZGRkZGRiIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIi8+PC9zdmc+);background-size:100% 100%;margin:4px;border-radius:4px;border:1px solid #999;cursor:pointer}.color-picker .color-picker__preset-items .color-picker__preset-item .color-picker__preset-item-fill{position:relative;width:100%;padding-bottom:100%;border-radius:3px}.color-picker .color-picker__preset-items .color-picker__preset-item:empty{margin-top:0;margin-bottom:0;border-top:0;border-bottom:0}.color-picker .color-picker__remove-selected{border:none;padding:0;margin:0;color:#222;transition:color .2s linear;align-items:center;justify-content:center;box-shadow:0 0 8px -2px #00000080;position:absolute;width:12px;height:12px;right:-6px;top:-6px;background:#fff;border-radius:50%;display:flex}.color-picker .color-picker__remove-selected svg{fill:currentcolor;width:100%;height:auto}.color-picker .color-picker__buttons{display:flex;margin:0 8px 8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.color-picker .color-picker__buttons button{flex:auto 0 0;margin:4px}:host-context(.color-picker__arrow--top) .color-picker{margin-bottom:16px}:host-context(.color-picker__arrow--top) .color-picker__arrow{border-width:12px 6px;border-color:#999 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);left:12px;bottom:-24px}:host-context(.color-picker__arrow--left) .color-picker{margin-right:16px}:host-context(.color-picker__arrow--left) .color-picker__arrow{border-width:6px 12px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) #999;top:12px;left:230px}:host-context(.color-picker__arrow--right) .color-picker{margin-left:16px}:host-context(.color-picker__arrow--right) .color-picker__arrow{border-width:6px 12px;border-color:rgba(0,0,0,0) #999 rgba(0,0,0,0) rgba(0,0,0,0);top:12px;left:-24px}:host-context(.color-picker__arrow--bottom) .color-picker{margin-top:16px}:host-context(.color-picker__arrow--bottom) .color-picker__arrow{border-width:12px 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #999 rgba(0,0,0,0);top:-24px;left:12px}\n"] }]
|
|
573
573
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.ColorPickerService }]; }, propDecorators: { onCancel: [{
|
|
574
574
|
type: HostListener,
|
|
575
575
|
args: ['document:keyup.esc', ['$event']]
|
|
@@ -155,6 +155,11 @@ export class ColorPickerDirective {
|
|
|
155
155
|
this.create();
|
|
156
156
|
}
|
|
157
157
|
else if (this.dialog) {
|
|
158
|
+
if (this.overlayRef && !this.overlayRef.hasAttached()) {
|
|
159
|
+
this.cmpRef = this.overlayRef.attach(new ComponentPortal(ColorPickerComponent, null, this.injector));
|
|
160
|
+
this.dialog = this.cmpRef.instance;
|
|
161
|
+
this.setupDialog();
|
|
162
|
+
}
|
|
158
163
|
this.dialog.openDialog(this.cpColor);
|
|
159
164
|
}
|
|
160
165
|
}
|
|
@@ -170,6 +175,7 @@ export class ColorPickerDirective {
|
|
|
170
175
|
this.overlayRef.dispose();
|
|
171
176
|
this.cmpRef = undefined;
|
|
172
177
|
this.overlayRef = undefined;
|
|
178
|
+
this.dialogCreated = false;
|
|
173
179
|
}
|
|
174
180
|
create() {
|
|
175
181
|
let vcRef = this.vcRef;
|
|
@@ -252,9 +258,9 @@ export class ColorPickerDirective {
|
|
|
252
258
|
return pos;
|
|
253
259
|
}
|
|
254
260
|
}
|
|
255
|
-
ColorPickerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
256
|
-
ColorPickerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
257
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
261
|
+
ColorPickerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: ColorPickerDirective, deps: [{ token: i0.Injector }, { token: i0.ApplicationRef }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i1.Overlay }], target: i0.ɵɵFactoryTarget.Directive });
|
|
262
|
+
ColorPickerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.2", type: ColorPickerDirective, selector: "[cpColor]", inputs: { cpColor: "cpColor", cpWidth: "cpWidth", cpHeight: "cpHeight", cpToggle: "cpToggle", cpDisabled: "cpDisabled", cpMode: "cpMode", cpOutputFormat: "cpOutputFormat", cpCmykEnabled: "cpCmykEnabled", cpAlphaChannel: "cpAlphaChannel", cpFallbackColor: "cpFallbackColor", cpPosition: "cpPosition", cpPositionOffset: "cpPositionOffset", cpPresetLabel: "cpPresetLabel", cpPresetColors: "cpPresetColors", cpDisableInput: "cpDisableInput", cpDialogDisplay: "cpDialogDisplay", cpIgnoredElements: "cpIgnoredElements", cpSaveClickOutside: "cpSaveClickOutside", cpCloseClickOutside: "cpCloseClickOutside", cpOKButton: "cpOKButton", cpCancelButton: "cpCancelButton", cpAddColorButton: "cpAddColorButton", cpMaxPresetColors: "cpMaxPresetColors", cpUseRootViewContainer: "cpUseRootViewContainer" }, outputs: { cpOpen: "cpOpen", cpClose: "cpClose", cpInputChange: "cpInputChange", cpToggleChange: "cpToggleChange", cpSliderDragStart: "cpSliderDragStart", cpSliderChange: "cpSliderChange", cpSliderDragEnd: "cpSliderDragEnd", cpColorSelect: "cpColorSelect", cpColorSelectCancel: "cpColorSelectCancel", cpColorChange: "cpColorChange", cpCmykColorChange: "cpCmykColorChange", cpPresetColorsChange: "cpPresetColorsChange" }, host: { listeners: { "focus": "handleOpen($event)", "click": "handleOpen($event)", "input": "handleInput($event)", "change": "handleInput($event)" } }, usesOnChanges: true, ngImport: i0 });
|
|
263
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: ColorPickerDirective, decorators: [{
|
|
258
264
|
type: Directive,
|
|
259
265
|
args: [{
|
|
260
266
|
selector: '[cpColor]'
|
|
@@ -344,4 +350,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImpor
|
|
|
344
350
|
type: HostListener,
|
|
345
351
|
args: ['change', ['$event']]
|
|
346
352
|
}] } });
|
|
347
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1jb2xvci1waWNrZXIvc3JjL2xpYi9jb2xvci1waWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsT0FBTyxFQUFjLE1BQU0sc0JBQXNCLENBQUE7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQWdCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUF3QixNQUFNLEVBQWlCLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQy9MLE9BQU8sRUFBRSxZQUFZLEVBQXNCLE1BQU0saUJBQWlCLENBQUE7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBYSxhQUFhLEVBQUUsY0FBYyxFQUFvQixZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFBO0FBQ3pJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFBOzs7QUFLNUUsTUFBTSxPQUFPLG9CQUFvQjtJQXFIN0IsWUFDWSxRQUFrQixFQUNsQixNQUFzQixFQUN0QixLQUF1QixFQUN2QixLQUFpQixFQUNqQixPQUFnQjtRQUpoQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBQ3ZCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQXRIcEIsa0JBQWEsR0FBWSxLQUFLLENBQUE7UUFDOUIsa0JBQWEsR0FBWSxLQUFLLENBQUE7UUFJckIsZUFBVSxHQUF1QjtZQUM5QyxZQUFZLEVBQUUsQ0FBQyxLQUFjLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLGNBQWMs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QU07Z0JBRUcsaUJBQWlCO3NCQUExQixNQUFNO2dCQUVHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFZUCxVQUFVO3NCQUZULFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDaEMsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBWWpDLFdBQVc7c0JBRlYsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNoQyxZQUFZO3VCQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJ1xuaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIENvbXBvbmVudFJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IGNvbXBvc2VkUGF0aCwgRGlyZWN0aXZlQ2FsbGJhY2tzIH0gZnJvbSAnLi4vdXRpbC9oZWxwZXJzJ1xuaW1wb3J0IHsgQWxwaGFDaGFubmVsLCBDb2xvck1vZGUsIERpYWxvZ0Rpc3BsYXksIERpYWxvZ1Bvc2l0aW9uLCBJbnB1dENoYW5nZUV2ZW50LCBPdXRwdXRGb3JtYXQsIFNsaWRlckNoYW5nZUV2ZW50IH0gZnJvbSAnLi4vdXRpbC90eXBlcydcbmltcG9ydCB7IENvbG9yUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLmNvbXBvbmVudCdcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbY3BDb2xvcl0nXG59KVxuZXhwb3J0IGNsYXNzIENvbG9yUGlja2VyRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG4gICAgcHJpdmF0ZSBkaWFsb2c6IENvbG9yUGlja2VyQ29tcG9uZW50XG5cbiAgICBwcml2YXRlIGRpYWxvZ0NyZWF0ZWQ6IGJvb2xlYW4gPSBmYWxzZVxuICAgIHByaXZhdGUgaWdub3JlQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlXG5cbiAgICBwcml2YXRlIGNtcFJlZjogQ29tcG9uZW50UmVmPENvbG9yUGlja2VyQ29tcG9uZW50PlxuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2FsbGJhY2tzOiBEaXJlY3RpdmVDYWxsYmFja3MgPSB7XG4gICAgICAgIHN0YXRlQ2hhbmdlZDogKHN0YXRlOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNwVG9nZ2xlQ2hhbmdlLmVtaXQoc3RhdGUpXG5cbiAgICAgICAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3BPcGVuLmVtaXQodGhpcy5jcENvbG9yKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNwQ2xvc2UuZW1pdCh0aGlzLmNwQ29sb3IpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNteWtDaGFuZ2VkOiAodmFsdWU6IHN0cmluZywgaWdub3JlOiBib29sZWFuID0gdHJ1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pZ25vcmVDaGFuZ2VzID0gaWdub3JlXG5cbiAgICAgICAgICAgIHRoaXMuY3BDbXlrQ29sb3JDaGFuZ2UuZW1pdCh2YWx1ZSlcbiAgICAgICAgfSxcbiAgICAgICAgY29sb3JDaGFuZ2VkOiAodmFsdWU6IHN0cmluZywgaWdub3JlOiBib29sZWFuID0gdHJ1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pZ25vcmVDaGFuZ2VzID0gaWdub3JlXG5cbiAgICAgICAgICAgIHRoaXMuY3BDb2xvckNoYW5nZS5lbWl0KHZhbHVlKVxuICAgICAgICB9LFxuICAgICAgICBjb2xvclNlbGVjdENhbmNlbGVkOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNwQ29sb3JTZWxlY3RDYW5jZWwuZW1pdCgpXG4gICAgICAgIH0sXG4gICAgICAgIGNvbG9yU2VsZWN0ZWQ6ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNwQ29sb3JTZWxlY3QuZW1pdCh2YWx1ZSlcbiAgICAgICAgfSxcbiAgICAgICAgaW5wdXRDaGFuZ2VkOiAoZXZlbnQ6IElucHV0Q2hhbmdlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3BJbnB1dENoYW5nZS5lbWl0KGV2ZW50KVxuICAgICAgICB9LFxuICAgICAgICBzbGlkZXJEcmFnU3RhcnQ6IChldmVudDogU2xpZGVyQ2hhbmdlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3BTbGlkZXJEcmFnU3RhcnQuZW1pdChldmVudClcbiAgICAgICAgfSxcbiAgICAgICAgc2xpZGVyQ2hhbmdlZDogKGV2ZW50OiBTbGlkZXJDaGFuZ2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jcFNsaWRlckNoYW5nZS5lbWl0KGV2ZW50KVxuICAgICAgICB9LFxuICAgICAgICBzbGlkZXJEcmFnRW5kOiAoZXZlbnQ6IFNsaWRlckNoYW5nZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNwU2xpZGVyRHJhZ0VuZC5lbWl0KGV2ZW50KVxuICAgICAgICB9LFxuICAgICAgICBwcmVzZXRDb2xvcnNDaGFuZ2VkOiAodmFsdWU6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNwUHJlc2V0Q29sb3JzQ2hhbmdlLmVtaXQodmFsdWUpXG4gICAgICAgIH1cbiAgICB9XG4gICAgb3ZlcmxheVJlZjogT3ZlcmxheVJlZlxuXG4gICAgcHJpdmF0ZSBnZXQgaWdub3JlZEVsZW1lbnRzKCkge1xuICAgICAgICBjb25zdCBpZ24gPSBBcnJheS5pc0FycmF5KHRoaXMuY3BJZ25vcmVkRWxlbWVudHMpID8gdGhpcy5jcElnbm9yZWRFbGVtZW50cyA6IFt0aGlzLmNwSWdub3JlZEVsZW1lbnRzXVxuICAgICAgICByZXR1cm4gaWduLmZpbHRlcihlbCA9PiAhIWVsKVxuICAgIH1cblxuICAgIEBJbnB1dCgpIGNwQ29sb3I6IHN0cmluZ1xuXG4gICAgQElucHV0KCkgY3BXaWR0aDogc3RyaW5nID0gJzIzMHB4J1xuICAgIEBJbnB1dCgpIGNwSGVpZ2h0OiBzdHJpbmcgPSAnYXV0bydcblxuICAgIEBJbnB1dCgpIGNwVG9nZ2xlOiBib29sZWFuID0gZmFsc2VcbiAgICBASW5wdXQoKSBjcERpc2FibGVkOiBib29sZWFuID0gZmFsc2VcblxuICAgIEBJbnB1dCgpIGNwTW9kZTogQ29sb3JNb2RlID0gJ2NvbG9yJ1xuXG4gICAgQElucHV0KCkgY3BPdXRwdXRGb3JtYXQ6IE91dHB1dEZvcm1hdCA9IE91dHB1dEZvcm1hdC5hdXRvXG4gICAgQElucHV0KCkgY3BDbXlrRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlXG4gICAgQElucHV0KCkgY3BBbHBoYUNoYW5uZWw6IEFscGhhQ2hhbm5lbCA9IEFscGhhQ2hhbm5lbC5lbmFibGVkXG4gICAgQElucHV0KCkgY3BGYWxsYmFja0NvbG9yOiBzdHJpbmcgPSAnJ1xuXG4gICAgQElucHV0KCkgY3BQb3NpdGlvbjogRGlhbG9nUG9zaXRpb24gPSBEaWFsb2dQb3NpdGlvbi5yaWdodFxuICAgIEBJbnB1dCgpIGNwUG9zaXRpb25PZmZzZXQ6IG51bWJlciA9IDBcblxuICAgIEBJbnB1dCgpIGNwUHJlc2V0TGFiZWw6IGJvb2xlYW4gfCBzdHJpbmcgPSB0cnVlXG4gICAgQElucHV0KCkgY3BQcmVzZXRDb2xvcnM6IHN0cmluZ1tdXG5cbiAgICBASW5wdXQoKSBjcERpc2FibGVJbnB1dDogYm9vbGVhbiA9IGZhbHNlXG5cbiAgICBASW5wdXQoKSBjcERpYWxvZ0Rpc3BsYXk6IERpYWxvZ0Rpc3BsYXkgPSBEaWFsb2dEaXNwbGF5LnBvcHVwXG5cbiAgICBASW5wdXQoKSBjcElnbm9yZWRFbGVtZW50cyA9IG5ldyBBcnJheTxhbnk+KClcblxuICAgIEBJbnB1dCgpIGNwU2F2ZUNsaWNrT3V0c2lkZTogYm9vbGVhbiA9IHRydWVcbiAgICBASW5wdXQoKSBjcENsb3NlQ2xpY2tPdXRzaWRlOiBib29sZWFuID0gdHJ1ZVxuXG4gICAgQElucHV0KCkgY3BPS0J1dHRvbjogYm9vbGVhbiA9IGZhbHNlXG5cbiAgICBASW5wdXQoKSBjcENhbmNlbEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlXG5cbiAgICBASW5wdXQoKSBjcEFkZENvbG9yQnV0dG9uOiBib29sZWFuID0gZmFsc2VcblxuICAgIEBJbnB1dCgpIGNwTWF4UHJlc2V0Q29sb3JzOiBudW1iZXIgPSA2XG5cbiAgICBASW5wdXQoKSBjcFVzZVJvb3RWaWV3Q29udGFpbmVyOiBib29sZWFuID0gZmFsc2VcblxuICAgIEBPdXRwdXQoKSBjcE9wZW4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4odHJ1ZSlcbiAgICBAT3V0cHV0KCkgY3BDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPih0cnVlKVxuXG4gICAgQE91dHB1dCgpIGNwSW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElucHV0Q2hhbmdlRXZlbnQ+KHRydWUpXG5cbiAgICBAT3V0cHV0KCkgY3BUb2dnbGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KHRydWUpXG5cbiAgICBAT3V0cHV0KCkgY3BTbGlkZXJEcmFnU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPFNsaWRlckNoYW5nZUV2ZW50Pih0cnVlKVxuICAgIEBPdXRwdXQoKSBjcFNsaWRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2xpZGVyQ2hhbmdlRXZlbnQ+KHRydWUpXG4gICAgQE91dHB1dCgpIGNwU2xpZGVyRHJhZ0VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8U2xpZGVyQ2hhbmdlRXZlbnQ+KHRydWUpXG5cbiAgICBAT3V0cHV0KCkgY3BDb2xvclNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPih0cnVlKVxuICAgIEBPdXRwdXQoKSBjcENvbG9yU2VsZWN0Q2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPih0cnVlKVxuICAgIEBPdXRwdXQoKSBjcENvbG9yQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KGZhbHNlKVxuXG4gICAgQE91dHB1dCgpIGNwQ215a0NvbG9yQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KHRydWUpXG5cbiAgICBAT3V0cHV0KCkgY3BQcmVzZXRDb2xvcnNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPih0cnVlKVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgICAgIHByaXZhdGUgdmNSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheVxuICAgICkgeyB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdmb2N1cycsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIGhhbmRsZU9wZW4oZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBuZXcgU2V0KGNvbXBvc2VkUGF0aChldmVudCkpXG4gICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmlnbm9yZWRFbGVtZW50cy5maW5kKGVsID0+IHBhdGguaGFzKGVsKSlcblxuICAgICAgICBpZiAoIXRoaXMuY3BEaXNhYmxlZCAmJiAhaWdub3JlZCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuRGlhbG9nKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2lucHV0JywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUlucHV0KGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9ICgoZXZlbnQgJiYgZXZlbnQudGFyZ2V0ICYmIGV2ZW50LnRhcmdldFsndmFsdWUnXSB8fCAnJykgKyAnJykudHJpbSgpXG5cbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5zZXRDb2xvckZyb21TdHJpbmcodmFsdWUsIHRydWUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNwQ29sb3IgPSB2YWx1ZVxuICAgICAgICAgICAgdGhpcy5jcENvbG9yQ2hhbmdlLmVtaXQodGhpcy5jcENvbG9yKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGlzcG9zZSgpXG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlcy5jcFRvZ2dsZSAmJiAhdGhpcy5jcERpc2FibGVkKSB7XG4gICAgICAgICAgICBpZiAoY2hhbmdlcy5jcFRvZ2dsZS5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5EaWFsb2coKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRGlhbG9nKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLmNwQ29sb3IpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpYWxvZyAmJiAhdGhpcy5pZ25vcmVDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3BEaWFsb2dEaXNwbGF5ID09IERpYWxvZ0Rpc3BsYXkuaW5saW5lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nLnNldEluaXRpYWxDb2xvcihjaGFuZ2VzLmNwQ29sb3IuY3VycmVudFZhbHVlKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nLnNldENvbG9yRnJvbVN0cmluZyhjaGFuZ2VzLmNwQ29sb3IuY3VycmVudFZhbHVlLCBmYWxzZSlcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNwVXNlUm9vdFZpZXdDb250YWluZXIgJiYgdGhpcy5jcERpYWxvZ0Rpc3BsYXkgIT0gRGlhbG9nRGlzcGxheS5pbmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbXBSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmlnbm9yZUNoYW5nZXMgPSBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChjaGFuZ2VzLmNwUHJlc2V0TGFiZWwgfHwgY2hhbmdlcy5jcFByZXNldENvbG9ycykgJiYgdGhpcy5kaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nLnNldFByZXNldENvbmZpZyh0aGlzLmNwUHJlc2V0TGFiZWwsIHRoaXMuY3BQcmVzZXRDb2xvcnMpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5jcERpYWxvZ0Rpc3BsYXkpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcG9zZSgpXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZSgpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKGNoYW5nZXMuY3BQb3NpdGlvbiB8fCBjaGFuZ2VzLmNwUG9zaXRpb25PZmZzZXQpICYmIHRoaXMuY3BEaWFsb2dEaXNwbGF5ID09IERpYWxvZ0Rpc3BsYXkucG9wdXApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLm92ZXJsYXkucG9zaXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmVsUmVmKVxuICAgICAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9ucyh0aGlzLmdldFBvc2l0aW9ucyh0aGlzLmNwUG9zaXRpb25PZmZzZXQpKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9wZW5EaWFsb2coKSB7XG4gICAgICAgIGlmICghdGhpcy5kaWFsb2dDcmVhdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZSgpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nLm9wZW5EaWFsb2codGhpcy5jcENvbG9yKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2VEaWFsb2coKSB7XG4gICAgICAgIGlmICh0aGlzLmRpYWxvZyAmJiB0aGlzLmNwRGlhbG9nRGlzcGxheSA9PSBEaWFsb2dEaXNwbGF5LnBvcHVwKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5jbG9zZURpYWxvZygpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRpc3Bvc2UoKSB7XG4gICAgICAgIGlmICh0aGlzLmNtcFJlZilcbiAgICAgICAgICAgIHRoaXMuY21wUmVmLmRlc3Ryb3koKVxuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKVxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKVxuXG4gICAgICAgIHRoaXMuY21wUmVmID0gdW5kZWZpbmVkXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlKCkge1xuICAgICAgICBsZXQgdmNSZWYgPSB0aGlzLnZjUmVmXG5cbiAgICAgICAgdGhpcy5kaWFsb2dDcmVhdGVkID0gdHJ1ZVxuXG4gICAgICAgIGlmICh0aGlzLmNwVXNlUm9vdFZpZXdDb250YWluZXIgJiYgdGhpcy5jcERpYWxvZ0Rpc3BsYXkgIT0gRGlhbG9nRGlzcGxheS5pbmxpbmUpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzT2ZSb290Q29tcG9uZW50ID0gdGhpcy5hcHBSZWYuY29tcG9uZW50VHlwZXNbMF1cbiAgICAgICAgICAgIGNvbnN0IGFwcEluc3RhbmNlID0gdGhpcy5pbmplY3Rvci5nZXQoY2xhc3NPZlJvb3RDb21wb25lbnQpXG5cbiAgICAgICAgICAgIHZjUmVmID0gYXBwSW5zdGFuY2UudmNSZWYgfHwgYXBwSW5zdGFuY2Uudmlld0NvbnRhaW5lclJlZiB8fCB0aGlzLnZjUmVmXG5cbiAgICAgICAgICAgIGlmICh2Y1JlZiA9PSB0aGlzLnZjUmVmKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdZb3UgYXJlIHVzaW5nIGNwVXNlUm9vdFZpZXdDb250YWluZXIsIGJ1dCB0aGUgcm9vdCBjb21wb25lbnQgaXMgbm90IGV4cG9zaW5nIHZpZXdDb250YWluZXJSZWYhIFBsZWFzZSBleHBvc2UgaXQgYnkgYWRkaW5nIFxcJ3ZjUmVmOiBWaWV3Q29udGFpbmVyUmVmXFwnIHRvIHRoZSBjb25zdHJ1Y3Rvci4nKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY3BEaWFsb2dEaXNwbGF5ICE9IERpYWxvZ0Rpc3BsYXkuaW5saW5lKSB7XG4gICAgICAgICAgICBjb25zdCBwb3MgPSB0aGlzLm92ZXJsYXkucG9zaXRpb24oKVxuICAgICAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxSZWYpXG4gICAgICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAgICAgICAgICAgLndpdGhQdXNoKGZhbHNlKVxuICAgICAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKHRoaXMuZ2V0UG9zaXRpb25zKHRoaXMuY3BQb3NpdGlvbk9mZnNldCkpXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHsgcG9zaXRpb25TdHJhdGVneTogcG9zLCBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbih7IGF1dG9DbG9zZTogdHJ1ZSB9KSB9KVxuICAgICAgICAgICAgdGhpcy5jbXBSZWYgPSB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBDb21wb25lbnRQb3J0YWwoQ29sb3JQaWNrZXJDb21wb25lbnQsIG51bGwsIHRoaXMuaW5qZWN0b3IpKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbXBSZWYgPSB2Y1JlZi5jcmVhdGVDb21wb25lbnQoQ29sb3JQaWNrZXJDb21wb25lbnQsIHsgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IsIGluZGV4OiAwIH0pXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRpYWxvZyA9IHRoaXMuY21wUmVmLmluc3RhbmNlXG5cbiAgICAgICAgdGhpcy5zZXR1cERpYWxvZygpXG5cbiAgICAgICAgaWYgKHRoaXMudmNSZWYgIT0gdmNSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuY21wUmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cERpYWxvZygpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5zZXR1cERpYWxvZyh7IC4uLnRoaXMsIGNhbGxiYWNrczogdGhpcy5fY2FsbGJhY2tzLCBlbGVtZW50UmVmOiB0aGlzLmVsUmVmLCBjb2xvcjogdGhpcy5jcENvbG9yIH0pXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBvc2l0aW9ucyhvZmZzZXQgPSAwKSB7XG4gICAgICAgIGNvbnN0IHBvczogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtdXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5jcFBvc2l0aW9uIHx8IERpYWxvZ1Bvc2l0aW9uLmF1dG9cblxuICAgICAgICBjb25zdCBiYiA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gICAgICAgIGlmIChwb3NpdGlvbiA9PSBEaWFsb2dQb3NpdGlvbi5hdXRvIHx8IHBvc2l0aW9uID09IERpYWxvZ1Bvc2l0aW9uLmJvdHRvbSkge1xuICAgICAgICAgICAgcG9zLnB1c2goe1xuICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdjb2xvci1waWNrZXJfX2Fycm93LS1ib3R0b20nLFxuICAgICAgICAgICAgICAgIG9mZnNldFk6IGJiLmhlaWdodCAqIG9mZnNldFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwb3NpdGlvbiA9PSBEaWFsb2dQb3NpdGlvbi5hdXRvIHx8IHBvc2l0aW9uID09IERpYWxvZ1Bvc2l0aW9uLnRvcCkge1xuICAgICAgICAgICAgcG9zLnB1c2goe1xuICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdjb2xvci1waWNrZXJfX2Fycm93LS10b3AnLFxuICAgICAgICAgICAgICAgIG9mZnNldFk6IC1iYi5oZWlnaHQgKiBvZmZzZXRcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9zaXRpb24gPT0gRGlhbG9nUG9zaXRpb24uYXV0byB8fCBwb3NpdGlvbiA9PSBEaWFsb2dQb3NpdGlvbi5sZWZ0KSB7XG4gICAgICAgICAgICBwb3MucHVzaCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdjb2xvci1waWNrZXJfX2Fycm93LS1sZWZ0JyxcbiAgICAgICAgICAgICAgICBvZmZzZXRYOiAtYmIud2lkdGggKiBvZmZzZXRcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9zaXRpb24gPT0gRGlhbG9nUG9zaXRpb24uYXV0byB8fCBwb3NpdGlvbiA9PSBEaWFsb2dQb3NpdGlvbi5yaWdodCkge1xuICAgICAgICAgICAgcG9zLnB1c2goe1xuICAgICAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICAgICAgICBwYW5lbENsYXNzOiAnY29sb3ItcGlja2VyX19hcnJvdy0tcmlnaHQnLFxuICAgICAgICAgICAgICAgIG9mZnNldFg6IGJiLndpZHRoICogb2Zmc2V0XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBvc1xuICAgIH1cbn1cbiJdfQ==
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1jb2xvci1waWNrZXIvc3JjL2xpYi9jb2xvci1waWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsT0FBTyxFQUFjLE1BQU0sc0JBQXNCLENBQUE7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQWdCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUF3QixNQUFNLEVBQWlCLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQy9MLE9BQU8sRUFBRSxZQUFZLEVBQXNCLE1BQU0saUJBQWlCLENBQUE7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBYSxhQUFhLEVBQUUsY0FBYyxFQUFvQixZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFBO0FBQ3pJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFBOzs7QUFLNUUsTUFBTSxPQUFPLG9CQUFvQjtJQXFIN0IsWUFDWSxRQUFrQixFQUNsQixNQUFzQixFQUN0QixLQUF1QixFQUN2QixLQUFpQixFQUNqQixPQUFnQjtRQUpoQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBQ3ZCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQXRIcEIsa0JBQWEsR0FBWSxLQUFLLENBQUE7UUFDOUIsa0JBQWEsR0FBWSxLQUFLLENBQUE7UUFJckIsZUFBVSxHQUF1QjtZQUM5QyxZQUFZLEVBQUUsQ0FBQyxLQUFjLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLGNBQWMs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RUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRUcsaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBWVAsVUFBVTtzQkFGVCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ2hDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVlqQyxXQUFXO3NCQUZWLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDaEMsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5J1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCdcbmltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBDb21wb25lbnRSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIEluamVjdG9yLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBjb21wb3NlZFBhdGgsIERpcmVjdGl2ZUNhbGxiYWNrcyB9IGZyb20gJy4uL3V0aWwvaGVscGVycydcbmltcG9ydCB7IEFscGhhQ2hhbm5lbCwgQ29sb3JNb2RlLCBEaWFsb2dEaXNwbGF5LCBEaWFsb2dQb3NpdGlvbiwgSW5wdXRDaGFuZ2VFdmVudCwgT3V0cHV0Rm9ybWF0LCBTbGlkZXJDaGFuZ2VFdmVudCB9IGZyb20gJy4uL3V0aWwvdHlwZXMnXG5pbXBvcnQgeyBDb2xvclBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vY29sb3ItcGlja2VyL2NvbG9yLXBpY2tlci5jb21wb25lbnQnXG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2NwQ29sb3JdJ1xufSlcbmV4cG9ydCBjbGFzcyBDb2xvclBpY2tlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcblxuICAgIHByaXZhdGUgZGlhbG9nOiBDb2xvclBpY2tlckNvbXBvbmVudFxuXG4gICAgcHJpdmF0ZSBkaWFsb2dDcmVhdGVkOiBib29sZWFuID0gZmFsc2VcbiAgICBwcml2YXRlIGlnbm9yZUNoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZVxuXG4gICAgcHJpdmF0ZSBjbXBSZWY6IENvbXBvbmVudFJlZjxDb2xvclBpY2tlckNvbXBvbmVudD5cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NhbGxiYWNrczogRGlyZWN0aXZlQ2FsbGJhY2tzID0ge1xuICAgICAgICBzdGF0ZUNoYW5nZWQ6IChzdGF0ZTogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5jcFRvZ2dsZUNoYW5nZS5lbWl0KHN0YXRlKVxuXG4gICAgICAgICAgICBpZiAoc3RhdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNwT3Blbi5lbWl0KHRoaXMuY3BDb2xvcilcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jcENsb3NlLmVtaXQodGhpcy5jcENvbG9yKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjbXlrQ2hhbmdlZDogKHZhbHVlOiBzdHJpbmcsIGlnbm9yZTogYm9vbGVhbiA9IHRydWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaWdub3JlQ2hhbmdlcyA9IGlnbm9yZVxuXG4gICAgICAgICAgICB0aGlzLmNwQ215a0NvbG9yQ2hhbmdlLmVtaXQodmFsdWUpXG4gICAgICAgIH0sXG4gICAgICAgIGNvbG9yQ2hhbmdlZDogKHZhbHVlOiBzdHJpbmcsIGlnbm9yZTogYm9vbGVhbiA9IHRydWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaWdub3JlQ2hhbmdlcyA9IGlnbm9yZVxuXG4gICAgICAgICAgICB0aGlzLmNwQ29sb3JDaGFuZ2UuZW1pdCh2YWx1ZSlcbiAgICAgICAgfSxcbiAgICAgICAgY29sb3JTZWxlY3RDYW5jZWxlZDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jcENvbG9yU2VsZWN0Q2FuY2VsLmVtaXQoKVxuICAgICAgICB9LFxuICAgICAgICBjb2xvclNlbGVjdGVkOiAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgdGhpcy5jcENvbG9yU2VsZWN0LmVtaXQodmFsdWUpXG4gICAgICAgIH0sXG4gICAgICAgIGlucHV0Q2hhbmdlZDogKGV2ZW50OiBJbnB1dENoYW5nZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNwSW5wdXRDaGFuZ2UuZW1pdChldmVudClcbiAgICAgICAgfSxcbiAgICAgICAgc2xpZGVyRHJhZ1N0YXJ0OiAoZXZlbnQ6IFNsaWRlckNoYW5nZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNwU2xpZGVyRHJhZ1N0YXJ0LmVtaXQoZXZlbnQpXG4gICAgICAgIH0sXG4gICAgICAgIHNsaWRlckNoYW5nZWQ6IChldmVudDogU2xpZGVyQ2hhbmdlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3BTbGlkZXJDaGFuZ2UuZW1pdChldmVudClcbiAgICAgICAgfSxcbiAgICAgICAgc2xpZGVyRHJhZ0VuZDogKGV2ZW50OiBTbGlkZXJDaGFuZ2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jcFNsaWRlckRyYWdFbmQuZW1pdChldmVudClcbiAgICAgICAgfSxcbiAgICAgICAgcHJlc2V0Q29sb3JzQ2hhbmdlZDogKHZhbHVlOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jcFByZXNldENvbG9yc0NoYW5nZS5lbWl0KHZhbHVlKVxuICAgICAgICB9XG4gICAgfVxuICAgIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWZcblxuICAgIHByaXZhdGUgZ2V0IGlnbm9yZWRFbGVtZW50cygpIHtcbiAgICAgICAgY29uc3QgaWduID0gQXJyYXkuaXNBcnJheSh0aGlzLmNwSWdub3JlZEVsZW1lbnRzKSA/IHRoaXMuY3BJZ25vcmVkRWxlbWVudHMgOiBbdGhpcy5jcElnbm9yZWRFbGVtZW50c11cbiAgICAgICAgcmV0dXJuIGlnbi5maWx0ZXIoZWwgPT4gISFlbClcbiAgICB9XG5cbiAgICBASW5wdXQoKSBjcENvbG9yOiBzdHJpbmdcblxuICAgIEBJbnB1dCgpIGNwV2lkdGg6IHN0cmluZyA9ICcyMzBweCdcbiAgICBASW5wdXQoKSBjcEhlaWdodDogc3RyaW5nID0gJ2F1dG8nXG5cbiAgICBASW5wdXQoKSBjcFRvZ2dsZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgQElucHV0KCkgY3BEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlXG5cbiAgICBASW5wdXQoKSBjcE1vZGU6IENvbG9yTW9kZSA9ICdjb2xvcidcblxuICAgIEBJbnB1dCgpIGNwT3V0cHV0Rm9ybWF0OiBPdXRwdXRGb3JtYXQgPSBPdXRwdXRGb3JtYXQuYXV0b1xuICAgIEBJbnB1dCgpIGNwQ215a0VuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZVxuICAgIEBJbnB1dCgpIGNwQWxwaGFDaGFubmVsOiBBbHBoYUNoYW5uZWwgPSBBbHBoYUNoYW5uZWwuZW5hYmxlZFxuICAgIEBJbnB1dCgpIGNwRmFsbGJhY2tDb2xvcjogc3RyaW5nID0gJydcblxuICAgIEBJbnB1dCgpIGNwUG9zaXRpb246IERpYWxvZ1Bvc2l0aW9uID0gRGlhbG9nUG9zaXRpb24ucmlnaHRcbiAgICBASW5wdXQoKSBjcFBvc2l0aW9uT2Zmc2V0OiBudW1iZXIgPSAwXG5cbiAgICBASW5wdXQoKSBjcFByZXNldExhYmVsOiBib29sZWFuIHwgc3RyaW5nID0gdHJ1ZVxuICAgIEBJbnB1dCgpIGNwUHJlc2V0Q29sb3JzOiBzdHJpbmdbXVxuXG4gICAgQElucHV0KCkgY3BEaXNhYmxlSW5wdXQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gICAgQElucHV0KCkgY3BEaWFsb2dEaXNwbGF5OiBEaWFsb2dEaXNwbGF5ID0gRGlhbG9nRGlzcGxheS5wb3B1cFxuXG4gICAgQElucHV0KCkgY3BJZ25vcmVkRWxlbWVudHMgPSBuZXcgQXJyYXk8YW55PigpXG5cbiAgICBASW5wdXQoKSBjcFNhdmVDbGlja091dHNpZGU6IGJvb2xlYW4gPSB0cnVlXG4gICAgQElucHV0KCkgY3BDbG9zZUNsaWNrT3V0c2lkZTogYm9vbGVhbiA9IHRydWVcblxuICAgIEBJbnB1dCgpIGNwT0tCdXR0b246IGJvb2xlYW4gPSBmYWxzZVxuXG4gICAgQElucHV0KCkgY3BDYW5jZWxCdXR0b246IGJvb2xlYW4gPSBmYWxzZVxuXG4gICAgQElucHV0KCkgY3BBZGRDb2xvckJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlXG5cbiAgICBASW5wdXQoKSBjcE1heFByZXNldENvbG9yczogbnVtYmVyID0gNlxuXG4gICAgQElucHV0KCkgY3BVc2VSb290Vmlld0NvbnRhaW5lcjogYm9vbGVhbiA9IGZhbHNlXG5cbiAgICBAT3V0cHV0KCkgY3BPcGVuID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KHRydWUpXG4gICAgQE91dHB1dCgpIGNwQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4odHJ1ZSlcblxuICAgIEBPdXRwdXQoKSBjcElucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJbnB1dENoYW5nZUV2ZW50Pih0cnVlKVxuXG4gICAgQE91dHB1dCgpIGNwVG9nZ2xlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPih0cnVlKVxuXG4gICAgQE91dHB1dCgpIGNwU2xpZGVyRHJhZ1N0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxTbGlkZXJDaGFuZ2VFdmVudD4odHJ1ZSlcbiAgICBAT3V0cHV0KCkgY3BTbGlkZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNsaWRlckNoYW5nZUV2ZW50Pih0cnVlKVxuICAgIEBPdXRwdXQoKSBjcFNsaWRlckRyYWdFbmQgPSBuZXcgRXZlbnRFbWl0dGVyPFNsaWRlckNoYW5nZUV2ZW50Pih0cnVlKVxuXG4gICAgQE91dHB1dCgpIGNwQ29sb3JTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4odHJ1ZSlcbiAgICBAT3V0cHV0KCkgY3BDb2xvclNlbGVjdENhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4odHJ1ZSlcbiAgICBAT3V0cHV0KCkgY3BDb2xvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPihmYWxzZSlcblxuICAgIEBPdXRwdXQoKSBjcENteWtDb2xvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPih0cnVlKVxuXG4gICAgQE91dHB1dCgpIGNwUHJlc2V0Q29sb3JzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4odHJ1ZSlcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBwcml2YXRlIHZjUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXlcbiAgICApIHsgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVPcGVuKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBwYXRoID0gbmV3IFNldChjb21wb3NlZFBhdGgoZXZlbnQpKVxuICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5pZ25vcmVkRWxlbWVudHMuZmluZChlbCA9PiBwYXRoLmhhcyhlbCkpXG5cbiAgICAgICAgaWYgKCF0aGlzLmNwRGlzYWJsZWQgJiYgIWlnbm9yZWQpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkRpYWxvZygpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdpbnB1dCcsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcignY2hhbmdlJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVJbnB1dChldmVudDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSAoKGV2ZW50ICYmIGV2ZW50LnRhcmdldCAmJiBldmVudC50YXJnZXRbJ3ZhbHVlJ10gfHwgJycpICsgJycpLnRyaW0oKVxuXG4gICAgICAgIGlmICh0aGlzLmRpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2cuc2V0Q29sb3JGcm9tU3RyaW5nKHZhbHVlLCB0cnVlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jcENvbG9yID0gdmFsdWVcbiAgICAgICAgICAgIHRoaXMuY3BDb2xvckNoYW5nZS5lbWl0KHRoaXMuY3BDb2xvcilcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRpc3Bvc2UoKVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuY3BUb2dnbGUgJiYgIXRoaXMuY3BEaXNhYmxlZCkge1xuICAgICAgICAgICAgaWYgKGNoYW5nZXMuY3BUb2dnbGUuY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuRGlhbG9nKClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZURpYWxvZygpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5jcENvbG9yKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kaWFsb2cgJiYgIXRoaXMuaWdub3JlQ2hhbmdlcykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNwRGlhbG9nRGlzcGxheSA9PSBEaWFsb2dEaXNwbGF5LmlubGluZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZy5zZXRJbml0aWFsQ29sb3IoY2hhbmdlcy5jcENvbG9yLmN1cnJlbnRWYWx1ZSlcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZy5zZXRDb2xvckZyb21TdHJpbmcoY2hhbmdlcy5jcENvbG9yLmN1cnJlbnRWYWx1ZSwgZmFsc2UpXG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jcFVzZVJvb3RWaWV3Q29udGFpbmVyICYmIHRoaXMuY3BEaWFsb2dEaXNwbGF5ICE9IERpYWxvZ0Rpc3BsYXkuaW5saW5lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY21wUmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5pZ25vcmVDaGFuZ2VzID0gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoY2hhbmdlcy5jcFByZXNldExhYmVsIHx8IGNoYW5nZXMuY3BQcmVzZXRDb2xvcnMpICYmIHRoaXMuZGlhbG9nKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5zZXRQcmVzZXRDb25maWcodGhpcy5jcFByZXNldExhYmVsLCB0aGlzLmNwUHJlc2V0Q29sb3JzKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuY3BEaWFsb2dEaXNwbGF5KSB7XG4gICAgICAgICAgICB0aGlzLmRpc3Bvc2UoKVxuICAgICAgICAgICAgdGhpcy5jcmVhdGUoKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChjaGFuZ2VzLmNwUG9zaXRpb24gfHwgY2hhbmdlcy5jcFBvc2l0aW9uT2Zmc2V0KSAmJiB0aGlzLmNwRGlhbG9nRGlzcGxheSA9PSBEaWFsb2dEaXNwbGF5LnBvcHVwKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5vdmVybGF5LnBvc2l0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5lbFJlZilcbiAgICAgICAgICAgICAgICAgICAgLndpdGhQb3NpdGlvbnModGhpcy5nZXRQb3NpdGlvbnModGhpcy5jcFBvc2l0aW9uT2Zmc2V0KSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvcGVuRGlhbG9nKCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlhbG9nQ3JlYXRlZCkge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGUoKVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGlhbG9nKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmICYmICF0aGlzLm92ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY21wUmVmID0gdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgQ29tcG9uZW50UG9ydGFsKENvbG9yUGlja2VyQ29tcG9uZW50LCBudWxsLCB0aGlzLmluamVjdG9yKSlcbiAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZyA9IHRoaXMuY21wUmVmLmluc3RhbmNlXG4gICAgICAgICAgICAgICAgdGhpcy5zZXR1cERpYWxvZygpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuRGlhbG9nKHRoaXMuY3BDb2xvcilcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlRGlhbG9nKCkge1xuICAgICAgICBpZiAodGhpcy5kaWFsb2cgJiYgdGhpcy5jcERpYWxvZ0Rpc3BsYXkgPT0gRGlhbG9nRGlzcGxheS5wb3B1cCkge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2cuY2xvc2VEaWFsb2coKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNwb3NlKCkge1xuICAgICAgICBpZiAodGhpcy5jbXBSZWYpXG4gICAgICAgICAgICB0aGlzLmNtcFJlZi5kZXN0cm95KClcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZilcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKClcblxuICAgICAgICB0aGlzLmNtcFJlZiA9IHVuZGVmaW5lZFxuICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB1bmRlZmluZWRcbiAgICAgICAgdGhpcy5kaWFsb2dDcmVhdGVkID0gZmFsc2VcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZSgpIHtcbiAgICAgICAgbGV0IHZjUmVmID0gdGhpcy52Y1JlZlxuXG4gICAgICAgIHRoaXMuZGlhbG9nQ3JlYXRlZCA9IHRydWVcblxuICAgICAgICBpZiAodGhpcy5jcFVzZVJvb3RWaWV3Q29udGFpbmVyICYmIHRoaXMuY3BEaWFsb2dEaXNwbGF5ICE9IERpYWxvZ0Rpc3BsYXkuaW5saW5lKSB7XG4gICAgICAgICAgICBjb25zdCBjbGFzc09mUm9vdENvbXBvbmVudCA9IHRoaXMuYXBwUmVmLmNvbXBvbmVudFR5cGVzWzBdXG4gICAgICAgICAgICBjb25zdCBhcHBJbnN0YW5jZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KGNsYXNzT2ZSb290Q29tcG9uZW50KVxuXG4gICAgICAgICAgICB2Y1JlZiA9IGFwcEluc3RhbmNlLnZjUmVmIHx8IGFwcEluc3RhbmNlLnZpZXdDb250YWluZXJSZWYgfHwgdGhpcy52Y1JlZlxuXG4gICAgICAgICAgICBpZiAodmNSZWYgPT0gdGhpcy52Y1JlZikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignWW91IGFyZSB1c2luZyBjcFVzZVJvb3RWaWV3Q29udGFpbmVyLCBidXQgdGhlIHJvb3QgY29tcG9uZW50IGlzIG5vdCBleHBvc2luZyB2aWV3Q29udGFpbmVyUmVmISBQbGVhc2UgZXhwb3NlIGl0IGJ5IGFkZGluZyBcXCd2Y1JlZjogVmlld0NvbnRhaW5lclJlZlxcJyB0byB0aGUgY29uc3RydWN0b3IuJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNwRGlhbG9nRGlzcGxheSAhPSBEaWFsb2dEaXNwbGF5LmlubGluZSkge1xuICAgICAgICAgICAgY29uc3QgcG9zID0gdGhpcy5vdmVybGF5LnBvc2l0aW9uKClcbiAgICAgICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmVsUmVmKVxuICAgICAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgICAgICAgICAgIC53aXRoUHVzaChmYWxzZSlcbiAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9ucyh0aGlzLmdldFBvc2l0aW9ucyh0aGlzLmNwUG9zaXRpb25PZmZzZXQpKVxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7IHBvc2l0aW9uU3RyYXRlZ3k6IHBvcywgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oeyBhdXRvQ2xvc2U6IHRydWUgfSkgfSlcbiAgICAgICAgICAgIHRoaXMuY21wUmVmID0gdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgQ29tcG9uZW50UG9ydGFsKENvbG9yUGlja2VyQ29tcG9uZW50LCBudWxsLCB0aGlzLmluamVjdG9yKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY21wUmVmID0gdmNSZWYuY3JlYXRlQ29tcG9uZW50KENvbG9yUGlja2VyQ29tcG9uZW50LCB7IGluamVjdG9yOiB0aGlzLmluamVjdG9yLCBpbmRleDogMCB9KVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kaWFsb2cgPSB0aGlzLmNtcFJlZi5pbnN0YW5jZVxuXG4gICAgICAgIHRoaXMuc2V0dXBEaWFsb2coKVxuXG4gICAgICAgIGlmICh0aGlzLnZjUmVmICE9IHZjUmVmKSB7XG4gICAgICAgICAgICB0aGlzLmNtcFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBEaWFsb2coKSB7XG4gICAgICAgIGlmICh0aGlzLmRpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2cuc2V0dXBEaWFsb2coeyAuLi50aGlzLCBjYWxsYmFja3M6IHRoaXMuX2NhbGxiYWNrcywgZWxlbWVudFJlZjogdGhpcy5lbFJlZiwgY29sb3I6IHRoaXMuY3BDb2xvciB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQb3NpdGlvbnMob2Zmc2V0ID0gMCkge1xuICAgICAgICBjb25zdCBwb3M6IENvbm5lY3RlZFBvc2l0aW9uW10gPSBbXVxuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuY3BQb3NpdGlvbiB8fCBEaWFsb2dQb3NpdGlvbi5hdXRvXG5cbiAgICAgICAgY29uc3QgYmIgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcblxuICAgICAgICBpZiAocG9zaXRpb24gPT0gRGlhbG9nUG9zaXRpb24uYXV0byB8fCBwb3NpdGlvbiA9PSBEaWFsb2dQb3NpdGlvbi5ib3R0b20pIHtcbiAgICAgICAgICAgIHBvcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICAgICAgICBwYW5lbENsYXNzOiAnY29sb3ItcGlja2VyX19hcnJvdy0tYm90dG9tJyxcbiAgICAgICAgICAgICAgICBvZmZzZXRZOiBiYi5oZWlnaHQgKiBvZmZzZXRcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9zaXRpb24gPT0gRGlhbG9nUG9zaXRpb24uYXV0byB8fCBwb3NpdGlvbiA9PSBEaWFsb2dQb3NpdGlvbi50b3ApIHtcbiAgICAgICAgICAgIHBvcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICBwYW5lbENsYXNzOiAnY29sb3ItcGlja2VyX19hcnJvdy0tdG9wJyxcbiAgICAgICAgICAgICAgICBvZmZzZXRZOiAtYmIuaGVpZ2h0ICogb2Zmc2V0XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uID09IERpYWxvZ1Bvc2l0aW9uLmF1dG8gfHwgcG9zaXRpb24gPT0gRGlhbG9nUG9zaXRpb24ubGVmdCkge1xuICAgICAgICAgICAgcG9zLnB1c2goe1xuICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICAgICAgICBwYW5lbENsYXNzOiAnY29sb3ItcGlja2VyX19hcnJvdy0tbGVmdCcsXG4gICAgICAgICAgICAgICAgb2Zmc2V0WDogLWJiLndpZHRoICogb2Zmc2V0XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uID09IERpYWxvZ1Bvc2l0aW9uLmF1dG8gfHwgcG9zaXRpb24gPT0gRGlhbG9nUG9zaXRpb24ucmlnaHQpIHtcbiAgICAgICAgICAgIHBvcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgICAgICAgICAgcGFuZWxDbGFzczogJ2NvbG9yLXBpY2tlcl9fYXJyb3ctLXJpZ2h0JyxcbiAgICAgICAgICAgICAgICBvZmZzZXRYOiBiYi53aWR0aCAqIG9mZnNldFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwb3NcbiAgICB9XG59XG4iXX0=
|
|
@@ -8,15 +8,15 @@ import { TextDirective } from './text.directive';
|
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export class ColorPickerModule {
|
|
10
10
|
}
|
|
11
|
-
ColorPickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
12
|
-
ColorPickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
|
|
11
|
+
ColorPickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: ColorPickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
+
ColorPickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.2", ngImport: i0, type: ColorPickerModule, declarations: [TextDirective,
|
|
13
13
|
SliderDirective,
|
|
14
14
|
ColorPickerComponent,
|
|
15
15
|
ColorPickerDirective], imports: [CommonModule,
|
|
16
16
|
OverlayModule], exports: [ColorPickerDirective] });
|
|
17
|
-
ColorPickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.
|
|
17
|
+
ColorPickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: ColorPickerModule, imports: [CommonModule,
|
|
18
18
|
OverlayModule] });
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: ColorPickerModule, decorators: [{
|
|
20
20
|
type: NgModule,
|
|
21
21
|
args: [{
|
|
22
22
|
declarations: [
|
|
@@ -14,9 +14,9 @@ export class ColorPickerService {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
ColorPickerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
18
|
-
ColorPickerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
17
|
+
ColorPickerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: ColorPickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
18
|
+
ColorPickerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: ColorPickerService, providedIn: 'root' });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: ColorPickerService, decorators: [{
|
|
20
20
|
type: Injectable,
|
|
21
21
|
args: [{
|
|
22
22
|
providedIn: 'root'
|
|
@@ -56,9 +56,9 @@ export class SliderDirective {
|
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
SliderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
60
|
-
SliderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
59
|
+
SliderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: SliderDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
60
|
+
SliderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.2", type: SliderDirective, selector: "[cpSlider]", inputs: { rgX: "rgX", rgY: "rgY", slider: "slider" }, outputs: { dragEnd: "dragEnd", dragStart: "dragStart", newValue: "newValue" }, host: { listeners: { "mousedown": "onStart($event)", "touchstart": "onStart($event)", "document:mousemove": "onMove($event)", "document:touchmove": "onMove($event)", "document:mouseup": "onStop($event)", "document:touchend": "onStop($event)" } }, ngImport: i0 });
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: SliderDirective, decorators: [{
|
|
62
62
|
type: Directive,
|
|
63
63
|
args: [{
|
|
64
64
|
selector: '[cpSlider]'
|
|
@@ -15,9 +15,9 @@ export class TextDirective {
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
TextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
19
|
-
TextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
18
|
+
TextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: TextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
19
|
+
TextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.2", type: TextDirective, selector: "[cpText]", inputs: { rg: "rg", text: "text" }, outputs: { newValue: "newValue" }, host: { listeners: { "input": "inputChange($event)", "change": "inputChange($event)" } }, ngImport: i0 });
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: TextDirective, decorators: [{
|
|
21
21
|
type: Directive,
|
|
22
22
|
args: [{
|
|
23
23
|
selector: '[cpText]'
|