@ng-matero/extensions 12.5.3 → 12.6.0

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.
Files changed (122) hide show
  1. package/_all-theme.scss +2 -0
  2. package/_index.scss +2 -0
  3. package/_theming.scss +2 -0
  4. package/bundles/extensions.umd.js +7 -7
  5. package/bundles/extensions.umd.js.map +1 -1
  6. package/bundles/mtxColorpicker.umd.js +1106 -0
  7. package/bundles/mtxColorpicker.umd.js.map +1 -0
  8. package/bundles/mtxDatetimepicker.umd.js +603 -148
  9. package/bundles/mtxDatetimepicker.umd.js.map +1 -1
  10. package/bundles/mtxDialog.umd.js +0 -2
  11. package/bundles/mtxDialog.umd.js.map +1 -1
  12. package/bundles/mtxFormGroup.umd.js +2 -9
  13. package/bundles/mtxFormGroup.umd.js.map +1 -1
  14. package/bundles/mtxSplit.umd.js +0 -13
  15. package/bundles/mtxSplit.umd.js.map +1 -1
  16. package/bundles/mtxText3d.umd.js +0 -8
  17. package/bundles/mtxText3d.umd.js.map +1 -1
  18. package/bundles/mtxTooltip.umd.js +2 -0
  19. package/bundles/mtxTooltip.umd.js.map +1 -1
  20. package/colorpicker/_colorpicker-theme.import.scss +2 -0
  21. package/colorpicker/_colorpicker-theme.scss +43 -0
  22. package/colorpicker/colorpicker-animations.d.ts +8 -0
  23. package/colorpicker/colorpicker-content.scss +4 -0
  24. package/colorpicker/colorpicker-input.d.ts +86 -0
  25. package/colorpicker/colorpicker-module.d.ts +2 -0
  26. package/colorpicker/colorpicker-toggle.d.ts +34 -0
  27. package/colorpicker/colorpicker-toggle.scss +23 -0
  28. package/colorpicker/colorpicker.d.ts +122 -0
  29. package/{color-picker/mtxColorPicker.d.ts → colorpicker/mtxColorpicker.d.ts} +0 -0
  30. package/colorpicker/mtxColorpicker.metadata.json +1 -0
  31. package/colorpicker/package.json +11 -0
  32. package/colorpicker/public-api.d.ts +5 -0
  33. package/datetimepicker/_datetimepicker-theme.scss +12 -0
  34. package/datetimepicker/calendar.d.ts +2 -10
  35. package/datetimepicker/clock.d.ts +10 -9
  36. package/datetimepicker/datetimepicker-animations.d.ts +7 -5
  37. package/datetimepicker/datetimepicker-input.d.ts +4 -2
  38. package/datetimepicker/{datetimepicker.module.d.ts → datetimepicker-module.d.ts} +0 -0
  39. package/datetimepicker/datetimepicker-toggle.d.ts +15 -2
  40. package/datetimepicker/datetimepicker-toggle.scss +23 -0
  41. package/datetimepicker/datetimepicker.d.ts +67 -24
  42. package/datetimepicker/month-view.d.ts +3 -3
  43. package/datetimepicker/mtxDatetimepicker.d.ts +0 -2
  44. package/datetimepicker/mtxDatetimepicker.metadata.json +1 -1
  45. package/datetimepicker/multi-year-view.d.ts +3 -3
  46. package/datetimepicker/public-api.d.ts +3 -1
  47. package/datetimepicker/year-view.d.ts +3 -3
  48. package/dialog/{dialog.config.d.ts → dialog-config.d.ts} +0 -0
  49. package/dialog/dialog.component.d.ts +1 -1
  50. package/dialog/dialog.d.ts +1 -1
  51. package/dialog/mtxDialog.metadata.json +1 -1
  52. package/dialog/public-api.d.ts +2 -2
  53. package/esm2015/colorpicker/colorpicker-animations.js +16 -0
  54. package/esm2015/colorpicker/colorpicker-input.js +225 -0
  55. package/esm2015/colorpicker/colorpicker-module.js +41 -0
  56. package/esm2015/colorpicker/colorpicker-toggle.js +98 -0
  57. package/esm2015/colorpicker/colorpicker.js +361 -0
  58. package/esm2015/colorpicker/mtxColorpicker.js +5 -0
  59. package/esm2015/colorpicker/public-api.js +6 -0
  60. package/esm2015/datetimepicker/calendar-body.js +2 -1
  61. package/esm2015/datetimepicker/calendar.js +14 -29
  62. package/esm2015/datetimepicker/clock.js +7 -7
  63. package/esm2015/datetimepicker/datetimepicker-animations.js +38 -24
  64. package/esm2015/datetimepicker/datetimepicker-input.js +6 -3
  65. package/esm2015/datetimepicker/datetimepicker-module.js +52 -0
  66. package/esm2015/datetimepicker/datetimepicker-toggle.js +30 -8
  67. package/esm2015/datetimepicker/datetimepicker.js +150 -71
  68. package/esm2015/datetimepicker/month-view.js +8 -7
  69. package/esm2015/datetimepicker/mtxDatetimepicker.js +1 -3
  70. package/esm2015/datetimepicker/multi-year-view.js +8 -7
  71. package/esm2015/datetimepicker/public-api.js +4 -2
  72. package/esm2015/datetimepicker/year-view.js +8 -7
  73. package/esm2015/dialog/{dialog.config.js → dialog-config.js} +1 -1
  74. package/esm2015/dialog/dialog.component.js +1 -1
  75. package/esm2015/dialog/dialog.js +1 -1
  76. package/esm2015/dialog/public-api.js +3 -3
  77. package/esm2015/extensions.module.js +3 -3
  78. package/esm2015/form-group/form-group.component.js +4 -11
  79. package/esm2015/public-api.js +2 -2
  80. package/esm2015/split/split.component.js +1 -9
  81. package/esm2015/split/utils.js +1 -6
  82. package/esm2015/text3d/text3d.component.js +1 -9
  83. package/esm2015/tooltip/tooltip.js +3 -1
  84. package/extensions.metadata.json +1 -1
  85. package/fesm2015/extensions.js +3 -3
  86. package/fesm2015/extensions.js.map +1 -1
  87. package/fesm2015/mtxColorpicker.js +730 -0
  88. package/fesm2015/mtxColorpicker.js.map +1 -0
  89. package/fesm2015/mtxDatetimepicker.js +259 -146
  90. package/fesm2015/mtxDatetimepicker.js.map +1 -1
  91. package/fesm2015/mtxDialog.js +1 -1
  92. package/fesm2015/mtxDialog.js.map +1 -1
  93. package/fesm2015/mtxFormGroup.js +3 -10
  94. package/fesm2015/mtxFormGroup.js.map +1 -1
  95. package/fesm2015/mtxSplit.js +0 -13
  96. package/fesm2015/mtxSplit.js.map +1 -1
  97. package/fesm2015/mtxText3d.js +0 -8
  98. package/fesm2015/mtxText3d.js.map +1 -1
  99. package/fesm2015/mtxTooltip.js +2 -0
  100. package/fesm2015/mtxTooltip.js.map +1 -1
  101. package/form-group/form-group.component.d.ts +2 -4
  102. package/form-group/mtxFormGroup.metadata.json +1 -1
  103. package/package.json +1 -1
  104. package/public-api.d.ts +1 -1
  105. package/split/mtxSplit.metadata.json +1 -1
  106. package/text3d/mtxText3d.metadata.json +1 -1
  107. package/text3d/text3d.component.d.ts +0 -1
  108. package/tooltip/mtxTooltip.metadata.json +1 -1
  109. package/bundles/mtxColorPicker.umd.js +0 -337
  110. package/bundles/mtxColorPicker.umd.js.map +0 -1
  111. package/color-picker/color-picker.component.d.ts +0 -120
  112. package/color-picker/color-picker.module.d.ts +0 -2
  113. package/color-picker/mtxColorPicker.metadata.json +0 -1
  114. package/color-picker/package.json +0 -11
  115. package/color-picker/public-api.d.ts +0 -2
  116. package/esm2015/color-picker/color-picker.component.js +0 -268
  117. package/esm2015/color-picker/color-picker.module.js +0 -26
  118. package/esm2015/color-picker/mtxColorPicker.js +0 -5
  119. package/esm2015/color-picker/public-api.js +0 -3
  120. package/esm2015/datetimepicker/datetimepicker.module.js +0 -49
  121. package/fesm2015/mtxColorPicker.js +0 -295
  122. package/fesm2015/mtxColorPicker.js.map +0 -1
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"MtxDialogModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":12},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":11,"character":26},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":11,"character":43},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":11,"character":60},{"__symbolic":"reference","module":"@ng-matero/extensions/pipes","name":"MtxPipesModule","line":11,"character":75}],"exports":[{"__symbolic":"reference","name":"MtxDialogComponent"}],"declarations":[{"__symbolic":"reference","name":"MtxDialogComponent"}],"providers":[{"__symbolic":"reference","name":"MtxDialog"}],"entryComponents":[{"__symbolic":"reference","name":"MtxDialogComponent"}]}]}],"members":{}},"MtxDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"mtx-dialog","exportAs":"mtxDialog","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":10,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":11,"character":19},"member":"OnPush"},"template":"<h1 class=\"mtx-dialog-title\" *ngIf=\"data.title\">{{data.title | toObservable | async}}\n <button mat-icon-button *ngIf=\"data.showCloseIcon\" (click)=\"_onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n</h1>\n<div class=\"mtx-dialog-content\" *ngIf=\"data.description\">\n <p>{{data.description | toObservable | async}}</p>\n</div>\n<div class=\"mtx-dialog-actions\">\n <ng-container *ngFor=\"let btn of data.buttons\">\n <ng-container [ngSwitch]=\"btn.type\">\n <ng-container *ngSwitchCase=\"'raised'\">\n <button mat-raised-button *ngIf=\"btn.focusInitial\" cdkFocusInitial\n [color]=\"btn.color\" [ngClass]=\"btn.class!\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n <button mat-raised-button *ngIf=\"!btn.focusInitial\"\n [color]=\"btn.color\" [ngClass]=\"btn.class!\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"'stroked'\">\n <button mat-stroked-button *ngIf=\"btn.focusInitial\" cdkFocusInitial\n [color]=\"btn.color\" [ngClass]=\"btn.class!\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n <button mat-stroked-button *ngIf=\"!btn.focusInitial\"\n [color]=\"btn.color\" [ngClass]=\"btn.class!\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"'flat'\">\n <button mat-flat-button *ngIf=\"btn.focusInitial\" cdkFocusInitial\n [color]=\"btn.color\" [ngClass]=\"btn.class!\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n <button mat-flat-button *ngIf=\"!btn.focusInitial\"\n [color]=\"btn.color\" [ngClass]=\"btn.class!\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <button mat-button *ngIf=\"btn.focusInitial\" cdkFocusInitial\n [color]=\"btn.color\" [ngClass]=\"btn.class!\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n <button mat-button *ngIf=\"!btn.focusInitial\"\n [color]=\"btn.color\" [ngClass]=\"btn.class!\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n","styles":[".mtx-dialog-title{display:flex;justify-content:space-between;align-items:center;margin:0 0 20px;font:500 20px/32px Roboto,\"Helvetica Neue\",sans-serif;letter-spacing:normal}.mtx-dialog-content{display:block;max-height:65vh;padding:0 24px;margin:0 -24px;overflow:auto;-webkit-overflow-scrolling:touch}.mtx-dialog-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;min-height:52px;padding:8px 0;margin-bottom:-24px}\n"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":16,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":16,"character":12}]}]],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"MtxDialogComponent"}]},{"__symbolic":"reference","name":"MtxDialogData"}]}],"_onClick":[{"__symbolic":"method"}],"_onClose":[{"__symbolic":"method"}]}},"MtxDialog":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":28,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":30,"character":29}]}],"originalOpen":[{"__symbolic":"method"}],"open":[{"__symbolic":"method"}],"alert":[{"__symbolic":"method"}],"confirm":[{"__symbolic":"method"}]}},"MtxDialogData":{"__symbolic":"interface"},"MtxDialogBtns":{"__symbolic":"interface"}},"origins":{"MtxDialogModule":"./dialog.module","MtxDialogComponent":"./dialog.component","MtxDialog":"./dialog","MtxDialogData":"./dialog.config","MtxDialogBtns":"./dialog.config"},"importAs":"@ng-matero/extensions/dialog"}
1
+ {"__symbolic":"module","version":4,"metadata":{"MtxDialogModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":12},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":11,"character":26},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":11,"character":43},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":11,"character":60},{"__symbolic":"reference","module":"@ng-matero/extensions/pipes","name":"MtxPipesModule","line":11,"character":75}],"exports":[{"__symbolic":"reference","name":"MtxDialogComponent"}],"declarations":[{"__symbolic":"reference","name":"MtxDialogComponent"}],"providers":[{"__symbolic":"reference","name":"MtxDialog"}],"entryComponents":[{"__symbolic":"reference","name":"MtxDialogComponent"}]}]}],"members":{}},"MtxDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"mtx-dialog","exportAs":"mtxDialog","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":10,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":11,"character":19},"member":"OnPush"},"template":"<h1 class=\"mtx-dialog-title\" *ngIf=\"data.title\">{{data.title | toObservable | async}}\n <button mat-icon-button *ngIf=\"data.showCloseIcon\" (click)=\"_onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n</h1>\n<div class=\"mtx-dialog-content\" *ngIf=\"data.description\">\n <p>{{data.description | toObservable | async}}</p>\n</div>\n<div class=\"mtx-dialog-actions\">\n <ng-container *ngFor=\"let btn of data.buttons\">\n <ng-container [ngSwitch]=\"btn.type\">\n <ng-container *ngSwitchCase=\"'raised'\">\n <button mat-raised-button *ngIf=\"btn.focusInitial\" cdkFocusInitial\n [color]=\"btn.color\" [ngClass]=\"btn.class!\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n <button mat-raised-button *ngIf=\"!btn.focusInitial\"\n [color]=\"btn.color\" [ngClass]=\"btn.class!\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"'stroked'\">\n <button mat-stroked-button *ngIf=\"btn.focusInitial\" cdkFocusInitial\n [color]=\"btn.color\" [ngClass]=\"btn.class!\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n <button mat-stroked-button *ngIf=\"!btn.focusInitial\"\n [color]=\"btn.color\" [ngClass]=\"btn.class!\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"'flat'\">\n <button mat-flat-button *ngIf=\"btn.focusInitial\" cdkFocusInitial\n [color]=\"btn.color\" [ngClass]=\"btn.class!\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n <button mat-flat-button *ngIf=\"!btn.focusInitial\"\n [color]=\"btn.color\" [ngClass]=\"btn.class!\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <button mat-button *ngIf=\"btn.focusInitial\" cdkFocusInitial\n [color]=\"btn.color\" [ngClass]=\"btn.class!\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n <button mat-button *ngIf=\"!btn.focusInitial\"\n [color]=\"btn.color\" [ngClass]=\"btn.class!\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n","styles":[".mtx-dialog-title{display:flex;justify-content:space-between;align-items:center;margin:0 0 20px;font:500 20px/32px Roboto,\"Helvetica Neue\",sans-serif;letter-spacing:normal}.mtx-dialog-content{display:block;max-height:65vh;padding:0 24px;margin:0 -24px;overflow:auto;-webkit-overflow-scrolling:touch}.mtx-dialog-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;min-height:52px;padding:8px 0;margin-bottom:-24px}\n"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":16,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":16,"character":12}]}]],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"MtxDialogComponent"}]},{"__symbolic":"reference","name":"MtxDialogData"}]}],"_onClick":[{"__symbolic":"method"}],"_onClose":[{"__symbolic":"method"}]}},"MtxDialogData":{"__symbolic":"interface"},"MtxDialogBtns":{"__symbolic":"interface"},"MtxDialog":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":28,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":30,"character":29}]}],"originalOpen":[{"__symbolic":"method"}],"open":[{"__symbolic":"method"}],"alert":[{"__symbolic":"method"}],"confirm":[{"__symbolic":"method"}]}}},"origins":{"MtxDialogModule":"./dialog.module","MtxDialogComponent":"./dialog.component","MtxDialogData":"./dialog-config","MtxDialogBtns":"./dialog-config","MtxDialog":"./dialog"},"importAs":"@ng-matero/extensions/dialog"}
@@ -1,4 +1,4 @@
1
1
  export * from './dialog.module';
2
2
  export * from './dialog.component';
3
- export * from './dialog';
4
- export * from './dialog.config';
3
+ export * from './dialog-config';
4
+ export { MtxDialog } from './dialog';
@@ -0,0 +1,16 @@
1
+ import { animate, style, transition, trigger, keyframes, } from '@angular/animations';
2
+ /**
3
+ * Animations used by the colorpicker.
4
+ * @docs-private
5
+ */
6
+ export const mtxColorpickerAnimations = {
7
+ /** Transforms the height of the colorpicker's panel. */
8
+ transformPanel: trigger('transformPanel', [
9
+ transition('void => enter-dropdown', animate('120ms cubic-bezier(0, 0, 0.2, 1)', keyframes([
10
+ style({ opacity: 0, transform: 'scale(1, 0.8)' }),
11
+ style({ opacity: 1, transform: 'scale(1, 1)' }),
12
+ ]))),
13
+ transition('* => void', animate('100ms linear', style({ opacity: 0 }))),
14
+ ]),
15
+ };
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXItYW5pbWF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvY29sb3JwaWNrZXIvY29sb3JwaWNrZXItYW5pbWF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxFQUNQLFNBQVMsR0FFVixNQUFNLHFCQUFxQixDQUFDO0FBRTdCOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUVqQztJQUNGLHdEQUF3RDtJQUN4RCxjQUFjLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixFQUFFO1FBQ3hDLFVBQVUsQ0FDUix3QkFBd0IsRUFDeEIsT0FBTyxDQUNMLGtDQUFrQyxFQUNsQyxTQUFTLENBQUM7WUFDUixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQztZQUNqRCxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsQ0FBQztTQUNoRCxDQUFDLENBQ0gsQ0FDRjtRQUNELFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ3hFLENBQUM7Q0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYW5pbWF0ZSxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb24sXG4gIHRyaWdnZXIsXG4gIGtleWZyYW1lcyxcbiAgQW5pbWF0aW9uVHJpZ2dlck1ldGFkYXRhLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuLyoqXG4gKiBBbmltYXRpb25zIHVzZWQgYnkgdGhlIGNvbG9ycGlja2VyLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY29uc3QgbXR4Q29sb3JwaWNrZXJBbmltYXRpb25zOiB7XG4gIHJlYWRvbmx5IHRyYW5zZm9ybVBhbmVsOiBBbmltYXRpb25UcmlnZ2VyTWV0YWRhdGE7XG59ID0ge1xuICAvKiogVHJhbnNmb3JtcyB0aGUgaGVpZ2h0IG9mIHRoZSBjb2xvcnBpY2tlcidzIHBhbmVsLiAqL1xuICB0cmFuc2Zvcm1QYW5lbDogdHJpZ2dlcigndHJhbnNmb3JtUGFuZWwnLCBbXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICd2b2lkID0+IGVudGVyLWRyb3Bkb3duJyxcbiAgICAgIGFuaW1hdGUoXG4gICAgICAgICcxMjBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKScsXG4gICAgICAgIGtleWZyYW1lcyhbXG4gICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICdzY2FsZSgxLCAwLjgpJyB9KSxcbiAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3NjYWxlKDEsIDEpJyB9KSxcbiAgICAgICAgXSlcbiAgICAgIClcbiAgICApLFxuICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIGFuaW1hdGUoJzEwMG1zIGxpbmVhcicsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSkpLFxuICBdKSxcbn07XG4iXX0=
@@ -0,0 +1,225 @@
1
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
+ import { DOWN_ARROW } from '@angular/cdk/keycodes';
3
+ import { Directive, ElementRef, EventEmitter, forwardRef, Input, Optional, Output, } from '@angular/core';
4
+ import { NG_VALIDATORS, NG_VALUE_ACCESSOR, Validators, } from '@angular/forms';
5
+ import { MatFormField } from '@angular/material/form-field';
6
+ import { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';
7
+ import { Subscription } from 'rxjs';
8
+ import { MtxColorpicker } from './colorpicker';
9
+ export class MtxColorPickerInputEvent {
10
+ constructor(
11
+ /** Reference to the colorpicker input component that emitted the event. */
12
+ target,
13
+ /** Reference to the native input element associated with the colorpicker input. */
14
+ targetElement) {
15
+ this.target = target;
16
+ this.targetElement = targetElement;
17
+ this.value = this.target.value;
18
+ }
19
+ }
20
+ export const MTX_COLORPICKER_VALUE_ACCESSOR = {
21
+ provide: NG_VALUE_ACCESSOR,
22
+ useExisting: forwardRef(() => MtxColorpickerInput),
23
+ multi: true,
24
+ };
25
+ export const MTX_COLORPICKER_VALIDATORS = {
26
+ provide: NG_VALIDATORS,
27
+ useExisting: forwardRef(() => MtxColorpickerInput),
28
+ multi: true,
29
+ };
30
+ export class MtxColorpickerInput {
31
+ constructor(_elementRef, _formField) {
32
+ this._elementRef = _elementRef;
33
+ this._formField = _formField;
34
+ /** Emits when a `change` event is fired on this `<input>`. */
35
+ this.colorChange = new EventEmitter();
36
+ /** Emits when an `input` event is fired on this `<input>`. */
37
+ this.colorInput = new EventEmitter();
38
+ /** Emits when the disabled state has changed */
39
+ this._disabledChange = new EventEmitter();
40
+ /** Emits when the value changes (either due to user input or programmatic change). */
41
+ this._valueChange = new EventEmitter();
42
+ this._onTouched = () => { };
43
+ this._validatorOnChange = () => { };
44
+ this._cvaOnChange = () => { };
45
+ this._pickerSubscription = Subscription.EMPTY;
46
+ /** The combined form control validator for this input. */
47
+ this._validator = Validators.compose([]);
48
+ /** Whether the last value set on the input was valid. */
49
+ this._lastValueValid = false;
50
+ }
51
+ set mtxColorpicker(value) {
52
+ if (!value) {
53
+ return;
54
+ }
55
+ this._picker = value;
56
+ this._picker.registerInput(this);
57
+ this._pickerSubscription.unsubscribe();
58
+ this._pickerSubscription = this._picker._selectedChanged.subscribe((selected) => {
59
+ this.value = selected;
60
+ this._cvaOnChange(selected);
61
+ this._onTouched();
62
+ this.colorInput.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));
63
+ this.colorChange.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));
64
+ });
65
+ }
66
+ /** Whether the colorpicker-input is disabled. */
67
+ get disabled() {
68
+ return !!this._disabled;
69
+ }
70
+ set disabled(value) {
71
+ const newValue = coerceBooleanProperty(value);
72
+ const element = this._elementRef.nativeElement;
73
+ if (this._disabled !== newValue) {
74
+ this._disabled = newValue;
75
+ this._disabledChange.emit(newValue);
76
+ }
77
+ // We need to null check the `blur` method, because it's undefined during SSR.
78
+ // In Ivy static bindings are invoked earlier, before the element is attached to the DOM.
79
+ // This can cause an error to be thrown in some browsers (IE/Edge) which assert that the
80
+ // element has been inserted.
81
+ if (newValue && this._isInitialized && element.blur) {
82
+ // Normally, native input elements automatically blur if they turn disabled. This behavior
83
+ // is problematic, because it would mean that it triggers another change detection cycle,
84
+ // which then causes a changed after checked error if the input element was focused before.
85
+ element.blur();
86
+ }
87
+ }
88
+ /** The value of the input. */
89
+ get value() {
90
+ return this._value;
91
+ }
92
+ set value(value) {
93
+ const oldValue = this.value;
94
+ this._value = value;
95
+ this._formatValue(value);
96
+ this._valueChange.emit(value);
97
+ }
98
+ ngAfterViewInit() {
99
+ this._isInitialized = true;
100
+ }
101
+ ngOnDestroy() {
102
+ this._pickerSubscription.unsubscribe();
103
+ this._valueChange.complete();
104
+ this._disabledChange.complete();
105
+ }
106
+ registerOnValidatorChange(fn) {
107
+ this._validatorOnChange = fn;
108
+ }
109
+ /** @docs-private */
110
+ validate(c) {
111
+ return this._validator ? this._validator(c) : null;
112
+ }
113
+ /**
114
+ * @deprecated
115
+ * @breaking-change 8.0.0 Use `getConnectedOverlayOrigin` instead
116
+ */
117
+ getPopupConnectionElementRef() {
118
+ return this.getConnectedOverlayOrigin();
119
+ }
120
+ /**
121
+ * Gets the element that the colorpicker popup should be connected to.
122
+ * @return The element to connect the popup to.
123
+ */
124
+ getConnectedOverlayOrigin() {
125
+ return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;
126
+ }
127
+ /** Gets the ID of an element that should be used a description for the overlay. */
128
+ getOverlayLabelId() {
129
+ if (this._formField) {
130
+ return this._formField.getLabelId();
131
+ }
132
+ return this._elementRef.nativeElement.getAttribute('aria-labelledby');
133
+ }
134
+ // Implemented as part of ControlValueAccessor.
135
+ writeValue(value) {
136
+ this.value = value;
137
+ }
138
+ // Implemented as part of ControlValueAccessor.
139
+ registerOnChange(fn) {
140
+ this._cvaOnChange = fn;
141
+ }
142
+ // Implemented as part of ControlValueAccessor.
143
+ registerOnTouched(fn) {
144
+ this._onTouched = fn;
145
+ }
146
+ // Implemented as part of ControlValueAccessor.
147
+ setDisabledState(isDisabled) {
148
+ this.disabled = isDisabled;
149
+ }
150
+ _onKeydown(event) {
151
+ const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;
152
+ if (this._picker && isAltDownArrow && !this._elementRef.nativeElement.readOnly) {
153
+ this._picker.open();
154
+ event.preventDefault();
155
+ }
156
+ }
157
+ /** Handles blur events on the input. */
158
+ _onBlur() {
159
+ // Reformat the input only if we have a valid value.
160
+ if (this.value) {
161
+ this._formatValue(this.value);
162
+ }
163
+ this._onTouched();
164
+ }
165
+ _onInput(value) {
166
+ const nextValue = value;
167
+ this._value = nextValue;
168
+ this._cvaOnChange(nextValue);
169
+ this._valueChange.emit(nextValue);
170
+ this.colorInput.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));
171
+ }
172
+ _onChange() {
173
+ this.colorChange.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));
174
+ }
175
+ /** Returns the palette used by the input's form field, if any. */
176
+ getThemePalette() {
177
+ return this._formField ? this._formField.color : undefined;
178
+ }
179
+ /** TODO: Formats a value and sets it on the input element. */
180
+ _formatValue(value) {
181
+ this._elementRef.nativeElement.value = value ? value : '';
182
+ }
183
+ }
184
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
185
+ MtxColorpickerInput.decorators = [
186
+ { type: Directive, args: [{
187
+ selector: 'input[mtxColorpicker]',
188
+ providers: [
189
+ MTX_COLORPICKER_VALUE_ACCESSOR,
190
+ MTX_COLORPICKER_VALIDATORS,
191
+ { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MtxColorpickerInput },
192
+ ],
193
+ host: {
194
+ 'class': 'mtx-colorpicker-input',
195
+ '[attr.aria-haspopup]': '_picker ? "dialog" : null',
196
+ '[attr.aria-owns]': '(_picker?.opened && _picker.id) || null',
197
+ '[disabled]': 'disabled',
198
+ '(input)': '_onInput($event.target.value)',
199
+ '(change)': '_onChange()',
200
+ '(blur)': '_onBlur()',
201
+ '(keydown)': '_onKeydown($event)',
202
+ },
203
+ exportAs: 'mtxColorpickerInput',
204
+ },] }
205
+ ];
206
+ /**
207
+ * @type {function(): !Array<(null|{
208
+ * type: ?,
209
+ * decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>),
210
+ * })>}
211
+ * @nocollapse
212
+ */
213
+ MtxColorpickerInput.ctorParameters = () => [
214
+ { type: ElementRef },
215
+ { type: MatFormField, decorators: [{ type: Optional }] }
216
+ ];
217
+ /** @type {!Object<string, !Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
218
+ MtxColorpickerInput.propDecorators = {
219
+ mtxColorpicker: [{ type: Input }],
220
+ disabled: [{ type: Input }],
221
+ value: [{ type: Input }],
222
+ colorChange: [{ type: Output }],
223
+ colorInput: [{ type: Output }]
224
+ };
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXItaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2NvbG9ycGlja2VyL2NvbG9ycGlja2VyLWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsYUFBYSxFQUNiLGlCQUFpQixFQUdqQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sT0FBTyx3QkFBd0I7SUFJbkM7SUFDRSwyRUFBMkU7SUFDcEUsTUFBMkI7SUFDbEMsbUZBQW1GO0lBQzVFLGFBQTBCO1FBRjFCLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBRTNCLGtCQUFhLEdBQWIsYUFBYSxDQUFhO1FBRWpDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQVE7SUFDakQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO0lB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Q2pDLFNBQVMsRUFBRTtvQkFDVCw4QkFBOEI7b0JBQzlCLDBCQUEwQjtvQkFDMUIsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFO2lCQUN4RTtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osT0FBTyxFQUFFLHVCQUF1QjtvQkFDaEMsc0JBQXNCLEVBQUUsMkJBQTJCO29CQUNuRCxrQkFBa0IsRUFBRSx5Q0FBeUM7b0JBQzdELFlBQVksRUFBRSxVQUFVO29CQUN4QixTQUFTLEVBQUUsK0JBQStCO29CQUMxQyxVQUFVLEVBQUUsYUFBYTtvQkFDekIsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFdBQVcsRUFBRSxvQkFBb0I7aUJBQ2xDO2dCQUNELFFBQVEsRUFBRSxxQkFBcUI7YUFDaEM7Ozs7Ozs7Ozs7WUFuRUMsVUFBVTtZQWtCSCxZQUFZLHVCQWlKaEIsUUFBUTs7Ozs2QkEzRlYsS0FBSzt1QkFxQkwsS0FBSztvQkEyQkwsS0FBSzswQkFjTCxNQUFNO3lCQUlOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBET1dOX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3JGbixcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1BVF9JTlBVVF9WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTXR4Q29sb3JwaWNrZXIgfSBmcm9tICcuL2NvbG9ycGlja2VyJztcblxuZXhwb3J0IGNsYXNzIE10eENvbG9yUGlja2VySW5wdXRFdmVudCB7XG4gIC8qKiBUaGUgbmV3IHZhbHVlIGZvciB0aGUgdGFyZ2V0IGNvbG9ycGlja2VyIGlucHV0LiAqL1xuICB2YWx1ZTogc3RyaW5nIHwgbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAvKiogUmVmZXJlbmNlIHRvIHRoZSBjb2xvcnBpY2tlciBpbnB1dCBjb21wb25lbnQgdGhhdCBlbWl0dGVkIHRoZSBldmVudC4gKi9cbiAgICBwdWJsaWMgdGFyZ2V0OiBNdHhDb2xvcnBpY2tlcklucHV0LFxuICAgIC8qKiBSZWZlcmVuY2UgdG8gdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgY29sb3JwaWNrZXIgaW5wdXQuICovXG4gICAgcHVibGljIHRhcmdldEVsZW1lbnQ6IEhUTUxFbGVtZW50XG4gICkge1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLnRhcmdldC52YWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgTVRYX0NPTE9SUElDS0VSX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNdHhDb2xvcnBpY2tlcklucHV0KSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5leHBvcnQgY29uc3QgTVRYX0NPTE9SUElDS0VSX1ZBTElEQVRPUlM6IGFueSA9IHtcbiAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTXR4Q29sb3JwaWNrZXJJbnB1dCksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW5wdXRbbXR4Q29sb3JwaWNrZXJdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgTVRYX0NPTE9SUElDS0VSX1ZBTFVFX0FDQ0VTU09SLFxuICAgIE1UWF9DT0xPUlBJQ0tFUl9WQUxJREFUT1JTLFxuICAgIHsgcHJvdmlkZTogTUFUX0lOUFVUX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogTXR4Q29sb3JwaWNrZXJJbnB1dCB9LFxuICBdLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ210eC1jb2xvcnBpY2tlci1pbnB1dCcsXG4gICAgJ1thdHRyLmFyaWEtaGFzcG9wdXBdJzogJ19waWNrZXIgPyBcImRpYWxvZ1wiIDogbnVsbCcsXG4gICAgJ1thdHRyLmFyaWEtb3duc10nOiAnKF9waWNrZXI/Lm9wZW5lZCAmJiBfcGlja2VyLmlkKSB8fCBudWxsJyxcbiAgICAnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgJyhpbnB1dCknOiAnX29uSW5wdXQoJGV2ZW50LnRhcmdldC52YWx1ZSknLFxuICAgICcoY2hhbmdlKSc6ICdfb25DaGFuZ2UoKScsXG4gICAgJyhibHVyKSc6ICdfb25CbHVyKCknLFxuICAgICcoa2V5ZG93biknOiAnX29uS2V5ZG93bigkZXZlbnQpJyxcbiAgfSxcbiAgZXhwb3J0QXM6ICdtdHhDb2xvcnBpY2tlcklucHV0Jyxcbn0pXG5leHBvcnQgY2xhc3MgTXR4Q29sb3JwaWNrZXJJbnB1dCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IGhhcyBiZWVuIGluaXRpYWxpemVkLiAqL1xuICBwcml2YXRlIF9pc0luaXRpYWxpemVkITogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBzZXQgbXR4Q29sb3JwaWNrZXIodmFsdWU6IE10eENvbG9ycGlja2VyKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3BpY2tlciA9IHZhbHVlO1xuICAgIHRoaXMuX3BpY2tlci5yZWdpc3RlcklucHV0KHRoaXMpO1xuICAgIHRoaXMuX3BpY2tlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fcGlja2VyU3Vic2NyaXB0aW9uID0gdGhpcy5fcGlja2VyLl9zZWxlY3RlZENoYW5nZWQuc3Vic2NyaWJlKChzZWxlY3RlZDogc3RyaW5nKSA9PiB7XG4gICAgICB0aGlzLnZhbHVlID0gc2VsZWN0ZWQ7XG4gICAgICB0aGlzLl9jdmFPbkNoYW5nZShzZWxlY3RlZCk7XG4gICAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuY29sb3JJbnB1dC5lbWl0KG5ldyBNdHhDb2xvclBpY2tlcklucHV0RXZlbnQodGhpcywgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSk7XG4gICAgICB0aGlzLmNvbG9yQ2hhbmdlLmVtaXQobmV3IE10eENvbG9yUGlja2VySW5wdXRFdmVudCh0aGlzLCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpKTtcbiAgICB9KTtcbiAgfVxuICBfcGlja2VyITogTXR4Q29sb3JwaWNrZXI7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNvbG9ycGlja2VyLWlucHV0IGlzIGRpc2FibGVkLiAqL1xuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBpZiAodGhpcy5fZGlzYWJsZWQgIT09IG5ld1ZhbHVlKSB7XG4gICAgICB0aGlzLl9kaXNhYmxlZCA9IG5ld1ZhbHVlO1xuICAgICAgdGhpcy5fZGlzYWJsZWRDaGFuZ2UuZW1pdChuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gV2UgbmVlZCB0byBudWxsIGNoZWNrIHRoZSBgYmx1cmAgbWV0aG9kLCBiZWNhdXNlIGl0J3MgdW5kZWZpbmVkIGR1cmluZyBTU1IuXG4gICAgLy8gSW4gSXZ5IHN0YXRpYyBiaW5kaW5ncyBhcmUgaW52b2tlZCBlYXJsaWVyLCBiZWZvcmUgdGhlIGVsZW1lbnQgaXMgYXR0YWNoZWQgdG8gdGhlIERPTS5cbiAgICAvLyBUaGlzIGNhbiBjYXVzZSBhbiBlcnJvciB0byBiZSB0aHJvd24gaW4gc29tZSBicm93c2VycyAoSUUvRWRnZSkgd2hpY2ggYXNzZXJ0IHRoYXQgdGhlXG4gICAgLy8gZWxlbWVudCBoYXMgYmVlbiBpbnNlcnRlZC5cbiAgICBpZiAobmV3VmFsdWUgJiYgdGhpcy5faXNJbml0aWFsaXplZCAmJiBlbGVtZW50LmJsdXIpIHtcbiAgICAgIC8vIE5vcm1hbGx5LCBuYXRpdmUgaW5wdXQgZWxlbWVudHMgYXV0b21hdGljYWxseSBibHVyIGlmIHRoZXkgdHVybiBkaXNhYmxlZC4gVGhpcyBiZWhhdmlvclxuICAgICAgLy8gaXMgcHJvYmxlbWF0aWMsIGJlY2F1c2UgaXQgd291bGQgbWVhbiB0aGF0IGl0IHRyaWdnZXJzIGFub3RoZXIgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSxcbiAgICAgIC8vIHdoaWNoIHRoZW4gY2F1c2VzIGEgY2hhbmdlZCBhZnRlciBjaGVja2VkIGVycm9yIGlmIHRoZSBpbnB1dCBlbGVtZW50IHdhcyBmb2N1c2VkIGJlZm9yZS5cbiAgICAgIGVsZW1lbnQuYmx1cigpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9kaXNhYmxlZCE6IGJvb2xlYW47XG5cbiAgLyoqIFRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQuICovXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cbiAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5fZm9ybWF0VmFsdWUodmFsdWUpO1xuXG4gICAgdGhpcy5fdmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWUhOiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKiBFbWl0cyB3aGVuIGEgYGNoYW5nZWAgZXZlbnQgaXMgZmlyZWQgb24gdGhpcyBgPGlucHV0PmAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjb2xvckNoYW5nZTogRXZlbnRFbWl0dGVyPE10eENvbG9yUGlja2VySW5wdXRFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8TXR4Q29sb3JQaWNrZXJJbnB1dEV2ZW50PigpO1xuXG4gIC8qKiBFbWl0cyB3aGVuIGFuIGBpbnB1dGAgZXZlbnQgaXMgZmlyZWQgb24gdGhpcyBgPGlucHV0PmAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjb2xvcklucHV0OiBFdmVudEVtaXR0ZXI8TXR4Q29sb3JQaWNrZXJJbnB1dEV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxNdHhDb2xvclBpY2tlcklucHV0RXZlbnQ+KCk7XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhlIGRpc2FibGVkIHN0YXRlIGhhcyBjaGFuZ2VkICovXG4gIF9kaXNhYmxlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcyAoZWl0aGVyIGR1ZSB0byB1c2VyIGlucHV0IG9yIHByb2dyYW1tYXRpYyBjaGFuZ2UpLiAqL1xuICBfdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+KCk7XG5cbiAgX29uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIF92YWxpZGF0b3JPbkNoYW5nZSA9ICgpID0+IHt9O1xuXG4gIHByaXZhdGUgX2N2YU9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIHByaXZhdGUgX3BpY2tlclN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAvKiogVGhlIGNvbWJpbmVkIGZvcm0gY29udHJvbCB2YWxpZGF0b3IgZm9yIHRoaXMgaW5wdXQuICovXG4gIHByaXZhdGUgX3ZhbGlkYXRvcjogVmFsaWRhdG9yRm4gfCBudWxsID0gVmFsaWRhdG9ycy5jb21wb3NlKFtdKTtcblxuICAvKiogV2hldGhlciB0aGUgbGFzdCB2YWx1ZSBzZXQgb24gdGhlIGlucHV0IHdhcyB2YWxpZC4gKi9cbiAgcHJpdmF0ZSBfbGFzdFZhbHVlVmFsaWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2Zvcm1GaWVsZDogTWF0Rm9ybUZpZWxkXG4gICkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9waWNrZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl92YWx1ZUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2Rpc2FibGVkQ2hhbmdlLmNvbXBsZXRlKCk7XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsaWRhdG9yT25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKiBAZG9jcy1wcml2YXRlICovXG4gIHZhbGlkYXRlKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdG9yID8gdGhpcy5fdmFsaWRhdG9yKGMpIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAYnJlYWtpbmctY2hhbmdlIDguMC4wIFVzZSBgZ2V0Q29ubmVjdGVkT3ZlcmxheU9yaWdpbmAgaW5zdGVhZFxuICAgKi9cbiAgZ2V0UG9wdXBDb25uZWN0aW9uRWxlbWVudFJlZigpOiBFbGVtZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDb25uZWN0ZWRPdmVybGF5T3JpZ2luKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZWxlbWVudCB0aGF0IHRoZSBjb2xvcnBpY2tlciBwb3B1cCBzaG91bGQgYmUgY29ubmVjdGVkIHRvLlxuICAgKiBAcmV0dXJuIFRoZSBlbGVtZW50IHRvIGNvbm5lY3QgdGhlIHBvcHVwIHRvLlxuICAgKi9cbiAgZ2V0Q29ubmVjdGVkT3ZlcmxheU9yaWdpbigpOiBFbGVtZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybUZpZWxkID8gdGhpcy5fZm9ybUZpZWxkLmdldENvbm5lY3RlZE92ZXJsYXlPcmlnaW4oKSA6IHRoaXMuX2VsZW1lbnRSZWY7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgSUQgb2YgYW4gZWxlbWVudCB0aGF0IHNob3VsZCBiZSB1c2VkIGEgZGVzY3JpcHRpb24gZm9yIHRoZSBvdmVybGF5LiAqL1xuICBnZXRPdmVybGF5TGFiZWxJZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5fZm9ybUZpZWxkKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZm9ybUZpZWxkLmdldExhYmVsSWQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5Jyk7XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX2N2YU9uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBfb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3QgaXNBbHREb3duQXJyb3cgPSBldmVudC5hbHRLZXkgJiYgZXZlbnQua2V5Q29kZSA9PT0gRE9XTl9BUlJPVztcblxuICAgIGlmICh0aGlzLl9waWNrZXIgJiYgaXNBbHREb3duQXJyb3cgJiYgIXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZWFkT25seSkge1xuICAgICAgdGhpcy5fcGlja2VyLm9wZW4oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZXMgYmx1ciBldmVudHMgb24gdGhlIGlucHV0LiAqL1xuICBfb25CbHVyKCkge1xuICAgIC8vIFJlZm9ybWF0IHRoZSBpbnB1dCBvbmx5IGlmIHdlIGhhdmUgYSB2YWxpZCB2YWx1ZS5cbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5fZm9ybWF0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gIH1cblxuICBfb25JbnB1dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgbmV4dFZhbHVlID0gdmFsdWU7XG5cbiAgICB0aGlzLl92YWx1ZSA9IG5leHRWYWx1ZTtcbiAgICB0aGlzLl9jdmFPbkNoYW5nZShuZXh0VmFsdWUpO1xuICAgIHRoaXMuX3ZhbHVlQ2hhbmdlLmVtaXQobmV4dFZhbHVlKTtcbiAgICB0aGlzLmNvbG9ySW5wdXQuZW1pdChuZXcgTXR4Q29sb3JQaWNrZXJJbnB1dEV2ZW50KHRoaXMsIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpO1xuICB9XG5cbiAgX29uQ2hhbmdlKCkge1xuICAgIHRoaXMuY29sb3JDaGFuZ2UuZW1pdChuZXcgTXR4Q29sb3JQaWNrZXJJbnB1dEV2ZW50KHRoaXMsIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHBhbGV0dGUgdXNlZCBieSB0aGUgaW5wdXQncyBmb3JtIGZpZWxkLCBpZiBhbnkuICovXG4gIGdldFRoZW1lUGFsZXR0ZSgpOiBUaGVtZVBhbGV0dGUge1xuICAgIHJldHVybiB0aGlzLl9mb3JtRmllbGQgPyB0aGlzLl9mb3JtRmllbGQuY29sb3IgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKiogVE9ETzogRm9ybWF0cyBhIHZhbHVlIGFuZCBzZXRzIGl0IG9uIHRoZSBpbnB1dCBlbGVtZW50LiAqL1xuICBwcml2YXRlIF9mb3JtYXRWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlID8gdmFsdWUgOiAnJztcbiAgfVxuXG4gIC8vIEFjY2VwdCBgYW55YCB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBvdGhlciBkaXJlY3RpdmVzIG9uIGA8aW5wdXQ+YCB0aGF0XG4gIC8vIG1heSBhY2NlcHQgZGlmZmVyZW50IHR5cGVzLlxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfdmFsdWU6IGFueTtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG59XG4iXX0=
@@ -0,0 +1,41 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { OverlayModule } from '@angular/cdk/overlay';
4
+ import { A11yModule } from '@angular/cdk/a11y';
5
+ import { PortalModule } from '@angular/cdk/portal';
6
+ import { MatButtonModule } from '@angular/material/button';
7
+ import { MtxColorpickerInput } from './colorpicker-input';
8
+ import { MtxColorpickerToggle, MtxColorpickerToggleIcon } from './colorpicker-toggle';
9
+ import { MtxColorpicker, MtxColorpickerContent, MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, } from './colorpicker';
10
+ import { ColorChromeModule } from 'ngx-color/chrome';
11
+ export class MtxColorpickerModule {
12
+ }
13
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
14
+ MtxColorpickerModule.decorators = [
15
+ { type: NgModule, args: [{
16
+ imports: [
17
+ CommonModule,
18
+ OverlayModule,
19
+ A11yModule,
20
+ PortalModule,
21
+ MatButtonModule,
22
+ ColorChromeModule,
23
+ ],
24
+ exports: [
25
+ MtxColorpicker,
26
+ MtxColorpickerContent,
27
+ MtxColorpickerInput,
28
+ MtxColorpickerToggle,
29
+ MtxColorpickerToggleIcon,
30
+ ],
31
+ declarations: [
32
+ MtxColorpicker,
33
+ MtxColorpickerContent,
34
+ MtxColorpickerInput,
35
+ MtxColorpickerToggle,
36
+ MtxColorpickerToggleIcon,
37
+ ],
38
+ providers: [MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER],
39
+ },] }
40
+ ];
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXItbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9jb2xvcnBpY2tlci9jb2xvcnBpY2tlci1tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RGLE9BQU8sRUFDTCxjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLGdEQUFnRCxHQUNqRCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQTJCckQsTUFBTSxPQUFPLG9CQUFvQjs7OztZQXpCaEMsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLGFBQWE7b0JBQ2IsVUFBVTtvQkFDVixZQUFZO29CQUNaLGVBQWU7b0JBQ2YsaUJBQWlCO2lCQUNsQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsY0FBYztvQkFDZCxxQkFBcUI7b0JBQ3JCLG1CQUFtQjtvQkFDbkIsb0JBQW9CO29CQUNwQix3QkFBd0I7aUJBQ3pCO2dCQUNELFlBQVksRUFBRTtvQkFDWixjQUFjO29CQUNkLHFCQUFxQjtvQkFDckIsbUJBQW1CO29CQUNuQixvQkFBb0I7b0JBQ3BCLHdCQUF3QjtpQkFDekI7Z0JBQ0QsU0FBUyxFQUFFLENBQUMsZ0RBQWdELENBQUM7YUFDOUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTXR4Q29sb3JwaWNrZXJJbnB1dCB9IGZyb20gJy4vY29sb3JwaWNrZXItaW5wdXQnO1xuaW1wb3J0IHsgTXR4Q29sb3JwaWNrZXJUb2dnbGUsIE10eENvbG9ycGlja2VyVG9nZ2xlSWNvbiB9IGZyb20gJy4vY29sb3JwaWNrZXItdG9nZ2xlJztcbmltcG9ydCB7XG4gIE10eENvbG9ycGlja2VyLFxuICBNdHhDb2xvcnBpY2tlckNvbnRlbnQsXG4gIE1UWF9DT0xPUlBJQ0tFUl9TQ1JPTExfU1RSQVRFR1lfRkFDVE9SWV9QUk9WSURFUixcbn0gZnJvbSAnLi9jb2xvcnBpY2tlcic7XG5cbmltcG9ydCB7IENvbG9yQ2hyb21lTW9kdWxlIH0gZnJvbSAnbmd4LWNvbG9yL2Nocm9tZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgT3ZlcmxheU1vZHVsZSxcbiAgICBBMTF5TW9kdWxlLFxuICAgIFBvcnRhbE1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgQ29sb3JDaHJvbWVNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBNdHhDb2xvcnBpY2tlcixcbiAgICBNdHhDb2xvcnBpY2tlckNvbnRlbnQsXG4gICAgTXR4Q29sb3JwaWNrZXJJbnB1dCxcbiAgICBNdHhDb2xvcnBpY2tlclRvZ2dsZSxcbiAgICBNdHhDb2xvcnBpY2tlclRvZ2dsZUljb24sXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIE10eENvbG9ycGlja2VyLFxuICAgIE10eENvbG9ycGlja2VyQ29udGVudCxcbiAgICBNdHhDb2xvcnBpY2tlcklucHV0LFxuICAgIE10eENvbG9ycGlja2VyVG9nZ2xlLFxuICAgIE10eENvbG9ycGlja2VyVG9nZ2xlSWNvbixcbiAgXSxcbiAgcHJvdmlkZXJzOiBbTVRYX0NPTE9SUElDS0VSX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZX1BST1ZJREVSXSxcbn0pXG5leHBvcnQgY2xhc3MgTXR4Q29sb3JwaWNrZXJNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,98 @@
1
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, Directive, Input, ViewChild, ViewEncapsulation, } from '@angular/core';
3
+ import { MatButton } from '@angular/material/button';
4
+ import { Subscription, of, merge } from 'rxjs';
5
+ import { MtxColorpicker } from './colorpicker';
6
+ /** Can be used to override the icon of a `mtxColorpickerToggle`. */
7
+ export class MtxColorpickerToggleIcon {
8
+ }
9
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
10
+ MtxColorpickerToggleIcon.decorators = [
11
+ { type: Directive, args: [{
12
+ selector: '[mtxColorpickerToggleIcon]',
13
+ },] }
14
+ ];
15
+ export class MtxColorpickerToggle {
16
+ constructor(_changeDetectorRef) {
17
+ this._changeDetectorRef = _changeDetectorRef;
18
+ this._stateChanges = Subscription.EMPTY;
19
+ }
20
+ /** Whether the toggle button is disabled. */
21
+ get disabled() {
22
+ if (this._disabled == null && this.picker) {
23
+ return this.picker.disabled;
24
+ }
25
+ return !!this._disabled;
26
+ }
27
+ set disabled(value) {
28
+ this._disabled = coerceBooleanProperty(value);
29
+ }
30
+ ngOnInit() { }
31
+ ngOnChanges(changes) {
32
+ if (changes.picker) {
33
+ this._watchStateChanges();
34
+ }
35
+ }
36
+ ngOnDestroy() {
37
+ this._stateChanges.unsubscribe();
38
+ }
39
+ ngAfterContentInit() {
40
+ this._watchStateChanges();
41
+ }
42
+ open(event) {
43
+ if (this.picker && !this.disabled) {
44
+ this.picker.open();
45
+ event.stopPropagation();
46
+ }
47
+ }
48
+ _watchStateChanges() {
49
+ const pickerDisabled = this.picker ? this.picker._disabledChange : of();
50
+ const inputDisabled = this.picker && this.picker.pickerInput ? this.picker.pickerInput._disabledChange : of();
51
+ const datepickerToggled = this.picker
52
+ ? merge(this.picker.openedStream, this.picker.closedStream)
53
+ : of();
54
+ this._stateChanges.unsubscribe();
55
+ this._stateChanges = merge(pickerDisabled, inputDisabled, datepickerToggled).subscribe(() => this._changeDetectorRef.markForCheck());
56
+ }
57
+ }
58
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
59
+ MtxColorpickerToggle.decorators = [
60
+ { type: Component, args: [{
61
+ selector: 'mtx-colorpicker-toggle',
62
+ template: "<button #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 [disableRipple]=\"disableRipple\"\n (click)=\"open($event)\">\n\n <svg *ngIf=\"!_customIcon\"\n class=\"mtx-colorpicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path\n d=\"M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z\" />\n </svg>\n\n <ng-content select=\"[mtxColorpickerToggleIcon]\"></ng-content>\n</button>\n",
63
+ host: {
64
+ 'class': 'mtx-colorpicker-toggle',
65
+ // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the
66
+ // consumer may have provided, while still being able to receive focus.
67
+ '[attr.tabindex]': 'disabled ? null : -1',
68
+ '[class.mtx-colorpicker-toggle-active]': 'picker && picker.opened',
69
+ '[class.mat-accent]': 'picker && picker.color === "accent"',
70
+ '[class.mat-warn]': 'picker && picker.color === "warn"',
71
+ '(focus)': '_button.focus()',
72
+ },
73
+ exportAs: 'mtxColorpickerToggle',
74
+ encapsulation: ViewEncapsulation.None,
75
+ changeDetection: ChangeDetectionStrategy.OnPush,
76
+ styles: [".mat-form-field-appearance-legacy .mat-form-field-prefix .mtx-colorpicker-toggle-default-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mtx-colorpicker-toggle-default-icon{width:1em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mtx-colorpicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mtx-colorpicker-toggle-default-icon{display:block;width:1.5em;height:1.5em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mtx-colorpicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mtx-colorpicker-toggle-default-icon{margin:auto}\n"]
77
+ },] }
78
+ ];
79
+ /**
80
+ * @type {function(): !Array<(null|{
81
+ * type: ?,
82
+ * decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>),
83
+ * })>}
84
+ * @nocollapse
85
+ */
86
+ MtxColorpickerToggle.ctorParameters = () => [
87
+ { type: ChangeDetectorRef }
88
+ ];
89
+ /** @type {!Object<string, !Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
90
+ MtxColorpickerToggle.propDecorators = {
91
+ picker: [{ type: Input, args: ['for',] }],
92
+ tabIndex: [{ type: Input }],
93
+ disabled: [{ type: Input }],
94
+ disableRipple: [{ type: Input }],
95
+ _customIcon: [{ type: ContentChild, args: [MtxColorpickerToggleIcon,] }],
96
+ _button: [{ type: ViewChild, args: ['button',] }]
97
+ };
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXItdG9nZ2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9jb2xvcnBpY2tlci9jb2xvcnBpY2tlci10b2dnbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxFQUNULEtBQUssRUFLTCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxvRUFBb0U7QUFJcEUsTUFBTSxPQUFPLHdCQUF3Qjs7OztZQUhwQyxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjthQUN2Qzs7QUFxQkQsTUFBTSxPQUFPLG9CQUFvQjtJQWdDL0IsWUFBb0Isa0JBQXFDO1FBQXJDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUEvQmpELGtCQUFhLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztJQStCaUIsQ0FBQztJQXZCN0QsNkNBQTZDO0lBQzdDLElBQ0ksUUFBUTtRQUNWLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN6QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzdCO1FBRUQsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFjRCxRQUFRLEtBQUksQ0FBQztJQUViLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQVk7UUFDZixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDeEUsTUFBTSxhQUFhLEdBQ2pCLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDMUYsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsTUFBTTtZQUNuQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBQzNELENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUVULElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDMUYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUN2QyxDQUFDO0lBQ0osQ0FBQzs7OztZQXZGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtnQkFDbEMsb3JDQUF3QztnQkFFeEMsSUFBSSxFQUFFO29CQUNKLE9BQU8sRUFBRSx3QkFBd0I7b0JBQ2pDLHdGQUF3RjtvQkFDeEYsdUVBQXVFO29CQUN2RSxpQkFBaUIsRUFBRSxzQkFBc0I7b0JBQ3pDLHVDQUF1QyxFQUFFLHlCQUF5QjtvQkFDbEUsb0JBQW9CLEVBQUUscUNBQXFDO29CQUMzRCxrQkFBa0IsRUFBRSxtQ0FBbUM7b0JBQ3ZELFNBQVMsRUFBRSxpQkFBaUI7aUJBQzdCO2dCQUNELFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7Ozs7Ozs7Ozs7WUF2Q0MsaUJBQWlCOzs7O3FCQTRDaEIsS0FBSyxTQUFDLEtBQUs7dUJBR1gsS0FBSzt1QkFHTCxLQUFLOzRCQWNMLEtBQUs7MEJBR0wsWUFBWSxTQUFDLHdCQUF3QjtzQkFHckMsU0FBUyxTQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIG9mLCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTXR4Q29sb3JwaWNrZXIgfSBmcm9tICcuL2NvbG9ycGlja2VyJztcblxuLyoqIENhbiBiZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBpY29uIG9mIGEgYG10eENvbG9ycGlja2VyVG9nZ2xlYC4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttdHhDb2xvcnBpY2tlclRvZ2dsZUljb25dJyxcbn0pXG5leHBvcnQgY2xhc3MgTXR4Q29sb3JwaWNrZXJUb2dnbGVJY29uIHt9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ210eC1jb2xvcnBpY2tlci10b2dnbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sb3JwaWNrZXItdG9nZ2xlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2xvcnBpY2tlci10b2dnbGUuc2NzcyddLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ210eC1jb2xvcnBpY2tlci10b2dnbGUnLFxuICAgIC8vIEFsd2F5cyBzZXQgdGhlIHRhYmluZGV4IHRvIC0xIHNvIHRoYXQgaXQgZG9lc24ndCBvdmVybGFwIHdpdGggYW55IGN1c3RvbSB0YWJpbmRleCB0aGVcbiAgICAvLyBjb25zdW1lciBtYXkgaGF2ZSBwcm92aWRlZCwgd2hpbGUgc3RpbGwgYmVpbmcgYWJsZSB0byByZWNlaXZlIGZvY3VzLlxuICAgICdbYXR0ci50YWJpbmRleF0nOiAnZGlzYWJsZWQgPyBudWxsIDogLTEnLFxuICAgICdbY2xhc3MubXR4LWNvbG9ycGlja2VyLXRvZ2dsZS1hY3RpdmVdJzogJ3BpY2tlciAmJiBwaWNrZXIub3BlbmVkJyxcbiAgICAnW2NsYXNzLm1hdC1hY2NlbnRdJzogJ3BpY2tlciAmJiBwaWNrZXIuY29sb3IgPT09IFwiYWNjZW50XCInLFxuICAgICdbY2xhc3MubWF0LXdhcm5dJzogJ3BpY2tlciAmJiBwaWNrZXIuY29sb3IgPT09IFwid2FyblwiJyxcbiAgICAnKGZvY3VzKSc6ICdfYnV0dG9uLmZvY3VzKCknLFxuICB9LFxuICBleHBvcnRBczogJ210eENvbG9ycGlja2VyVG9nZ2xlJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE10eENvbG9ycGlja2VyVG9nZ2xlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3N0YXRlQ2hhbmdlcyA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAvKiogQ29sb3JwaWNrZXIgaW5zdGFuY2UgdGhhdCB0aGUgYnV0dG9uIHdpbGwgdG9nZ2xlLiAqL1xuICBASW5wdXQoJ2ZvcicpIHBpY2tlciE6IE10eENvbG9ycGlja2VyO1xuXG4gIC8qKiBUYWJpbmRleCBmb3IgdGhlIHRvZ2dsZS4gKi9cbiAgQElucHV0KCkgdGFiSW5kZXghOiBudW1iZXI7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHRvZ2dsZSBidXR0b24gaXMgZGlzYWJsZWQuICovXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQgPT0gbnVsbCAmJiB0aGlzLnBpY2tlcikge1xuICAgICAgcmV0dXJuIHRoaXMucGlja2VyLmRpc2FibGVkO1xuICAgIH1cblxuICAgIHJldHVybiAhIXRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9kaXNhYmxlZCE6IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgcmlwcGxlcyBvbiB0aGUgdG9nZ2xlIHNob3VsZCBiZSBkaXNhYmxlZC4gKi9cbiAgQElucHV0KCkgZGlzYWJsZVJpcHBsZSE6IGJvb2xlYW47XG5cbiAgLyoqIEN1c3RvbSBpY29uIHNldCBieSB0aGUgY29uc3VtZXIuICovXG4gIEBDb250ZW50Q2hpbGQoTXR4Q29sb3JwaWNrZXJUb2dnbGVJY29uKSBfY3VzdG9tSWNvbiE6IE10eENvbG9ycGlja2VyVG9nZ2xlSWNvbjtcblxuICAvKiogVW5kZXJseWluZyBidXR0b24gZWxlbWVudC4gKi9cbiAgQFZpZXdDaGlsZCgnYnV0dG9uJykgX2J1dHRvbiE6IE1hdEJ1dHRvbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5waWNrZXIpIHtcbiAgICAgIHRoaXMuX3dhdGNoU3RhdGVDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3RhdGVDaGFuZ2VzLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5fd2F0Y2hTdGF0ZUNoYW5nZXMoKTtcbiAgfVxuXG4gIG9wZW4oZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGlja2VyICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnBpY2tlci5vcGVuKCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF93YXRjaFN0YXRlQ2hhbmdlcygpIHtcbiAgICBjb25zdCBwaWNrZXJEaXNhYmxlZCA9IHRoaXMucGlja2VyID8gdGhpcy5waWNrZXIuX2Rpc2FibGVkQ2hhbmdlIDogb2YoKTtcbiAgICBjb25zdCBpbnB1dERpc2FibGVkID1cbiAgICAgIHRoaXMucGlja2VyICYmIHRoaXMucGlja2VyLnBpY2tlcklucHV0ID8gdGhpcy5waWNrZXIucGlja2VySW5wdXQuX2Rpc2FibGVkQ2hhbmdlIDogb2YoKTtcbiAgICBjb25zdCBkYXRlcGlja2VyVG9nZ2xlZCA9IHRoaXMucGlja2VyXG4gICAgICA/IG1lcmdlKHRoaXMucGlja2VyLm9wZW5lZFN0cmVhbSwgdGhpcy5waWNrZXIuY2xvc2VkU3RyZWFtKVxuICAgICAgOiBvZigpO1xuXG4gICAgdGhpcy5fc3RhdGVDaGFuZ2VzLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fc3RhdGVDaGFuZ2VzID0gbWVyZ2UocGlja2VyRGlzYWJsZWQsIGlucHV0RGlzYWJsZWQsIGRhdGVwaWNrZXJUb2dnbGVkKS5zdWJzY3JpYmUoKCkgPT5cbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpXG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZVJpcHBsZTogQm9vbGVhbklucHV0O1xufVxuIl19