@ng-matero/extensions 10.16.4 → 10.16.5

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 (40) hide show
  1. package/bundles/{ng-matero-extensions-button.umd.js → mtxButton.umd.js} +2 -2
  2. package/bundles/mtxButton.umd.js.map +1 -0
  3. package/bundles/{ng-matero-extensions-button.umd.min.js → mtxButton.umd.min.js} +1 -1
  4. package/bundles/{ng-matero-extensions-button.umd.min.js.map → mtxButton.umd.min.js.map} +0 -0
  5. package/bundles/mtxCheckboxGroup.umd.js +76 -14
  6. package/bundles/mtxCheckboxGroup.umd.js.map +1 -1
  7. package/bundles/mtxCheckboxGroup.umd.min.js +1 -1
  8. package/bundles/mtxCheckboxGroup.umd.min.js.map +1 -1
  9. package/bundles/mtxColorPicker.umd.js +27 -4
  10. package/bundles/mtxColorPicker.umd.js.map +1 -1
  11. package/bundles/mtxColorPicker.umd.min.js +1 -1
  12. package/bundles/mtxColorPicker.umd.min.js.map +1 -1
  13. package/bundles/mtxFormGroup.umd.js +2 -0
  14. package/bundles/mtxFormGroup.umd.js.map +1 -1
  15. package/bundles/mtxFormGroup.umd.min.js +1 -1
  16. package/bundles/mtxFormGroup.umd.min.js.map +1 -1
  17. package/button/{ng-matero-extensions-button.d.ts → mtxButton.d.ts} +0 -0
  18. package/button/{ng-matero-extensions-button.metadata.json → mtxButton.metadata.json} +0 -0
  19. package/button/package.json +7 -7
  20. package/checkbox-group/checkbox-group.component.d.ts +10 -6
  21. package/checkbox-group/mtxCheckboxGroup.metadata.json +1 -1
  22. package/color-picker/color-picker.component.d.ts +4 -0
  23. package/color-picker/mtxColorPicker.metadata.json +1 -1
  24. package/esm2015/button/mtxButton.js +10 -0
  25. package/esm2015/checkbox-group/checkbox-group.component.js +69 -12
  26. package/esm2015/color-picker/color-picker.component.js +24 -5
  27. package/esm2015/form-group/form-group.component.js +4 -2
  28. package/fesm2015/{ng-matero-extensions-button.js → mtxButton.js} +2 -2
  29. package/fesm2015/mtxButton.js.map +1 -0
  30. package/fesm2015/mtxCheckboxGroup.js +68 -11
  31. package/fesm2015/mtxCheckboxGroup.js.map +1 -1
  32. package/fesm2015/mtxColorPicker.js +23 -4
  33. package/fesm2015/mtxColorPicker.js.map +1 -1
  34. package/fesm2015/mtxFormGroup.js +3 -1
  35. package/fesm2015/mtxFormGroup.js.map +1 -1
  36. package/form-group/mtxFormGroup.metadata.json +1 -1
  37. package/package.json +1 -1
  38. package/bundles/ng-matero-extensions-button.umd.js.map +0 -1
  39. package/esm2015/button/ng-matero-extensions-button.js +0 -10
  40. package/fesm2015/ng-matero-extensions-button.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../projects/extensions/color-picker/color-picker.component.ts","../../../projects/extensions/color-picker/color-picker.module.ts"],"names":["nextUniqueId","MtxColorPickerComponent","_focusMonitor","_elementRef","_changeDetectorRef","_zone","ngControl","_formField","_document","_this","this","_value","stateChanges","Subject","_uid","_focused","_required","_disabled","errorState","controlType","_onChange","_onTouched","colorChange","EventEmitter","_panelOpen","_canOpenOnNextFocus","_windowBlurHandler","activeElement","nativeElement","monitor","subscribe","origin","next","valueAccessor","Object","defineProperty","prototype","newValue","_id","value","_placeholder","focused","empty","coerceBooleanProperty","ngDoCheck","invalid","touched","ngAfterViewInit","window","runOutsideAngular","addEventListener","_supportsShadowDom","element","rootNode","getRootNode","_isInsideShadowRoot","ShadowRoot","ngOnDestroy","complete","stopMonitoring","setDescribedByIds","ids","_ariaDescribedby","join","onContainerClick","_handleFocus","writeValue","markForCheck","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","disabled","trigger","openMenu","_closingActionsSubscription","merge","_getOutsideClickStream","pipe","event","closeMenu","unsubscribe","_openPanel","_closePanel","_onColorChanged","model","color","hex","emit","fromEvent","filter","clickTarget","composedPath","target","formField","contains","Component","args","selector","exportAs","template","encapsulation","ViewEncapsulation","None","changeDetection","ChangeDetectionStrategy","OnPush","providers","provide","MatFormFieldControl","useExisting","FocusMonitor","ElementRef","ChangeDetectorRef","NgZone","NgControl","decorators","type","Optional","Self","MatFormField","Host","Inject","DOCUMENT","Input","Output","ViewChild","MatMenuTrigger","static","NgModule","imports","CommonModule","FormsModule","MatMenuModule","MatFormFieldModule","MatInputModule","ColorChromeModule","exports","declarations"],"mappings":"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","sourcesContent":["import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnDestroy,\n Optional,\n Self,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n Inject,\n DoCheck,\n ViewChild,\n Host,\n AfterViewInit,\n NgZone,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { _supportsShadowDom } from '@angular/cdk/platform';\nimport { MatFormFieldControl, MatFormField } from '@angular/material/form-field';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { Subject, Observable, merge, fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ColorEvent } from 'ngx-color';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'mtx-color-picker',\n exportAs: 'mtxColorPicker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: MatFormFieldControl, useExisting: MtxColorPickerComponent }],\n})\nexport class MtxColorPickerComponent\n implements OnDestroy, DoCheck, AfterViewInit, ControlValueAccessor, MatFormFieldControl<any> {\n /** Value of the color picker control. */\n @Input()\n get value(): string | null {\n return this._value;\n }\n set value(newValue: string | null) {\n this._value = newValue;\n this._onChange(newValue);\n this.stateChanges.next();\n }\n private _value: string | null = '';\n\n /** Implemented as part of MatFormFieldControl. */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /** Unique id for this input. */\n private _uid = `mtx-color-picker-${nextUniqueId++}`;\n\n /** Unique id of the element. */\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n private _id: string;\n\n /** Placeholder to be shown if value is empty. */\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder: string;\n\n /** Whether the input is focused. */\n get focused(): boolean {\n return this._focused || this._panelOpen;\n }\n private _focused = false;\n\n get empty(): boolean {\n return !this.value;\n }\n\n get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _required = false;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _disabled = false;\n\n errorState = false;\n\n /** A name for this control that can be used by `mat-form-field`. */\n controlType = 'mtx-color-picker';\n\n /** The aria-describedby attribute on the color picker for improved a11y. */\n _ariaDescribedby: string;\n\n /** `View -> model callback called when value changes` */\n _onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when color picker has been touched` */\n _onTouched = () => {};\n\n /** Event emitted when the color changed */\n @Output() readonly colorChange = new EventEmitter<ColorEvent>();\n\n @ViewChild(MatMenuTrigger, { static: true }) trigger: MatMenuTrigger;\n\n /** Whether or not the overlay panel is open. */\n _panelOpen = false;\n\n /** The subscription for closing actions (some are bound to document). */\n private _closingActionsSubscription: Subscription;\n\n /** Whether the element is inside of a ShadowRoot component. */\n private _isInsideShadowRoot: boolean;\n\n /**\n * Whether the color picker can open the next time it is focused. Used to prevent a focused,\n * closed color picker from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n private _canOpenOnNextFocus = true;\n\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n private _windowBlurHandler = () => {\n // If the user blurred the window while the color picker is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this._canOpenOnNextFocus =\n this._document.activeElement !== this._elementRef.nativeElement || this._panelOpen;\n };\n\n constructor(\n private _focusMonitor: FocusMonitor,\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n private _zone: NgZone,\n @Optional() @Self() public ngControl: NgControl,\n @Optional() @Host() private _formField: MatFormField,\n @Optional() @Inject(DOCUMENT) private _document: any\n ) {\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\n if (this._focused && !origin) {\n this._onTouched();\n }\n this._focused = !!origin;\n this.stateChanges.next();\n });\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngDoCheck(): void {\n if (this.ngControl) {\n this.errorState = (this.ngControl.invalid && this.ngControl.touched) as boolean;\n this.stateChanges.next();\n }\n }\n\n ngAfterViewInit() {\n if (typeof window !== 'undefined') {\n this._zone.runOutsideAngular(() => {\n window.addEventListener('blur', this._windowBlurHandler);\n });\n\n if (_supportsShadowDom()) {\n const element = this._elementRef.nativeElement;\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n\n // We need to take the `ShadowRoot` off of `window`, because the built-in types are\n // incorrect. See https://github.com/Microsoft/TypeScript/issues/27929.\n this._isInsideShadowRoot = rootNode instanceof (window as any).ShadowRoot;\n }\n }\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Implemented as part of MatFormFieldControl. */\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.join(' ');\n }\n\n /** Implemented as part of MatFormFieldControl. */\n onContainerClick() {\n this._handleFocus();\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value New value to be written to the model.\n */\n writeValue(value: string | null): void {\n this.value = value || '';\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n /** Open panel with input focus event. */\n _handleFocus() {\n this.trigger.openMenu();\n\n this._closingActionsSubscription = merge(this._getOutsideClickStream())\n .pipe()\n .subscribe(event => {\n this.trigger.closeMenu();\n this._closingActionsSubscription.unsubscribe();\n });\n }\n\n /** Opens the overlay panel. */\n _openPanel() {\n if (this._focused) {\n this._panelOpen = true;\n }\n }\n\n /** Closes the overlay panel and focuses the host element. */\n _closePanel() {\n if (this._panelOpen) {\n this._panelOpen = false;\n this._changeDetectorRef.markForCheck();\n this._onTouched();\n }\n }\n\n /** The callback of color changed. */\n _onColorChanged(model: ColorEvent) {\n this.value = model.color.hex;\n this.colorChange.emit(model);\n }\n\n /** Stream of clicks outside of the color picker panel. */\n private _getOutsideClickStream(): Observable<any> {\n return merge(\n fromEvent(this._document, 'click') as Observable<MouseEvent>,\n fromEvent(this._document, 'touchend') as Observable<TouchEvent>\n ).pipe(\n filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = (this._isInsideShadowRoot && event.composedPath\n ? event.composedPath()[0]\n : event.target) as HTMLElement;\n const formField = this._formField ? this._formField._elementRef.nativeElement : null;\n\n return (\n clickTarget !== this._elementRef.nativeElement &&\n (!formField || !formField.contains(clickTarget))\n );\n })\n );\n }\n\n static ngAcceptInputType_required: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { ColorChromeModule } from 'ngx-color/chrome';\n\nimport { MtxColorPickerComponent } from './color-picker.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatMenuModule,\n MatFormFieldModule,\n MatInputModule,\n ColorChromeModule,\n ],\n exports: [MtxColorPickerComponent],\n declarations: [MtxColorPickerComponent],\n})\nexport class MtxColorPickerModule {}\n"]}
1
+ {"version":3,"sources":["../../../projects/extensions/color-picker/color-picker.component.ts","../../../projects/extensions/color-picker/color-picker.module.ts"],"names":["nextUniqueId","MtxColorPickerComponent","_focusMonitor","_elementRef","_changeDetectorRef","_zone","ngControl","_formField","_document","_this","this","_value","stateChanges","Subject","_uid","_focused","_required","_disabled","_readonly","errorState","controlType","_onChange","_onTouched","colorChange","EventEmitter","_panelOpen","_canOpenOnNextFocus","_windowBlurHandler","activeElement","nativeElement","monitor","subscribe","origin","next","valueAccessor","Object","defineProperty","prototype","newValue","_id","value","_placeholder","focused","empty","coerceBooleanProperty","ngDoCheck","invalid","touched","ngAfterViewInit","window","runOutsideAngular","addEventListener","_supportsShadowDom","element","rootNode","getRootNode","_isInsideShadowRoot","ShadowRoot","ngOnDestroy","complete","stopMonitoring","setDescribedByIds","ids","_ariaDescribedby","join","onContainerClick","_handleFocus","writeValue","markForCheck","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","disabled","trigger","openMenu","_closingActionsSubscription","merge","_getOutsideClickStream","pipe","event","closeMenu","unsubscribe","_openPanel","_closePanel","_onColorChanged","model","color","hex","emit","fromEvent","filter","clickTarget","composedPath","target","formField","contains","Component","args","selector","exportAs","template","encapsulation","ViewEncapsulation","None","changeDetection","ChangeDetectionStrategy","OnPush","providers","provide","MatFormFieldControl","useExisting","FocusMonitor","ElementRef","ChangeDetectorRef","NgZone","NgControl","decorators","type","Optional","Self","MatFormField","Host","Inject","DOCUMENT","Input","Output","ViewChild","MatMenuTrigger","static","NgModule","imports","CommonModule","FormsModule","MatMenuModule","MatFormFieldModule","MatInputModule","ColorChromeModule","exports","declarations"],"mappings":"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","sourcesContent":["import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnDestroy,\n Optional,\n Self,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n Inject,\n DoCheck,\n ViewChild,\n Host,\n AfterViewInit,\n NgZone,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { _supportsShadowDom } from '@angular/cdk/platform';\nimport { MatFormFieldControl, MatFormField } from '@angular/material/form-field';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { Subject, Observable, merge, fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ColorEvent } from 'ngx-color';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'mtx-color-picker',\n exportAs: 'mtxColorPicker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: MatFormFieldControl, useExisting: MtxColorPickerComponent }],\n})\nexport class MtxColorPickerComponent\n implements OnDestroy, DoCheck, AfterViewInit, ControlValueAccessor, MatFormFieldControl<any>\n{\n /** Value of the color picker control. */\n @Input()\n get value(): string | null {\n return this._value;\n }\n set value(newValue: string | null) {\n this._value = newValue;\n this._onChange(newValue);\n this.stateChanges.next();\n }\n private _value: string | null = '';\n\n /** Implemented as part of MatFormFieldControl. */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /** Unique id for this input. */\n private _uid = `mtx-color-picker-${nextUniqueId++}`;\n\n /** Unique id of the element. */\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n private _id: string;\n\n /** Placeholder to be shown if value is empty. */\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder: string;\n\n /** Whether the input is focused. */\n get focused(): boolean {\n return this._focused || this._panelOpen;\n }\n private _focused = false;\n\n get empty(): boolean {\n return !this.value;\n }\n\n get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _required = false;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _disabled = false;\n\n /** Whether the element is readonly. */\n @Input()\n get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: boolean) {\n this._readonly = coerceBooleanProperty(value);\n }\n private _readonly = false;\n\n errorState = false;\n\n /** A name for this control that can be used by `mat-form-field`. */\n controlType = 'mtx-color-picker';\n\n /** The aria-describedby attribute on the color picker for improved a11y. */\n _ariaDescribedby: string;\n\n /** `View -> model callback called when value changes` */\n _onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when color picker has been touched` */\n _onTouched = () => {};\n\n /** Event emitted when the color changed */\n @Output() readonly colorChange = new EventEmitter<ColorEvent>();\n\n @ViewChild(MatMenuTrigger, { static: true }) trigger: MatMenuTrigger;\n\n /** Whether or not the overlay panel is open. */\n _panelOpen = false;\n\n /** The subscription for closing actions (some are bound to document). */\n private _closingActionsSubscription: Subscription;\n\n /** Whether the element is inside of a ShadowRoot component. */\n private _isInsideShadowRoot: boolean;\n\n /**\n * Whether the color picker can open the next time it is focused. Used to prevent a focused,\n * closed color picker from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n private _canOpenOnNextFocus = true;\n\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n private _windowBlurHandler = () => {\n // If the user blurred the window while the color picker is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this._canOpenOnNextFocus =\n this._document.activeElement !== this._elementRef.nativeElement || this._panelOpen;\n };\n\n constructor(\n private _focusMonitor: FocusMonitor,\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n private _zone: NgZone,\n @Optional() @Self() public ngControl: NgControl,\n @Optional() @Host() private _formField: MatFormField,\n @Optional() @Inject(DOCUMENT) private _document: any\n ) {\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\n if (this._focused && !origin) {\n this._onTouched();\n }\n this._focused = !!origin;\n this.stateChanges.next();\n });\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngDoCheck(): void {\n if (this.ngControl) {\n this.errorState = (this.ngControl.invalid && this.ngControl.touched) as boolean;\n this.stateChanges.next();\n }\n }\n\n ngAfterViewInit() {\n if (typeof window !== 'undefined') {\n this._zone.runOutsideAngular(() => {\n window.addEventListener('blur', this._windowBlurHandler);\n });\n\n if (_supportsShadowDom()) {\n const element = this._elementRef.nativeElement;\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n\n // We need to take the `ShadowRoot` off of `window`, because the built-in types are\n // incorrect. See https://github.com/Microsoft/TypeScript/issues/27929.\n this._isInsideShadowRoot = rootNode instanceof (window as any).ShadowRoot;\n }\n }\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Implemented as part of MatFormFieldControl. */\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.join(' ');\n }\n\n /** Implemented as part of MatFormFieldControl. */\n onContainerClick() {\n this._handleFocus();\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value New value to be written to the model.\n */\n writeValue(value: string | null): void {\n this.value = value || '';\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n /** Open panel with input focus event. */\n _handleFocus() {\n this.trigger.openMenu();\n\n this._closingActionsSubscription = merge(this._getOutsideClickStream())\n .pipe()\n .subscribe(event => {\n this.trigger.closeMenu();\n this._closingActionsSubscription.unsubscribe();\n });\n }\n\n /** Opens the overlay panel. */\n _openPanel() {\n if (this._focused) {\n this._panelOpen = true;\n }\n }\n\n /** Closes the overlay panel and focuses the host element. */\n _closePanel() {\n if (this._panelOpen) {\n this._panelOpen = false;\n this._changeDetectorRef.markForCheck();\n this._onTouched();\n }\n }\n\n /** The callback of color changed. */\n _onColorChanged(model: ColorEvent) {\n this.value = model.color.hex;\n this.colorChange.emit(model);\n }\n\n /** Stream of clicks outside of the color picker panel. */\n private _getOutsideClickStream(): Observable<any> {\n return merge(\n fromEvent(this._document, 'click') as Observable<MouseEvent>,\n fromEvent(this._document, 'touchend') as Observable<TouchEvent>\n ).pipe(\n filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = (\n this._isInsideShadowRoot && event.composedPath ? event.composedPath()[0] : event.target\n ) as HTMLElement;\n const formField = this._formField ? this._formField._elementRef.nativeElement : null;\n\n return (\n clickTarget !== this._elementRef.nativeElement &&\n (!formField || !formField.contains(clickTarget))\n );\n })\n );\n }\n\n static ngAcceptInputType_required: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { ColorChromeModule } from 'ngx-color/chrome';\n\nimport { MtxColorPickerComponent } from './color-picker.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatMenuModule,\n MatFormFieldModule,\n MatInputModule,\n ColorChromeModule,\n ],\n exports: [MtxColorPickerComponent],\n declarations: [MtxColorPickerComponent],\n})\nexport class MtxColorPickerModule {}\n"]}
@@ -53,11 +53,13 @@
53
53
  MtxFormGroupComponent.decorators = [
54
54
  { type: core.Component, args: [{
55
55
  selector: 'mtx-form-group',
56
+ exportAs: 'mtxFormGroup',
56
57
  host: {
57
58
  class: 'mtx-form-group',
58
59
  },
59
60
  template: "<div class=\"mtx-form-field-layout mtx-form-field-appearance-fluent\">\r\n <label *ngIf=\"label\"\r\n class=\"mtx-form-label\"\r\n [class.mtx-form-label-marker]=\"showRequiredMarker\">{{label}}</label>\r\n <ng-content></ng-content>\r\n</div>\r\n",
60
61
  encapsulation: core.ViewEncapsulation.None,
62
+ changeDetection: core.ChangeDetectionStrategy.OnPush,
61
63
  styles: [".mtx-form-group{display:inline-block}.mtx-form-group .mtx-form-field-layout{align-items:flex-start;display:inline-flex;width:100%}.mtx-form-group .mtx-form-label{display:inline-block;line-height:1.125;padding-bottom:calc(.375em + 1px);padding-right:1em;padding-top:calc(.375em + 1px);position:relative}[dir=rtl] .mtx-form-group .mtx-form-label{padding-left:1em;padding-right:unset}.mtx-form-group .mtx-form-label.mtx-form-label-marker:after{content:\"*\";margin-left:4px}[dir=rtl] .mtx-form-group .mtx-form-label.mtx-form-label-marker:after{margin-left:auto;margin-right:4px}.mtx-form-field-appearance-fluent .mat-form-field{margin-bottom:.25em}.mtx-form-field-appearance-fluent .mat-form-field .mat-form-field-suffix .mat-icon-button{height:1.5em;width:1.5em}.mtx-form-field-appearance-fluent .mat-form-field .mat-form-field-suffix .mat-icon-button .mat-datepicker-toggle-default-icon{width:1em}.mtx-form-field-appearance-fluent .mat-form-field-has-label .mat-form-field-flex{margin-top:.84375em}.mtx-form-field-appearance-fluent .mat-form-field-appearance-standard .mat-form-field-flex{padding-top:0}.mtx-form-field-appearance-fluent .mat-form-field-flex{align-items:center;border-radius:2px;padding:0 .5em}.mtx-form-field-appearance-fluent .mat-form-field-infix{border-top:0;padding:.375em 0}.mtx-form-field-appearance-fluent .mat-form-field-prefix,.mtx-form-field-appearance-fluent .mat-form-field-suffix{display:inline-flex}.mtx-form-field-appearance-fluent .mat-form-field-prefix .mat-icon,.mtx-form-field-appearance-fluent .mat-form-field-suffix .mat-icon{line-height:normal}.mtx-form-field-appearance-fluent .mat-form-field-underline{display:none}.mtx-form-field-appearance-fluent .mtx-select{display:block;margin:0 -8px}.mtx-form-field-appearance-fluent .ng-select{margin-top:-.4375em;padding-left:8px;padding-right:8px;padding-top:.4375em}"]
62
64
  }] }
63
65
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"mtxFormGroup.umd.js","sources":["../../../projects/extensions/form-group/form-group.component.ts","../../../projects/extensions/form-group/form-group.module.ts"],"sourcesContent":["import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n Input,\r\n OnInit,\r\n QueryList,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { MatFormField } from '@angular/material/form-field';\r\n\r\n@Component({\r\n selector: 'mtx-form-group',\r\n host: {\r\n class: 'mtx-form-group',\r\n },\r\n templateUrl: './form-group.component.html',\r\n styleUrls: ['./form-group.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MtxFormGroupComponent implements OnInit, AfterContentInit {\r\n @ContentChildren(MatFormField) formFields!: QueryList<MatFormField>;\r\n\r\n @Input() label: string;\r\n @Input()\r\n get showRequiredMarker() {\r\n return this._showRequiredMarker;\r\n }\r\n set showRequiredMarker(value: boolean) {\r\n this._showRequiredMarker = coerceBooleanProperty(value);\r\n }\r\n private _showRequiredMarker = false;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n ngAfterContentInit() {\r\n this.formFields.forEach(item => {\r\n item.appearance = 'standard';\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MtxFormGroupComponent } from './form-group.component';\n\n@NgModule({\n imports: [CommonModule],\n exports: [MtxFormGroupComponent],\n declarations: [MtxFormGroupComponent],\n})\nexport class MtxFormGroupModule {}\n"],"names":["coerceBooleanProperty","Component","ViewEncapsulation","ContentChildren","MatFormField","Input","NgModule","CommonModule"],"mappings":";;;;;;;;;;;;QAkCE;YAFQ,wBAAmB,GAAG,KAAK,CAAC;SAEpB;QAThB,sBACI,qDAAkB;;;;iBADtB;gBAEE,OAAO,IAAI,CAAC,mBAAmB,CAAC;aACjC;;;;;iBACD,UAAuB,KAAc;gBACnC,IAAI,CAAC,mBAAmB,GAAGA,8BAAqB,CAAC,KAAK,CAAC,CAAC;aACzD;;;WAHA;;;;QAQD,wCAAQ,GAAR,eAAmB;;;;QAEnB,kDAAkB,GAAlB;YACE,IAAI,CAAC,UAAU,CAAC,OAAO;;;eAAC;;;gBAAA,IAAI;gBAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;aAC9B,EAAC,CAAC;SACJ;;;;gBA9BFC,cAAS,SAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,IAAI,EAAE;wBACJ,KAAK,EAAE,gBAAgB;qBACxB;oBACD,mRAA0C;oBAE1C,aAAa,EAAEC,sBAAiB,CAAC,IAAI;;iBACtC;;;;;6BAEEC,oBAAe,SAACC,sBAAY;wBAE5BC,UAAK;qCACLA,UAAK;;;;QAHN,2CAAoE;;QAEpE,sCAAuB;;;;;QAQvB,oDAAoC;;;;;;;;;QCtBtC;;;;;gBALCC,aAAQ,SAAC;oBACR,OAAO,EAAE,CAACC,mBAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,qBAAqB,CAAC;oBAChC,YAAY,EAAE,CAAC,qBAAqB,CAAC;iBACtC;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"mtxFormGroup.umd.js","sources":["../../../projects/extensions/form-group/form-group.component.ts","../../../projects/extensions/form-group/form-group.module.ts"],"sourcesContent":["import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren,\r\n Input,\r\n OnInit,\r\n QueryList,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { MatFormField } from '@angular/material/form-field';\r\n\r\n@Component({\r\n selector: 'mtx-form-group',\r\n exportAs: 'mtxFormGroup',\r\n host: {\r\n class: 'mtx-form-group',\r\n },\r\n templateUrl: './form-group.component.html',\r\n styleUrls: ['./form-group.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MtxFormGroupComponent implements OnInit, AfterContentInit {\r\n @ContentChildren(MatFormField) formFields!: QueryList<MatFormField>;\r\n\r\n @Input() label: string;\r\n @Input()\r\n get showRequiredMarker() {\r\n return this._showRequiredMarker;\r\n }\r\n set showRequiredMarker(value: boolean) {\r\n this._showRequiredMarker = coerceBooleanProperty(value);\r\n }\r\n private _showRequiredMarker = false;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n ngAfterContentInit() {\r\n this.formFields.forEach(item => {\r\n item.appearance = 'standard';\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MtxFormGroupComponent } from './form-group.component';\n\n@NgModule({\n imports: [CommonModule],\n exports: [MtxFormGroupComponent],\n declarations: [MtxFormGroupComponent],\n})\nexport class MtxFormGroupModule {}\n"],"names":["coerceBooleanProperty","Component","ViewEncapsulation","ChangeDetectionStrategy","ContentChildren","MatFormField","Input","NgModule","CommonModule"],"mappings":";;;;;;;;;;;;QAqCE;YAFQ,wBAAmB,GAAG,KAAK,CAAC;SAEpB;QAThB,sBACI,qDAAkB;;;;iBADtB;gBAEE,OAAO,IAAI,CAAC,mBAAmB,CAAC;aACjC;;;;;iBACD,UAAuB,KAAc;gBACnC,IAAI,CAAC,mBAAmB,GAAGA,8BAAqB,CAAC,KAAK,CAAC,CAAC;aACzD;;;WAHA;;;;QAQD,wCAAQ,GAAR,eAAmB;;;;QAEnB,kDAAkB,GAAlB;YACE,IAAI,CAAC,UAAU,CAAC,OAAO;;;eAAC;;;gBAAA,IAAI;gBAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;aAC9B,EAAC,CAAC;SACJ;;;;gBAhCFC,cAAS,SAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,cAAc;oBACxB,IAAI,EAAE;wBACJ,KAAK,EAAE,gBAAgB;qBACxB;oBACD,mRAA0C;oBAE1C,aAAa,EAAEC,sBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAEC,4BAAuB,CAAC,MAAM;;iBAChD;;;;;6BAEEC,oBAAe,SAACC,sBAAY;wBAE5BC,UAAK;qCACLA,UAAK;;;;QAHN,2CAAoE;;QAEpE,sCAAuB;;;;;QAQvB,oDAAoC;;;;;;;;;QCzBtC;;;;;gBALCC,aAAQ,SAAC;oBACR,OAAO,EAAE,CAACC,mBAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,qBAAqB,CAAC;oBAChC,YAAY,EAAE,CAAC,qBAAqB,CAAC;iBACtC;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@angular/core"),require("@angular/common"),require("@angular/cdk/coercion"),require("@angular/material/form-field")):"function"==typeof define&&define.amd?define("@ng-matero/extensions/form-group",["exports","@angular/core","@angular/common","@angular/cdk/coercion","@angular/material/form-field"],r):r(((e="undefined"!=typeof globalThis?globalThis:e||self)["ng-matero"]=e["ng-matero"]||{},e["ng-matero"].extensions=e["ng-matero"].extensions||{},e["ng-matero"].extensions["form-group"]={}),e.ng.core,e.ng.common,e.ng.cdk.coercion,e.ng.material.formField)}(this,(function(e,r,t,o,a){"use strict";var n=function(){function e(){this._showRequiredMarker=!1}return Object.defineProperty(e.prototype,"showRequiredMarker",{get:function(){return this._showRequiredMarker},set:function(e){this._showRequiredMarker=o.coerceBooleanProperty(e)},enumerable:!1,configurable:!0}),e.prototype.ngOnInit=function(){},e.prototype.ngAfterContentInit=function(){this.formFields.forEach((function(e){e.appearance="standard"}))},e}();n.decorators=[{type:r.Component,args:[{selector:"mtx-form-group",host:{class:"mtx-form-group"},template:'<div class="mtx-form-field-layout mtx-form-field-appearance-fluent">\r\n <label *ngIf="label"\r\n class="mtx-form-label"\r\n [class.mtx-form-label-marker]="showRequiredMarker">{{label}}</label>\r\n <ng-content></ng-content>\r\n</div>\r\n',encapsulation:r.ViewEncapsulation.None,styles:['.mtx-form-group{display:inline-block}.mtx-form-group .mtx-form-field-layout{align-items:flex-start;display:inline-flex;width:100%}.mtx-form-group .mtx-form-label{display:inline-block;line-height:1.125;padding-bottom:calc(.375em + 1px);padding-right:1em;padding-top:calc(.375em + 1px);position:relative}[dir=rtl] .mtx-form-group .mtx-form-label{padding-left:1em;padding-right:unset}.mtx-form-group .mtx-form-label.mtx-form-label-marker:after{content:"*";margin-left:4px}[dir=rtl] .mtx-form-group .mtx-form-label.mtx-form-label-marker:after{margin-left:auto;margin-right:4px}.mtx-form-field-appearance-fluent .mat-form-field{margin-bottom:.25em}.mtx-form-field-appearance-fluent .mat-form-field .mat-form-field-suffix .mat-icon-button{height:1.5em;width:1.5em}.mtx-form-field-appearance-fluent .mat-form-field .mat-form-field-suffix .mat-icon-button .mat-datepicker-toggle-default-icon{width:1em}.mtx-form-field-appearance-fluent .mat-form-field-has-label .mat-form-field-flex{margin-top:.84375em}.mtx-form-field-appearance-fluent .mat-form-field-appearance-standard .mat-form-field-flex{padding-top:0}.mtx-form-field-appearance-fluent .mat-form-field-flex{align-items:center;border-radius:2px;padding:0 .5em}.mtx-form-field-appearance-fluent .mat-form-field-infix{border-top:0;padding:.375em 0}.mtx-form-field-appearance-fluent .mat-form-field-prefix,.mtx-form-field-appearance-fluent .mat-form-field-suffix{display:inline-flex}.mtx-form-field-appearance-fluent .mat-form-field-prefix .mat-icon,.mtx-form-field-appearance-fluent .mat-form-field-suffix .mat-icon{line-height:normal}.mtx-form-field-appearance-fluent .mat-form-field-underline{display:none}.mtx-form-field-appearance-fluent .mtx-select{display:block;margin:0 -8px}.mtx-form-field-appearance-fluent .ng-select{margin-top:-.4375em;padding-left:8px;padding-right:8px;padding-top:.4375em}']}]}],n.ctorParameters=function(){return[]},n.propDecorators={formFields:[{type:r.ContentChildren,args:[a.MatFormField]}],label:[{type:r.Input}],showRequiredMarker:[{type:r.Input}]};var m=function(){};m.decorators=[{type:r.NgModule,args:[{imports:[t.CommonModule],exports:[n],declarations:[n]}]}],e.MtxFormGroupComponent=n,e.MtxFormGroupModule=m,Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@angular/core"),require("@angular/common"),require("@angular/cdk/coercion"),require("@angular/material/form-field")):"function"==typeof define&&define.amd?define("@ng-matero/extensions/form-group",["exports","@angular/core","@angular/common","@angular/cdk/coercion","@angular/material/form-field"],r):r(((e="undefined"!=typeof globalThis?globalThis:e||self)["ng-matero"]=e["ng-matero"]||{},e["ng-matero"].extensions=e["ng-matero"].extensions||{},e["ng-matero"].extensions["form-group"]={}),e.ng.core,e.ng.common,e.ng.cdk.coercion,e.ng.material.formField)}(this,(function(e,r,t,o,a){"use strict";var n=function(){function e(){this._showRequiredMarker=!1}return Object.defineProperty(e.prototype,"showRequiredMarker",{get:function(){return this._showRequiredMarker},set:function(e){this._showRequiredMarker=o.coerceBooleanProperty(e)},enumerable:!1,configurable:!0}),e.prototype.ngOnInit=function(){},e.prototype.ngAfterContentInit=function(){this.formFields.forEach((function(e){e.appearance="standard"}))},e}();n.decorators=[{type:r.Component,args:[{selector:"mtx-form-group",exportAs:"mtxFormGroup",host:{class:"mtx-form-group"},template:'<div class="mtx-form-field-layout mtx-form-field-appearance-fluent">\r\n <label *ngIf="label"\r\n class="mtx-form-label"\r\n [class.mtx-form-label-marker]="showRequiredMarker">{{label}}</label>\r\n <ng-content></ng-content>\r\n</div>\r\n',encapsulation:r.ViewEncapsulation.None,changeDetection:r.ChangeDetectionStrategy.OnPush,styles:['.mtx-form-group{display:inline-block}.mtx-form-group .mtx-form-field-layout{align-items:flex-start;display:inline-flex;width:100%}.mtx-form-group .mtx-form-label{display:inline-block;line-height:1.125;padding-bottom:calc(.375em + 1px);padding-right:1em;padding-top:calc(.375em + 1px);position:relative}[dir=rtl] .mtx-form-group .mtx-form-label{padding-left:1em;padding-right:unset}.mtx-form-group .mtx-form-label.mtx-form-label-marker:after{content:"*";margin-left:4px}[dir=rtl] .mtx-form-group .mtx-form-label.mtx-form-label-marker:after{margin-left:auto;margin-right:4px}.mtx-form-field-appearance-fluent .mat-form-field{margin-bottom:.25em}.mtx-form-field-appearance-fluent .mat-form-field .mat-form-field-suffix .mat-icon-button{height:1.5em;width:1.5em}.mtx-form-field-appearance-fluent .mat-form-field .mat-form-field-suffix .mat-icon-button .mat-datepicker-toggle-default-icon{width:1em}.mtx-form-field-appearance-fluent .mat-form-field-has-label .mat-form-field-flex{margin-top:.84375em}.mtx-form-field-appearance-fluent .mat-form-field-appearance-standard .mat-form-field-flex{padding-top:0}.mtx-form-field-appearance-fluent .mat-form-field-flex{align-items:center;border-radius:2px;padding:0 .5em}.mtx-form-field-appearance-fluent .mat-form-field-infix{border-top:0;padding:.375em 0}.mtx-form-field-appearance-fluent .mat-form-field-prefix,.mtx-form-field-appearance-fluent .mat-form-field-suffix{display:inline-flex}.mtx-form-field-appearance-fluent .mat-form-field-prefix .mat-icon,.mtx-form-field-appearance-fluent .mat-form-field-suffix .mat-icon{line-height:normal}.mtx-form-field-appearance-fluent .mat-form-field-underline{display:none}.mtx-form-field-appearance-fluent .mtx-select{display:block;margin:0 -8px}.mtx-form-field-appearance-fluent .ng-select{margin-top:-.4375em;padding-left:8px;padding-right:8px;padding-top:.4375em}']}]}],n.ctorParameters=function(){return[]},n.propDecorators={formFields:[{type:r.ContentChildren,args:[a.MatFormField]}],label:[{type:r.Input}],showRequiredMarker:[{type:r.Input}]};var m=function(){};m.decorators=[{type:r.NgModule,args:[{imports:[t.CommonModule],exports:[n],declarations:[n]}]}],e.MtxFormGroupComponent=n,e.MtxFormGroupModule=m,Object.defineProperty(e,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=mtxFormGroup.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../projects/extensions/form-group/form-group.component.ts","../../../projects/extensions/form-group/form-group.module.ts"],"names":["MtxFormGroupComponent","this","_showRequiredMarker","Object","defineProperty","prototype","value","coerceBooleanProperty","ngOnInit","ngAfterContentInit","formFields","forEach","item","appearance","Component","args","selector","host","class","template","encapsulation","ViewEncapsulation","None","ContentChildren","MatFormField","Input","NgModule","imports","CommonModule","exports","declarations"],"mappings":"2rBAkCE,SAAAA,IAFQC,KAAAC,qBAAsB,SAP9BC,OAAAC,eACIJ,EAAAK,UAAA,qBAAkB,KADtB,WAEE,OAAOJ,KAAKC,yBAEd,SAAuBI,GACrBL,KAAKC,oBAAsBK,EAAAA,sBAAsBD,oCAMnDN,EAAAK,UAAAG,SAAA,aAEAR,EAAAK,UAAAI,mBAAA,WACER,KAAKS,WAAWC,SAAO,SAACC,GACtBA,EAAKC,WAAa,wCA5BvBC,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,iBACVC,KAAM,CACJC,MAAO,kBAETC,SAAA,kQAEAC,cAAeC,EAAAA,kBAAkBC,s5DAGhCC,EAAAA,gBAAeR,KAAA,CAACS,EAAAA,6BAEhBC,EAAAA,kCACAA,EAAAA,eCfH,iCALCC,EAAAA,SAAQX,KAAA,CAAC,CACRY,QAAS,CAACC,EAAAA,cACVC,QAAS,CAAC7B,GACV8B,aAAc,CAAC9B","sourcesContent":["import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n Input,\r\n OnInit,\r\n QueryList,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { MatFormField } from '@angular/material/form-field';\r\n\r\n@Component({\r\n selector: 'mtx-form-group',\r\n host: {\r\n class: 'mtx-form-group',\r\n },\r\n templateUrl: './form-group.component.html',\r\n styleUrls: ['./form-group.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MtxFormGroupComponent implements OnInit, AfterContentInit {\r\n @ContentChildren(MatFormField) formFields!: QueryList<MatFormField>;\r\n\r\n @Input() label: string;\r\n @Input()\r\n get showRequiredMarker() {\r\n return this._showRequiredMarker;\r\n }\r\n set showRequiredMarker(value: boolean) {\r\n this._showRequiredMarker = coerceBooleanProperty(value);\r\n }\r\n private _showRequiredMarker = false;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n ngAfterContentInit() {\r\n this.formFields.forEach(item => {\r\n item.appearance = 'standard';\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MtxFormGroupComponent } from './form-group.component';\n\n@NgModule({\n imports: [CommonModule],\n exports: [MtxFormGroupComponent],\n declarations: [MtxFormGroupComponent],\n})\nexport class MtxFormGroupModule {}\n"]}
1
+ {"version":3,"sources":["../../../projects/extensions/form-group/form-group.component.ts","../../../projects/extensions/form-group/form-group.module.ts"],"names":["MtxFormGroupComponent","this","_showRequiredMarker","Object","defineProperty","prototype","value","coerceBooleanProperty","ngOnInit","ngAfterContentInit","formFields","forEach","item","appearance","Component","args","selector","exportAs","host","class","template","encapsulation","ViewEncapsulation","None","changeDetection","ChangeDetectionStrategy","OnPush","ContentChildren","MatFormField","Input","NgModule","imports","CommonModule","exports","declarations"],"mappings":"2rBAqCE,SAAAA,IAFQC,KAAAC,qBAAsB,SAP9BC,OAAAC,eACIJ,EAAAK,UAAA,qBAAkB,KADtB,WAEE,OAAOJ,KAAKC,yBAEd,SAAuBI,GACrBL,KAAKC,oBAAsBK,EAAAA,sBAAsBD,oCAMnDN,EAAAK,UAAAG,SAAA,aAEAR,EAAAK,UAAAI,mBAAA,WACER,KAAKS,WAAWC,SAAO,SAACC,GACtBA,EAAKC,WAAa,wCA9BvBC,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,iBACVC,SAAU,eACVC,KAAM,CACJC,MAAO,kBAETC,SAAA,kQAEAC,cAAeC,EAAAA,kBAAkBC,KACjCC,gBAAiBC,EAAAA,wBAAwBC,w5DAGxCC,EAAAA,gBAAeZ,KAAA,CAACa,EAAAA,6BAEhBC,EAAAA,kCACAA,EAAAA,eClBH,iCALCC,EAAAA,SAAQf,KAAA,CAAC,CACRgB,QAAS,CAACC,EAAAA,cACVC,QAAS,CAACjC,GACVkC,aAAc,CAAClC","sourcesContent":["import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren,\r\n Input,\r\n OnInit,\r\n QueryList,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { MatFormField } from '@angular/material/form-field';\r\n\r\n@Component({\r\n selector: 'mtx-form-group',\r\n exportAs: 'mtxFormGroup',\r\n host: {\r\n class: 'mtx-form-group',\r\n },\r\n templateUrl: './form-group.component.html',\r\n styleUrls: ['./form-group.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MtxFormGroupComponent implements OnInit, AfterContentInit {\r\n @ContentChildren(MatFormField) formFields!: QueryList<MatFormField>;\r\n\r\n @Input() label: string;\r\n @Input()\r\n get showRequiredMarker() {\r\n return this._showRequiredMarker;\r\n }\r\n set showRequiredMarker(value: boolean) {\r\n this._showRequiredMarker = coerceBooleanProperty(value);\r\n }\r\n private _showRequiredMarker = false;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n ngAfterContentInit() {\r\n this.formFields.forEach(item => {\r\n item.appearance = 'standard';\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MtxFormGroupComponent } from './form-group.component';\n\n@NgModule({\n imports: [CommonModule],\n exports: [MtxFormGroupComponent],\n declarations: [MtxFormGroupComponent],\n})\nexport class MtxFormGroupModule {}\n"]}
@@ -1,11 +1,11 @@
1
1
  {
2
- "main": "../bundles/ng-matero-extensions-button.umd.js",
3
- "module": "../fesm2015/ng-matero-extensions-button.js",
4
- "es2015": "../fesm2015/ng-matero-extensions-button.js",
5
- "esm2015": "../esm2015/button/ng-matero-extensions-button.js",
6
- "fesm2015": "../fesm2015/ng-matero-extensions-button.js",
7
- "typings": "ng-matero-extensions-button.d.ts",
8
- "metadata": "ng-matero-extensions-button.metadata.json",
2
+ "main": "../bundles/mtxButton.umd.js",
3
+ "module": "../fesm2015/mtxButton.js",
4
+ "es2015": "../fesm2015/mtxButton.js",
5
+ "esm2015": "../esm2015/button/mtxButton.js",
6
+ "fesm2015": "../fesm2015/mtxButton.js",
7
+ "typings": "mtxButton.d.ts",
8
+ "metadata": "mtxButton.metadata.json",
9
9
  "sideEffects": false,
10
10
  "name": "@ng-matero/extensions/button"
11
11
  }
@@ -1,6 +1,6 @@
1
- import { EventEmitter, ChangeDetectorRef, AfterViewInit, QueryList } from '@angular/core';
1
+ import { EventEmitter, ChangeDetectorRef, AfterViewInit, QueryList, ElementRef, OnDestroy } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
- import { ThemePalette } from '@angular/material/core';
3
+ import { FocusMonitor } from '@angular/cdk/a11y';
4
4
  import { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';
5
5
  import { MtxCheckboxGroupOption } from './checkbox-group.interface';
6
6
  export declare class MtxCheckboxBase {
@@ -8,8 +8,10 @@ export declare class MtxCheckboxBase {
8
8
  value?: any;
9
9
  constructor(label?: any, value?: any);
10
10
  }
11
- export declare class MtxCheckboxGroupComponent implements AfterViewInit, ControlValueAccessor {
11
+ export declare class MtxCheckboxGroupComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {
12
12
  private _changeDetectorRef;
13
+ private _focusMonitor;
14
+ private _elementRef;
13
15
  _checkboxes: QueryList<MatCheckbox>;
14
16
  get items(): any[];
15
17
  set items(value: any[]);
@@ -17,7 +19,9 @@ export declare class MtxCheckboxGroupComponent implements AfterViewInit, Control
17
19
  private _originalItems;
18
20
  bindLabel: string;
19
21
  bindValue: string;
20
- showSelectAll: boolean;
22
+ get showSelectAll(): boolean;
23
+ set showSelectAll(value: boolean);
24
+ private _showSelectAll;
21
25
  selectAllLabel: string;
22
26
  get compareWith(): (o1: any, o2: any) => boolean;
23
27
  set compareWith(fn: (o1: any, o2: any) => boolean);
@@ -31,12 +35,12 @@ export declare class MtxCheckboxGroupComponent implements AfterViewInit, Control
31
35
  }>;
32
36
  selectAll: boolean;
33
37
  selectAllIndeterminate: boolean;
34
- color: ThemePalette;
35
38
  selectedItems: MtxCheckboxGroupOption[];
36
39
  _onChange: (value: MtxCheckboxGroupOption[]) => void;
37
40
  _onTouched: () => void;
38
- constructor(_changeDetectorRef: ChangeDetectorRef);
41
+ constructor(_changeDetectorRef: ChangeDetectorRef, _focusMonitor: FocusMonitor, _elementRef: ElementRef<HTMLElement>);
39
42
  ngAfterViewInit(): void;
43
+ ngOnDestroy(): void;
40
44
  /**
41
45
  * Finds and selects and option based on its value.
42
46
  * @returns Option that has the corresponding value.
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"MtxCheckboxGroupModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":12},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":9,"character":26},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":9,"character":39},{"__symbolic":"reference","module":"@ng-matero/extensions/utils","name":"MtxUtilsModule","line":9,"character":58}],"exports":[{"__symbolic":"reference","name":"MtxCheckboxGroupComponent"}],"declarations":[{"__symbolic":"reference","name":"MtxCheckboxGroupComponent"}]}]}],"members":{}},"MtxCheckboxBase":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"any"}]}]}},"MtxCheckboxGroupComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":23,"character":1},"arguments":[{"selector":"mtx-checkbox-group","exportAs":"mtxCheckboxGroup","host":{"class":"mtx-checkbox-group"},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":31,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":32,"character":19},"member":"OnPush"},"providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":35,"character":15},"useExisting":{"__symbolic":"reference","name":"MtxCheckboxGroupComponent"},"multi":true}],"template":"<mat-checkbox class=\"mtx-checkbox-master\"\n *ngIf=\"showSelectAll\"\n [checked]=\"selectAll\"\n [(indeterminate)]=\"selectAllIndeterminate\"\n [disabled]=\"disabled\"\n (change)=\"_updateMasterCheckboxState($event, -1);\">\n {{selectAllLabel}}\n</mat-checkbox>\n\n<mat-checkbox class=\"mtx-checkbox-normal\"\n *ngFor=\"let option of items; let i = index;\"\n [(ngModel)]=\"option.checked\"\n [aria-describedby]=\"option.ariaDescribedby\"\n [aria-label]=\"option.ariaLabel\"\n [aria-labelledby]=\"option.ariaLabelledby\"\n [color]=\"option.color || color\"\n [disabled]=\"option.disabled || disabled\"\n [disableRipple]=\"option.disableRipple\"\n [labelPosition]=\"option.labelPosition\"\n [required]=\"option.required\"\n (change)=\"_updateNormalCheckboxState($event, i)\">\n {{option[bindLabel] | toObservable | async}}\n</mat-checkbox>\n","styles":[".mtx-checkbox-group{display:block}.mtx-checkbox-group .mat-checkbox{margin-right:16px}[dir=rtl] .mtx-checkbox-group .mat-checkbox{margin-left:16px;margin-right:auto}"]}]}],"members":{"_checkboxes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":42,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckbox","line":42,"character":36},{"descendants":true}]}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"bindLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"bindValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"showSelectAll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"selectAllLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"compareWith":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}}]}],"change":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":87,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":99,"character":42}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"_selectValue":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"_checkMasterCheckboxState":[{"__symbolic":"method"}],"_getSelectedItems":[{"__symbolic":"method"}],"_updateNormalCheckboxState":[{"__symbolic":"method"}],"_updateMasterCheckboxState":[{"__symbolic":"method"}]}},"MtxCheckboxGroupOption":{"__symbolic":"interface"}},"origins":{"MtxCheckboxGroupModule":"./checkbox-group.module","MtxCheckboxBase":"./checkbox-group.component","MtxCheckboxGroupComponent":"./checkbox-group.component","MtxCheckboxGroupOption":"./checkbox-group.interface"},"importAs":"@ng-matero/extensions/checkbox-group"}
1
+ {"__symbolic":"module","version":4,"metadata":{"MtxCheckboxGroupModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":12},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":9,"character":26},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":9,"character":39},{"__symbolic":"reference","module":"@ng-matero/extensions/utils","name":"MtxUtilsModule","line":9,"character":58}],"exports":[{"__symbolic":"reference","name":"MtxCheckboxGroupComponent"}],"declarations":[{"__symbolic":"reference","name":"MtxCheckboxGroupComponent"}]}]}],"members":{}},"MtxCheckboxBase":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"any"}]}]}},"MtxCheckboxGroupComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":25,"character":1},"arguments":[{"selector":"mtx-checkbox-group","exportAs":"mtxCheckboxGroup","host":{"class":"mtx-checkbox-group"},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":33,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":34,"character":19},"member":"OnPush"},"providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":37,"character":15},"useExisting":{"__symbolic":"reference","name":"MtxCheckboxGroupComponent"},"multi":true}],"template":"<mat-checkbox class=\"mtx-checkbox-master\"\n *ngIf=\"showSelectAll\"\n [checked]=\"selectAll\"\n [(indeterminate)]=\"selectAllIndeterminate\"\n [disabled]=\"disabled\"\n (change)=\"_updateMasterCheckboxState($event, -1);\">\n {{selectAllLabel}}\n</mat-checkbox>\n\n<mat-checkbox class=\"mtx-checkbox-normal\"\n *ngFor=\"let option of items; let i = index;\"\n [(ngModel)]=\"option.checked\"\n [aria-describedby]=\"option.ariaDescribedby\"\n [aria-label]=\"option.ariaLabel\"\n [aria-labelledby]=\"option.ariaLabelledby\"\n [color]=\"option.color\"\n [disabled]=\"option.disabled || disabled\"\n [disableRipple]=\"option.disableRipple\"\n [labelPosition]=\"option.labelPosition\"\n [required]=\"option.required\"\n (change)=\"_updateNormalCheckboxState($event, i)\">\n {{option[bindLabel] | toObservable | async}}\n</mat-checkbox>\n","styles":[".mtx-checkbox-group{display:block}.mtx-checkbox-group .mat-checkbox{margin-right:16px}[dir=rtl] .mtx-checkbox-group .mat-checkbox{margin-left:16px;margin-right:auto}"]}]}],"members":{"_checkboxes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":44,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckbox","line":44,"character":36},{"descendants":true}]}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"bindLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"bindValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"showSelectAll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":3}}]}],"selectAllLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":74,"character":3}}]}],"compareWith":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":91,"character":3}}]}],"change":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":100,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":111,"character":32},{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"FocusMonitor","line":112,"character":27},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":113,"character":36,"context":{"typeName":"HTMLElement"},"module":"./checkbox-group.component"}]}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_selectValue":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"_checkMasterCheckboxState":[{"__symbolic":"method"}],"_getSelectedItems":[{"__symbolic":"method"}],"_updateNormalCheckboxState":[{"__symbolic":"method"}],"_updateMasterCheckboxState":[{"__symbolic":"method"}]}},"MtxCheckboxGroupOption":{"__symbolic":"interface"}},"origins":{"MtxCheckboxGroupModule":"./checkbox-group.module","MtxCheckboxBase":"./checkbox-group.component","MtxCheckboxGroupComponent":"./checkbox-group.component","MtxCheckboxGroupOption":"./checkbox-group.interface"},"importAs":"@ng-matero/extensions/checkbox-group"}
@@ -41,6 +41,10 @@ export declare class MtxColorPickerComponent implements OnDestroy, DoCheck, Afte
41
41
  get disabled(): boolean;
42
42
  set disabled(value: boolean);
43
43
  private _disabled;
44
+ /** Whether the element is readonly. */
45
+ get readonly(): boolean;
46
+ set readonly(value: boolean);
47
+ private _readonly;
44
48
  errorState: boolean;
45
49
  /** A name for this control that can be used by `mat-form-field`. */
46
50
  controlType: string;
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"MtxColorPickerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":14,"character":4},{"__symbolic":"reference","module":"@angular/material/menu","name":"MatMenuModule","line":15,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":17,"character":4},{"__symbolic":"reference","module":"ngx-color/chrome","name":"ColorChromeModule","line":18,"character":4}],"exports":[{"__symbolic":"reference","name":"MtxColorPickerComponent"}],"declarations":[{"__symbolic":"reference","name":"MtxColorPickerComponent"}]}]}],"members":{}},"MtxColorPickerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":33,"character":1},"arguments":[{"selector":"mtx-color-picker","exportAs":"mtxColorPicker","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":38,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":39,"character":19},"member":"OnPush"},"providers":[{"provide":{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldControl","line":40,"character":25},"useExisting":{"__symbolic":"reference","name":"MtxColorPickerComponent"}}],"template":"<input matInput\n [(ngModel)]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (focus)=\"_handleFocus()\"\n autocomplete=\"off\">\n\n<div #colorPickerTrigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"colorPickerPopover\"\n (menuOpened)=\"_openPanel()\"\n (menuClosed)=\"_closePanel()\">\n</div>\n\n<mat-menu #colorPickerPopover=\"matMenu\" class=\"mtx-color-picker-panel\" [hasBackdrop]=\"false\">\n <div class=\"mtx-color-picker\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\">\n <color-chrome [color]=\"value\" (onChangeComplete)=\"_onColorChanged($event)\"></color-chrome>\n </div>\n</mat-menu>\n","styles":[".mtx-color-picker-panel .mat-menu-content:not(:empty){padding:0}.mtx-color-picker-panel .mtx-color-picker{padding:8px}.mtx-color-picker-panel .mtx-color-picker .chrome-picker{border-radius:0;box-shadow:none}.mtx-color-picker-panel .mtx-color-picker .chrome-picker .saturation{border-radius:0}"]}]}],"members":{"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":74,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":98,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":108,"character":3}}]}],"colorChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":133,"character":3}}]}],"trigger":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":135,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/menu","name":"MatMenuTrigger","line":135,"character":13},{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":170,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":170,"character":17}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":171,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Host","line":171,"character":17}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":172,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":172,"character":17},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":172,"character":24}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"FocusMonitor","line":166,"character":27},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":167,"character":36,"context":{"typeName":"HTMLElement"},"module":"./color-picker.component"}]},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":168,"character":32},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":169,"character":19},{"__symbolic":"reference","module":"@angular/forms","name":"NgControl","line":170,"character":42},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormField","line":171,"character":44},{"__symbolic":"reference","name":"any"}]}],"ngDoCheck":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"setDescribedByIds":[{"__symbolic":"method"}],"onContainerClick":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"_handleFocus":[{"__symbolic":"method"}],"_openPanel":[{"__symbolic":"method"}],"_closePanel":[{"__symbolic":"method"}],"_onColorChanged":[{"__symbolic":"method"}],"_getOutsideClickStream":[{"__symbolic":"method"}]}}},"origins":{"MtxColorPickerModule":"./color-picker.module","MtxColorPickerComponent":"./color-picker.component"},"importAs":"@ng-matero/extensions/color-picker"}
1
+ {"__symbolic":"module","version":4,"metadata":{"MtxColorPickerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":14,"character":4},{"__symbolic":"reference","module":"@angular/material/menu","name":"MatMenuModule","line":15,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":17,"character":4},{"__symbolic":"reference","module":"ngx-color/chrome","name":"ColorChromeModule","line":18,"character":4}],"exports":[{"__symbolic":"reference","name":"MtxColorPickerComponent"}],"declarations":[{"__symbolic":"reference","name":"MtxColorPickerComponent"}]}]}],"members":{}},"MtxColorPickerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":33,"character":1},"arguments":[{"selector":"mtx-color-picker","exportAs":"mtxColorPicker","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":38,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":39,"character":19},"member":"OnPush"},"providers":[{"provide":{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldControl","line":40,"character":25},"useExisting":{"__symbolic":"reference","name":"MtxColorPickerComponent"}}],"template":"<input matInput\n [(ngModel)]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n (focus)=\"_handleFocus()\"\n autocomplete=\"off\">\n\n<div #colorPickerTrigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"colorPickerPopover\"\n (menuOpened)=\"_openPanel()\"\n (menuClosed)=\"_closePanel()\">\n</div>\n\n<mat-menu #colorPickerPopover=\"matMenu\" class=\"mtx-color-picker-panel\" [hasBackdrop]=\"false\">\n <div class=\"mtx-color-picker\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\">\n <color-chrome [color]=\"value\" (onChangeComplete)=\"_onColorChanged($event)\"></color-chrome>\n </div>\n</mat-menu>\n","styles":[".mtx-color-picker-panel .mat-menu-content:not(:empty){padding:0}.mtx-color-picker-panel .mtx-color-picker{padding:8px}.mtx-color-picker-panel .mtx-color-picker .chrome-picker{border-radius:0;box-shadow:none}.mtx-color-picker-panel .mtx-color-picker .chrome-picker .saturation{border-radius:0}"]}]}],"members":{"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":109,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":120,"character":3}}]}],"colorChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":144,"character":3}}]}],"trigger":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":146,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/menu","name":"MatMenuTrigger","line":146,"character":13},{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":181,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":181,"character":17}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":182,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Host","line":182,"character":17}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":183,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":183,"character":17},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":183,"character":24}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"FocusMonitor","line":177,"character":27},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":178,"character":36,"context":{"typeName":"HTMLElement"},"module":"./color-picker.component"}]},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":179,"character":32},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":180,"character":19},{"__symbolic":"reference","module":"@angular/forms","name":"NgControl","line":181,"character":42},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormField","line":182,"character":44},{"__symbolic":"reference","name":"any"}]}],"ngDoCheck":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"setDescribedByIds":[{"__symbolic":"method"}],"onContainerClick":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"_handleFocus":[{"__symbolic":"method"}],"_openPanel":[{"__symbolic":"method"}],"_closePanel":[{"__symbolic":"method"}],"_onColorChanged":[{"__symbolic":"method"}],"_getOutsideClickStream":[{"__symbolic":"method"}]}}},"origins":{"MtxColorPickerModule":"./color-picker.module","MtxColorPickerComponent":"./color-picker.component"},"importAs":"@ng-matero/extensions/color-picker"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * Generated from: mtxButton.ts
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
+ */
6
+ /**
7
+ * Generated bundle index. Do not edit.
8
+ */
9
+ export { MtxButtonModule, MatButtonLoadingDirective } from './public-api';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXR4QnV0dG9uLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9uaXV6b25nYmluL1Byb2plY3RzL0BuZy1tYXRlcm8vZXh0ZW5zaW9ucy9wcm9qZWN0cy9leHRlbnNpb25zL2J1dHRvbi8iLCJzb3VyY2VzIjpbIm10eEJ1dHRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUlBLDJEQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -3,8 +3,9 @@
3
3
  * Generated from: checkbox-group.component.ts
4
4
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
- import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, EventEmitter, ChangeDetectorRef, forwardRef, ContentChildren, QueryList, } from '@angular/core';
6
+ import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, EventEmitter, ChangeDetectorRef, forwardRef, ContentChildren, QueryList, ElementRef, } from '@angular/core';
7
7
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
8
+ import { FocusMonitor } from '@angular/cdk/a11y';
8
9
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
9
10
  import { MatCheckbox } from '@angular/material/checkbox';
10
11
  export class MtxCheckboxBase {
@@ -26,20 +27,23 @@ if (false) {
26
27
  export class MtxCheckboxGroupComponent {
27
28
  /**
28
29
  * @param {?} _changeDetectorRef
30
+ * @param {?} _focusMonitor
31
+ * @param {?} _elementRef
29
32
  */
30
- constructor(_changeDetectorRef) {
33
+ constructor(_changeDetectorRef, _focusMonitor, _elementRef) {
31
34
  this._changeDetectorRef = _changeDetectorRef;
35
+ this._focusMonitor = _focusMonitor;
36
+ this._elementRef = _elementRef;
32
37
  this._items = [];
33
38
  this._originalItems = [];
34
39
  this.bindLabel = 'label';
35
40
  this.bindValue = 'value';
36
- this.showSelectAll = false;
41
+ this._showSelectAll = false;
37
42
  this.selectAllLabel = 'Select All';
38
43
  this._disabled = false;
39
44
  this.change = new EventEmitter();
40
45
  this.selectAll = false;
41
46
  this.selectAllIndeterminate = false;
42
- this.color = 'accent';
43
47
  this.selectedItems = [];
44
48
  this._onChange = (/**
45
49
  * @return {?}
@@ -71,6 +75,19 @@ export class MtxCheckboxGroupComponent {
71
75
  return option instanceof Object ? option : new MtxCheckboxBase(option, option);
72
76
  }));
73
77
  }
78
+ /**
79
+ * @return {?}
80
+ */
81
+ get showSelectAll() {
82
+ return this._showSelectAll;
83
+ }
84
+ /**
85
+ * @param {?} value
86
+ * @return {?}
87
+ */
88
+ set showSelectAll(value) {
89
+ this._showSelectAll = coerceBooleanProperty(value);
90
+ }
74
91
  /**
75
92
  * @return {?}
76
93
  */
@@ -105,7 +122,34 @@ export class MtxCheckboxGroupComponent {
105
122
  /**
106
123
  * @return {?}
107
124
  */
108
- ngAfterViewInit() { }
125
+ ngAfterViewInit() {
126
+ this._focusMonitor.monitor(this._elementRef, true).subscribe((/**
127
+ * @param {?} focusOrigin
128
+ * @return {?}
129
+ */
130
+ focusOrigin => {
131
+ if (!focusOrigin) {
132
+ // When a focused element becomes disabled, the browser *immediately* fires a blur event.
133
+ // Angular does not expect events to be raised during change detection, so any state change
134
+ // (such as a form control's 'ng-touched') will cause a changed-after-checked error.
135
+ // See https://github.com/angular/angular/issues/17793. To work around this, we defer
136
+ // telling the form control it has been touched until the next tick.
137
+ Promise.resolve().then((/**
138
+ * @return {?}
139
+ */
140
+ () => {
141
+ this._onTouched();
142
+ this._changeDetectorRef.markForCheck();
143
+ }));
144
+ }
145
+ }));
146
+ }
147
+ /**
148
+ * @return {?}
149
+ */
150
+ ngOnDestroy() {
151
+ this._focusMonitor.stopMonitoring(this._elementRef);
152
+ }
109
153
  /**
110
154
  * Finds and selects and option based on its value.
111
155
  * @private
@@ -304,7 +348,7 @@ MtxCheckboxGroupComponent.decorators = [
304
348
  host: {
305
349
  class: 'mtx-checkbox-group',
306
350
  },
307
- template: "<mat-checkbox class=\"mtx-checkbox-master\"\n *ngIf=\"showSelectAll\"\n [checked]=\"selectAll\"\n [(indeterminate)]=\"selectAllIndeterminate\"\n [disabled]=\"disabled\"\n (change)=\"_updateMasterCheckboxState($event, -1);\">\n {{selectAllLabel}}\n</mat-checkbox>\n\n<mat-checkbox class=\"mtx-checkbox-normal\"\n *ngFor=\"let option of items; let i = index;\"\n [(ngModel)]=\"option.checked\"\n [aria-describedby]=\"option.ariaDescribedby\"\n [aria-label]=\"option.ariaLabel\"\n [aria-labelledby]=\"option.ariaLabelledby\"\n [color]=\"option.color || color\"\n [disabled]=\"option.disabled || disabled\"\n [disableRipple]=\"option.disableRipple\"\n [labelPosition]=\"option.labelPosition\"\n [required]=\"option.required\"\n (change)=\"_updateNormalCheckboxState($event, i)\">\n {{option[bindLabel] | toObservable | async}}\n</mat-checkbox>\n",
351
+ template: "<mat-checkbox class=\"mtx-checkbox-master\"\n *ngIf=\"showSelectAll\"\n [checked]=\"selectAll\"\n [(indeterminate)]=\"selectAllIndeterminate\"\n [disabled]=\"disabled\"\n (change)=\"_updateMasterCheckboxState($event, -1);\">\n {{selectAllLabel}}\n</mat-checkbox>\n\n<mat-checkbox class=\"mtx-checkbox-normal\"\n *ngFor=\"let option of items; let i = index;\"\n [(ngModel)]=\"option.checked\"\n [aria-describedby]=\"option.ariaDescribedby\"\n [aria-label]=\"option.ariaLabel\"\n [aria-labelledby]=\"option.ariaLabelledby\"\n [color]=\"option.color\"\n [disabled]=\"option.disabled || disabled\"\n [disableRipple]=\"option.disableRipple\"\n [labelPosition]=\"option.labelPosition\"\n [required]=\"option.required\"\n (change)=\"_updateNormalCheckboxState($event, i)\">\n {{option[bindLabel] | toObservable | async}}\n</mat-checkbox>\n",
308
352
  encapsulation: ViewEncapsulation.None,
309
353
  changeDetection: ChangeDetectionStrategy.OnPush,
310
354
  providers: [
@@ -322,7 +366,9 @@ MtxCheckboxGroupComponent.decorators = [
322
366
  ];
323
367
  /** @nocollapse */
324
368
  MtxCheckboxGroupComponent.ctorParameters = () => [
325
- { type: ChangeDetectorRef }
369
+ { type: ChangeDetectorRef },
370
+ { type: FocusMonitor },
371
+ { type: ElementRef }
326
372
  ];
327
373
  MtxCheckboxGroupComponent.propDecorators = {
328
374
  _checkboxes: [{ type: ContentChildren, args: [forwardRef((/**
@@ -355,8 +401,11 @@ if (false) {
355
401
  MtxCheckboxGroupComponent.prototype.bindLabel;
356
402
  /** @type {?} */
357
403
  MtxCheckboxGroupComponent.prototype.bindValue;
358
- /** @type {?} */
359
- MtxCheckboxGroupComponent.prototype.showSelectAll;
404
+ /**
405
+ * @type {?}
406
+ * @private
407
+ */
408
+ MtxCheckboxGroupComponent.prototype._showSelectAll;
360
409
  /** @type {?} */
361
410
  MtxCheckboxGroupComponent.prototype.selectAllLabel;
362
411
  /**
@@ -376,8 +425,6 @@ if (false) {
376
425
  /** @type {?} */
377
426
  MtxCheckboxGroupComponent.prototype.selectAllIndeterminate;
378
427
  /** @type {?} */
379
- MtxCheckboxGroupComponent.prototype.color;
380
- /** @type {?} */
381
428
  MtxCheckboxGroupComponent.prototype.selectedItems;
382
429
  /** @type {?} */
383
430
  MtxCheckboxGroupComponent.prototype._onChange;
@@ -388,5 +435,15 @@ if (false) {
388
435
  * @private
389
436
  */
390
437
  MtxCheckboxGroupComponent.prototype._changeDetectorRef;
438
+ /**
439
+ * @type {?}
440
+ * @private
441
+ */
442
+ MtxCheckboxGroupComponent.prototype._focusMonitor;
443
+ /**
444
+ * @type {?}
445
+ * @private
446
+ */
447
+ MtxCheckboxGroupComponent.prototype._elementRef;
391
448
  }
392
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9uaXV6b25nYmluL1Byb2plY3RzL0BuZy1tYXRlcm8vZXh0ZW5zaW9ucy9wcm9qZWN0cy9leHRlbnNpb25zL2NoZWNrYm94LWdyb3VwLyIsInNvdXJjZXMiOlsiY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLGlCQUFpQixFQUNqQixVQUFVLEVBRVYsZUFBZSxFQUNmLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFdBQVcsRUFBcUIsTUFBTSw0QkFBNEIsQ0FBQztBQUc1RSxNQUFNLE9BQU8sZUFBZTs7Ozs7SUFDMUIsWUFBbUIsS0FBVyxFQUFTLEtBQVc7UUFBL0IsVUFBSyxHQUFMLEtBQUssQ0FBTTtRQUFTLFVBQUssR0FBTCxLQUFLLENBQU07SUFBRyxDQUFDO0NBQ3ZEOzs7SUFEYSxnQ0FBa0I7O0lBQUUsZ0NBQWtCOztBQXFCcEQsTUFBTSxPQUFPLHlCQUF5Qjs7OztJQTBEcEMsWUFBb0Isa0JBQXFDO1FBQXJDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUEzQ2pELFdBQU0sR0FBVSxFQUFFLENBQUM7UUFDbkIsbUJBQWMsR0FBVSxFQUFFLENBQUM7UUFFMUIsY0FBUyxHQUFHLE9BQU8sQ0FBQztRQUNwQixjQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLG1CQUFjLEdBQUcsWUFBWSxDQUFDO1FBdUIvQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWhCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBc0QsQ0FBQztRQUUxRixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUUvQixVQUFLLEdBQWlCLFFBQVEsQ0FBQztRQUUvQixrQkFBYSxHQUE2QixFQUFFLENBQUM7UUFFN0MsY0FBUzs7O1FBQThDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBQztRQUNsRSxlQUFVOzs7UUFBZSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUM7SUFFd0IsQ0FBQzs7OztJQXREN0QsSUFDSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7Ozs7O0lBQ0QsSUFBSSxLQUFLLENBQUMsS0FBWTtRQUNwQixtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHOzs7O1FBQUMsTUFBTSxDQUFDLEVBQUU7WUFDL0IsT0FBTyxNQUFNLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqRixDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7SUFRRCxJQUNJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQzs7Ozs7SUFDRCxJQUFJLFdBQVcsQ0FBQyxFQUFpQztRQUMvQyxJQUFJLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBRTtZQUM1QixNQUFNLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1NBQ2xEO1FBRUQsSUFBSSxFQUFFLEVBQUU7WUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7Ozs7SUFHRCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQzs7Ozs7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7OztJQWlCRCxlQUFlLEtBQUksQ0FBQzs7Ozs7OztJQU1aLFlBQVksQ0FBQyxLQUE2Qjs7Y0FDMUMsbUJBQW1CLEdBQUcsQ0FBQyxtQkFBQSxJQUFJLENBQUMsS0FBSyxFQUE0QixDQUFDLENBQUMsSUFBSTs7OztRQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2pGLElBQUk7O3NCQUNJLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUs7Z0JBQ3JELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQzthQUM1RTtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3BCLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7UUFDSCxDQUFDLEVBQUM7UUFFRixJQUFJLG1CQUFtQixFQUFFO1lBQ3ZCLG1CQUFtQixDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDcEM7UUFFRCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7Ozs7OztJQU1ELFVBQVUsQ0FBQyxLQUFZO1FBQ3JCLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3pCLE1BQU0sS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7YUFDeEM7WUFFRCxLQUFLLENBQUMsT0FBTzs7OztZQUFDLENBQUMsWUFBaUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBQyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pDLENBQUM7Ozs7Ozs7SUFPRCxnQkFBZ0IsQ0FBQyxFQUEyQztRQUMxRCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDOzs7Ozs7O0lBT0QsaUJBQWlCLENBQUMsRUFBWTtRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDOzs7Ozs7SUFNRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztJQUM5QixDQUFDOzs7OztJQUVPLHlCQUF5QjtRQUMvQixJQUNFLENBQUMsbUJBQUEsSUFBSSxDQUFDLEtBQUssRUFBNEIsQ0FBQzthQUNyQyxNQUFNOzs7O1FBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBQzthQUNwRCxLQUFLOzs7O1FBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUMsRUFDbkM7WUFDQSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO1NBQ3JDO2FBQU0sSUFDTCxDQUFDLG1CQUFBLElBQUksQ0FBQyxLQUFLLEVBQTRCLENBQUM7YUFDckMsTUFBTTs7OztRQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUM7YUFDcEQsS0FBSzs7OztRQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBQyxFQUNsQztZQUNBLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7U0FDckM7YUFBTTtZQUNMLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7U0FDcEM7SUFDSCxDQUFDOzs7Ozs7SUFFTyxpQkFBaUIsQ0FBQyxLQUFhO1FBQ3JDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxtQkFBQSxJQUFJLENBQUMsS0FBSyxFQUE0QixDQUFDLENBQUMsTUFBTTs7OztRQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBQyxDQUFDO1FBRS9GLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsbUJBQUEsSUFBSSxDQUFDLGNBQWMsRUFBNEIsQ0FBQyxDQUFDLE1BQU07Ozs7WUFBQyxNQUFNLENBQUMsRUFBRSxDQUNyRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUk7Ozs7WUFBQyxjQUFjLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxFQUFDLEVBQ3JGLENBQUM7U0FDSDthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUc7Ozs7WUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUMsQ0FBQztTQUMvRTtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDOzs7Ozs7O0lBR0QsMEJBQTBCLENBQUMsQ0FBb0IsRUFBRSxLQUFhO1FBQzVELElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDOzs7Ozs7O0lBR0QsMEJBQTBCLENBQUMsQ0FBb0IsRUFBRSxLQUFhO1FBQzVELElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFFcEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLENBQUMsbUJBQUEsSUFBSSxDQUFDLEtBQUssRUFBNEIsQ0FBQztpQkFDckMsTUFBTTs7OztZQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUM7aUJBQ3BELE9BQU87Ozs7WUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBQyxDQUFDO1NBQy9DO2FBQU07WUFDTCxDQUFDLG1CQUFBLElBQUksQ0FBQyxLQUFLLEVBQTRCLENBQUM7aUJBQ3JDLE1BQU07Ozs7WUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFDO2lCQUNwRCxPQUFPOzs7O1lBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDO1NBQzVEO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7OztZQTVNRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsSUFBSSxFQUFFO29CQUNKLEtBQUssRUFBRSxvQkFBb0I7aUJBQzVCO2dCQUNELHVpQ0FBOEM7Z0JBRTlDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVOzs7d0JBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLEVBQUM7d0JBQ3hELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGOzthQUNGOzs7O1lBakNDLGlCQUFpQjs7OzBCQW1DaEIsZUFBZSxTQUFDLFVBQVU7OztnQkFBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7b0JBR3BFLEtBQUs7d0JBY0wsS0FBSzt3QkFDTCxLQUFLOzRCQUNMLEtBQUs7NkJBQ0wsS0FBSzswQkFDTCxLQUFLO3VCQWVMLEtBQUs7cUJBU0wsTUFBTTs7OztJQTdDUCxnREFDb0M7Ozs7O0lBYXBDLDJDQUEyQjs7Ozs7SUFDM0IsbURBQW1DOztJQUVuQyw4Q0FBNkI7O0lBQzdCLDhDQUE2Qjs7SUFDN0Isa0RBQStCOztJQUMvQixtREFBdUM7Ozs7O0lBY3ZDLGlEQUFvRDs7Ozs7SUFTcEQsOENBQTBCOztJQUUxQiwyQ0FBMEY7O0lBRTFGLDhDQUFrQjs7SUFDbEIsMkRBQStCOztJQUUvQiwwQ0FBK0I7O0lBRS9CLGtEQUE2Qzs7SUFFN0MsOENBQWtFOztJQUNsRSwrQ0FBb0M7Ozs7O0lBRXhCLHVEQUE2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBmb3J3YXJkUmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRDaGVja2JveCwgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNdHhDaGVja2JveEdyb3VwT3B0aW9uIH0gZnJvbSAnLi9jaGVja2JveC1ncm91cC5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY2xhc3MgTXR4Q2hlY2tib3hCYXNlIHtcbiAgY29uc3RydWN0b3IocHVibGljIGxhYmVsPzogYW55LCBwdWJsaWMgdmFsdWU/OiBhbnkpIHt9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ210eC1jaGVja2JveC1ncm91cCcsXG4gIGV4cG9ydEFzOiAnbXR4Q2hlY2tib3hHcm91cCcsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ210eC1jaGVja2JveC1ncm91cCcsXG4gIH0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE10eENoZWNrYm94R3JvdXBDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTXR4Q2hlY2tib3hHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IE1hdENoZWNrYm94KSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBfY2hlY2tib3hlczogUXVlcnlMaXN0PE1hdENoZWNrYm94PjtcblxuICBASW5wdXQoKVxuICBnZXQgaXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xuICB9XG4gIHNldCBpdGVtcyh2YWx1ZTogYW55W10pIHtcbiAgICAvLyBUT0RPOiBEZWVwIGNsb25lXG4gICAgdGhpcy5fb3JpZ2luYWxJdGVtcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICB0aGlzLl9pdGVtcyA9IHZhbHVlLm1hcChvcHRpb24gPT4ge1xuICAgICAgcmV0dXJuIG9wdGlvbiBpbnN0YW5jZW9mIE9iamVjdCA/IG9wdGlvbiA6IG5ldyBNdHhDaGVja2JveEJhc2Uob3B0aW9uLCBvcHRpb24pO1xuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgX2l0ZW1zOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIF9vcmlnaW5hbEl0ZW1zOiBhbnlbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIGJpbmRMYWJlbCA9ICdsYWJlbCc7XG4gIEBJbnB1dCgpIGJpbmRWYWx1ZSA9ICd2YWx1ZSc7XG4gIEBJbnB1dCgpIHNob3dTZWxlY3RBbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgc2VsZWN0QWxsTGFiZWwgPSAnU2VsZWN0IEFsbCc7XG4gIEBJbnB1dCgpXG4gIGdldCBjb21wYXJlV2l0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29tcGFyZVdpdGg7XG4gIH1cbiAgc2V0IGNvbXBhcmVXaXRoKGZuOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbikge1xuICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IEVycm9yKCdgY29tcGFyZVdpdGhgIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbiAgICB9XG5cbiAgICBpZiAoZm4pIHtcbiAgICAgIHRoaXMuX2NvbXBhcmVXaXRoID0gZm47XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2NvbXBhcmVXaXRoOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgbW9kZWw6IE10eENoZWNrYm94R3JvdXBPcHRpb25bXTsgaW5kZXg6IG51bWJlciB9PigpO1xuXG4gIHNlbGVjdEFsbCA9IGZhbHNlO1xuICBzZWxlY3RBbGxJbmRldGVybWluYXRlID0gZmFsc2U7XG5cbiAgY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdhY2NlbnQnO1xuXG4gIHNlbGVjdGVkSXRlbXM6IE10eENoZWNrYm94R3JvdXBPcHRpb25bXSA9IFtdO1xuXG4gIF9vbkNoYW5nZTogKHZhbHVlOiBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10pID0+IHZvaWQgPSAoKSA9PiBudWxsO1xuICBfb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge31cblxuICAvKipcbiAgICogRmluZHMgYW5kIHNlbGVjdHMgYW5kIG9wdGlvbiBiYXNlZCBvbiBpdHMgdmFsdWUuXG4gICAqIEByZXR1cm5zIE9wdGlvbiB0aGF0IGhhcyB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZS5cbiAgICovXG4gIHByaXZhdGUgX3NlbGVjdFZhbHVlKHZhbHVlOiBNdHhDaGVja2JveEdyb3VwT3B0aW9uKSB7XG4gICAgY29uc3QgY29ycmVzcG9uZGluZ09wdGlvbiA9ICh0aGlzLml0ZW1zIGFzIE10eENoZWNrYm94R3JvdXBPcHRpb25bXSkuZmluZChvcHRpb24gPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29tcGFyZVZhbHVlID0gb3B0aW9uW3RoaXMuYmluZFZhbHVlXSA9PT0gdmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wYXJlV2l0aCA/IHRoaXMuX2NvbXBhcmVXaXRoKG9wdGlvbiwgdmFsdWUpIDogY29tcGFyZVZhbHVlO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGNvcnJlc3BvbmRpbmdPcHRpb24pIHtcbiAgICAgIGNvcnJlc3BvbmRpbmdPcHRpb24uY2hlY2tlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvcnJlc3BvbmRpbmdPcHRpb247XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbW9kZWwgdmFsdWUuIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqIEBwYXJhbSB2YWx1ZSBOZXcgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byB0aGUgbW9kZWwuXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBFcnJvcignVmFsdWUgbXVzdCBiZSBhbiBhcnJheS4nKTtcbiAgICAgIH1cblxuICAgICAgdmFsdWUuZm9yRWFjaCgoY3VycmVudFZhbHVlOiBhbnkpID0+IHRoaXMuX3NlbGVjdFZhbHVlKGN1cnJlbnRWYWx1ZSkpO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hlY2tNYXN0ZXJDaGVja2JveFN0YXRlKCk7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIG1vZGVsIHZhbHVlIGNoYW5nZXMuXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqIEBwYXJhbSBmbiBDYWxsYmFjayB0byBiZSByZWdpc3RlcmVkLlxuICAgKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10pID0+IHt9KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBjYWxsYmFjayB0byBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgY29udHJvbCBpcyB0b3VjaGVkLlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgcmVnaXN0ZXJlZC5cbiAgICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB7fSk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBjb250cm9sLiBJbXBsZW1lbnRlZCBhcyBhIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqIEBwYXJhbSBpc0Rpc2FibGVkIFdoZXRoZXIgdGhlIGNvbnRyb2wgc2hvdWxkIGJlIGRpc2FibGVkLlxuICAgKi9cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tNYXN0ZXJDaGVja2JveFN0YXRlKCkge1xuICAgIGlmIChcbiAgICAgICh0aGlzLml0ZW1zIGFzIE10eENoZWNrYm94R3JvdXBPcHRpb25bXSlcbiAgICAgICAgLmZpbHRlcihvcHRpb24gPT4gb3B0aW9uLmNoZWNrZWQgfHwgIW9wdGlvbi5kaXNhYmxlZClcbiAgICAgICAgLmV2ZXJ5KG9wdGlvbiA9PiAhb3B0aW9uLmNoZWNrZWQpXG4gICAgKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWxlY3RBbGxJbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICh0aGlzLml0ZW1zIGFzIE10eENoZWNrYm94R3JvdXBPcHRpb25bXSlcbiAgICAgICAgLmZpbHRlcihvcHRpb24gPT4gb3B0aW9uLmNoZWNrZWQgfHwgIW9wdGlvbi5kaXNhYmxlZClcbiAgICAgICAgLmV2ZXJ5KG9wdGlvbiA9PiBvcHRpb24uY2hlY2tlZClcbiAgICApIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbEluZGV0ZXJtaW5hdGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldFNlbGVjdGVkSXRlbXMoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9ICh0aGlzLml0ZW1zIGFzIE10eENoZWNrYm94R3JvdXBPcHRpb25bXSkuZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24uY2hlY2tlZCk7XG5cbiAgICBpZiAodGhpcy5fY29tcGFyZVdpdGgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9ICh0aGlzLl9vcmlnaW5hbEl0ZW1zIGFzIE10eENoZWNrYm94R3JvdXBPcHRpb25bXSkuZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZmluZChzZWxlY3RlZE9wdGlvbiA9PiB0aGlzLl9jb21wYXJlV2l0aChvcHRpb24sIHNlbGVjdGVkT3B0aW9uKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5tYXAob3B0aW9uID0+IG9wdGlvblt0aGlzLmJpbmRWYWx1ZV0pO1xuICAgIH1cblxuICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG5cbiAgICB0aGlzLmNoYW5nZS5lbWl0KHsgbW9kZWw6IHRoaXMuc2VsZWN0ZWRJdGVtcywgaW5kZXggfSk7XG4gIH1cblxuICAvKiogSGFuZGxlIG5vcm1hbCBjaGVja2JveCB0b2dnbGUgKi9cbiAgX3VwZGF0ZU5vcm1hbENoZWNrYm94U3RhdGUoZTogTWF0Q2hlY2tib3hDaGFuZ2UsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGVja01hc3RlckNoZWNrYm94U3RhdGUoKTtcbiAgICB0aGlzLl9nZXRTZWxlY3RlZEl0ZW1zKGluZGV4KTtcbiAgfVxuXG4gIC8qKiBIYW5kbGUgbWFzdGVyIGNoZWNrYm94IHRvZ2dsZSAqL1xuICBfdXBkYXRlTWFzdGVyQ2hlY2tib3hTdGF0ZShlOiBNYXRDaGVja2JveENoYW5nZSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0QWxsID0gIXRoaXMuc2VsZWN0QWxsO1xuICAgIHRoaXMuc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0QWxsKSB7XG4gICAgICAodGhpcy5pdGVtcyBhcyBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10pXG4gICAgICAgIC5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5jaGVja2VkIHx8ICFvcHRpb24uZGlzYWJsZWQpXG4gICAgICAgIC5mb3JFYWNoKG9wdGlvbiA9PiAob3B0aW9uLmNoZWNrZWQgPSB0cnVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICh0aGlzLml0ZW1zIGFzIE10eENoZWNrYm94R3JvdXBPcHRpb25bXSlcbiAgICAgICAgLmZpbHRlcihvcHRpb24gPT4gb3B0aW9uLmNoZWNrZWQgfHwgIW9wdGlvbi5kaXNhYmxlZClcbiAgICAgICAgLmZvckVhY2gob3B0aW9uID0+IChvcHRpb24uY2hlY2tlZCA9ICEhb3B0aW9uLmRpc2FibGVkKSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZ2V0U2VsZWN0ZWRJdGVtcyhpbmRleCk7XG4gIH1cbn1cbiJdfQ==
449
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9uaXV6b25nYmluL1Byb2plY3RzL0BuZy1tYXRlcm8vZXh0ZW5zaW9ucy9wcm9qZWN0cy9leHRlbnNpb25zL2NoZWNrYm94LWdyb3VwLyIsInNvdXJjZXMiOlsiY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLGlCQUFpQixFQUNqQixVQUFVLEVBRVYsZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEdBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFxQixNQUFNLDRCQUE0QixDQUFDO0FBRzVFLE1BQU0sT0FBTyxlQUFlOzs7OztJQUMxQixZQUFtQixLQUFXLEVBQVMsS0FBVztRQUEvQixVQUFLLEdBQUwsS0FBSyxDQUFNO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBTTtJQUFHLENBQUM7Q0FDdkQ7OztJQURhLGdDQUFrQjs7SUFBRSxnQ0FBa0I7O0FBcUJwRCxNQUFNLE9BQU8seUJBQXlCOzs7Ozs7SUFtRXBDLFlBQ1Usa0JBQXFDLEVBQ3JDLGFBQTJCLEVBQzNCLFdBQW9DO1FBRnBDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBdkR0QyxXQUFNLEdBQVUsRUFBRSxDQUFDO1FBQ25CLG1CQUFjLEdBQVUsRUFB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RUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO29CQUdwRSxLQUFLO3dCQWNMLEtBQUs7d0JBRUwsS0FBSzs0QkFFTCxLQUFLOzZCQVNMLEtBQUs7MEJBRUwsS0FBSzt1QkFlTCxLQUFLO3FCQVNMLE1BQU07Ozs7SUF4RFAsZ0RBQ29DOzs7OztJQWFwQywyQ0FBMkI7Ozs7O0lBQzNCLG1EQUFtQzs7SUFFbkMsOENBQTZCOztJQUU3Qiw4Q0FBNkI7Ozs7O0lBUzdCLG1EQUErQjs7SUFFL0IsbURBQXVDOzs7OztJQWV2QyxpREFBb0Q7Ozs7O0lBU3BELDhDQUEwQjs7SUFFMUIsMkNBQTBGOztJQUUxRiw4Q0FBa0I7O0lBQ2xCLDJEQUErQjs7SUFFL0Isa0RBQTZDOztJQUU3Qyw4Q0FBa0U7O0lBQ2xFLCtDQUFvQzs7Ozs7SUFHbEMsdURBQTZDOzs7OztJQUM3QyxrREFBbUM7Ozs7O0lBQ25DLGdEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBmb3J3YXJkUmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIFF1ZXJ5TGlzdCxcbiAgRWxlbWVudFJlZixcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBNYXRDaGVja2JveCwgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNdHhDaGVja2JveEdyb3VwT3B0aW9uIH0gZnJvbSAnLi9jaGVja2JveC1ncm91cC5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY2xhc3MgTXR4Q2hlY2tib3hCYXNlIHtcbiAgY29uc3RydWN0b3IocHVibGljIGxhYmVsPzogYW55LCBwdWJsaWMgdmFsdWU/OiBhbnkpIHt9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ210eC1jaGVja2JveC1ncm91cCcsXG4gIGV4cG9ydEFzOiAnbXR4Q2hlY2tib3hHcm91cCcsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ210eC1jaGVja2JveC1ncm91cCcsXG4gIH0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE10eENoZWNrYm94R3JvdXBDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTXR4Q2hlY2tib3hHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gTWF0Q2hlY2tib3gpLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIF9jaGVja2JveGVzOiBRdWVyeUxpc3Q8TWF0Q2hlY2tib3g+O1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cbiAgc2V0IGl0ZW1zKHZhbHVlOiBhbnlbXSkge1xuICAgIC8vIFRPRE86IERlZXAgY2xvbmVcbiAgICB0aGlzLl9vcmlnaW5hbEl0ZW1zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgIHRoaXMuX2l0ZW1zID0gdmFsdWUubWFwKG9wdGlvbiA9PiB7XG4gICAgICByZXR1cm4gb3B0aW9uIGluc3RhbmNlb2YgT2JqZWN0ID8gb3B0aW9uIDogbmV3IE10eENoZWNrYm94QmFzZShvcHRpb24sIG9wdGlvbik7XG4gICAgfSk7XG4gIH1cbiAgcHJpdmF0ZSBfaXRlbXM6IGFueVtdID0gW107XG4gIHByaXZhdGUgX29yaWdpbmFsSXRlbXM6IGFueVtdID0gW107XG5cbiAgQElucHV0KCkgYmluZExhYmVsID0gJ2xhYmVsJztcblxuICBASW5wdXQoKSBiaW5kVmFsdWUgPSAndmFsdWUnO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBzaG93U2VsZWN0QWxsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zaG93U2VsZWN0QWxsO1xuICB9XG4gIHNldCBzaG93U2VsZWN0QWxsKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd1NlbGVjdEFsbCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfc2hvd1NlbGVjdEFsbCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNlbGVjdEFsbExhYmVsID0gJ1NlbGVjdCBBbGwnO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBjb21wYXJlV2l0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29tcGFyZVdpdGg7XG4gIH1cbiAgc2V0IGNvbXBhcmVXaXRoKGZuOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbikge1xuICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IEVycm9yKCdgY29tcGFyZVdpdGhgIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbiAgICB9XG5cbiAgICBpZiAoZm4pIHtcbiAgICAgIHRoaXMuX2NvbXBhcmVXaXRoID0gZm47XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2NvbXBhcmVXaXRoOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgbW9kZWw6IE10eENoZWNrYm94R3JvdXBPcHRpb25bXTsgaW5kZXg6IG51bWJlciB9PigpO1xuXG4gIHNlbGVjdEFsbCA9IGZhbHNlO1xuICBzZWxlY3RBbGxJbmRldGVybWluYXRlID0gZmFsc2U7XG5cbiAgc2VsZWN0ZWRJdGVtczogTXR4Q2hlY2tib3hHcm91cE9wdGlvbltdID0gW107XG5cbiAgX29uQ2hhbmdlOiAodmFsdWU6IE10eENoZWNrYm94R3JvdXBPcHRpb25bXSkgPT4gdm9pZCA9ICgpID0+IG51bGw7XG4gIF9vblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9mb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsIHRydWUpLnN1YnNjcmliZShmb2N1c09yaWdpbiA9PiB7XG4gICAgICBpZiAoIWZvY3VzT3JpZ2luKSB7XG4gICAgICAgIC8vIFdoZW4gYSBmb2N1c2VkIGVsZW1lbnQgYmVjb21lcyBkaXNhYmxlZCwgdGhlIGJyb3dzZXIgKmltbWVkaWF0ZWx5KiBmaXJlcyBhIGJsdXIgZXZlbnQuXG4gICAgICAgIC8vIEFuZ3VsYXIgZG9lcyBub3QgZXhwZWN0IGV2ZW50cyB0byBiZSByYWlzZWQgZHVyaW5nIGNoYW5nZSBkZXRlY3Rpb24sIHNvIGFueSBzdGF0ZSBjaGFuZ2VcbiAgICAgICAgLy8gKHN1Y2ggYXMgYSBmb3JtIGNvbnRyb2wncyAnbmctdG91Y2hlZCcpIHdpbGwgY2F1c2UgYSBjaGFuZ2VkLWFmdGVyLWNoZWNrZWQgZXJyb3IuXG4gICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xNzc5My4gVG8gd29yayBhcm91bmQgdGhpcywgd2UgZGVmZXJcbiAgICAgICAgLy8gdGVsbGluZyB0aGUgZm9ybSBjb250cm9sIGl0IGhhcyBiZWVuIHRvdWNoZWQgdW50aWwgdGhlIG5leHQgdGljay5cbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGFuZCBzZWxlY3RzIGFuZCBvcHRpb24gYmFzZWQgb24gaXRzIHZhbHVlLlxuICAgKiBAcmV0dXJucyBPcHRpb24gdGhhdCBoYXMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUuXG4gICAqL1xuICBwcml2YXRlIF9zZWxlY3RWYWx1ZSh2YWx1ZTogTXR4Q2hlY2tib3hHcm91cE9wdGlvbikge1xuICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdPcHRpb24gPSAodGhpcy5pdGVtcyBhcyBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10pLmZpbmQob3B0aW9uID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbXBhcmVWYWx1ZSA9IG9wdGlvblt0aGlzLmJpbmRWYWx1ZV0gPT09IHZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcy5fY29tcGFyZVdpdGggPyB0aGlzLl9jb21wYXJlV2l0aChvcHRpb24sIHZhbHVlKSA6IGNvbXBhcmVWYWx1ZTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihlcnJvcik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChjb3JyZXNwb25kaW5nT3B0aW9uKSB7XG4gICAgICBjb3JyZXNwb25kaW5nT3B0aW9uLmNoZWNrZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBjb3JyZXNwb25kaW5nT3B0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1vZGVsIHZhbHVlLiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKiBAcGFyYW0gdmFsdWUgTmV3IHZhbHVlIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIG1vZGVsLlxuICAgKi9cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55W10pOiB2b2lkIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ1ZhbHVlIG11c3QgYmUgYW4gYXJyYXkuJyk7XG4gICAgICB9XG5cbiAgICAgIHZhbHVlLmZvckVhY2goKGN1cnJlbnRWYWx1ZTogYW55KSA9PiB0aGlzLl9zZWxlY3RWYWx1ZShjdXJyZW50VmFsdWUpKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuX2NoZWNrTWFzdGVyQ2hlY2tib3hTdGF0ZSgpO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIHRvIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSBtb2RlbCB2YWx1ZSBjaGFuZ2VzLlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgcmVnaXN0ZXJlZC5cbiAgICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogTXR4Q2hlY2tib3hHcm91cE9wdGlvbltdKSA9PiB7fSk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIGNvbnRyb2wgaXMgdG91Y2hlZC5cbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICogQHBhcmFtIGZuIENhbGxiYWNrIHRvIGJlIHJlZ2lzdGVyZWQuXG4gICAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY29udHJvbC4gSW1wbGVtZW50ZWQgYXMgYSBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZCBXaGV0aGVyIHRoZSBjb250cm9sIHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICovXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrTWFzdGVyQ2hlY2tib3hTdGF0ZSgpIHtcbiAgICBpZiAoXG4gICAgICAodGhpcy5pdGVtcyBhcyBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10pXG4gICAgICAgIC5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5jaGVja2VkIHx8ICFvcHRpb24uZGlzYWJsZWQpXG4gICAgICAgIC5ldmVyeShvcHRpb24gPT4gIW9wdGlvbi5jaGVja2VkKVxuICAgICkge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAodGhpcy5pdGVtcyBhcyBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10pXG4gICAgICAgIC5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5jaGVja2VkIHx8ICFvcHRpb24uZGlzYWJsZWQpXG4gICAgICAgIC5ldmVyeShvcHRpb24gPT4gb3B0aW9uLmNoZWNrZWQpXG4gICAgKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IHRydWU7XG4gICAgICB0aGlzLnNlbGVjdEFsbEluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RBbGxJbmRldGVybWluYXRlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRTZWxlY3RlZEl0ZW1zKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSAodGhpcy5pdGVtcyBhcyBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10pLmZpbHRlcihvcHRpb24gPT4gb3B0aW9uLmNoZWNrZWQpO1xuXG4gICAgaWYgKHRoaXMuX2NvbXBhcmVXaXRoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSAodGhpcy5fb3JpZ2luYWxJdGVtcyBhcyBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10pLmZpbHRlcihvcHRpb24gPT5cbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbmQoc2VsZWN0ZWRPcHRpb24gPT4gdGhpcy5fY29tcGFyZVdpdGgob3B0aW9uLCBzZWxlY3RlZE9wdGlvbikpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMubWFwKG9wdGlvbiA9PiBvcHRpb25bdGhpcy5iaW5kVmFsdWVdKTtcbiAgICB9XG5cbiAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuXG4gICAgdGhpcy5jaGFuZ2UuZW1pdCh7IG1vZGVsOiB0aGlzLnNlbGVjdGVkSXRlbXMsIGluZGV4IH0pO1xuICB9XG5cbiAgLyoqIEhhbmRsZSBub3JtYWwgY2hlY2tib3ggdG9nZ2xlICovXG4gIF91cGRhdGVOb3JtYWxDaGVja2JveFN0YXRlKGU6IE1hdENoZWNrYm94Q2hhbmdlLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fY2hlY2tNYXN0ZXJDaGVja2JveFN0YXRlKCk7XG4gICAgdGhpcy5fZ2V0U2VsZWN0ZWRJdGVtcyhpbmRleCk7XG4gIH1cblxuICAvKiogSGFuZGxlIG1hc3RlciBjaGVja2JveCB0b2dnbGUgKi9cbiAgX3VwZGF0ZU1hc3RlckNoZWNrYm94U3RhdGUoZTogTWF0Q2hlY2tib3hDaGFuZ2UsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdEFsbCA9ICF0aGlzLnNlbGVjdEFsbDtcbiAgICB0aGlzLnNlbGVjdEFsbEluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnNlbGVjdEFsbCkge1xuICAgICAgKHRoaXMuaXRlbXMgYXMgTXR4Q2hlY2tib3hHcm91cE9wdGlvbltdKVxuICAgICAgICAuZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24uY2hlY2tlZCB8fCAhb3B0aW9uLmRpc2FibGVkKVxuICAgICAgICAuZm9yRWFjaChvcHRpb24gPT4gKG9wdGlvbi5jaGVja2VkID0gdHJ1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAodGhpcy5pdGVtcyBhcyBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10pXG4gICAgICAgIC5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5jaGVja2VkIHx8ICFvcHRpb24uZGlzYWJsZWQpXG4gICAgICAgIC5mb3JFYWNoKG9wdGlvbiA9PiAob3B0aW9uLmNoZWNrZWQgPSAhIW9wdGlvbi5kaXNhYmxlZCkpO1xuICAgIH1cblxuICAgIHRoaXMuX2dldFNlbGVjdGVkSXRlbXMoaW5kZXgpO1xuICB9XG59XG4iXX0=