@ngx-mce/color-picker 21.2.6-next.1 → 21.2.6-next.3

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.
@@ -1,9 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { output, input, signal, Input, Directive, Component, ViewEncapsulation, Injectable, InjectionToken, viewChild, inject, ChangeDetectorRef, HostBinding, Output, ChangeDetectionStrategy, EventEmitter, DOCUMENT, Optional, Inject, forwardRef, effect, untracked, HostListener } from '@angular/core';
2
+ import { output, input, signal, Input, Directive, inject, NgZone, Component, ViewEncapsulation, Injectable, InjectionToken, viewChild, ChangeDetectorRef, HostBinding, Output, ChangeDetectionStrategy, EventEmitter, DOCUMENT, ViewContainerRef, forwardRef, ElementRef, effect, untracked, HostListener } from '@angular/core';
3
3
  import * as i3 from '@angular/forms';
4
4
  import { FormGroup, FormControl, Validators, ReactiveFormsModule, NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
5
5
  import * as i1 from '@angular/material/form-field';
6
- import { MatFormFieldModule } from '@angular/material/form-field';
6
+ import { MatFormFieldModule, MatFormField } from '@angular/material/form-field';
7
7
  import * as i2 from '@angular/material/input';
8
8
  import { MatInputModule, MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';
9
9
  import { Subject, merge, Subscription, of } from 'rxjs';
@@ -11,23 +11,18 @@ import { takeUntil, debounceTime, distinctUntilChanged, take, filter } from 'rxj
11
11
  import { NgClass } from '@angular/common';
12
12
  import * as i1$1 from '@angular/material/button';
13
13
  import { MatButtonModule } from '@angular/material/button';
14
+ import { Directionality } from '@angular/cdk/bidi';
14
15
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
15
16
  import { ESCAPE, UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';
16
- import * as i2$1 from '@angular/cdk/overlay';
17
17
  import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
18
18
  import { ComponentPortal } from '@angular/cdk/portal';
19
- import * as i1$2 from '@angular/material/dialog';
20
- import * as i4 from '@angular/cdk/bidi';
21
- import * as i2$2 from '@angular/material/icon';
19
+ import { MatDialog } from '@angular/material/dialog';
20
+ import * as i2$1 from '@angular/material/icon';
22
21
  import { MatIconModule } from '@angular/material/icon';
23
22
 
24
23
  const trimLeft = /^\s+/;
25
24
  const trimRight = /\s+$/;
26
- const tinyCounter = 0;
27
25
  const mathRound = Math.round;
28
- const mathMin = Math.min;
29
- const mathMax = Math.max;
30
- const mathRandom = Math.random;
31
26
  const NUMERIC_REGEX = /[^0-9]/g;
32
27
  const MAX_RGB = 255;
33
28
  const MIN_RGB = 0;
@@ -65,7 +60,7 @@ function getColorAtPosition(ctx, x, y) {
65
60
  // Assumes r, g, b are contained in the set [0, 255] and
66
61
  // a in [0, 1]. Returns a 4 or 8 character rgba hex
67
62
  function rgbaToHex(r, g, b, a, allow4Char) {
68
- var hex = [
63
+ const hex = [
69
64
  pad2(mathRound(r).toString(16)),
70
65
  pad2(mathRound(g).toString(16)),
71
66
  pad2(mathRound(b).toString(16)),
@@ -102,7 +97,7 @@ function parseIntFromHex(val) {
102
97
  // Assumes r, g, and b are contained in the set [0, 255]
103
98
  // Returns a 3 or 6 character hex
104
99
  function rgbToHex(r, g, b, allow3Char) {
105
- var hex = [
100
+ const hex = [
106
101
  pad2(mathRound(r).toString(16)),
107
102
  pad2(mathRound(g).toString(16)),
108
103
  pad2(mathRound(b).toString(16)),
@@ -155,7 +150,6 @@ function stringInputToObject(color) {
155
150
  // Just return an object and let the conversion functions handle that.
156
151
  // This way the result will be the same whether the tinycolor is initialized with string or object.
157
152
  let match;
158
- let obj;
159
153
  if ((match = matchers.rgb.exec(color))) {
160
154
  return {
161
155
  r: parseFloat(match[1]),
@@ -261,10 +255,10 @@ class Color {
261
255
  return '#' + this.toHex8(allow4Char);
262
256
  }
263
257
  toString(format) {
264
- let formatSet = !!format;
258
+ const formatSet = !!format;
265
259
  let formattedString;
266
- let hasAlpha = this.a < 1 && this.a >= 0;
267
- let needsAlphaFormat = !formatSet &&
260
+ const hasAlpha = this.a < 1 && this.a >= 0;
261
+ const needsAlphaFormat = !formatSet &&
268
262
  hasAlpha &&
269
263
  (format === 'hex' ||
270
264
  format === 'hex6' ||
@@ -294,7 +288,6 @@ class Color {
294
288
  }
295
289
 
296
290
  class NgxMatBaseColorCanvas {
297
- zone;
298
291
  colorChanged = output();
299
292
  theme = input(...(ngDevMode ? [undefined, { debugName: "theme" }] : /* istanbul ignore next */ []));
300
293
  color = signal(null, ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
@@ -310,8 +303,8 @@ class NgxMatBaseColorCanvas {
310
303
  y = 0;
311
304
  drag = false;
312
305
  _destroyed = new Subject();
313
- constructor(zone, elementId) {
314
- this.zone = zone;
306
+ zone = null;
307
+ constructor(elementId) {
315
308
  this.elementId = elementId;
316
309
  }
317
310
  ngOnDestroy() {
@@ -336,18 +329,18 @@ class NgxMatBaseColorCanvas {
336
329
  onMousedown(e) {
337
330
  this.drag = true;
338
331
  this.changeColor(e);
339
- this.zone.runOutsideAngular(() => {
332
+ this.zone?.runOutsideAngular(() => {
340
333
  this.canvas?.addEventListener('mousemove', this.onMousemove.bind(this));
341
334
  });
342
335
  }
343
336
  onMousemove(e) {
344
337
  if (this.drag) {
345
- this.zone.run(() => {
338
+ this.zone?.run(() => {
346
339
  this.changeColor(e);
347
340
  });
348
341
  }
349
342
  }
350
- onMouseup(e) {
343
+ onMouseup(_) {
351
344
  this.drag = false;
352
345
  this.canvas?.removeEventListener('mousemove', this.onMousemove);
353
346
  }
@@ -359,7 +352,7 @@ class NgxMatBaseColorCanvas {
359
352
  }
360
353
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NgxMatBaseColorCanvas, decorators: [{
361
354
  type: Directive
362
- }], ctorParameters: () => [{ type: i0.NgZone }, { type: undefined }], propDecorators: { colorChanged: [{ type: i0.Output, args: ["colorChanged"] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], setColor: [{
355
+ }], ctorParameters: () => [{ type: undefined }], propDecorators: { colorChanged: [{ type: i0.Output, args: ["colorChanged"] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], setColor: [{
363
356
  type: Input,
364
357
  args: [{
365
358
  alias: 'color',
@@ -367,10 +360,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
367
360
  }] } });
368
361
 
369
362
  class NgxMatColorSliderComponent extends NgxMatBaseColorCanvas {
370
- zone;
371
- constructor(zone) {
372
- super(zone, 'color-strip');
373
- this.zone = zone;
363
+ zone = inject(NgZone);
364
+ constructor() {
365
+ super('color-strip');
374
366
  }
375
367
  ngAfterViewInit() {
376
368
  super.ngAfterViewInit();
@@ -402,17 +394,16 @@ class NgxMatColorSliderComponent extends NgxMatBaseColorCanvas {
402
394
  const { r, g, b } = getColorAtPosition(this.ctx, e.offsetX, e.offsetY);
403
395
  this.emitChange(new Color(r, g, b));
404
396
  }
405
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NgxMatColorSliderComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
397
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NgxMatColorSliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
406
398
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: NgxMatColorSliderComponent, isStandalone: true, selector: "ngx-mat-color-slider", usesInheritance: true, ngImport: i0, template: "<canvas\n id=\"color-strip\"\n class=\"zone-strip\"\n (mousedown)=\"onMousedown($event)\"\n (mouseup)=\"onMouseup($event)\"\n width=\"15\"\n height=\"234\"\n></canvas>\n", styles: [""] });
407
399
  }
408
400
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NgxMatColorSliderComponent, decorators: [{
409
401
  type: Component,
410
402
  args: [{ selector: 'ngx-mat-color-slider', template: "<canvas\n id=\"color-strip\"\n class=\"zone-strip\"\n (mousedown)=\"onMousedown($event)\"\n (mouseup)=\"onMouseup($event)\"\n width=\"15\"\n height=\"234\"\n></canvas>\n" }]
411
- }], ctorParameters: () => [{ type: i0.NgZone }] });
403
+ }], ctorParameters: () => [] });
412
404
 
413
405
  const RADIUS_NOB = 5;
414
406
  class NgxMatColorCanvasComponent extends NgxMatBaseColorCanvas {
415
- zone;
416
407
  _baseColor = null;
417
408
  get rCtrl() {
418
409
  return this.formGroup.get('r');
@@ -432,9 +423,9 @@ class NgxMatColorCanvasComponent extends NgxMatBaseColorCanvas {
432
423
  _resetBaseColor = true;
433
424
  formGroup;
434
425
  rgba = "";
435
- constructor(zone) {
436
- super(zone, 'color-block');
437
- this.zone = zone;
426
+ zone = inject(NgZone);
427
+ constructor() {
428
+ super('color-block');
438
429
  this.formGroup = new FormGroup({
439
430
  r: new FormControl(null, [Validators.required]),
440
431
  g: new FormControl(null, [Validators.required]),
@@ -516,7 +507,7 @@ class NgxMatColorCanvasComponent extends NgxMatBaseColorCanvas {
516
507
  const { r, g, b } = getColorAtPosition(this.ctx, e.offsetX, e.offsetY);
517
508
  this.emitChange(new Color(r, g, b));
518
509
  }
519
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NgxMatColorCanvasComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
510
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NgxMatColorCanvasComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
520
511
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: NgxMatColorCanvasComponent, isStandalone: true, selector: "ngx-mat-color-canvas", host: { classAttribute: "ngx-mat-color-canvas" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"formGroup\">\n <div class=\"color-canvas-row\">\n <div class=\"zone-canvas\">\n <canvas\n id=\"color-block\"\n class=\"zone-block\"\n (mousedown)=\"onMousedown($event)\"\n (mouseup)=\"onMouseup($event)\"\n width=\"200\"\n height=\"235\"\n ></canvas>\n <ngx-mat-color-slider (colorChanged)=\"onSliderColorChanged($event)\" />\n </div>\n\n <div class=\"zone-inputs\">\n <mat-form-field [color]=\"theme()\">\n <mat-label>R</mat-label>\n <input\n matInput\n formControlName=\"r\"\n ngxMatNumericColorInput\n autocomplete=\"off\"\n />\n </mat-form-field>\n\n <mat-form-field [color]=\"theme()\">\n <mat-label>G</mat-label>\n <input\n matInput\n formControlName=\"g\"\n ngxMatNumericColorInput\n autocomplete=\"off\"\n />\n </mat-form-field>\n\n <mat-form-field [color]=\"theme()\">\n <mat-label>B</mat-label>\n <input\n matInput\n formControlName=\"b\"\n ngxMatNumericColorInput\n autocomplete=\"off\"\n />\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"color-canvas-row\">\n <button\n mat-mini-fab\n [style.background-color]=\"color()?.rgba || 'transparent'\"\n class=\"preview\"\n ></button>\n <mat-form-field [color]=\"theme()\">\n <mat-label>HEX6</mat-label>\n <mat-label matPrefix class=\"symbol\">#&nbsp;</mat-label>\n <input matInput formControlName=\"hex\" autocomplete=\"off\" />\n </mat-form-field>\n <mat-form-field class=\"input-opacity\" [color]=\"theme()\">\n <mat-label>A</mat-label>\n <input\n matInput\n formControlName=\"a\"\n type=\"number\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n autocomplete=\"off\"\n />\n </mat-form-field>\n </div>\n</form>\n", styles: [".ngx-mat-color-canvas .color-canvas-row{display:flex}.ngx-mat-color-canvas .color-canvas-row:first-of-type{height:235px;margin-bottom:12px}.ngx-mat-color-canvas .color-canvas-row:first-of-type .card{height:180px}.ngx-mat-color-canvas .color-canvas-row canvas:hover{cursor:crosshair}.ngx-mat-color-canvas .color-canvas-row .zone{display:flex}.ngx-mat-color-canvas .color-canvas-row .zone-canvas{height:235px}.ngx-mat-color-canvas .color-canvas-row .zone-canvas .zone-block{border:1px solid rgba(0,0,0,.12)}.ngx-mat-color-canvas .color-canvas-row .zone-strip{flex-basis:auto;margin-left:10px}.ngx-mat-color-canvas .color-canvas-row .zone-inputs{display:flex;width:60px;height:235px;flex-direction:column;margin-left:16px;margin-top:12px}.ngx-mat-color-canvas .color-canvas-row:nth-of-type(2){display:flex}.ngx-mat-color-canvas .color-canvas-row:nth-of-type(2) .preview{min-width:40px;min-height:40px;height:40px;width:40px;margin-top:12px}.ngx-mat-color-canvas .color-canvas-row:nth-of-type(2) .mat-mdc-form-field{margin-left:16px}.ngx-mat-color-canvas .color-canvas-row:nth-of-type(2) .mat-mdc-form-field:first-of-type{width:170px}.ngx-mat-color-canvas .color-canvas-row:nth-of-type(2) .mat-mdc-form-field:first-of-type .symbol{font-weight:700;color:#0000008a}.ngx-mat-color-canvas .color-canvas-row:nth-of-type(2) .mat-mdc-form-field:last-of-type{width:60px}.ngx-mat-color-canvas .color-canvas-row:nth-of-type(2) .mat-mdc-form-field:last-of-type .mat-mdc-text-field-wrapper{padding:0 8px}.ngx-mat-color-canvas .mat-mdc-form-field-label{font-weight:700}.ngx-mat-color-canvas .mat-mdc-form-field .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:transparent}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: NgxMatColorSliderComponent, selector: "ngx-mat-color-slider" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], encapsulation: i0.ViewEncapsulation.None });
521
512
  }
522
513
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NgxMatColorCanvasComponent, decorators: [{
@@ -524,7 +515,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
524
515
  args: [{ selector: 'ngx-mat-color-canvas', encapsulation: ViewEncapsulation.None, host: {
525
516
  class: 'ngx-mat-color-canvas',
526
517
  }, imports: [MatFormFieldModule, MatInputModule, NgxMatColorSliderComponent, ReactiveFormsModule], template: "<form [formGroup]=\"formGroup\">\n <div class=\"color-canvas-row\">\n <div class=\"zone-canvas\">\n <canvas\n id=\"color-block\"\n class=\"zone-block\"\n (mousedown)=\"onMousedown($event)\"\n (mouseup)=\"onMouseup($event)\"\n width=\"200\"\n height=\"235\"\n ></canvas>\n <ngx-mat-color-slider (colorChanged)=\"onSliderColorChanged($event)\" />\n </div>\n\n <div class=\"zone-inputs\">\n <mat-form-field [color]=\"theme()\">\n <mat-label>R</mat-label>\n <input\n matInput\n formControlName=\"r\"\n ngxMatNumericColorInput\n autocomplete=\"off\"\n />\n </mat-form-field>\n\n <mat-form-field [color]=\"theme()\">\n <mat-label>G</mat-label>\n <input\n matInput\n formControlName=\"g\"\n ngxMatNumericColorInput\n autocomplete=\"off\"\n />\n </mat-form-field>\n\n <mat-form-field [color]=\"theme()\">\n <mat-label>B</mat-label>\n <input\n matInput\n formControlName=\"b\"\n ngxMatNumericColorInput\n autocomplete=\"off\"\n />\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"color-canvas-row\">\n <button\n mat-mini-fab\n [style.background-color]=\"color()?.rgba || 'transparent'\"\n class=\"preview\"\n ></button>\n <mat-form-field [color]=\"theme()\">\n <mat-label>HEX6</mat-label>\n <mat-label matPrefix class=\"symbol\">#&nbsp;</mat-label>\n <input matInput formControlName=\"hex\" autocomplete=\"off\" />\n </mat-form-field>\n <mat-form-field class=\"input-opacity\" [color]=\"theme()\">\n <mat-label>A</mat-label>\n <input\n matInput\n formControlName=\"a\"\n type=\"number\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n autocomplete=\"off\"\n />\n </mat-form-field>\n </div>\n</form>\n", styles: [".ngx-mat-color-canvas .color-canvas-row{display:flex}.ngx-mat-color-canvas .color-canvas-row:first-of-type{height:235px;margin-bottom:12px}.ngx-mat-color-canvas .color-canvas-row:first-of-type .card{height:180px}.ngx-mat-color-canvas .color-canvas-row canvas:hover{cursor:crosshair}.ngx-mat-color-canvas .color-canvas-row .zone{display:flex}.ngx-mat-color-canvas .color-canvas-row .zone-canvas{height:235px}.ngx-mat-color-canvas .color-canvas-row .zone-canvas .zone-block{border:1px solid rgba(0,0,0,.12)}.ngx-mat-color-canvas .color-canvas-row .zone-strip{flex-basis:auto;margin-left:10px}.ngx-mat-color-canvas .color-canvas-row .zone-inputs{display:flex;width:60px;height:235px;flex-direction:column;margin-left:16px;margin-top:12px}.ngx-mat-color-canvas .color-canvas-row:nth-of-type(2){display:flex}.ngx-mat-color-canvas .color-canvas-row:nth-of-type(2) .preview{min-width:40px;min-height:40px;height:40px;width:40px;margin-top:12px}.ngx-mat-color-canvas .color-canvas-row:nth-of-type(2) .mat-mdc-form-field{margin-left:16px}.ngx-mat-color-canvas .color-canvas-row:nth-of-type(2) .mat-mdc-form-field:first-of-type{width:170px}.ngx-mat-color-canvas .color-canvas-row:nth-of-type(2) .mat-mdc-form-field:first-of-type .symbol{font-weight:700;color:#0000008a}.ngx-mat-color-canvas .color-canvas-row:nth-of-type(2) .mat-mdc-form-field:last-of-type{width:60px}.ngx-mat-color-canvas .color-canvas-row:nth-of-type(2) .mat-mdc-form-field:last-of-type .mat-mdc-text-field-wrapper{padding:0 8px}.ngx-mat-color-canvas .mat-mdc-form-field-label{font-weight:700}.ngx-mat-color-canvas .mat-mdc-form-field .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:transparent}\n"] }]
527
- }], ctorParameters: () => [{ type: i0.NgZone }] });
518
+ }], ctorParameters: () => [] });
528
519
 
529
520
  class NgxMatColorCollectionComponent {
530
521
  colorChanged = output();
@@ -538,7 +529,7 @@ class NgxMatColorCollectionComponent {
538
529
  colors2 = BASIC_COLORS.slice(8, 16);
539
530
  select(hex) {
540
531
  this.selectedColor.set(hex);
541
- let rgba = stringInputToObject(hex);
532
+ const rgba = stringInputToObject(hex);
542
533
  if (rgba != null) {
543
534
  this.colorChanged.emit(new Color(rgba.r, rgba.g, rgba.b, rgba.a));
544
535
  }
@@ -654,8 +645,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
654
645
  class: 'ngx-mat-colorpicker-content',
655
646
  '[class.ngx-mat-colorpicker-content-touch]': 'picker?.touchUi',
656
647
  '(animationend)': '_onAnimationEnd($event)',
657
- }, exportAs: 'ngxMatColorPickerContent', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['color'], imports: [NgxMatColorPaletteComponent], template: "<ngx-mat-color-palette\n (colorChanged)=\"picker?.select($event)\"\n [color]=\"picker!._selected\"\n [theme]=\"color\"></ngx-mat-color-palette>\n", styles: ["@keyframes panelDropdownEnter{0%{opacity:0;transform:scaleY(.8)}to{opacity:1;transform:scale(1)}}@keyframes panelDialogEnter{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:none}}@keyframes panelLeave{0%{opacity:1}to{opacity:0}}.panel-enter-dropdown{animation:panelDropdownEnter .12s cubic-bezier(0,0,.2,1)}.panel-enter-dialog{animation:panelDialogEnter .15s cubic-bezier(0,0,.2,1)}.panel-leave{animation:panelLeave .1s linear forwards;pointer-events:none}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.calendar-fade-enter{animation:fadeIn .12s .1s cubic-bezier(.55,0,.55,.2) forwards}\n", ".ngx-mat-colorpicker-content{display:block;border-radius:4px;box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#fff;color:#000000de;padding:16px}.ngx-mat-colorpicker-content .ngx-mat-color-palette{width:296px;height:354px}.ngx-mat-colorpicker-content-touch{display:block;max-height:80vh;overflow:auto}.ngx-mat-colorpicker-content-touch .ngx-mat-color-palette{min-width:250px;min-height:312px;max-width:750px;max-height:788px}@media all and (orientation:landscape){.mat-colorpicker-content-touch .ngx-mat-color-palette{width:64vh;height:80vh}}@media all and (orientation:portrait){.mat-colorpicker-content-touch .ngx-mat-color-palette{width:80vw;height:100vw}}\n"] }]
658
- }], propDecorators: { _palette: [{ type: i0.ViewChild, args: [i0.forwardRef(() => NgxMatColorPaletteComponent), { isSignal: true }] }], _animationDone: [{
648
+ }, exportAs: 'ngxMatColorPickerContent', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgxMatColorPaletteComponent], template: "<ngx-mat-color-palette\n (colorChanged)=\"picker?.select($event)\"\n [color]=\"picker!._selected\"\n [theme]=\"color\"></ngx-mat-color-palette>\n", styles: ["@keyframes panelDropdownEnter{0%{opacity:0;transform:scaleY(.8)}to{opacity:1;transform:scale(1)}}@keyframes panelDialogEnter{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:none}}@keyframes panelLeave{0%{opacity:1}to{opacity:0}}.panel-enter-dropdown{animation:panelDropdownEnter .12s cubic-bezier(0,0,.2,1)}.panel-enter-dialog{animation:panelDialogEnter .15s cubic-bezier(0,0,.2,1)}.panel-leave{animation:panelLeave .1s linear forwards;pointer-events:none}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.calendar-fade-enter{animation:fadeIn .12s .1s cubic-bezier(.55,0,.55,.2) forwards}\n", ".ngx-mat-colorpicker-content{display:block;border-radius:4px;box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#fff;color:#000000de;padding:16px}.ngx-mat-colorpicker-content .ngx-mat-color-palette{width:296px;height:354px}.ngx-mat-colorpicker-content-touch{display:block;max-height:80vh;overflow:auto}.ngx-mat-colorpicker-content-touch .ngx-mat-color-palette{min-width:250px;min-height:312px;max-width:750px;max-height:788px}@media all and (orientation:landscape){.mat-colorpicker-content-touch .ngx-mat-color-palette{width:64vh;height:80vh}}@media all and (orientation:portrait){.mat-colorpicker-content-touch .ngx-mat-color-palette{width:80vw;height:100vw}}\n"] }]
649
+ }], propDecorators: { _palette: [{ type: i0.ViewChild, args: [i0.forwardRef(() => NgxMatColorPaletteComponent), { isSignal: true }] }], color: [{
650
+ type: Input
651
+ }], _animationDone: [{
659
652
  type: Output
660
653
  }], isEnterDropdown: [{
661
654
  type: HostBinding,
@@ -668,15 +661,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
668
661
  args: ['class.panel-leave']
669
662
  }] } });
670
663
  class NgxMatColorPickerComponent {
671
- _dialog;
672
- _overlay;
673
- _zone;
674
- _adapter;
675
- _dir;
676
- _document;
677
- _viewContainerRef;
678
664
  id = `ngx-mat-color-picker-${Math.floor(Math.random() * 1000000)}`;
679
- _scrollStrategy;
680
665
  /** Emits when the datepicker has been opened. */
681
666
  openedStream = new EventEmitter();
682
667
  /** Emits when the datepicker has been closed. */
@@ -706,7 +691,10 @@ class NgxMatColorPickerComponent {
706
691
  return this._opened;
707
692
  }
708
693
  set opened(value) {
709
- value ? this.open() : this.close();
694
+ if (value)
695
+ this.open();
696
+ else
697
+ this.close();
710
698
  }
711
699
  _opened = false;
712
700
  /** Default Color palette to use on the datepicker's calendar. */
@@ -761,16 +749,14 @@ class NgxMatColorPickerComponent {
761
749
  _selectedChanged = new Subject();
762
750
  /** Whether an animation is currently in progress. */
763
751
  _isAnimating = false;
764
- constructor(_dialog, _overlay, _zone, _adapter, _dir, scrollStrategy, _document, _viewContainerRef) {
765
- this._dialog = _dialog;
766
- this._overlay = _overlay;
767
- this._zone = _zone;
768
- this._adapter = _adapter;
769
- this._dir = _dir;
770
- this._document = _document;
771
- this._viewContainerRef = _viewContainerRef;
772
- this._scrollStrategy = scrollStrategy;
773
- }
752
+ _dialog = inject(MatDialog);
753
+ _overlay = inject(Overlay);
754
+ _zone = inject(NgZone);
755
+ _adapter = inject(ColorAdapter);
756
+ _dir = inject(Directionality, { optional: true });
757
+ _scrollStrategy = inject(NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY);
758
+ _document = inject(DOCUMENT, { optional: true });
759
+ _viewContainerRef = inject(ViewContainerRef);
774
760
  ngOnDestroy() {
775
761
  this.close();
776
762
  this._inputSubscription.unsubscribe();
@@ -782,7 +768,7 @@ class NgxMatColorPickerComponent {
782
768
  }
783
769
  /** Selects the given date */
784
770
  select(nextVal) {
785
- let oldValue = this._selected;
771
+ const oldValue = this._selected;
786
772
  this._selected = nextVal;
787
773
  if (!this._adapter.sameColor(oldValue, this._selected)) {
788
774
  this._selectedChanged.next(nextVal);
@@ -809,7 +795,10 @@ class NgxMatColorPickerComponent {
809
795
  if (this._document) {
810
796
  this._focusedElementBeforeOpen = this._document.activeElement;
811
797
  }
812
- this.touchUi ? this._openAsDialog() : this._openAsPopup();
798
+ if (this.touchUi)
799
+ this._openAsDialog();
800
+ else
801
+ this._openAsPopup();
813
802
  this._opened = true;
814
803
  this.openedStream.emit();
815
804
  }
@@ -864,7 +853,7 @@ class NgxMatColorPickerComponent {
864
853
  positionStrategy: this._createPopupPositionStrategy(),
865
854
  hasBackdrop: true,
866
855
  backdropClass: 'mat-overlay-transparent-backdrop',
867
- direction: this._dir,
856
+ direction: this._dir ?? "ltr",
868
857
  scrollStrategy: this._scrollStrategy(),
869
858
  panelClass: 'mat-colorpicker-popup',
870
859
  });
@@ -984,7 +973,7 @@ class NgxMatColorPickerComponent {
984
973
  },
985
974
  ]);
986
975
  }
987
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NgxMatColorPickerComponent, deps: [{ token: i1$2.MatDialog }, { token: i2$1.Overlay }, { token: i0.NgZone }, { token: ColorAdapter }, { token: i4.Directionality, optional: true }, { token: NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY }, { token: DOCUMENT, optional: true }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
976
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NgxMatColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
988
977
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: NgxMatColorPickerComponent, isStandalone: true, selector: "ngx-mat-color-picker", inputs: { id: "id", disabled: "disabled", touchUi: "touchUi", opened: "opened", defaultColor: "defaultColor", color: "color" }, outputs: { openedStream: "opened", closedStream: "closed" }, host: { properties: { "class.mat-primary": "this.isPrimary", "class.mat-accent": "this.isAccent", "class.mat-warn": "this.isWarn" } }, providers: [ColorAdapter, NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY_PROVIDER], exportAs: ["ngxMatColorPicker"], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
989
978
  }
990
979
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NgxMatColorPickerComponent, decorators: [{
@@ -997,17 +986,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
997
986
  encapsulation: ViewEncapsulation.None,
998
987
  providers: [ColorAdapter, NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY_PROVIDER],
999
988
  }]
1000
- }], ctorParameters: () => [{ type: i1$2.MatDialog }, { type: i2$1.Overlay }, { type: i0.NgZone }, { type: ColorAdapter }, { type: i4.Directionality, decorators: [{
1001
- type: Optional
1002
- }] }, { type: undefined, decorators: [{
1003
- type: Inject,
1004
- args: [NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY]
1005
- }] }, { type: undefined, decorators: [{
1006
- type: Optional
1007
- }, {
1008
- type: Inject,
1009
- args: [DOCUMENT]
1010
- }] }, { type: i0.ViewContainerRef }], propDecorators: { id: [{
989
+ }], propDecorators: { id: [{
1011
990
  type: Input
1012
991
  }], openedStream: [{
1013
992
  type: Output,
@@ -1062,10 +1041,6 @@ const MAT_COLORPICKER_VALIDATORS = {
1062
1041
  multi: true,
1063
1042
  };
1064
1043
  class NgxMatColorPickerInput {
1065
- _elementRef;
1066
- _formField;
1067
- _colorFormats;
1068
- _adapter;
1069
1044
  set ngxMatColorPicker(value) {
1070
1045
  if (!value) {
1071
1046
  return;
@@ -1123,19 +1098,25 @@ class NgxMatColorPickerInput {
1123
1098
  _disabledChange = new EventEmitter();
1124
1099
  /** Emits when the value changes (either due to user input or programmatic change). */
1125
1100
  _valueChange = new EventEmitter();
1126
- _onTouched = () => { };
1127
- _cvaOnChange = () => { };
1128
- _validatorOnChange = () => { };
1101
+ _onTouched = () => {
1102
+ // Intentionally empty.
1103
+ };
1104
+ _cvaOnChange = () => {
1105
+ // Intentionally empty.
1106
+ };
1107
+ _validatorOnChange = () => {
1108
+ // Intentionally empty.
1109
+ };
1129
1110
  _pickerSubscription = Subscription.EMPTY;
1130
1111
  /** The combined form control validator for this input. */
1131
1112
  _validator = Validators.compose([]);
1132
1113
  /** Whether the last value set on the input was valid. */
1133
1114
  _lastValueValid = false;
1134
- constructor(_elementRef, _formField, _colorFormats, _adapter) {
1135
- this._elementRef = _elementRef;
1136
- this._formField = _formField;
1137
- this._colorFormats = _colorFormats;
1138
- this._adapter = _adapter;
1115
+ _elementRef = inject((ElementRef));
1116
+ _formField = inject(MatFormField, { optional: true });
1117
+ _colorFormats = inject(MAT_COLOR_FORMATS, { optional: true });
1118
+ _adapter = inject(ColorAdapter);
1119
+ constructor() {
1139
1120
  if (!this._colorFormats) {
1140
1121
  throw createMissingDateImplError('MAT_COLOR_FORMATS');
1141
1122
  }
@@ -1164,7 +1145,6 @@ class NgxMatColorPickerInput {
1164
1145
  getConnectedOverlayOrigin() {
1165
1146
  return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;
1166
1147
  }
1167
- ngOnInit() { }
1168
1148
  ngOnDestroy() {
1169
1149
  this._pickerSubscription.unsubscribe();
1170
1150
  this._valueChange.complete();
@@ -1206,7 +1186,7 @@ class NgxMatColorPickerInput {
1206
1186
  }
1207
1187
  /** Formats a value and sets it on the input element. */
1208
1188
  _formatValue(value) {
1209
- this._elementRef.nativeElement.value = value
1189
+ this._elementRef.nativeElement.value = this._colorFormats && value
1210
1190
  ? this._adapter.format(value, this._colorFormats.display.colorInput)
1211
1191
  : '';
1212
1192
  }
@@ -1224,7 +1204,7 @@ class NgxMatColorPickerInput {
1224
1204
  this._validatorOnChange();
1225
1205
  }
1226
1206
  }
1227
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NgxMatColorPickerInput, deps: [{ token: i0.ElementRef }, { token: i1.MatFormField, optional: true }, { token: MAT_COLOR_FORMATS, optional: true }, { token: ColorAdapter }], target: i0.ɵɵFactoryTarget.Directive });
1207
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NgxMatColorPickerInput, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1228
1208
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: NgxMatColorPickerInput, isStandalone: true, selector: "input[ngxMatColorPicker]", inputs: { ngxMatColorPicker: "ngxMatColorPicker", disabled: "disabled", value: "value" }, outputs: { colorChange: "colorChange", colorInput: "colorInput" }, host: { listeners: { "input": "_onInput($event)", "change": "_onChange()", "blur": "_onBlur()", "keydown": "_onKeydown($event)" }, properties: { "attr.aria-haspopup": "_picker ? \"dialog\" : null", "attr.aria-owns": "(_picker?.opened && _picker?.id) || null", "disabled": "disabled" } }, providers: [
1229
1209
  { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: NgxMatColorPickerInput },
1230
1210
  ColorAdapter,
@@ -1253,14 +1233,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
1253
1233
  },
1254
1234
  exportAs: 'ngxMatColorPickerInput',
1255
1235
  }]
1256
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.MatFormField, decorators: [{
1257
- type: Optional
1258
- }] }, { type: undefined, decorators: [{
1259
- type: Optional
1260
- }, {
1261
- type: Inject,
1262
- args: [MAT_COLOR_FORMATS]
1263
- }] }, { type: ColorAdapter }], propDecorators: { ngxMatColorPicker: [{
1236
+ }], ctorParameters: () => [], propDecorators: { ngxMatColorPicker: [{
1264
1237
  type: Input
1265
1238
  }], disabled: [{
1266
1239
  type: Input
@@ -1279,7 +1252,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
1279
1252
  }]
1280
1253
  }] });
1281
1254
  class NgxMatColorToggleComponent {
1282
- _cd;
1283
1255
  _stateChanges = Subscription.EMPTY;
1284
1256
  picker = input(undefined, { ...(ngDevMode ? { debugName: "picker" } : /* istanbul ignore next */ {}), alias: 'for' });
1285
1257
  tabIndex = input(...(ngDevMode ? [undefined, { debugName: "tabIndex" }] : /* istanbul ignore next */ []));
@@ -1296,8 +1268,8 @@ class NgxMatColorToggleComponent {
1296
1268
  /** Whether ripples on the toggle should be disabled. */
1297
1269
  disableRipple = input(...(ngDevMode ? [undefined, { debugName: "disableRipple" }] : /* istanbul ignore next */ []));
1298
1270
  _button = viewChild('button', ...(ngDevMode ? [{ debugName: "_button" }] : /* istanbul ignore next */ []));
1299
- constructor(_cd) {
1300
- this._cd = _cd;
1271
+ _cd = inject(ChangeDetectorRef);
1272
+ constructor() {
1301
1273
  effect(() => {
1302
1274
  this.picker();
1303
1275
  untracked(() => this._watchStateChanges());
@@ -1324,8 +1296,8 @@ class NgxMatColorToggleComponent {
1324
1296
  this._stateChanges.unsubscribe();
1325
1297
  this._stateChanges = merge(disabled$, inputDisabled$, pickerToggled$).subscribe(() => this._cd.markForCheck());
1326
1298
  }
1327
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NgxMatColorToggleComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1328
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.6", type: NgxMatColorToggleComponent, isStandalone: true, selector: "ngx-mat-color-toggle", inputs: { picker: { classPropertyName: "picker", publicName: "for", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, disableRipple: { classPropertyName: "disableRipple", publicName: "disableRipple", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "focus": "_button()?.focus()" }, properties: { "attr.tabindex": "-1", "class.ngx-mat-color-toggle-active": "picker()?.opened", "class.mat-accent": "picker()?.color === \"accent\"", "class.mat-warn": "picker()?.color === \"warn\"" }, classAttribute: "ngx-mat-color-toggle" }, viewQueries: [{ propertyName: "_button", first: true, predicate: ["button"], descendants: true, isSignal: true }], exportAs: ["ngxMatColorPickerToggle"], ngImport: i0, template: "<button\n #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"picker() ? 'dialog' : null\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex()\"\n [disabled]=\"disabled\"\n (click)=\"open($event)\"\n [disableRipple]=\"disableRipple()\"\n>\n <ng-content select=\"[ngxMatColorpickerToggleIcon]\">\n <mat-icon [style.color]=\"picker()?._selected?.rgba\">palette</mat-icon>\n </ng-content>\n</button>\n", styles: [".mat-form-field-appearance .mat-form-field-prefix .ngx-mat-color-toggle-default-icon,.mat-form-field-appearance .mat-form-field-suffix .ngx-mat-color-toggle-default-icon{width:1em}.mat-form-field:not(.mat-form-field-appearance) .mat-form-field-prefix .ngx-mat-color-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance) .mat-form-field-suffix .ngx-mat-color-toggle-default-icon{display:block;width:1.5em;height:1.5em}.mat-form-field:not(.mat-form-field-appearance) .mat-form-field-prefix .mat-icon-button .ngx-mat-color-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance) .mat-form-field-suffix .mat-icon-button .ngx-mat-color-toggle-default-icon{margin:auto}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
1299
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NgxMatColorToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1300
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.6", type: NgxMatColorToggleComponent, isStandalone: true, selector: "ngx-mat-color-toggle", inputs: { picker: { classPropertyName: "picker", publicName: "for", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, disableRipple: { classPropertyName: "disableRipple", publicName: "disableRipple", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "focus": "_button()?.focus()" }, properties: { "attr.tabindex": "-1", "class.ngx-mat-color-toggle-active": "picker()?.opened", "class.mat-accent": "picker()?.color === \"accent\"", "class.mat-warn": "picker()?.color === \"warn\"" }, classAttribute: "ngx-mat-color-toggle" }, viewQueries: [{ propertyName: "_button", first: true, predicate: ["button"], descendants: true, isSignal: true }], exportAs: ["ngxMatColorPickerToggle"], ngImport: i0, template: "<button\n #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"picker() ? 'dialog' : null\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex()\"\n [disabled]=\"disabled\"\n (click)=\"open($event)\"\n [disableRipple]=\"disableRipple()\"\n>\n <ng-content select=\"[ngxMatColorpickerToggleIcon]\">\n <mat-icon [style.color]=\"picker()?._selected?.rgba\">palette</mat-icon>\n </ng-content>\n</button>\n", styles: [".mat-form-field-appearance .mat-form-field-prefix .ngx-mat-color-toggle-default-icon,.mat-form-field-appearance .mat-form-field-suffix .ngx-mat-color-toggle-default-icon{width:1em}.mat-form-field:not(.mat-form-field-appearance) .mat-form-field-prefix .ngx-mat-color-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance) .mat-form-field-suffix .ngx-mat-color-toggle-default-icon{display:block;width:1.5em;height:1.5em}.mat-form-field:not(.mat-form-field-appearance) .mat-form-field-prefix .mat-icon-button .ngx-mat-color-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance) .mat-form-field-suffix .mat-icon-button .ngx-mat-color-toggle-default-icon{margin:auto}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
1329
1301
  }
1330
1302
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NgxMatColorToggleComponent, decorators: [{
1331
1303
  type: Component,
@@ -1339,7 +1311,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
1339
1311
  '[class.mat-warn]': 'picker()?.color === "warn"',
1340
1312
  '(focus)': '_button()?.focus()',
1341
1313
  }, exportAs: 'ngxMatColorPickerToggle', encapsulation: ViewEncapsulation.None, imports: [MatButtonModule, MatIconModule], template: "<button\n #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"picker() ? 'dialog' : null\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex()\"\n [disabled]=\"disabled\"\n (click)=\"open($event)\"\n [disableRipple]=\"disableRipple()\"\n>\n <ng-content select=\"[ngxMatColorpickerToggleIcon]\">\n <mat-icon [style.color]=\"picker()?._selected?.rgba\">palette</mat-icon>\n </ng-content>\n</button>\n", styles: [".mat-form-field-appearance .mat-form-field-prefix .ngx-mat-color-toggle-default-icon,.mat-form-field-appearance .mat-form-field-suffix .ngx-mat-color-toggle-default-icon{width:1em}.mat-form-field:not(.mat-form-field-appearance) .mat-form-field-prefix .ngx-mat-color-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance) .mat-form-field-suffix .ngx-mat-color-toggle-default-icon{display:block;width:1.5em;height:1.5em}.mat-form-field:not(.mat-form-field-appearance) .mat-form-field-prefix .mat-icon-button .ngx-mat-color-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance) .mat-form-field-suffix .mat-icon-button .ngx-mat-color-toggle-default-icon{margin:auto}\n"] }]
1342
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { picker: [{ type: i0.Input, args: [{ isSignal: true, alias: "for", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], disabled: [{
1314
+ }], ctorParameters: () => [], propDecorators: { picker: [{ type: i0.Input, args: [{ isSignal: true, alias: "for", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], disabled: [{
1343
1315
  type: Input
1344
1316
  }], disableRipple: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableRipple", required: false }] }], _button: [{ type: i0.ViewChild, args: ['button', { isSignal: true }] }] } });
1345
1317
 
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-mce-color-picker.mjs","sources":["../../../projects/color-picker/src/lib/helpers/color-helpers.ts","../../../projects/color-picker/src/lib/models/color.model.ts","../../../projects/color-picker/src/lib/components/color-canvas/base-color-canvas.ts","../../../projects/color-picker/src/lib/components/color-canvas/color-slider/color-slider.component.ts","../../../projects/color-picker/src/lib/components/color-canvas/color-slider/color-slider.component.html","../../../projects/color-picker/src/lib/components/color-canvas/color-canvas.component.ts","../../../projects/color-picker/src/lib/components/color-canvas/color-canvas.component.html","../../../projects/color-picker/src/lib/components/color-collection/color-collection.component.ts","../../../projects/color-picker/src/lib/components/color-collection/color-collection.component.html","../../../projects/color-picker/src/lib/components/color-palette/color-palette.component.ts","../../../projects/color-picker/src/lib/components/color-palette/color-palette.component.html","../../../projects/color-picker/src/lib/services/color-adapter.ts","../../../projects/color-picker/src/lib/services/color-formats.ts","../../../projects/color-picker/src/lib/components/color-picker/color-picker.component.ts","../../../projects/color-picker/src/lib/components/color-picker/color-picker-content.component.html","../../../projects/color-picker/src/lib/components/color-picker/color-input.component.ts","../../../projects/color-picker/src/lib/components/color-toggle/color-toggle.component.ts","../../../projects/color-picker/src/lib/components/color-toggle/color-toggle.component.html","../../../projects/color-picker/src/lib/directives/numeric-color-input.directive.ts","../../../projects/color-picker/src/public-api.ts","../../../projects/color-picker/src/ngx-mce-color-picker.ts"],"sourcesContent":["const trimLeft = /^\\s+/;\nconst trimRight = /\\s+$/;\nconst tinyCounter = 0;\nconst mathRound = Math.round;\nconst mathMin = Math.min;\nconst mathMax = Math.max;\nconst mathRandom = Math.random;\n\nexport const NUMERIC_REGEX = /[^0-9]/g;\nexport const MAX_RGB = 255;\nexport const MIN_RGB = 0;\n\n/** List basic colors */\nexport const BASIC_COLORS = [\n '#ffffff',\n '#ffff00',\n '#ff00ff',\n '#ff0000',\n '#c0c0c0',\n '#808080',\n '#808000',\n '#800080',\n '#800000',\n '#00ffff',\n '#00ff00',\n '#008080',\n '#008000',\n '#0000ff',\n '#000080',\n '#000000',\n];\n\n/**\n * Get color at position\n * @param ctx\n * @param x\n * @param y\n */\nexport function getColorAtPosition(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n): { r: number; g: number; b: number } {\n const imageData: Uint8ClampedArray = ctx.getImageData(x, y, 1, 1).data;\n return { r: imageData[0], g: imageData[1], b: imageData[2] };\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nexport function rgbaToHex(\n r: number,\n g: number,\n b: number,\n a: number,\n allow4Char?: boolean,\n): string {\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16)),\n pad2(convertDecimalToHex(a.toString(16))),\n ];\n\n // Return a 4 character hex if possible\n if (\n allow4Char &&\n hex[0].charAt(0) == hex[0].charAt(1) &&\n hex[1].charAt(0) == hex[1].charAt(1) &&\n hex[2].charAt(0) == hex[2].charAt(1) &&\n hex[3].charAt(0) == hex[3].charAt(1)\n ) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n\n return hex.join('');\n}\n\n// Force a hex value to have 2 characters\nexport function pad2(c: string): string {\n return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Converts a decimal to a hex value\nexport function convertDecimalToHex(d: string) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h: string) {\n return parseIntFromHex(h) / 255;\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val: string) {\n return parseInt(val, 16);\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nexport function rgbToHex(r: number, g: number, b: number, allow3Char?: boolean) {\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16)),\n ];\n\n // Return a 3 character hex if possible\n if (\n allow3Char &&\n hex[0].charAt(0) == hex[0].charAt(1) &&\n hex[1].charAt(0) == hex[1].charAt(1) &&\n hex[2].charAt(0) == hex[2].charAt(1)\n ) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join('');\n}\n\n// Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening parent\nconst CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\nconst CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\nconst CSS_UNIT = '(?:' + CSS_NUMBER + ')|(?:' + CSS_INTEGER + ')';\nconst PERMISSIVE_MATCH3 =\n '[\\\\s|\\\\(]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')\\\\s*\\\\)?';\nconst PERMISSIVE_MATCH4 =\n '[\\\\s|\\\\(]+(' +\n CSS_UNIT +\n ')[,|\\\\s]+(' +\n CSS_UNIT +\n ')[,|\\\\s]+(' +\n CSS_UNIT +\n ')[,|\\\\s]+(' +\n CSS_UNIT +\n ')\\\\s*\\\\)?';\n\nexport const matchers = {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n};\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nexport function stringInputToObject(color: string): {\n r: number;\n g: number;\n b: number;\n a: number;\n} | null {\n color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase();\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n let match;\n let obj;\n if ((match = matchers.rgb.exec(color))) {\n return {\n r: parseFloat(match[1]),\n g: parseFloat(match[2]),\n b: parseFloat(match[3]),\n a: 1\n };\n }\n if ((match = matchers.rgba.exec(color))) {\n return {\n r: parseFloat(match[1]),\n g: parseFloat(match[2]),\n b: parseFloat(match[3]),\n a: parseFloat(match[4])\n };\n }\n\n if ((match = matchers.hex8.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: 1,\n };\n }\n if ((match = matchers.hex4.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n a: convertHexToDecimal(match[4] + '' + match[4]),\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n a: 1,\n };\n }\n\n return null;\n}\n\nexport function createMissingDateImplError(provider: string) {\n return Error(\n `NgxMatColorPicker: No provider found for ${provider}. You must define MAT_COLOR_FORMATS in your module`,\n );\n}\n","import { MAX_RGB, rgbaToHex, rgbToHex } from '../helpers';\nimport { ColorInputFormat } from './color-input-format';\n\nexport class Color {\n public r: number;\n public g: number;\n public b: number;\n public a: number;\n public roundA: number;\n\n public hex: string;\n public rgba: string;\n\n constructor(_r: number, _g: number, _b: number, _a?: number) {\n this.r = _r > MAX_RGB ? MAX_RGB : _r;\n this.g = _g > MAX_RGB ? MAX_RGB : _g;\n this.b = _b > MAX_RGB ? MAX_RGB : _b;\n if (_a != null) {\n this.a = _a > 1 ? 1 : _a;\n } else {\n this.a = 1;\n }\n this.roundA = Math.round(this.a);\n this.hex = rgbToHex(this.r, this.g, this.b);\n this.rgba = this.toRgba();\n }\n\n public toHex(allow3Char?: boolean): string {\n return rgbToHex(this.r, this.g, this.b, allow3Char);\n }\n\n public toRgba(): string {\n return `rgba(${this.r},${this.g},${this.b},${this.a})`;\n }\n\n public toHexString(allow3Char?: boolean): string {\n return '#' + this.toHex(allow3Char);\n }\n\n public toRgbString(): string {\n return this.a === 1\n ? 'rgb(' + Math.round(this.r) + ', ' + Math.round(this.g) + ', ' + Math.round(this.b) + ')'\n : 'rgba(' +\n Math.round(this.r) +\n ', ' +\n Math.round(this.g) +\n ', ' +\n Math.round(this.b) +\n ', ' +\n this.roundA +\n ')';\n }\n\n public toHex8(allow4Char?: boolean): string {\n return rgbaToHex(this.r, this.g, this.b, this.a, allow4Char);\n }\n\n public toHex8String(allow4Char?: boolean): string {\n return '#' + this.toHex8(allow4Char);\n }\n\n public toString(format: ColorInputFormat): string {\n let formatSet = !!format;\n\n let formattedString;\n let hasAlpha = this.a < 1 && this.a >= 0;\n let needsAlphaFormat =\n !formatSet &&\n hasAlpha &&\n (format === 'hex' ||\n format === 'hex6' ||\n format === 'hex3' ||\n format === 'hex4' ||\n format === 'hex8');\n\n if (needsAlphaFormat) {\n return this.toRgbString();\n }\n if (format === 'rgb') {\n formattedString = this.toRgbString();\n }\n if (format === 'hex' || format === 'hex6') {\n formattedString = this.toHexString();\n }\n if (format === 'hex3') {\n formattedString = this.toHexString(true);\n }\n if (format === 'hex4') {\n formattedString = this.toHex8String(true);\n }\n if (format === 'hex8') {\n formattedString = this.toHex8String();\n }\n\n return formattedString || this.toHexString();\n }\n}\n","import {\n AfterViewInit,\n Directive,\n Input,\n input,\n NgZone,\n OnDestroy,\n output,\n signal,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { Subject } from 'rxjs';\nimport { Color } from '../../models';\n\n@Directive()\nexport abstract class NgxMatBaseColorCanvas implements OnDestroy, AfterViewInit {\n readonly colorChanged = output<Color>();\n readonly theme = input<ThemePalette>();\n readonly color = signal<Color | undefined | null>(null);\n\n @Input({\n alias: 'color',\n })\n set setColor(color: Color | undefined | null) {\n this.color.set(color);\n }\n\n canvas: HTMLCanvasElement | null = null;\n\n elementId: string;\n\n ctx: CanvasRenderingContext2D | null = null;\n width: number = 0;\n height: number = 0;\n\n x: number = 0;\n y: number = 0;\n\n drag = false;\n\n protected _destroyed: Subject<void> = new Subject<void>();\n\n constructor(\n protected zone: NgZone,\n elementId: string,\n ) {\n this.elementId = elementId;\n }\n\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n ngAfterViewInit(): void {\n this.canvas = <HTMLCanvasElement>document.getElementById(this.elementId);\n this.ctx = this.canvas.getContext('2d');\n this.width = this.canvas.width;\n this.height = this.canvas.height;\n this.draw();\n }\n\n protected draw() {\n this.ctx?.clearRect(0, 0, this.width, this.height);\n this.ctx?.rect(0, 0, this.width, this.height);\n this.fillGradient();\n if (this.y != 0) {\n this.redrawIndicator(this.x, this.y);\n }\n }\n\n public onMousedown(e: MouseEvent) {\n this.drag = true;\n this.changeColor(e);\n\n this.zone.runOutsideAngular(() => {\n this.canvas?.addEventListener('mousemove', this.onMousemove.bind(this));\n });\n }\n\n public onMousemove(e: MouseEvent) {\n if (this.drag) {\n this.zone.run(() => {\n this.changeColor(e);\n });\n }\n }\n\n public onMouseup(e: MouseEvent) {\n this.drag = false;\n this.canvas?.removeEventListener('mousemove', this.onMousemove);\n }\n\n public emitChange(color: Color) {\n this.colorChanged.emit(color);\n }\n\n abstract changeColor(e: MouseEvent): void;\n abstract fillGradient(): void;\n abstract redrawIndicator(x: number, y: number): void;\n}\n","import { Component, NgZone } from '@angular/core';\nimport { getColorAtPosition } from '../../../helpers';\nimport { Color } from '../../../models';\nimport { NgxMatBaseColorCanvas } from '../base-color-canvas';\n\n@Component({\n selector: 'ngx-mat-color-slider',\n templateUrl: './color-slider.component.html',\n styleUrls: ['./color-slider.component.scss'],\n})\nexport class NgxMatColorSliderComponent extends NgxMatBaseColorCanvas {\n constructor(override zone: NgZone) {\n super(zone, 'color-strip');\n }\n\n override ngAfterViewInit(): void {\n super.ngAfterViewInit();\n }\n\n public fillGradient() {\n const grd = this.ctx?.createLinearGradient(0, 0, 0, this.height);\n grd?.addColorStop(0, 'rgba(255, 0, 0, 1)');\n grd?.addColorStop(0.17, 'rgba(255, 255, 0, 1)');\n grd?.addColorStop(0.34, 'rgba(0, 255, 0, 1)');\n grd?.addColorStop(0.51, 'rgba(0, 255, 255, 1)');\n grd?.addColorStop(0.68, 'rgba(0, 0, 255, 1)');\n grd?.addColorStop(0.85, 'rgba(255, 0, 255, 1)');\n grd?.addColorStop(1, 'rgba(255, 0, 0, 1)');\n\n this.ctx!.fillStyle = grd!;\n this.ctx?.fill();\n }\n\n public redrawIndicator(x: number, y: number) {\n this.ctx?.beginPath();\n this.ctx!.strokeStyle = 'white';\n this.ctx!.lineWidth = 2;\n this.ctx?.arc(7.5, y, 7.5, 0, 2 * Math.PI, false);\n this.ctx?.stroke();\n this.ctx?.closePath();\n }\n\n public changeColor(e: MouseEvent) {\n this.x = e.offsetX;\n this.y = e.offsetY;\n this.draw();\n const { r, g, b } = getColorAtPosition(this.ctx!, e.offsetX, e.offsetY);\n this.emitChange(new Color(r, g, b));\n }\n}\n","<canvas\n id=\"color-strip\"\n class=\"zone-strip\"\n (mousedown)=\"onMousedown($event)\"\n (mouseup)=\"onMouseup($event)\"\n width=\"15\"\n height=\"234\"\n></canvas>\n","import {\n AfterViewInit,\n Component,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { merge } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { getColorAtPosition, matchers, stringInputToObject } from '../../helpers';\nimport { Color } from '../../models';\nimport { NgxMatBaseColorCanvas } from './base-color-canvas';\nimport { NgxMatColorSliderComponent } from './color-slider/color-slider.component';\n\nconst RADIUS_NOB = 5;\n\n@Component({\n selector: 'ngx-mat-color-canvas',\n templateUrl: './color-canvas.component.html',\n styleUrls: ['./color-canvas.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ngx-mat-color-canvas',\n },\n imports: [MatFormFieldModule, MatInputModule, NgxMatColorSliderComponent, ReactiveFormsModule],\n})\nexport class NgxMatColorCanvasComponent\n extends NgxMatBaseColorCanvas\n implements OnInit, AfterViewInit, OnChanges, OnDestroy\n{\n private _baseColor: Color | null = null;\n\n get rCtrl(): AbstractControl | null {\n return this.formGroup.get('r');\n }\n\n get gCtrl(): AbstractControl | null {\n return this.formGroup.get('g');\n }\n\n get bCtrl(): AbstractControl | null {\n return this.formGroup.get('b');\n }\n\n get aCtrl(): AbstractControl | null {\n return this.formGroup.get('a');\n }\n\n get hexCtrl(): AbstractControl | null {\n return this.formGroup.get('hex');\n }\n\n _resetBaseColor = true;\n\n formGroup: FormGroup;\n\n rgba: string = \"\";\n\n constructor(override zone: NgZone) {\n super(zone, 'color-block');\n this.formGroup = new FormGroup({\n r: new FormControl(null, [Validators.required]),\n g: new FormControl(null, [Validators.required]),\n b: new FormControl(null, [Validators.required]),\n a: new FormControl(null, [Validators.required]),\n hex: new FormControl(null, [Validators.required, Validators.pattern(matchers.hex6)]),\n });\n }\n\n ngOnInit() {\n const rgbaCtrl$ = merge(\n this.rCtrl!.valueChanges,\n this.gCtrl!.valueChanges,\n this.bCtrl!.valueChanges,\n this.aCtrl!.valueChanges,\n );\n rgbaCtrl$.pipe(takeUntil(this._destroyed), debounceTime(400)).subscribe((_) => {\n const color = new Color(\n Number(this.rCtrl!.value),\n Number(this.gCtrl!.value),\n Number(this.bCtrl!.value),\n Number(this.aCtrl!.value),\n );\n this.emitChange(color);\n });\n\n const hexCtrl$ = this.hexCtrl!.valueChanges;\n hexCtrl$\n .pipe(takeUntil(this._destroyed), debounceTime(400), distinctUntilChanged())\n .subscribe((hex) => {\n const obj = stringInputToObject(hex);\n if (obj != null) {\n const color = new Color(obj.r, obj.g, obj.b, obj.a);\n this.emitChange(color);\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const key = \"setColor\";\n \n if (changes[key] && changes[key].currentValue) {\n this.updateForm(changes[key].currentValue);\n if (this._resetBaseColor) {\n this._baseColor = changes[key].currentValue;\n }\n\n this._resetBaseColor = true;\n\n if (!changes[key].firstChange) {\n this.draw();\n }\n }\n }\n\n private updateForm(val: Color): void {\n const config = { emitEvent: false };\n \n this.rCtrl?.setValue(val.r, config);\n this.gCtrl?.setValue(val.g, config);\n this.bCtrl?.setValue(val.b, config);\n this.aCtrl?.setValue(val.a, config);\n this.hexCtrl?.setValue(val.hex, config);\n }\n\n public redrawIndicator(x: number, y: number) {\n this.ctx?.beginPath();\n this.ctx!.strokeStyle = 'white';\n this.ctx?.arc(x, y, RADIUS_NOB, 0, 2 * Math.PI, false);\n this.ctx?.stroke();\n this.ctx?.closePath();\n }\n\n public fillGradient() {\n this.ctx!.fillStyle = this._baseColor ? this._baseColor.rgba : 'rgba(255,255,255,1)';\n this.ctx?.fillRect(0, 0, this.width, this.height);\n\n const grdWhite = this.ctx?.createLinearGradient(0, 0, this.width, 0);\n grdWhite?.addColorStop(0, 'rgba(255,255,255,1)');\n grdWhite?.addColorStop(1, 'rgba(255,255,255,0)');\n this.ctx!.fillStyle = grdWhite!;\n this.ctx?.fillRect(0, 0, this.width, this.height);\n\n const grdBlack = this.ctx?.createLinearGradient(0, 0, 0, this.height);\n grdBlack?.addColorStop(0, 'rgba(0,0,0,0)');\n grdBlack?.addColorStop(1, 'rgba(0,0,0,1)');\n this.ctx!.fillStyle = grdBlack!;\n this.ctx?.fillRect(0, 0, this.width, this.height);\n }\n\n public onSliderColorChanged(c: Color) {\n this._baseColor = c;\n this.color.set(c);\n this.fillGradient();\n this.emitChange(c);\n }\n\n public changeColor(e: MouseEvent): void {\n this.x = e.offsetX;\n this.y = e.offsetY;\n this._resetBaseColor = false;\n this.draw();\n const { r, g, b } = getColorAtPosition(this.ctx!, e.offsetX, e.offsetY);\n this.emitChange(new Color(r, g, b));\n }\n}\n","<form [formGroup]=\"formGroup\">\n <div class=\"color-canvas-row\">\n <div class=\"zone-canvas\">\n <canvas\n id=\"color-block\"\n class=\"zone-block\"\n (mousedown)=\"onMousedown($event)\"\n (mouseup)=\"onMouseup($event)\"\n width=\"200\"\n height=\"235\"\n ></canvas>\n <ngx-mat-color-slider (colorChanged)=\"onSliderColorChanged($event)\" />\n </div>\n\n <div class=\"zone-inputs\">\n <mat-form-field [color]=\"theme()\">\n <mat-label>R</mat-label>\n <input\n matInput\n formControlName=\"r\"\n ngxMatNumericColorInput\n autocomplete=\"off\"\n />\n </mat-form-field>\n\n <mat-form-field [color]=\"theme()\">\n <mat-label>G</mat-label>\n <input\n matInput\n formControlName=\"g\"\n ngxMatNumericColorInput\n autocomplete=\"off\"\n />\n </mat-form-field>\n\n <mat-form-field [color]=\"theme()\">\n <mat-label>B</mat-label>\n <input\n matInput\n formControlName=\"b\"\n ngxMatNumericColorInput\n autocomplete=\"off\"\n />\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"color-canvas-row\">\n <button\n mat-mini-fab\n [style.background-color]=\"color()?.rgba || 'transparent'\"\n class=\"preview\"\n ></button>\n <mat-form-field [color]=\"theme()\">\n <mat-label>HEX6</mat-label>\n <mat-label matPrefix class=\"symbol\">#&nbsp;</mat-label>\n <input matInput formControlName=\"hex\" autocomplete=\"off\" />\n </mat-form-field>\n <mat-form-field class=\"input-opacity\" [color]=\"theme()\">\n <mat-label>A</mat-label>\n <input\n matInput\n formControlName=\"a\"\n type=\"number\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n autocomplete=\"off\"\n />\n </mat-form-field>\n </div>\n</form>\n","import { NgClass } from '@angular/common';\nimport { Component, Input, output, signal, ViewEncapsulation } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { BASIC_COLORS, stringInputToObject } from '../../helpers';\nimport { Color } from '../../models';\n\n@Component({\n selector: 'ngx-mat-color-collection',\n templateUrl: './color-collection.component.html',\n styleUrls: ['./color-collection.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ngx-mat-color-collection',\n },\n imports: [MatButtonModule, NgClass],\n})\nexport class NgxMatColorCollectionComponent {\n readonly colorChanged = output<Color>();\n\n @Input()\n set color(c: Color | undefined | null) {\n if (c) {\n this.selectedColor.set(c.toHexString());\n }\n }\n\n readonly selectedColor = signal<string>('');\n\n colors1: string[] = BASIC_COLORS.slice(0, 8);\n colors2: string[] = BASIC_COLORS.slice(8, 16);\n\n select(hex: string) {\n this.selectedColor.set(hex);\n let rgba = stringInputToObject(hex);\n if (rgba != null) {\n this.colorChanged.emit(new Color(rgba.r, rgba.g, rgba.b, rgba.a));\n }\n }\n}\n","<div class=\"color-collection-row\">\n @for (c of colors1; track c) {\n <button\n mat-mini-fab\n [style.background-color]=\"c\"\n class=\"btn-color\"\n (click)=\"select(c)\"\n [ngClass]=\"{ active: selectedColor() === c }\"\n [disableRipple]=\"true\"></button>\n }\n</div>\n<div class=\"color-collection-row\">\n @for (c of colors2; track c) {\n <button\n mat-mini-fab\n [style.background-color]=\"c\"\n class=\"btn-color\"\n (click)=\"select(c)\"\n [ngClass]=\"{ active: selectedColor() === c }\"\n [disableRipple]=\"true\"></button>\n }\n</div>\n","import { Component, ViewEncapsulation, input, output } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { Color } from '../../models';\nimport { NgxMatColorCanvasComponent } from '../color-canvas/color-canvas.component';\nimport { NgxMatColorCollectionComponent } from '../color-collection/color-collection.component';\n\n@Component({\n selector: 'ngx-mat-color-palette',\n templateUrl: 'color-palette.component.html',\n styleUrls: ['color-palette.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ngx-mat-color-palette',\n },\n imports: [NgxMatColorCollectionComponent, NgxMatColorCanvasComponent],\n})\nexport class NgxMatColorPaletteComponent {\n readonly colorChanged = output<Color>();\n\n readonly color = input<Color | undefined | null>();\n readonly theme = input<ThemePalette>();\n\n public handleColorChanged(color: Color) {\n this.colorChanged.emit(color);\n }\n}\n","<ngx-mat-color-canvas\n (colorChanged)=\"handleColorChanged($event)\"\n [color]=\"color()\"\n [theme]=\"theme()\"\n/>\n\n<ngx-mat-color-collection\n (colorChanged)=\"handleColorChanged($event)\"\n [color]=\"color()\"\n/>\n","import { Injectable } from '@angular/core';\nimport { stringInputToObject } from '../helpers';\nimport { Color, ColorInputFormat } from '../models';\n\n@Injectable()\nexport class ColorAdapter {\n sameColor(a: Color, b: Color) {\n if (a == null && b == null) return true;\n if (a != null && b != null) return a.rgba === b.rgba;\n return false;\n }\n\n format(c: Color, format: ColorInputFormat): string {\n return c.toString(format);\n }\n\n parse(value: string): Color | null {\n const obj = stringInputToObject(value);\n if (obj) {\n return new Color(obj.r, obj.g, obj.b, obj.a);\n }\n return null;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ColorInputFormat } from '../models';\n\nexport type MatColorFormats = {\n display: {\n colorInput: ColorInputFormat;\n };\n};\n\nexport const NGX_MAT_COLOR_FORMATS: MatColorFormats = {\n display: {\n colorInput: 'hex',\n },\n};\n\nexport const MAT_COLOR_FORMATS = new InjectionToken<MatColorFormats>('mat-color-formats');\n","import { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n EventEmitter,\n HostBinding,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n ViewContainerRef,\n ViewEncapsulation,\n viewChild,\n DOCUMENT,\n ChangeDetectorRef,\n inject,\n OnInit,\n ElementRef,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { Color } from '../../models';\nimport { ColorAdapter } from '../../services';\nimport { NgxMatColorPaletteComponent } from '../color-palette/color-palette.component';\nimport { NgxMatColorPickerInput } from './color-input.component';\n\n/** Injection token that determines the scroll handling while the calendar is open. */\nexport const NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'ngx-mat-colorpicker-scroll-strategy',\n);\n\nexport function NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY(\n overlay: Overlay,\n): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\nexport const NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY,\n};\n\n@Component({\n selector: 'ngx-mat-color-picker-content',\n templateUrl: './color-picker-content.component.html',\n styleUrls: ['../../../../../shared/base-animations.scss', 'color-picker-content.component.scss'],\n host: {\n class: 'ngx-mat-colorpicker-content',\n '[class.ngx-mat-colorpicker-content-touch]': 'picker?.touchUi',\n '(animationend)': '_onAnimationEnd($event)',\n },\n exportAs: 'ngxMatColorPickerContent',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['color'],\n imports: [NgxMatColorPaletteComponent],\n})\nexport class NgxMatColorPickerContentComponent implements OnInit {\n /** Reference to the internal calendar component. */\n _palette = viewChild(NgxMatColorPaletteComponent);\n\n picker: NgxMatColorPickerComponent | null = null;\n color: ThemePalette;\n\n _isLeaving = false;\n _panelEnterClass: 'enter-dropdown' | 'enter-dialog' | null = null;\n\n @Output() readonly _animationDone = new Subject<void>();\n\n private _cdr = inject(ChangeDetectorRef);\n\n @HostBinding('class.panel-enter-dropdown')\n get isEnterDropdown() {\n return !this._isLeaving && this._panelEnterClass === 'enter-dropdown';\n }\n\n @HostBinding('class.panel-enter-dialog')\n get isEnterDialog() {\n return !this._isLeaving && this._panelEnterClass === 'enter-dialog';\n }\n\n @HostBinding('class.panel-leave')\n get isLeaving() {\n return this._isLeaving;\n }\n\n ngOnInit(): void {\n this._panelEnterClass = this.picker?.touchUi ? 'enter-dialog' : 'enter-dropdown';\n this._cdr.markForCheck(); // ensure initial class is applied\n }\n\n _startExitAnimation() {\n this._isLeaving = true;\n this._cdr.markForCheck(); // trigger class update\n }\n\n _onAnimationEnd(event: AnimationEvent) {\n if (event.animationName === 'panelLeave') {\n this._animationDone.next();\n }\n }\n}\n\n@Component({\n selector: 'ngx-mat-color-picker',\n template: '',\n exportAs: 'ngxMatColorPicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [ColorAdapter, NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY_PROVIDER],\n})\nexport class NgxMatColorPickerComponent implements OnDestroy {\n @Input() id: string = `ngx-mat-color-picker-${Math.floor(Math.random() * 1000000)}`;\n\n private _scrollStrategy: () => ScrollStrategy;\n\n /** Emits when the datepicker has been opened. */\n @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits when the datepicker has been closed. */\n @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n @Input() get disabled() {\n return this._disabled === undefined && this._pickerInput\n ? this._pickerInput.disabled\n : !!this._disabled;\n }\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this._disabledChange.next(newValue);\n }\n }\n private _disabled: boolean = false;\n\n @Input()\n get touchUi(): boolean {\n return this._touchUi;\n }\n set touchUi(value: boolean) {\n this._touchUi = coerceBooleanProperty(value);\n }\n private _touchUi = false;\n\n /** Whether the calendar is open. */\n @Input()\n get opened(): boolean {\n return this._opened;\n }\n set opened(value: boolean) {\n value ? this.open() : this.close();\n }\n private _opened = false;\n\n /** Default Color palette to use on the datepicker's calendar. */\n @Input()\n get defaultColor(): ThemePalette {\n return this._defaultColor;\n }\n set defaultColor(value: ThemePalette) {\n this._defaultColor = value;\n }\n _defaultColor: ThemePalette = 'primary';\n\n /** Color palette to use on the datepicker's calendar. */\n @Input()\n get color(): ThemePalette {\n return this._color || (this._pickerInput ? this._pickerInput.getThemePalette() : undefined);\n }\n set color(value: ThemePalette) {\n this._color = value;\n }\n _color: ThemePalette;\n\n @HostBinding('class.mat-primary') get isPrimary() {\n return this.color === 'primary';\n }\n @HostBinding('class.mat-accent') get isAccent() {\n return this.color === 'accent';\n }\n @HostBinding('class.mat-warn') get isWarn() {\n return this.color === 'warn';\n }\n\n /** The currently selected date. */\n get _selected(): Color | null {\n return this._validSelected;\n }\n set _selected(value: Color) {\n this._validSelected = value;\n }\n private _validSelected: Color | null = null;\n\n _pickerInput: NgxMatColorPickerInput | null = null;\n /** A reference to the overlay when the picker is opened as a popup. */\n _popupRef: OverlayRef | null = null;\n\n /** A reference to the dialog when the picker is opened as a dialog. */\n private _dialogRef: MatDialogRef<NgxMatColorPickerContentComponent> | null = null;\n /** Reference to the component instantiated in popup mode. */\n private _popupComponentRef: ComponentRef<NgxMatColorPickerContentComponent> | undefined | null = null;\n /** A portal containing the content for this picker. */\n private _portal: ComponentPortal<NgxMatColorPickerContentComponent> | null = null;\n\n /** Emits when the datepicker is disabled. */\n readonly _disabledChange = new EventEmitter<boolean>();\n\n /** The element that was focused before the datepicker was opened. */\n private _focusedElementBeforeOpen: HTMLElement | null = null;\n\n /** Subscription to value changes in the associated input element. */\n private _inputSubscription = Subscription.EMPTY;\n\n /** Emits new selected date when selected date changes. */\n readonly _selectedChanged = new Subject<Color>();\n\n /** Whether an animation is currently in progress. */\n private _isAnimating = false;\n\n constructor(\n private _dialog: MatDialog,\n private _overlay: Overlay,\n private _zone: NgZone,\n private _adapter: ColorAdapter,\n @Optional() private _dir: Directionality,\n @Inject(NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() @Inject(DOCUMENT) private _document: any,\n private _viewContainerRef: ViewContainerRef,\n ) {\n this._scrollStrategy = scrollStrategy;\n }\n\n ngOnDestroy() {\n this.close();\n this._inputSubscription.unsubscribe();\n this._disabledChange.complete();\n\n if (this._popupRef) {\n this._popupRef.dispose();\n this._popupComponentRef = null;\n }\n }\n\n /** Selects the given date */\n select(nextVal: Color): void {\n let oldValue = this._selected;\n this._selected = nextVal;\n if (!this._adapter.sameColor(oldValue!, this._selected)) {\n this._selectedChanged.next(nextVal);\n }\n }\n\n /**\n * Register an input with this datepicker.\n * @param input The datepicker input to register with this datepicker.\n */\n registerInput(input: NgxMatColorPickerInput): void {\n if (this._pickerInput) {\n throw Error('A ColorPicker can only be associated with a single input.');\n }\n this._pickerInput = input;\n this._inputSubscription = this._pickerInput._valueChange.subscribe(\n (value: Color) => (this._selected = value),\n );\n }\n\n public open(): void {\n if (this._opened || this.disabled || this._isAnimating) {\n return;\n }\n if (!this._pickerInput) {\n throw Error('Attempted to open an ColorPicker with no associated input.');\n }\n\n if (this._document) {\n this._focusedElementBeforeOpen = this._document.activeElement;\n }\n\n this.touchUi ? this._openAsDialog() : this._openAsPopup();\n this._opened = true;\n this.openedStream.emit();\n }\n\n /** Open the calendar as a dialog. */\n private _openAsDialog(): void {\n if (this._dialogRef) {\n this._dialogRef.close();\n }\n\n this._dialogRef = this._dialog.open<NgxMatColorPickerContentComponent>(\n NgxMatColorPickerContentComponent,\n {\n direction: this._dir ? this._dir.value : 'ltr',\n viewContainerRef: this._viewContainerRef,\n panelClass: 'ngx-mat-colorpicker-dialog',\n },\n );\n\n this._dialogRef.afterClosed().subscribe(() => this._handleDialogClosed());\n this._dialogRef.componentInstance.picker = this;\n this._setColor();\n }\n\n private _handleDialogClosed(): void {\n this._opened = false;\n this._isAnimating = false;\n this.closedStream.emit();\n if (this._focusedElementBeforeOpen) {\n this._focusedElementBeforeOpen.focus();\n this._focusedElementBeforeOpen = null;\n }\n this._dialogRef = null;\n }\n\n /** Open the calendar as a popup. */\n private _openAsPopup(): void {\n if (!this._portal) {\n this._portal = new ComponentPortal<NgxMatColorPickerContentComponent>(\n NgxMatColorPickerContentComponent,\n this._viewContainerRef,\n );\n }\n\n if (!this._popupRef) {\n this._createPopup();\n }\n\n if (!this._popupRef?.hasAttached()) {\n this._popupComponentRef = this._popupRef?.attach(this._portal);\n this._popupComponentRef!.instance.picker = this;\n this._setColor();\n\n // Update the position once the calendar has rendered.\n this._zone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this._popupRef?.updatePosition();\n });\n }\n }\n\n /** Create the popup. */\n private _createPopup(): void {\n const overlayConfig = new OverlayConfig({\n positionStrategy: this._createPopupPositionStrategy(),\n hasBackdrop: true,\n backdropClass: 'mat-overlay-transparent-backdrop',\n direction: this._dir,\n scrollStrategy: this._scrollStrategy(),\n panelClass: 'mat-colorpicker-popup',\n });\n\n this._popupRef = this._overlay.create(overlayConfig);\n this._popupRef.overlayElement.setAttribute('role', 'dialog');\n\n merge(\n this._popupRef.backdropClick(),\n this._popupRef.detachments(),\n this._popupRef.keydownEvents().pipe(\n filter((event) => {\n // Closing on alt + up is only valid when there's an input associated with the datepicker.\n return (\n event.keyCode === ESCAPE ||\n (this._pickerInput! && event.altKey && event.keyCode === UP_ARROW)\n );\n }),\n ),\n ).subscribe((event) => {\n if (event) {\n event.preventDefault();\n }\n\n this.close();\n });\n }\n\n close(): void {\n if (!this._opened || this._isAnimating) {\n return;\n }\n\n if (this.touchUi) {\n // Dialog mode – close the dialog, state reset happens in afterClosed\n if (this._dialogRef) {\n this._dialogRef.close();\n }\n } else {\n // Popup mode – animate out then clean up\n let contentInstance: NgxMatColorPickerContentComponent | null = null;\n if (this._popupComponentRef) {\n contentInstance = this._popupComponentRef.instance;\n }\n\n const canRestoreFocus =\n this._focusedElementBeforeOpen &&\n typeof this._focusedElementBeforeOpen.focus === 'function';\n\n const completeClose = () => {\n if (this._popupRef && this._popupRef.hasAttached()) {\n this._popupRef.detach();\n }\n if (this._portal && this._portal.isAttached) {\n this._portal.detach();\n }\n this._opened = false;\n this._isAnimating = false;\n this.closedStream.emit();\n if (canRestoreFocus) {\n this._focusedElementBeforeOpen!.focus();\n }\n this._focusedElementBeforeOpen = null;\n };\n\n if (contentInstance) {\n this._isAnimating = true;\n contentInstance._startExitAnimation();\n\n contentInstance._animationDone.pipe(take(1)).subscribe(() => {\n // Restore focus before the timeout to ensure it happens even if the\n // overlay is removed synchronously.\n if (canRestoreFocus) {\n this._focusedElementBeforeOpen!.focus();\n }\n setTimeout(completeClose);\n });\n } else {\n // No content to animate – close immediately\n if (canRestoreFocus) {\n this._focusedElementBeforeOpen!.focus();\n setTimeout(completeClose);\n } else {\n completeClose();\n }\n }\n }\n }\n\n /** Passes the current theme color along to the calendar overlay. */\n private _setColor(): void {\n const color = this.color;\n if (this._popupComponentRef) {\n this._popupComponentRef.instance.color = color;\n }\n if (this._dialogRef) {\n this._dialogRef.componentInstance.color = color;\n }\n }\n\n /** Create the popup PositionStrategy. */\n private _createPopupPositionStrategy(): PositionStrategy {\n return this._overlay\n .position()\n .flexibleConnectedTo(this._pickerInput!.getConnectedOverlayOrigin())\n .withTransformOriginOn('.ngx-mat-colorpicker-content')\n .withFlexibleDimensions(false)\n .withViewportMargin(8)\n .withLockedPosition()\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n ]);\n }\n}\n","<ngx-mat-color-palette\n (colorChanged)=\"picker?.select($event)\"\n [color]=\"picker!._selected\"\n [theme]=\"color\"></ngx-mat-color-palette>\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n output,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\nimport { Subscription } from 'rxjs';\nimport { createMissingDateImplError } from '../../helpers';\nimport { Color } from '../../models';\nimport { ColorAdapter, MAT_COLOR_FORMATS, MatColorFormats } from '../../services';\nimport { NgxMatColorPickerComponent } from './color-picker.component';\n\nexport class NgxMatColorPickerInputEvent {\n /** The new value for the target colorpicker input. */\n value: Color | null;\n\n constructor(\n /** Reference to the colorpicker input component that emitted the event. */\n public target: NgxMatColorPickerInput,\n /** Reference to the native input element associated with the colorpicker input. */\n public targetElement: HTMLElement,\n ) {\n this.value = this.target.value;\n }\n}\n\nexport const MAT_COLORPICKER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgxMatColorPickerInput),\n multi: true,\n};\n\nexport const MAT_COLORPICKER_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => NgxMatColorPickerInput),\n multi: true,\n};\n\n@Directive({\n selector: 'input[ngxMatColorPicker]',\n providers: [\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: NgxMatColorPickerInput },\n ColorAdapter,\n MAT_COLORPICKER_VALIDATORS,\n MAT_COLORPICKER_VALUE_ACCESSOR,\n ],\n host: {\n '[attr.aria-haspopup]': '_picker ? \"dialog\" : null',\n '[attr.aria-owns]': '(_picker?.opened && _picker?.id) || null',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event)',\n '(change)': '_onChange()',\n '(blur)': '_onBlur()',\n '(keydown)': '_onKeydown($event)',\n },\n exportAs: 'ngxMatColorPickerInput',\n})\nexport class NgxMatColorPickerInput implements ControlValueAccessor, OnInit, OnDestroy, Validator {\n @Input()\n set ngxMatColorPicker(value: NgxMatColorPickerComponent) {\n if (!value) {\n return;\n }\n\n this._picker = value;\n this._picker.registerInput(this);\n this._pickerSubscription.unsubscribe();\n\n this._pickerSubscription = this._picker._selectedChanged.subscribe((selected: Color) => {\n this.value = selected;\n this._cvaOnChange(selected);\n this._onTouched();\n this.colorInput.emit(new NgxMatColorPickerInputEvent(this, this._elementRef.nativeElement));\n this.colorChange.emit(new NgxMatColorPickerInputEvent(this, this._elementRef.nativeElement));\n });\n }\n _picker: NgxMatColorPickerComponent | null = null;\n\n /** Whether the colorpicker-input is disabled. */\n @Input()\n get disabled(): boolean {\n return !!this._disabled;\n }\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n const element = this._elementRef.nativeElement;\n\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this._disabledChange.emit(newValue);\n }\n\n // We need to null check the `blur` method, because it's undefined during SSR.\n if (newValue && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n private _disabled: boolean = false;\n\n /** The value of the input. */\n @Input()\n get value(): Color | null {\n return this._value;\n }\n set value(value: Color | null) {\n const oldValue = this.value;\n this._value = value;\n this._formatValue(value);\n\n if (!this._adapter.sameColor(oldValue!, value!)) {\n this._valueChange.emit(value);\n }\n }\n private _value: Color | null = null;\n\n /** Emits when a `change` event is fired on this `<input>`. */\n readonly colorChange = output<NgxMatColorPickerInputEvent>();\n\n /** Emits when an `input` event is fired on this `<input>`. */\n readonly colorInput = output<NgxMatColorPickerInputEvent>();\n\n /** Emits when the disabled state has changed */\n _disabledChange = new EventEmitter<boolean>();\n\n /** Emits when the value changes (either due to user input or programmatic change). */\n _valueChange = new EventEmitter<Color | null>();\n\n _onTouched = () => {};\n\n private _cvaOnChange: (value: any) => void = () => {};\n\n private _validatorOnChange = () => {};\n\n private _pickerSubscription = Subscription.EMPTY;\n\n /** The combined form control validator for this input. */\n private _validator: ValidatorFn | null = Validators.compose([]);\n\n /** Whether the last value set on the input was valid. */\n private _lastValueValid = false;\n\n constructor(\n private _elementRef: ElementRef<HTMLInputElement>,\n @Optional() private _formField: MatFormField,\n @Optional()\n @Inject(MAT_COLOR_FORMATS)\n private _colorFormats: MatColorFormats,\n private _adapter: ColorAdapter,\n ) {\n if (!this._colorFormats) {\n throw createMissingDateImplError('MAT_COLOR_FORMATS');\n }\n }\n\n /** Returns the palette used by the input's form field, if any. */\n public getThemePalette(): ThemePalette {\n return this._formField ? this._formField.color : undefined;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n return this._validator ? this._validator(c) : null;\n }\n\n /**\n * @deprecated\n * @breaking-change 8.0.0 Use `getConnectedOverlayOrigin` instead\n */\n getPopupConnectionElementRef(): ElementRef {\n return this.getConnectedOverlayOrigin();\n }\n\n /**\n * Gets the element that the colorpicker popup should be connected to.\n * @return The element to connect the popup to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n }\n\n ngOnInit() {}\n\n ngOnDestroy(): void {\n this._pickerSubscription.unsubscribe();\n this._valueChange.complete();\n this._disabledChange.complete();\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: Color): void {\n this.value = value;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void): void {\n this._cvaOnChange = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n _onChange() {\n this.colorChange.emit(new NgxMatColorPickerInputEvent(this, this._elementRef.nativeElement));\n }\n\n _onKeydown(event: KeyboardEvent) {\n const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;\n\n if (this._picker && isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\n this._picker.open();\n event.preventDefault();\n }\n }\n\n /** Handles blur events on the input. */\n _onBlur() {\n // Reformat the input only if we have a valid value.\n if (this.value) {\n this._formatValue(this.value);\n }\n\n this._onTouched();\n }\n\n /** Formats a value and sets it on the input element. */\n private _formatValue(value: Color | null) {\n this._elementRef.nativeElement.value = value\n ? this._adapter.format(value, this._colorFormats.display.colorInput)\n : '';\n }\n\n _onInput(event?: Event) {\n const lastValueWasValid = this._lastValueValid;\n const target = event?.target as HTMLInputElement;\n const nextValue = this._adapter.parse(target.value);\n\n if (!this._adapter.sameColor(nextValue!, this._value!)) {\n this._value = nextValue;\n this._cvaOnChange(nextValue);\n this._valueChange.emit(nextValue);\n this.colorInput.emit(new NgxMatColorPickerInputEvent(this, this._elementRef.nativeElement));\n } else if (lastValueWasValid !== this._lastValueValid) {\n this._validatorOnChange();\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n Directive,\n EventEmitter,\n Input,\n OnDestroy,\n ViewEncapsulation,\n effect,\n input,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { MatButton, MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Subscription, merge, of } from 'rxjs';\nimport { NgxMatColorPickerComponent } from '../color-picker/color-picker.component';\n\n@Directive({\n selector: '[ngxMatColorpickerToggleIcon]',\n})\nexport class NgxMatColorpickerToggleIcon {}\n\n@Component({\n selector: 'ngx-mat-color-toggle',\n templateUrl: './color-toggle.component.html',\n styleUrls: ['./color-toggle.component.scss'],\n host: {\n class: 'ngx-mat-color-toggle',\n // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the\n // consumer may have provided, while still being able to receive focus.\n '[attr.tabindex]': '-1',\n '[class.ngx-mat-color-toggle-active]': 'picker()?.opened',\n '[class.mat-accent]': 'picker()?.color === \"accent\"',\n '[class.mat-warn]': 'picker()?.color === \"warn\"',\n '(focus)': '_button()?.focus()',\n },\n exportAs: 'ngxMatColorPickerToggle',\n encapsulation: ViewEncapsulation.None,\n imports: [MatButtonModule, MatIconModule],\n})\nexport class NgxMatColorToggleComponent implements AfterContentInit, OnDestroy {\n private _stateChanges = Subscription.EMPTY;\n\n picker = input<NgxMatColorPickerComponent>(undefined, { alias: 'for' });\n tabIndex = input<number>();\n\n @Input() get disabled(): boolean | undefined { \n if (this._disabled == null && this.picker()) {\n return this.picker()?.disabled;\n }\n return undefined;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n private _disabled: boolean = false;\n\n /** Whether ripples on the toggle should be disabled. */\n disableRipple = input<boolean>();\n\n _button = viewChild<MatButton>('button');\n\n constructor(private _cd: ChangeDetectorRef) {\n effect(() => {\n this.picker();\n\n untracked(() => this._watchStateChanges());\n });\n }\n\n ngOnDestroy() {\n this._stateChanges.unsubscribe();\n }\n\n ngAfterContentInit() {\n this._watchStateChanges();\n }\n\n public open(event: Event): void {\n if (this.picker() && !this.disabled) {\n this.picker()?.open();\n event.stopPropagation();\n }\n }\n\n private _watchStateChanges() {\n const disabled$ = this.picker()?._disabledChange ?? new EventEmitter();\n const inputDisabled$ = this.picker()?._pickerInput?._disabledChange ?? new EventEmitter();\n\n const pickerToggled$ = this.picker()\n ? merge(this.picker()!.openedStream, this.picker()!.closedStream)\n : of();\n this._stateChanges.unsubscribe();\n\n this._stateChanges = merge(disabled$, inputDisabled$, pickerToggled$).subscribe(() =>\n this._cd.markForCheck(),\n );\n }\n}\n","<button\n #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"picker() ? 'dialog' : null\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex()\"\n [disabled]=\"disabled\"\n (click)=\"open($event)\"\n [disableRipple]=\"disableRipple()\"\n>\n <ng-content select=\"[ngxMatColorpickerToggleIcon]\">\n <mat-icon [style.color]=\"picker()?._selected?.rgba\">palette</mat-icon>\n </ng-content>\n</button>\n","import { Directive, HostListener } from '@angular/core';\nimport { NUMERIC_REGEX } from '../helpers';\n\n@Directive({\n selector: '[ngxMatNumericColorInput]',\n})\nexport class NumericColorInputDirective {\n @HostListener('input', ['$event'])\n onInput($event: any) {\n this._formatInput($event.target);\n }\n\n /**\n * Format input\n * @param input\n */\n private _formatInput(input: any) {\n let val = Number(input.value.replace(NUMERIC_REGEX, ''));\n val = isNaN(val) ? 0 : val;\n input.value = val;\n }\n}\n","/*\n * Public API Surface of color-picker\n */\nexport * from './lib/components';\nexport * from './lib/directives';\nexport * from './lib/helpers';\nexport * from './lib/models';\nexport * from './lib/services';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.ColorAdapter","i2.ColorAdapter"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-mce-color-picker.mjs","sources":["../../../projects/color-picker/src/lib/helpers/color-helpers.ts","../../../projects/color-picker/src/lib/models/color.model.ts","../../../projects/color-picker/src/lib/components/color-canvas/base-color-canvas.ts","../../../projects/color-picker/src/lib/components/color-canvas/color-slider/color-slider.component.ts","../../../projects/color-picker/src/lib/components/color-canvas/color-slider/color-slider.component.html","../../../projects/color-picker/src/lib/components/color-canvas/color-canvas.component.ts","../../../projects/color-picker/src/lib/components/color-canvas/color-canvas.component.html","../../../projects/color-picker/src/lib/components/color-collection/color-collection.component.ts","../../../projects/color-picker/src/lib/components/color-collection/color-collection.component.html","../../../projects/color-picker/src/lib/components/color-palette/color-palette.component.ts","../../../projects/color-picker/src/lib/components/color-palette/color-palette.component.html","../../../projects/color-picker/src/lib/services/color-adapter.ts","../../../projects/color-picker/src/lib/services/color-formats.ts","../../../projects/color-picker/src/lib/components/color-picker/color-picker.component.ts","../../../projects/color-picker/src/lib/components/color-picker/color-picker-content.component.html","../../../projects/color-picker/src/lib/components/color-picker/color-input.component.ts","../../../projects/color-picker/src/lib/components/color-toggle/color-toggle.component.ts","../../../projects/color-picker/src/lib/components/color-toggle/color-toggle.component.html","../../../projects/color-picker/src/lib/directives/numeric-color-input.directive.ts","../../../projects/color-picker/src/public-api.ts","../../../projects/color-picker/src/ngx-mce-color-picker.ts"],"sourcesContent":["const trimLeft = /^\\s+/;\nconst trimRight = /\\s+$/;\nconst mathRound = Math.round;\n\nexport const NUMERIC_REGEX = /[^0-9]/g;\nexport const MAX_RGB = 255;\nexport const MIN_RGB = 0;\n\n/** List basic colors */\nexport const BASIC_COLORS = [\n '#ffffff',\n '#ffff00',\n '#ff00ff',\n '#ff0000',\n '#c0c0c0',\n '#808080',\n '#808000',\n '#800080',\n '#800000',\n '#00ffff',\n '#00ff00',\n '#008080',\n '#008000',\n '#0000ff',\n '#000080',\n '#000000',\n];\n\n/**\n * Get color at position\n * @param ctx\n * @param x\n * @param y\n */\nexport function getColorAtPosition(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n): { r: number; g: number; b: number } {\n const imageData: Uint8ClampedArray = ctx.getImageData(x, y, 1, 1).data;\n return { r: imageData[0], g: imageData[1], b: imageData[2] };\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nexport function rgbaToHex(\n r: number,\n g: number,\n b: number,\n a: number,\n allow4Char?: boolean,\n): string {\n const hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16)),\n pad2(convertDecimalToHex(a.toString(16))),\n ];\n\n // Return a 4 character hex if possible\n if (\n allow4Char &&\n hex[0].charAt(0) == hex[0].charAt(1) &&\n hex[1].charAt(0) == hex[1].charAt(1) &&\n hex[2].charAt(0) == hex[2].charAt(1) &&\n hex[3].charAt(0) == hex[3].charAt(1)\n ) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n\n return hex.join('');\n}\n\n// Force a hex value to have 2 characters\nexport function pad2(c: string): string {\n return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Converts a decimal to a hex value\nexport function convertDecimalToHex(d: string) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h: string) {\n return parseIntFromHex(h) / 255;\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val: string) {\n return parseInt(val, 16);\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nexport function rgbToHex(r: number, g: number, b: number, allow3Char?: boolean) {\n const hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16)),\n ];\n\n // Return a 3 character hex if possible\n if (\n allow3Char &&\n hex[0].charAt(0) == hex[0].charAt(1) &&\n hex[1].charAt(0) == hex[1].charAt(1) &&\n hex[2].charAt(0) == hex[2].charAt(1)\n ) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join('');\n}\n\n// Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening parent\nconst CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\nconst CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\nconst CSS_UNIT = '(?:' + CSS_NUMBER + ')|(?:' + CSS_INTEGER + ')';\nconst PERMISSIVE_MATCH3 =\n '[\\\\s|\\\\(]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')\\\\s*\\\\)?';\nconst PERMISSIVE_MATCH4 =\n '[\\\\s|\\\\(]+(' +\n CSS_UNIT +\n ')[,|\\\\s]+(' +\n CSS_UNIT +\n ')[,|\\\\s]+(' +\n CSS_UNIT +\n ')[,|\\\\s]+(' +\n CSS_UNIT +\n ')\\\\s*\\\\)?';\n\nexport const matchers = {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n};\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nexport function stringInputToObject(color: string): {\n r: number;\n g: number;\n b: number;\n a: number;\n} | null {\n color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase();\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n let match;\n if ((match = matchers.rgb.exec(color))) {\n return {\n r: parseFloat(match[1]),\n g: parseFloat(match[2]),\n b: parseFloat(match[3]),\n a: 1\n };\n }\n if ((match = matchers.rgba.exec(color))) {\n return {\n r: parseFloat(match[1]),\n g: parseFloat(match[2]),\n b: parseFloat(match[3]),\n a: parseFloat(match[4])\n };\n }\n\n if ((match = matchers.hex8.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: 1,\n };\n }\n if ((match = matchers.hex4.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n a: convertHexToDecimal(match[4] + '' + match[4]),\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n a: 1,\n };\n }\n\n return null;\n}\n\nexport function createMissingDateImplError(provider: string) {\n return Error(\n `NgxMatColorPicker: No provider found for ${provider}. You must define MAT_COLOR_FORMATS in your module`,\n );\n}\n","import { MAX_RGB, rgbaToHex, rgbToHex } from '../helpers';\nimport { ColorInputFormat } from './color-input-format';\n\nexport class Color {\n public r: number;\n public g: number;\n public b: number;\n public a: number;\n public roundA: number;\n\n public hex: string;\n public rgba: string;\n\n constructor(_r: number, _g: number, _b: number, _a?: number) {\n this.r = _r > MAX_RGB ? MAX_RGB : _r;\n this.g = _g > MAX_RGB ? MAX_RGB : _g;\n this.b = _b > MAX_RGB ? MAX_RGB : _b;\n if (_a != null) {\n this.a = _a > 1 ? 1 : _a;\n } else {\n this.a = 1;\n }\n this.roundA = Math.round(this.a);\n this.hex = rgbToHex(this.r, this.g, this.b);\n this.rgba = this.toRgba();\n }\n\n public toHex(allow3Char?: boolean): string {\n return rgbToHex(this.r, this.g, this.b, allow3Char);\n }\n\n public toRgba(): string {\n return `rgba(${this.r},${this.g},${this.b},${this.a})`;\n }\n\n public toHexString(allow3Char?: boolean): string {\n return '#' + this.toHex(allow3Char);\n }\n\n public toRgbString(): string {\n return this.a === 1\n ? 'rgb(' + Math.round(this.r) + ', ' + Math.round(this.g) + ', ' + Math.round(this.b) + ')'\n : 'rgba(' +\n Math.round(this.r) +\n ', ' +\n Math.round(this.g) +\n ', ' +\n Math.round(this.b) +\n ', ' +\n this.roundA +\n ')';\n }\n\n public toHex8(allow4Char?: boolean): string {\n return rgbaToHex(this.r, this.g, this.b, this.a, allow4Char);\n }\n\n public toHex8String(allow4Char?: boolean): string {\n return '#' + this.toHex8(allow4Char);\n }\n\n public toString(format: ColorInputFormat): string {\n const formatSet = !!format;\n\n let formattedString;\n const hasAlpha = this.a < 1 && this.a >= 0;\n const needsAlphaFormat =\n !formatSet &&\n hasAlpha &&\n (format === 'hex' ||\n format === 'hex6' ||\n format === 'hex3' ||\n format === 'hex4' ||\n format === 'hex8');\n\n if (needsAlphaFormat) {\n return this.toRgbString();\n }\n if (format === 'rgb') {\n formattedString = this.toRgbString();\n }\n if (format === 'hex' || format === 'hex6') {\n formattedString = this.toHexString();\n }\n if (format === 'hex3') {\n formattedString = this.toHexString(true);\n }\n if (format === 'hex4') {\n formattedString = this.toHex8String(true);\n }\n if (format === 'hex8') {\n formattedString = this.toHex8String();\n }\n\n return formattedString || this.toHexString();\n }\n}\n","import {\n AfterViewInit,\n Directive,\n Input,\n input,\n NgZone,\n OnDestroy,\n output,\n signal,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { Subject } from 'rxjs';\nimport { Color } from '../../models';\n\n@Directive()\nexport abstract class NgxMatBaseColorCanvas implements OnDestroy, AfterViewInit {\n readonly colorChanged = output<Color>();\n readonly theme = input<ThemePalette>();\n readonly color = signal<Color | undefined | null>(null);\n\n @Input({\n alias: 'color',\n })\n set setColor(color: Color | undefined | null) {\n this.color.set(color);\n }\n\n canvas: HTMLCanvasElement | null = null;\n\n elementId: string;\n\n ctx: CanvasRenderingContext2D | null = null;\n width = 0;\n height = 0;\n\n x = 0;\n y = 0;\n\n drag = false;\n\n protected _destroyed: Subject<void> = new Subject<void>();\n\n protected zone: NgZone | null = null;\n\n constructor(\n elementId: string,\n ) {\n this.elementId = elementId;\n }\n\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n ngAfterViewInit(): void {\n this.canvas = document.getElementById(this.elementId) as HTMLCanvasElement;\n this.ctx = this.canvas.getContext('2d');\n this.width = this.canvas.width;\n this.height = this.canvas.height;\n this.draw();\n }\n\n protected draw() {\n this.ctx?.clearRect(0, 0, this.width, this.height);\n this.ctx?.rect(0, 0, this.width, this.height);\n this.fillGradient();\n if (this.y != 0) {\n this.redrawIndicator(this.x, this.y);\n }\n }\n\n public onMousedown(e: MouseEvent) {\n this.drag = true;\n this.changeColor(e);\n\n this.zone?.runOutsideAngular(() => {\n this.canvas?.addEventListener('mousemove', this.onMousemove.bind(this));\n });\n }\n\n public onMousemove(e: MouseEvent) {\n if (this.drag) {\n this.zone?.run(() => {\n this.changeColor(e);\n });\n }\n }\n\n public onMouseup(_: MouseEvent) {\n this.drag = false;\n this.canvas?.removeEventListener('mousemove', this.onMousemove);\n }\n\n public emitChange(color: Color) {\n this.colorChanged.emit(color);\n }\n\n abstract changeColor(e: MouseEvent): void;\n abstract fillGradient(): void;\n abstract redrawIndicator(x: number, y: number): void;\n}\n","import { Component, inject, NgZone } from '@angular/core';\nimport { getColorAtPosition } from '../../../helpers';\nimport { Color } from '../../../models';\nimport { NgxMatBaseColorCanvas } from '../base-color-canvas';\n\n@Component({\n selector: 'ngx-mat-color-slider',\n templateUrl: './color-slider.component.html',\n styleUrls: ['./color-slider.component.scss'],\n})\nexport class NgxMatColorSliderComponent extends NgxMatBaseColorCanvas {\n protected override zone = inject(NgZone);\n\n constructor() {\n super('color-strip');\n }\n\n override ngAfterViewInit(): void {\n super.ngAfterViewInit();\n }\n\n public fillGradient() {\n const grd = this.ctx?.createLinearGradient(0, 0, 0, this.height);\n grd?.addColorStop(0, 'rgba(255, 0, 0, 1)');\n grd?.addColorStop(0.17, 'rgba(255, 255, 0, 1)');\n grd?.addColorStop(0.34, 'rgba(0, 255, 0, 1)');\n grd?.addColorStop(0.51, 'rgba(0, 255, 255, 1)');\n grd?.addColorStop(0.68, 'rgba(0, 0, 255, 1)');\n grd?.addColorStop(0.85, 'rgba(255, 0, 255, 1)');\n grd?.addColorStop(1, 'rgba(255, 0, 0, 1)');\n\n this.ctx!.fillStyle = grd!;\n this.ctx?.fill();\n }\n\n public redrawIndicator(x: number, y: number) {\n this.ctx?.beginPath();\n this.ctx!.strokeStyle = 'white';\n this.ctx!.lineWidth = 2;\n this.ctx?.arc(7.5, y, 7.5, 0, 2 * Math.PI, false);\n this.ctx?.stroke();\n this.ctx?.closePath();\n }\n\n public changeColor(e: MouseEvent) {\n this.x = e.offsetX;\n this.y = e.offsetY;\n this.draw();\n const { r, g, b } = getColorAtPosition(this.ctx!, e.offsetX, e.offsetY);\n this.emitChange(new Color(r, g, b));\n }\n}\n","<canvas\n id=\"color-strip\"\n class=\"zone-strip\"\n (mousedown)=\"onMousedown($event)\"\n (mouseup)=\"onMouseup($event)\"\n width=\"15\"\n height=\"234\"\n></canvas>\n","import {\n AfterViewInit,\n Component,\n inject,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { merge } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { getColorAtPosition, matchers, stringInputToObject } from '../../helpers';\nimport { Color } from '../../models';\nimport { NgxMatBaseColorCanvas } from './base-color-canvas';\nimport { NgxMatColorSliderComponent } from './color-slider/color-slider.component';\n\nconst RADIUS_NOB = 5;\n\n@Component({\n selector: 'ngx-mat-color-canvas',\n templateUrl: './color-canvas.component.html',\n styleUrls: ['./color-canvas.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ngx-mat-color-canvas',\n },\n imports: [MatFormFieldModule, MatInputModule, NgxMatColorSliderComponent, ReactiveFormsModule],\n})\nexport class NgxMatColorCanvasComponent\n extends NgxMatBaseColorCanvas\n implements OnInit, AfterViewInit, OnChanges, OnDestroy\n{\n private _baseColor: Color | null = null;\n\n get rCtrl(): AbstractControl | null {\n return this.formGroup.get('r');\n }\n\n get gCtrl(): AbstractControl | null {\n return this.formGroup.get('g');\n }\n\n get bCtrl(): AbstractControl | null {\n return this.formGroup.get('b');\n }\n\n get aCtrl(): AbstractControl | null {\n return this.formGroup.get('a');\n }\n\n get hexCtrl(): AbstractControl | null {\n return this.formGroup.get('hex');\n }\n\n _resetBaseColor = true;\n\n formGroup: FormGroup;\n\n rgba = \"\";\n\n protected override zone = inject(NgZone);\n\n constructor() {\n super('color-block');\n this.formGroup = new FormGroup({\n r: new FormControl(null, [Validators.required]),\n g: new FormControl(null, [Validators.required]),\n b: new FormControl(null, [Validators.required]),\n a: new FormControl(null, [Validators.required]),\n hex: new FormControl(null, [Validators.required, Validators.pattern(matchers.hex6)]),\n });\n }\n\n ngOnInit() {\n const rgbaCtrl$ = merge(\n this.rCtrl!.valueChanges,\n this.gCtrl!.valueChanges,\n this.bCtrl!.valueChanges,\n this.aCtrl!.valueChanges,\n );\n rgbaCtrl$.pipe(takeUntil(this._destroyed), debounceTime(400)).subscribe((_) => {\n const color = new Color(\n Number(this.rCtrl!.value),\n Number(this.gCtrl!.value),\n Number(this.bCtrl!.value),\n Number(this.aCtrl!.value),\n );\n this.emitChange(color);\n });\n\n const hexCtrl$ = this.hexCtrl!.valueChanges;\n hexCtrl$\n .pipe(takeUntil(this._destroyed), debounceTime(400), distinctUntilChanged())\n .subscribe((hex) => {\n const obj = stringInputToObject(hex);\n if (obj != null) {\n const color = new Color(obj.r, obj.g, obj.b, obj.a);\n this.emitChange(color);\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const key = \"setColor\";\n \n if (changes[key] && changes[key].currentValue) {\n this.updateForm(changes[key].currentValue);\n if (this._resetBaseColor) {\n this._baseColor = changes[key].currentValue;\n }\n\n this._resetBaseColor = true;\n\n if (!changes[key].firstChange) {\n this.draw();\n }\n }\n }\n\n private updateForm(val: Color): void {\n const config = { emitEvent: false };\n \n this.rCtrl?.setValue(val.r, config);\n this.gCtrl?.setValue(val.g, config);\n this.bCtrl?.setValue(val.b, config);\n this.aCtrl?.setValue(val.a, config);\n this.hexCtrl?.setValue(val.hex, config);\n }\n\n public redrawIndicator(x: number, y: number) {\n this.ctx?.beginPath();\n this.ctx!.strokeStyle = 'white';\n this.ctx?.arc(x, y, RADIUS_NOB, 0, 2 * Math.PI, false);\n this.ctx?.stroke();\n this.ctx?.closePath();\n }\n\n public fillGradient() {\n this.ctx!.fillStyle = this._baseColor ? this._baseColor.rgba : 'rgba(255,255,255,1)';\n this.ctx?.fillRect(0, 0, this.width, this.height);\n\n const grdWhite = this.ctx?.createLinearGradient(0, 0, this.width, 0);\n grdWhite?.addColorStop(0, 'rgba(255,255,255,1)');\n grdWhite?.addColorStop(1, 'rgba(255,255,255,0)');\n this.ctx!.fillStyle = grdWhite!;\n this.ctx?.fillRect(0, 0, this.width, this.height);\n\n const grdBlack = this.ctx?.createLinearGradient(0, 0, 0, this.height);\n grdBlack?.addColorStop(0, 'rgba(0,0,0,0)');\n grdBlack?.addColorStop(1, 'rgba(0,0,0,1)');\n this.ctx!.fillStyle = grdBlack!;\n this.ctx?.fillRect(0, 0, this.width, this.height);\n }\n\n public onSliderColorChanged(c: Color) {\n this._baseColor = c;\n this.color.set(c);\n this.fillGradient();\n this.emitChange(c);\n }\n\n public changeColor(e: MouseEvent): void {\n this.x = e.offsetX;\n this.y = e.offsetY;\n this._resetBaseColor = false;\n this.draw();\n const { r, g, b } = getColorAtPosition(this.ctx!, e.offsetX, e.offsetY);\n this.emitChange(new Color(r, g, b));\n }\n}\n","<form [formGroup]=\"formGroup\">\n <div class=\"color-canvas-row\">\n <div class=\"zone-canvas\">\n <canvas\n id=\"color-block\"\n class=\"zone-block\"\n (mousedown)=\"onMousedown($event)\"\n (mouseup)=\"onMouseup($event)\"\n width=\"200\"\n height=\"235\"\n ></canvas>\n <ngx-mat-color-slider (colorChanged)=\"onSliderColorChanged($event)\" />\n </div>\n\n <div class=\"zone-inputs\">\n <mat-form-field [color]=\"theme()\">\n <mat-label>R</mat-label>\n <input\n matInput\n formControlName=\"r\"\n ngxMatNumericColorInput\n autocomplete=\"off\"\n />\n </mat-form-field>\n\n <mat-form-field [color]=\"theme()\">\n <mat-label>G</mat-label>\n <input\n matInput\n formControlName=\"g\"\n ngxMatNumericColorInput\n autocomplete=\"off\"\n />\n </mat-form-field>\n\n <mat-form-field [color]=\"theme()\">\n <mat-label>B</mat-label>\n <input\n matInput\n formControlName=\"b\"\n ngxMatNumericColorInput\n autocomplete=\"off\"\n />\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"color-canvas-row\">\n <button\n mat-mini-fab\n [style.background-color]=\"color()?.rgba || 'transparent'\"\n class=\"preview\"\n ></button>\n <mat-form-field [color]=\"theme()\">\n <mat-label>HEX6</mat-label>\n <mat-label matPrefix class=\"symbol\">#&nbsp;</mat-label>\n <input matInput formControlName=\"hex\" autocomplete=\"off\" />\n </mat-form-field>\n <mat-form-field class=\"input-opacity\" [color]=\"theme()\">\n <mat-label>A</mat-label>\n <input\n matInput\n formControlName=\"a\"\n type=\"number\"\n min=\"0\"\n max=\"1\"\n step=\"0.1\"\n autocomplete=\"off\"\n />\n </mat-form-field>\n </div>\n</form>\n","import { NgClass } from '@angular/common';\nimport { Component, Input, output, signal, ViewEncapsulation } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { BASIC_COLORS, stringInputToObject } from '../../helpers';\nimport { Color } from '../../models';\n\n@Component({\n selector: 'ngx-mat-color-collection',\n templateUrl: './color-collection.component.html',\n styleUrls: ['./color-collection.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ngx-mat-color-collection',\n },\n imports: [MatButtonModule, NgClass],\n})\nexport class NgxMatColorCollectionComponent {\n readonly colorChanged = output<Color>();\n\n @Input()\n set color(c: Color | undefined | null) {\n if (c) {\n this.selectedColor.set(c.toHexString());\n }\n }\n\n readonly selectedColor = signal<string>('');\n\n colors1: string[] = BASIC_COLORS.slice(0, 8);\n colors2: string[] = BASIC_COLORS.slice(8, 16);\n\n select(hex: string) {\n this.selectedColor.set(hex);\n const rgba = stringInputToObject(hex);\n if (rgba != null) {\n this.colorChanged.emit(new Color(rgba.r, rgba.g, rgba.b, rgba.a));\n }\n }\n}\n","<div class=\"color-collection-row\">\n @for (c of colors1; track c) {\n <button\n mat-mini-fab\n [style.background-color]=\"c\"\n class=\"btn-color\"\n (click)=\"select(c)\"\n [ngClass]=\"{ active: selectedColor() === c }\"\n [disableRipple]=\"true\"></button>\n }\n</div>\n<div class=\"color-collection-row\">\n @for (c of colors2; track c) {\n <button\n mat-mini-fab\n [style.background-color]=\"c\"\n class=\"btn-color\"\n (click)=\"select(c)\"\n [ngClass]=\"{ active: selectedColor() === c }\"\n [disableRipple]=\"true\"></button>\n }\n</div>\n","import { Component, ViewEncapsulation, input, output } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { Color } from '../../models';\nimport { NgxMatColorCanvasComponent } from '../color-canvas/color-canvas.component';\nimport { NgxMatColorCollectionComponent } from '../color-collection/color-collection.component';\n\n@Component({\n selector: 'ngx-mat-color-palette',\n templateUrl: 'color-palette.component.html',\n styleUrls: ['color-palette.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ngx-mat-color-palette',\n },\n imports: [NgxMatColorCollectionComponent, NgxMatColorCanvasComponent],\n})\nexport class NgxMatColorPaletteComponent {\n readonly colorChanged = output<Color>();\n\n readonly color = input<Color | undefined | null>();\n readonly theme = input<ThemePalette>();\n\n public handleColorChanged(color: Color) {\n this.colorChanged.emit(color);\n }\n}\n","<ngx-mat-color-canvas\n (colorChanged)=\"handleColorChanged($event)\"\n [color]=\"color()\"\n [theme]=\"theme()\"\n/>\n\n<ngx-mat-color-collection\n (colorChanged)=\"handleColorChanged($event)\"\n [color]=\"color()\"\n/>\n","import { Injectable } from '@angular/core';\nimport { stringInputToObject } from '../helpers';\nimport { Color, ColorInputFormat } from '../models';\n\n@Injectable()\nexport class ColorAdapter {\n sameColor(a: Color, b: Color) {\n if (a == null && b == null) return true;\n if (a != null && b != null) return a.rgba === b.rgba;\n return false;\n }\n\n format(c: Color, format: ColorInputFormat): string {\n return c.toString(format);\n }\n\n parse(value: string): Color | null {\n const obj = stringInputToObject(value);\n if (obj) {\n return new Color(obj.r, obj.g, obj.b, obj.a);\n }\n return null;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ColorInputFormat } from '../models';\n\nexport interface MatColorFormats {\n display: {\n colorInput: ColorInputFormat\n };\n}\n\nexport const NGX_MAT_COLOR_FORMATS: MatColorFormats = {\n display: {\n colorInput: 'hex',\n },\n};\n\nexport const MAT_COLOR_FORMATS = new InjectionToken<MatColorFormats>('mat-color-formats');\n","import { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n EventEmitter,\n HostBinding,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Output,\n ViewContainerRef,\n ViewEncapsulation,\n viewChild,\n DOCUMENT,\n ChangeDetectorRef,\n inject,\n OnInit,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { Color } from '../../models';\nimport { ColorAdapter } from '../../services';\nimport { NgxMatColorPaletteComponent } from '../color-palette/color-palette.component';\nimport { NgxMatColorPickerInput } from './color-input.component';\n\n/** Injection token that determines the scroll handling while the calendar is open. */\nexport const NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'ngx-mat-colorpicker-scroll-strategy',\n);\n\nexport function NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY(\n overlay: Overlay,\n): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\nexport const NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY,\n};\n\n@Component({\n selector: 'ngx-mat-color-picker-content',\n templateUrl: './color-picker-content.component.html',\n styleUrls: ['../../../../../shared/base-animations.scss', 'color-picker-content.component.scss'],\n host: {\n class: 'ngx-mat-colorpicker-content',\n '[class.ngx-mat-colorpicker-content-touch]': 'picker?.touchUi',\n '(animationend)': '_onAnimationEnd($event)',\n },\n exportAs: 'ngxMatColorPickerContent',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxMatColorPaletteComponent],\n})\nexport class NgxMatColorPickerContentComponent implements OnInit {\n /** Reference to the internal calendar component. */\n _palette = viewChild(NgxMatColorPaletteComponent);\n\n picker: NgxMatColorPickerComponent | null = null;\n\n @Input() color: ThemePalette;\n\n _isLeaving = false;\n _panelEnterClass: 'enter-dropdown' | 'enter-dialog' | null = null;\n\n @Output() readonly _animationDone = new Subject<void>();\n\n private _cdr = inject(ChangeDetectorRef);\n\n @HostBinding('class.panel-enter-dropdown')\n get isEnterDropdown() {\n return !this._isLeaving && this._panelEnterClass === 'enter-dropdown';\n }\n\n @HostBinding('class.panel-enter-dialog')\n get isEnterDialog() {\n return !this._isLeaving && this._panelEnterClass === 'enter-dialog';\n }\n\n @HostBinding('class.panel-leave')\n get isLeaving() {\n return this._isLeaving;\n }\n\n ngOnInit(): void {\n this._panelEnterClass = this.picker?.touchUi ? 'enter-dialog' : 'enter-dropdown';\n this._cdr.markForCheck(); // ensure initial class is applied\n }\n\n _startExitAnimation() {\n this._isLeaving = true;\n this._cdr.markForCheck(); // trigger class update\n }\n\n _onAnimationEnd(event: AnimationEvent) {\n if (event.animationName === 'panelLeave') {\n this._animationDone.next();\n }\n }\n}\n\n@Component({\n selector: 'ngx-mat-color-picker',\n template: '',\n exportAs: 'ngxMatColorPicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [ColorAdapter, NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY_PROVIDER],\n})\nexport class NgxMatColorPickerComponent implements OnDestroy {\n @Input() id = `ngx-mat-color-picker-${Math.floor(Math.random() * 1000000)}`;\n\n /** Emits when the datepicker has been opened. */\n @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits when the datepicker has been closed. */\n @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n @Input() get disabled() {\n return this._disabled === undefined && this._pickerInput\n ? this._pickerInput.disabled\n : !!this._disabled;\n }\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this._disabledChange.next(newValue);\n }\n }\n private _disabled = false;\n\n @Input()\n get touchUi(): boolean {\n return this._touchUi;\n }\n set touchUi(value: boolean) {\n this._touchUi = coerceBooleanProperty(value);\n }\n private _touchUi = false;\n\n /** Whether the calendar is open. */\n @Input()\n get opened(): boolean {\n return this._opened;\n }\n set opened(value: boolean) {\n if (value)\n this.open();\n else\n this.close();\n }\n private _opened = false;\n\n /** Default Color palette to use on the datepicker's calendar. */\n @Input()\n get defaultColor(): ThemePalette {\n return this._defaultColor;\n }\n set defaultColor(value: ThemePalette) {\n this._defaultColor = value;\n }\n _defaultColor: ThemePalette = 'primary';\n\n /** Color palette to use on the datepicker's calendar. */\n @Input()\n get color(): ThemePalette {\n return this._color || (this._pickerInput ? this._pickerInput.getThemePalette() : undefined);\n }\n set color(value: ThemePalette) {\n this._color = value;\n }\n _color: ThemePalette;\n\n @HostBinding('class.mat-primary') get isPrimary() {\n return this.color === 'primary';\n }\n @HostBinding('class.mat-accent') get isAccent() {\n return this.color === 'accent';\n }\n @HostBinding('class.mat-warn') get isWarn() {\n return this.color === 'warn';\n }\n\n /** The currently selected date. */\n get _selected(): Color | null {\n return this._validSelected;\n }\n set _selected(value: Color) {\n this._validSelected = value;\n }\n private _validSelected: Color | null = null;\n\n _pickerInput: NgxMatColorPickerInput | null = null;\n /** A reference to the overlay when the picker is opened as a popup. */\n _popupRef: OverlayRef | null = null;\n\n /** A reference to the dialog when the picker is opened as a dialog. */\n private _dialogRef: MatDialogRef<NgxMatColorPickerContentComponent> | null = null;\n /** Reference to the component instantiated in popup mode. */\n private _popupComponentRef: ComponentRef<NgxMatColorPickerContentComponent> | undefined | null = null;\n /** A portal containing the content for this picker. */\n private _portal: ComponentPortal<NgxMatColorPickerContentComponent> | null = null;\n\n /** Emits when the datepicker is disabled. */\n readonly _disabledChange = new EventEmitter<boolean>();\n\n /** The element that was focused before the datepicker was opened. */\n private _focusedElementBeforeOpen: HTMLElement | null = null;\n\n /** Subscription to value changes in the associated input element. */\n private _inputSubscription = Subscription.EMPTY;\n\n /** Emits new selected date when selected date changes. */\n readonly _selectedChanged = new Subject<Color>();\n\n /** Whether an animation is currently in progress. */\n private _isAnimating = false;\n\n private _dialog = inject(MatDialog);\n private _overlay = inject(Overlay);\n private _zone = inject(NgZone);\n private _adapter = inject(ColorAdapter);\n private _dir = inject(Directionality, { optional: true });\n private _scrollStrategy = inject(NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY);\n private _document = inject(DOCUMENT, { optional: true });\n private _viewContainerRef = inject(ViewContainerRef);\n\n ngOnDestroy() {\n this.close();\n this._inputSubscription.unsubscribe();\n this._disabledChange.complete();\n\n if (this._popupRef) {\n this._popupRef.dispose();\n this._popupComponentRef = null;\n }\n }\n\n /** Selects the given date */\n select(nextVal: Color): void {\n const oldValue = this._selected;\n this._selected = nextVal;\n if (!this._adapter.sameColor(oldValue!, this._selected)) {\n this._selectedChanged.next(nextVal);\n }\n }\n\n /**\n * Register an input with this datepicker.\n * @param input The datepicker input to register with this datepicker.\n */\n registerInput(input: NgxMatColorPickerInput): void {\n if (this._pickerInput) {\n throw Error('A ColorPicker can only be associated with a single input.');\n }\n this._pickerInput = input;\n this._inputSubscription = this._pickerInput._valueChange.subscribe(\n (value: Color) => (this._selected = value),\n );\n }\n\n public open(): void {\n if (this._opened || this.disabled || this._isAnimating) {\n return;\n }\n if (!this._pickerInput) {\n throw Error('Attempted to open an ColorPicker with no associated input.');\n }\n\n if (this._document) {\n this._focusedElementBeforeOpen = this._document.activeElement as HTMLElement | null;\n }\n\n if (this.touchUi)\n this._openAsDialog();\n else\n this._openAsPopup();\n\n this._opened = true;\n this.openedStream.emit();\n }\n\n /** Open the calendar as a dialog. */\n private _openAsDialog(): void {\n if (this._dialogRef) {\n this._dialogRef.close();\n }\n\n this._dialogRef = this._dialog.open<NgxMatColorPickerContentComponent>(\n NgxMatColorPickerContentComponent,\n {\n direction: this._dir ? this._dir.value : 'ltr',\n viewContainerRef: this._viewContainerRef,\n panelClass: 'ngx-mat-colorpicker-dialog',\n },\n );\n\n this._dialogRef.afterClosed().subscribe(() => this._handleDialogClosed());\n this._dialogRef.componentInstance.picker = this;\n this._setColor();\n }\n\n private _handleDialogClosed(): void {\n this._opened = false;\n this._isAnimating = false;\n this.closedStream.emit();\n if (this._focusedElementBeforeOpen) {\n this._focusedElementBeforeOpen.focus();\n this._focusedElementBeforeOpen = null;\n }\n this._dialogRef = null;\n }\n\n /** Open the calendar as a popup. */\n private _openAsPopup(): void {\n if (!this._portal) {\n this._portal = new ComponentPortal<NgxMatColorPickerContentComponent>(\n NgxMatColorPickerContentComponent,\n this._viewContainerRef,\n );\n }\n\n if (!this._popupRef) {\n this._createPopup();\n }\n\n if (!this._popupRef?.hasAttached()) {\n this._popupComponentRef = this._popupRef?.attach(this._portal);\n this._popupComponentRef!.instance.picker = this;\n this._setColor();\n\n // Update the position once the calendar has rendered.\n this._zone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this._popupRef?.updatePosition();\n });\n }\n }\n\n /** Create the popup. */\n private _createPopup(): void {\n const overlayConfig = new OverlayConfig({\n positionStrategy: this._createPopupPositionStrategy(),\n hasBackdrop: true,\n backdropClass: 'mat-overlay-transparent-backdrop',\n direction: this._dir ?? \"ltr\",\n scrollStrategy: this._scrollStrategy(),\n panelClass: 'mat-colorpicker-popup',\n });\n\n this._popupRef = this._overlay.create(overlayConfig);\n this._popupRef.overlayElement.setAttribute('role', 'dialog');\n\n merge(\n this._popupRef.backdropClick(),\n this._popupRef.detachments(),\n this._popupRef.keydownEvents().pipe(\n filter((event) => {\n // Closing on alt + up is only valid when there's an input associated with the datepicker.\n return (\n event.keyCode === ESCAPE ||\n (this._pickerInput! && event.altKey && event.keyCode === UP_ARROW)\n );\n }),\n ),\n ).subscribe((event) => {\n if (event) {\n event.preventDefault();\n }\n\n this.close();\n });\n }\n\n close(): void {\n if (!this._opened || this._isAnimating) {\n return;\n }\n\n if (this.touchUi) {\n // Dialog mode – close the dialog, state reset happens in afterClosed\n if (this._dialogRef) {\n this._dialogRef.close();\n }\n } else {\n // Popup mode – animate out then clean up\n let contentInstance: NgxMatColorPickerContentComponent | null = null;\n if (this._popupComponentRef) {\n contentInstance = this._popupComponentRef.instance;\n }\n\n const canRestoreFocus =\n this._focusedElementBeforeOpen &&\n typeof this._focusedElementBeforeOpen.focus === 'function';\n\n const completeClose = () => {\n if (this._popupRef && this._popupRef.hasAttached()) {\n this._popupRef.detach();\n }\n if (this._portal && this._portal.isAttached) {\n this._portal.detach();\n }\n this._opened = false;\n this._isAnimating = false;\n this.closedStream.emit();\n if (canRestoreFocus) {\n this._focusedElementBeforeOpen!.focus();\n }\n this._focusedElementBeforeOpen = null;\n };\n\n if (contentInstance) {\n this._isAnimating = true;\n contentInstance._startExitAnimation();\n\n contentInstance._animationDone.pipe(take(1)).subscribe(() => {\n // Restore focus before the timeout to ensure it happens even if the\n // overlay is removed synchronously.\n if (canRestoreFocus) {\n this._focusedElementBeforeOpen!.focus();\n }\n setTimeout(completeClose);\n });\n } else {\n // No content to animate – close immediately\n if (canRestoreFocus) {\n this._focusedElementBeforeOpen!.focus();\n setTimeout(completeClose);\n } else {\n completeClose();\n }\n }\n }\n }\n\n /** Passes the current theme color along to the calendar overlay. */\n private _setColor(): void {\n const color = this.color;\n if (this._popupComponentRef) {\n this._popupComponentRef.instance.color = color;\n }\n if (this._dialogRef) {\n this._dialogRef.componentInstance.color = color;\n }\n }\n\n /** Create the popup PositionStrategy. */\n private _createPopupPositionStrategy(): PositionStrategy {\n return this._overlay\n .position()\n .flexibleConnectedTo(this._pickerInput!.getConnectedOverlayOrigin())\n .withTransformOriginOn('.ngx-mat-colorpicker-content')\n .withFlexibleDimensions(false)\n .withViewportMargin(8)\n .withLockedPosition()\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n ]);\n }\n}\n","<ngx-mat-color-palette\n (colorChanged)=\"picker?.select($event)\"\n [color]=\"picker!._selected\"\n [theme]=\"color\"></ngx-mat-color-palette>\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n OnDestroy,\n output,\n Provider,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\nimport { Subscription } from 'rxjs';\nimport { createMissingDateImplError } from '../../helpers';\nimport { Color } from '../../models';\nimport { ColorAdapter, MAT_COLOR_FORMATS } from '../../services';\nimport { NgxMatColorPickerComponent } from './color-picker.component';\n\nexport class NgxMatColorPickerInputEvent {\n /** The new value for the target colorpicker input. */\n value: Color | null;\n\n constructor(\n /** Reference to the colorpicker input component that emitted the event. */\n public target: NgxMatColorPickerInput,\n /** Reference to the native input element associated with the colorpicker input. */\n public targetElement: HTMLElement,\n ) {\n this.value = this.target.value;\n }\n}\n\nexport const MAT_COLORPICKER_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgxMatColorPickerInput),\n multi: true,\n};\n\nexport const MAT_COLORPICKER_VALIDATORS: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => NgxMatColorPickerInput),\n multi: true,\n};\n\n@Directive({\n selector: 'input[ngxMatColorPicker]',\n providers: [\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: NgxMatColorPickerInput },\n ColorAdapter,\n MAT_COLORPICKER_VALIDATORS,\n MAT_COLORPICKER_VALUE_ACCESSOR,\n ],\n host: {\n '[attr.aria-haspopup]': '_picker ? \"dialog\" : null',\n '[attr.aria-owns]': '(_picker?.opened && _picker?.id) || null',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event)',\n '(change)': '_onChange()',\n '(blur)': '_onBlur()',\n '(keydown)': '_onKeydown($event)',\n },\n exportAs: 'ngxMatColorPickerInput',\n})\nexport class NgxMatColorPickerInput implements ControlValueAccessor, OnDestroy, Validator {\n @Input()\n set ngxMatColorPicker(value: NgxMatColorPickerComponent) {\n if (!value) {\n return;\n }\n\n this._picker = value;\n this._picker.registerInput(this);\n this._pickerSubscription.unsubscribe();\n\n this._pickerSubscription = this._picker._selectedChanged.subscribe((selected: Color) => {\n this.value = selected;\n this._cvaOnChange(selected);\n this._onTouched();\n this.colorInput.emit(new NgxMatColorPickerInputEvent(this, this._elementRef.nativeElement));\n this.colorChange.emit(new NgxMatColorPickerInputEvent(this, this._elementRef.nativeElement));\n });\n }\n _picker: NgxMatColorPickerComponent | null = null;\n\n /** Whether the colorpicker-input is disabled. */\n @Input()\n get disabled(): boolean {\n return !!this._disabled;\n }\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n const element = this._elementRef.nativeElement;\n\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this._disabledChange.emit(newValue);\n }\n\n // We need to null check the `blur` method, because it's undefined during SSR.\n if (newValue && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n private _disabled = false;\n\n /** The value of the input. */\n @Input()\n get value(): Color | null {\n return this._value;\n }\n set value(value: Color | null) {\n const oldValue = this.value;\n this._value = value;\n this._formatValue(value);\n\n if (!this._adapter.sameColor(oldValue!, value!)) {\n this._valueChange.emit(value);\n }\n }\n private _value: Color | null = null;\n\n /** Emits when a `change` event is fired on this `<input>`. */\n readonly colorChange = output<NgxMatColorPickerInputEvent>();\n\n /** Emits when an `input` event is fired on this `<input>`. */\n readonly colorInput = output<NgxMatColorPickerInputEvent>();\n\n /** Emits when the disabled state has changed */\n _disabledChange = new EventEmitter<boolean>();\n\n /** Emits when the value changes (either due to user input or programmatic change). */\n _valueChange = new EventEmitter<Color | null>();\n\n _onTouched = () => {\n // Intentionally empty.\n };\n\n private _cvaOnChange: (value: any) => void = () => {\n // Intentionally empty.\n };\n\n private _validatorOnChange = () => {\n // Intentionally empty.\n };\n\n private _pickerSubscription = Subscription.EMPTY;\n\n /** The combined form control validator for this input. */\n private _validator: ValidatorFn | null = Validators.compose([]);\n\n /** Whether the last value set on the input was valid. */\n private _lastValueValid = false;\n\n private _elementRef = inject(ElementRef<HTMLInputElement>);\n private _formField = inject(MatFormField, { optional: true });\n private _colorFormats = inject(MAT_COLOR_FORMATS, { optional: true });\n private _adapter = inject(ColorAdapter);\n\n constructor() {\n if (!this._colorFormats) {\n throw createMissingDateImplError('MAT_COLOR_FORMATS');\n }\n }\n\n /** Returns the palette used by the input's form field, if any. */\n public getThemePalette(): ThemePalette {\n return this._formField ? this._formField.color : undefined;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n return this._validator ? this._validator(c) : null;\n }\n\n /**\n * @deprecated\n * @breaking-change 8.0.0 Use `getConnectedOverlayOrigin` instead\n */\n getPopupConnectionElementRef(): ElementRef {\n return this.getConnectedOverlayOrigin();\n }\n\n /**\n * Gets the element that the colorpicker popup should be connected to.\n * @return The element to connect the popup to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n }\n\n ngOnDestroy(): void {\n this._pickerSubscription.unsubscribe();\n this._valueChange.complete();\n this._disabledChange.complete();\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: Color): void {\n this.value = value;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void): void {\n this._cvaOnChange = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n _onChange() {\n this.colorChange.emit(new NgxMatColorPickerInputEvent(this, this._elementRef.nativeElement));\n }\n\n _onKeydown(event: KeyboardEvent) {\n const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;\n\n if (this._picker && isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\n this._picker.open();\n event.preventDefault();\n }\n }\n\n /** Handles blur events on the input. */\n _onBlur() {\n // Reformat the input only if we have a valid value.\n if (this.value) {\n this._formatValue(this.value);\n }\n\n this._onTouched();\n }\n\n /** Formats a value and sets it on the input element. */\n private _formatValue(value: Color | null) {\n this._elementRef.nativeElement.value = this._colorFormats && value\n ? this._adapter.format(value, this._colorFormats.display.colorInput)\n : '';\n }\n\n _onInput(event?: Event) {\n const lastValueWasValid = this._lastValueValid;\n const target = event?.target as HTMLInputElement;\n const nextValue = this._adapter.parse(target.value);\n\n if (!this._adapter.sameColor(nextValue!, this._value!)) {\n this._value = nextValue;\n this._cvaOnChange(nextValue);\n this._valueChange.emit(nextValue);\n this.colorInput.emit(new NgxMatColorPickerInputEvent(this, this._elementRef.nativeElement));\n } else if (lastValueWasValid !== this._lastValueValid) {\n this._validatorOnChange();\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n Directive,\n EventEmitter,\n Input,\n OnDestroy,\n ViewEncapsulation,\n effect,\n inject,\n input,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { MatButton, MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Subscription, merge, of } from 'rxjs';\nimport { NgxMatColorPickerComponent } from '../color-picker/color-picker.component';\n\n@Directive({\n selector: '[ngxMatColorpickerToggleIcon]',\n})\nexport class NgxMatColorpickerToggleIcon {}\n\n@Component({\n selector: 'ngx-mat-color-toggle',\n templateUrl: './color-toggle.component.html',\n styleUrls: ['./color-toggle.component.scss'],\n host: {\n class: 'ngx-mat-color-toggle',\n // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the\n // consumer may have provided, while still being able to receive focus.\n '[attr.tabindex]': '-1',\n '[class.ngx-mat-color-toggle-active]': 'picker()?.opened',\n '[class.mat-accent]': 'picker()?.color === \"accent\"',\n '[class.mat-warn]': 'picker()?.color === \"warn\"',\n '(focus)': '_button()?.focus()',\n },\n exportAs: 'ngxMatColorPickerToggle',\n encapsulation: ViewEncapsulation.None,\n imports: [MatButtonModule, MatIconModule],\n})\nexport class NgxMatColorToggleComponent implements AfterContentInit, OnDestroy {\n private _stateChanges = Subscription.EMPTY;\n\n picker = input<NgxMatColorPickerComponent>(undefined, { alias: 'for' });\n tabIndex = input<number>();\n\n @Input() get disabled(): boolean | undefined { \n if (this._disabled == null && this.picker()) {\n return this.picker()?.disabled;\n }\n return undefined;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n private _disabled = false;\n\n /** Whether ripples on the toggle should be disabled. */\n disableRipple = input<boolean>();\n\n _button = viewChild<MatButton>('button');\n\n private _cd = inject(ChangeDetectorRef);\n\n constructor() {\n effect(() => {\n this.picker();\n\n untracked(() => this._watchStateChanges());\n });\n }\n\n ngOnDestroy() {\n this._stateChanges.unsubscribe();\n }\n\n ngAfterContentInit() {\n this._watchStateChanges();\n }\n\n public open(event: Event): void {\n if (this.picker() && !this.disabled) {\n this.picker()?.open();\n event.stopPropagation();\n }\n }\n\n private _watchStateChanges() {\n const disabled$ = this.picker()?._disabledChange ?? new EventEmitter();\n const inputDisabled$ = this.picker()?._pickerInput?._disabledChange ?? new EventEmitter();\n\n const pickerToggled$ = this.picker()\n ? merge(this.picker()!.openedStream, this.picker()!.closedStream)\n : of();\n this._stateChanges.unsubscribe();\n\n this._stateChanges = merge(disabled$, inputDisabled$, pickerToggled$).subscribe(() =>\n this._cd.markForCheck(),\n );\n }\n}\n","<button\n #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"picker() ? 'dialog' : null\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex()\"\n [disabled]=\"disabled\"\n (click)=\"open($event)\"\n [disableRipple]=\"disableRipple()\"\n>\n <ng-content select=\"[ngxMatColorpickerToggleIcon]\">\n <mat-icon [style.color]=\"picker()?._selected?.rgba\">palette</mat-icon>\n </ng-content>\n</button>\n","import { Directive, HostListener } from '@angular/core';\nimport { NUMERIC_REGEX } from '../helpers';\n\n@Directive({\n selector: '[ngxMatNumericColorInput]',\n})\nexport class NumericColorInputDirective {\n @HostListener('input', ['$event'])\n onInput($event: any) {\n this._formatInput($event.target);\n }\n\n /**\n * Format input\n * @param input\n */\n private _formatInput(input: any) {\n let val = Number(input.value.replace(NUMERIC_REGEX, ''));\n val = isNaN(val) ? 0 : val;\n input.value = val;\n }\n}\n","/*\n * Public API Surface of color-picker\n */\nexport * from './lib/components';\nexport * from './lib/directives';\nexport * from './lib/helpers';\nexport * from './lib/models';\nexport * from './lib/services';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngx-mce/color-picker",
3
- "version": "21.2.6-next.1",
3
+ "version": "21.2.6-next.3",
4
4
  "description": "Angular Material Color Picker",
5
5
  "author": "Felipe B.",
6
6
  "repository": {
@@ -1,12 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnDestroy, AfterViewInit, NgZone, OnInit, OnChanges, SimpleChanges, InjectionToken, EventEmitter, ElementRef, ViewContainerRef, AfterContentInit, ChangeDetectorRef } from '@angular/core';
2
+ import { OnDestroy, AfterViewInit, NgZone, OnInit, OnChanges, SimpleChanges, Provider, EventEmitter, ElementRef, InjectionToken, AfterContentInit } from '@angular/core';
3
3
  import { ThemePalette } from '@angular/material/core';
4
4
  import { AbstractControl, FormGroup, ControlValueAccessor, Validator, ValidationErrors } from '@angular/forms';
5
5
  import { Subject } from 'rxjs';
6
- import { Directionality } from '@angular/cdk/bidi';
7
6
  import { ScrollStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';
8
- import { MatDialog } from '@angular/material/dialog';
9
- import { MatFormField } from '@angular/material/form-field';
10
7
  import { MatButton } from '@angular/material/button';
11
8
 
12
9
  type ColorInputFormat = 'rgb' | 'hex' | 'hex6' | 'hex3' | 'hex4' | 'hex8';
@@ -39,7 +36,6 @@ declare class NgxMatColorPaletteComponent {
39
36
  }
40
37
 
41
38
  declare abstract class NgxMatBaseColorCanvas implements OnDestroy, AfterViewInit {
42
- protected zone: NgZone;
43
39
  readonly colorChanged: i0.OutputEmitterRef<Color>;
44
40
  readonly theme: i0.InputSignal<ThemePalette>;
45
41
  readonly color: i0.WritableSignal<Color | null | undefined>;
@@ -53,13 +49,14 @@ declare abstract class NgxMatBaseColorCanvas implements OnDestroy, AfterViewInit
53
49
  y: number;
54
50
  drag: boolean;
55
51
  protected _destroyed: Subject<void>;
56
- constructor(zone: NgZone, elementId: string);
52
+ protected zone: NgZone | null;
53
+ constructor(elementId: string);
57
54
  ngOnDestroy(): void;
58
55
  ngAfterViewInit(): void;
59
56
  protected draw(): void;
60
57
  onMousedown(e: MouseEvent): void;
61
58
  onMousemove(e: MouseEvent): void;
62
- onMouseup(e: MouseEvent): void;
59
+ onMouseup(_: MouseEvent): void;
63
60
  emitChange(color: Color): void;
64
61
  abstract changeColor(e: MouseEvent): void;
65
62
  abstract fillGradient(): void;
@@ -69,7 +66,6 @@ declare abstract class NgxMatBaseColorCanvas implements OnDestroy, AfterViewInit
69
66
  }
70
67
 
71
68
  declare class NgxMatColorCanvasComponent extends NgxMatBaseColorCanvas implements OnInit, AfterViewInit, OnChanges, OnDestroy {
72
- zone: NgZone;
73
69
  private _baseColor;
74
70
  get rCtrl(): AbstractControl | null;
75
71
  get gCtrl(): AbstractControl | null;
@@ -79,7 +75,8 @@ declare class NgxMatColorCanvasComponent extends NgxMatBaseColorCanvas implement
79
75
  _resetBaseColor: boolean;
80
76
  formGroup: FormGroup;
81
77
  rgba: string;
82
- constructor(zone: NgZone);
78
+ protected zone: NgZone;
79
+ constructor();
83
80
  ngOnInit(): void;
84
81
  ngOnChanges(changes: SimpleChanges): void;
85
82
  private updateForm;
@@ -103,8 +100,8 @@ declare class NgxMatColorCollectionComponent {
103
100
  }
104
101
 
105
102
  declare class NgxMatColorSliderComponent extends NgxMatBaseColorCanvas {
106
- zone: NgZone;
107
- constructor(zone: NgZone);
103
+ protected zone: NgZone;
104
+ constructor();
108
105
  ngAfterViewInit(): void;
109
106
  fillGradient(): void;
110
107
  redrawIndicator(x: number, y: number): void;
@@ -113,22 +110,6 @@ declare class NgxMatColorSliderComponent extends NgxMatBaseColorCanvas {
113
110
  static ɵcmp: i0.ɵɵComponentDeclaration<NgxMatColorSliderComponent, "ngx-mat-color-slider", never, {}, {}, never, never, true, never>;
114
111
  }
115
112
 
116
- declare class ColorAdapter {
117
- sameColor(a: Color, b: Color): boolean;
118
- format(c: Color, format: ColorInputFormat): string;
119
- parse(value: string): Color | null;
120
- static ɵfac: i0.ɵɵFactoryDeclaration<ColorAdapter, never>;
121
- static ɵprov: i0.ɵɵInjectableDeclaration<ColorAdapter>;
122
- }
123
-
124
- type MatColorFormats = {
125
- display: {
126
- colorInput: ColorInputFormat;
127
- };
128
- };
129
- declare const NGX_MAT_COLOR_FORMATS: MatColorFormats;
130
- declare const MAT_COLOR_FORMATS: InjectionToken<MatColorFormats>;
131
-
132
113
  declare class NgxMatColorPickerInputEvent {
133
114
  /** Reference to the colorpicker input component that emitted the event. */
134
115
  target: NgxMatColorPickerInput;
@@ -142,13 +123,9 @@ declare class NgxMatColorPickerInputEvent {
142
123
  /** Reference to the native input element associated with the colorpicker input. */
143
124
  targetElement: HTMLElement);
144
125
  }
145
- declare const MAT_COLORPICKER_VALUE_ACCESSOR: any;
146
- declare const MAT_COLORPICKER_VALIDATORS: any;
147
- declare class NgxMatColorPickerInput implements ControlValueAccessor, OnInit, OnDestroy, Validator {
148
- private _elementRef;
149
- private _formField;
150
- private _colorFormats;
151
- private _adapter;
126
+ declare const MAT_COLORPICKER_VALUE_ACCESSOR: Provider;
127
+ declare const MAT_COLORPICKER_VALIDATORS: Provider;
128
+ declare class NgxMatColorPickerInput implements ControlValueAccessor, OnDestroy, Validator {
152
129
  set ngxMatColorPicker(value: NgxMatColorPickerComponent);
153
130
  _picker: NgxMatColorPickerComponent | null;
154
131
  /** Whether the colorpicker-input is disabled. */
@@ -175,7 +152,11 @@ declare class NgxMatColorPickerInput implements ControlValueAccessor, OnInit, On
175
152
  private _validator;
176
153
  /** Whether the last value set on the input was valid. */
177
154
  private _lastValueValid;
178
- constructor(_elementRef: ElementRef<HTMLInputElement>, _formField: MatFormField, _colorFormats: MatColorFormats, _adapter: ColorAdapter);
155
+ private _elementRef;
156
+ private _formField;
157
+ private _colorFormats;
158
+ private _adapter;
159
+ constructor();
179
160
  /** Returns the palette used by the input's form field, if any. */
180
161
  getThemePalette(): ThemePalette;
181
162
  registerOnValidatorChange(fn: () => void): void;
@@ -190,7 +171,6 @@ declare class NgxMatColorPickerInput implements ControlValueAccessor, OnInit, On
190
171
  * @return The element to connect the popup to.
191
172
  */
192
173
  getConnectedOverlayOrigin(): ElementRef;
193
- ngOnInit(): void;
194
174
  ngOnDestroy(): void;
195
175
  writeValue(value: Color): void;
196
176
  registerOnChange(fn: (value: any) => void): void;
@@ -203,7 +183,7 @@ declare class NgxMatColorPickerInput implements ControlValueAccessor, OnInit, On
203
183
  /** Formats a value and sets it on the input element. */
204
184
  private _formatValue;
205
185
  _onInput(event?: Event): void;
206
- static ɵfac: i0.ɵɵFactoryDeclaration<NgxMatColorPickerInput, [null, { optional: true; }, { optional: true; }, null]>;
186
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxMatColorPickerInput, never>;
207
187
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgxMatColorPickerInput, "input[ngxMatColorPicker]", ["ngxMatColorPickerInput"], { "ngxMatColorPicker": { "alias": "ngxMatColorPicker"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "colorChange": "colorChange"; "colorInput": "colorInput"; }, never, never, true, never>;
208
188
  }
209
189
 
@@ -234,15 +214,7 @@ declare class NgxMatColorPickerContentComponent implements OnInit {
234
214
  static ɵcmp: i0.ɵɵComponentDeclaration<NgxMatColorPickerContentComponent, "ngx-mat-color-picker-content", ["ngxMatColorPickerContent"], { "color": { "alias": "color"; "required": false; }; }, { "_animationDone": "_animationDone"; }, never, never, true, never>;
235
215
  }
236
216
  declare class NgxMatColorPickerComponent implements OnDestroy {
237
- private _dialog;
238
- private _overlay;
239
- private _zone;
240
- private _adapter;
241
- private _dir;
242
- private _document;
243
- private _viewContainerRef;
244
217
  id: string;
245
- private _scrollStrategy;
246
218
  /** Emits when the datepicker has been opened. */
247
219
  openedStream: EventEmitter<void>;
248
220
  /** Emits when the datepicker has been closed. */
@@ -291,7 +263,14 @@ declare class NgxMatColorPickerComponent implements OnDestroy {
291
263
  readonly _selectedChanged: Subject<Color>;
292
264
  /** Whether an animation is currently in progress. */
293
265
  private _isAnimating;
294
- constructor(_dialog: MatDialog, _overlay: Overlay, _zone: NgZone, _adapter: ColorAdapter, _dir: Directionality, scrollStrategy: any, _document: any, _viewContainerRef: ViewContainerRef);
266
+ private _dialog;
267
+ private _overlay;
268
+ private _zone;
269
+ private _adapter;
270
+ private _dir;
271
+ private _scrollStrategy;
272
+ private _document;
273
+ private _viewContainerRef;
295
274
  ngOnDestroy(): void;
296
275
  /** Selects the given date */
297
276
  select(nextVal: Color): void;
@@ -313,7 +292,7 @@ declare class NgxMatColorPickerComponent implements OnDestroy {
313
292
  private _setColor;
314
293
  /** Create the popup PositionStrategy. */
315
294
  private _createPopupPositionStrategy;
316
- static ɵfac: i0.ɵɵFactoryDeclaration<NgxMatColorPickerComponent, [null, null, null, null, { optional: true; }, null, { optional: true; }, null]>;
295
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxMatColorPickerComponent, never>;
317
296
  static ɵcmp: i0.ɵɵComponentDeclaration<NgxMatColorPickerComponent, "ngx-mat-color-picker", ["ngxMatColorPicker"], { "id": { "alias": "id"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "touchUi": { "alias": "touchUi"; "required": false; }; "opened": { "alias": "opened"; "required": false; }; "defaultColor": { "alias": "defaultColor"; "required": false; }; "color": { "alias": "color"; "required": false; }; }, { "openedStream": "opened"; "closedStream": "closed"; }, never, never, true, never>;
318
297
  }
319
298
 
@@ -322,7 +301,6 @@ declare class NgxMatColorpickerToggleIcon {
322
301
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgxMatColorpickerToggleIcon, "[ngxMatColorpickerToggleIcon]", never, {}, {}, never, never, true, never>;
323
302
  }
324
303
  declare class NgxMatColorToggleComponent implements AfterContentInit, OnDestroy {
325
- private _cd;
326
304
  private _stateChanges;
327
305
  picker: i0.InputSignal<NgxMatColorPickerComponent | undefined>;
328
306
  tabIndex: i0.InputSignal<number | undefined>;
@@ -332,7 +310,8 @@ declare class NgxMatColorToggleComponent implements AfterContentInit, OnDestroy
332
310
  /** Whether ripples on the toggle should be disabled. */
333
311
  disableRipple: i0.InputSignal<boolean | undefined>;
334
312
  _button: i0.Signal<MatButton | undefined>;
335
- constructor(_cd: ChangeDetectorRef);
313
+ private _cd;
314
+ constructor();
336
315
  ngOnDestroy(): void;
337
316
  ngAfterContentInit(): void;
338
317
  open(event: Event): void;
@@ -393,5 +372,21 @@ declare function stringInputToObject(color: string): {
393
372
  } | null;
394
373
  declare function createMissingDateImplError(provider: string): Error;
395
374
 
375
+ declare class ColorAdapter {
376
+ sameColor(a: Color, b: Color): boolean;
377
+ format(c: Color, format: ColorInputFormat): string;
378
+ parse(value: string): Color | null;
379
+ static ɵfac: i0.ɵɵFactoryDeclaration<ColorAdapter, never>;
380
+ static ɵprov: i0.ɵɵInjectableDeclaration<ColorAdapter>;
381
+ }
382
+
383
+ interface MatColorFormats {
384
+ display: {
385
+ colorInput: ColorInputFormat;
386
+ };
387
+ }
388
+ declare const NGX_MAT_COLOR_FORMATS: MatColorFormats;
389
+ declare const MAT_COLOR_FORMATS: InjectionToken<MatColorFormats>;
390
+
396
391
  export { BASIC_COLORS, Color, ColorAdapter, MAT_COLORPICKER_VALIDATORS, MAT_COLORPICKER_VALUE_ACCESSOR, MAT_COLOR_FORMATS, MAX_RGB, MIN_RGB, NGX_MAT_COLOR_FORMATS, NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY, NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY, NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, NUMERIC_REGEX, NgxMatColorCanvasComponent, NgxMatColorCollectionComponent, NgxMatColorPaletteComponent, NgxMatColorPickerComponent, NgxMatColorPickerContentComponent, NgxMatColorPickerInput, NgxMatColorPickerInputEvent, NgxMatColorSliderComponent, NgxMatColorToggleComponent, NgxMatColorpickerToggleIcon, NumericColorInputDirective, convertDecimalToHex, createMissingDateImplError, getColorAtPosition, matchers, pad2, rgbToHex, rgbaToHex, stringInputToObject };
397
392
  export type { ColorInputFormat, MatColorFormats };