@odx/angular 1.0.0-rc.20 → 1.0.0-rc.21

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 (54) hide show
  1. package/components/button/index.d.ts +1 -0
  2. package/components/button/lib/directives/index.d.ts +1 -0
  3. package/components/button/lib/directives/responsive-button.directive.d.ts +6 -0
  4. package/components/list/lib/components/expandable-list-item/expandable-list-item.component.d.ts +14 -0
  5. package/components/list/lib/components/index.d.ts +1 -0
  6. package/components/list/lib/list.component.d.ts +4 -2
  7. package/components/list/lib/list.module.d.ts +3 -2
  8. package/components/mainfilter-group/README.md +3 -0
  9. package/components/mainfilter-group/index.d.ts +1 -0
  10. package/components/mainfilter-group/lib/mainfilter-group.component.d.ts +6 -0
  11. package/components/menu/lib/menu.directive.d.ts +2 -1
  12. package/esm2020/components/button/index.mjs +2 -1
  13. package/esm2020/components/button/lib/directives/index.mjs +2 -0
  14. package/esm2020/components/button/lib/directives/responsive-button.directive.mjs +24 -0
  15. package/esm2020/components/form-field/lib/form-field.component.mjs +4 -4
  16. package/esm2020/components/launch-tile/lib/launch-tile.component.mjs +2 -2
  17. package/esm2020/components/list/lib/components/expandable-list-item/expandable-list-item.component.mjs +49 -0
  18. package/esm2020/components/list/lib/components/index.mjs +2 -1
  19. package/esm2020/components/list/lib/list.component.mjs +21 -10
  20. package/esm2020/components/list/lib/list.module.mjs +4 -4
  21. package/esm2020/components/mainfilter-group/index.mjs +2 -0
  22. package/esm2020/components/mainfilter-group/lib/mainfilter-group.component.mjs +21 -0
  23. package/esm2020/components/mainfilter-group/odx-angular-components-mainfilter-group.mjs +5 -0
  24. package/esm2020/components/menu/lib/menu.directive.mjs +6 -2
  25. package/esm2020/components/select/lib/select.component.mjs +6 -2
  26. package/fesm2015/odx-angular-components-button.mjs +24 -2
  27. package/fesm2015/odx-angular-components-button.mjs.map +1 -1
  28. package/fesm2015/odx-angular-components-form-field.mjs +2 -2
  29. package/fesm2015/odx-angular-components-form-field.mjs.map +1 -1
  30. package/fesm2015/odx-angular-components-launch-tile.mjs +1 -1
  31. package/fesm2015/odx-angular-components-launch-tile.mjs.map +1 -1
  32. package/fesm2015/odx-angular-components-list.mjs +64 -14
  33. package/fesm2015/odx-angular-components-list.mjs.map +1 -1
  34. package/fesm2015/odx-angular-components-mainfilter-group.mjs +27 -0
  35. package/fesm2015/odx-angular-components-mainfilter-group.mjs.map +1 -0
  36. package/fesm2015/odx-angular-components-menu.mjs +5 -1
  37. package/fesm2015/odx-angular-components-menu.mjs.map +1 -1
  38. package/fesm2015/odx-angular-components-select.mjs +4 -0
  39. package/fesm2015/odx-angular-components-select.mjs.map +1 -1
  40. package/fesm2020/odx-angular-components-button.mjs +24 -2
  41. package/fesm2020/odx-angular-components-button.mjs.map +1 -1
  42. package/fesm2020/odx-angular-components-form-field.mjs +2 -2
  43. package/fesm2020/odx-angular-components-form-field.mjs.map +1 -1
  44. package/fesm2020/odx-angular-components-launch-tile.mjs +1 -1
  45. package/fesm2020/odx-angular-components-launch-tile.mjs.map +1 -1
  46. package/fesm2020/odx-angular-components-list.mjs +63 -14
  47. package/fesm2020/odx-angular-components-list.mjs.map +1 -1
  48. package/fesm2020/odx-angular-components-mainfilter-group.mjs +27 -0
  49. package/fesm2020/odx-angular-components-mainfilter-group.mjs.map +1 -0
  50. package/fesm2020/odx-angular-components-menu.mjs +5 -1
  51. package/fesm2020/odx-angular-components-menu.mjs.map +1 -1
  52. package/fesm2020/odx-angular-components-select.mjs +4 -0
  53. package/fesm2020/odx-angular-components-select.mjs.map +1 -1
  54. package/package.json +10 -2
@@ -3,7 +3,7 @@ import { __decorate, __metadata } from "tslib";
3
3
  import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
4
4
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
5
5
  import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, EventEmitter, forwardRef, HostListener, inject, Input, Output, QueryList, ViewChild, ViewEncapsulation, } from '@angular/core';
6
- import { CoreModule, detectControllerChanges, ODX_IDENTITY_MATCHER } from '@odx/angular';
6
+ import { CoreModule, detectControllerChanges, DisabledController, ODX_IDENTITY_MATCHER, ReadonlyController } from '@odx/angular';
7
7
  import { CustomFormControl } from '@odx/angular/cdk/custom-form-control';
8
8
  import { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';
9
9
  import { DropdownDirective } from '@odx/angular/components/dropdown';
@@ -151,6 +151,8 @@ let SelectComponent = SelectComponent_1 = class SelectComponent extends CustomFo
151
151
  };
152
152
  SelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
153
153
  SelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: SelectComponent, isStandalone: true, selector: "odx-select", inputs: { placeholder: "placeholder", isLoading: "isLoading", multiple: "multiple", selectedOptionTemplate: "selectedOptionTemplate", stringify: "stringify", identityMatcher: "identityMatcher" }, outputs: { change: "change" }, host: { listeners: { "click": "openDropdown($event)", "keydown": "openDropdown($event)", "focusout": "handleFocusOut()" }, properties: { "attr.aria-disabled": "isDisabled || null", "class.is-open": "isOpen", "tabindex": "searchFieldEnabled || isDisabled ? -1 : 0", "attr.aria-multiselectable": "multiple" } }, providers: [
154
+ DisabledController.connect(),
155
+ ReadonlyController.connect(),
154
156
  {
155
157
  provide: SELECT_CONTROL,
156
158
  useExisting: forwardRef(() => SelectComponent_1),
@@ -173,6 +175,8 @@ export { SelectComponent };
173
175
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SelectComponent, decorators: [{
174
176
  type: Component,
175
177
  args: [{ standalone: true, selector: 'odx-select', imports: [CoreModule, DropdownDirective, IconComponent, DynamicViewDirective, OptionComponent, LoadingSpinnerModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
178
+ DisabledController.connect(),
179
+ ReadonlyController.connect(),
176
180
  {
177
181
  provide: SELECT_CONTROL,
178
182
  useExisting: forwardRef(() => SelectComponent),
@@ -216,4 +220,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
216
220
  type: HostListener,
217
221
  args: ['focusout']
218
222
  }] } });
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3NlbGVjdC9zcmMvbGliL3NlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9zZWxlY3Qvc3JjL2xpYi9zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFtQixvQkFBb0IsRUFBZSxNQUFNLGNBQWMsQ0FBQztBQUN2SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENB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LElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGNBQWM7NEJBQ3ZCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDO3lCQUMvQztxQkFDRixRQUNLO3dCQUNKLHNCQUFzQixFQUFFLG9CQUFvQjt3QkFDNUMsaUJBQWlCLEVBQUUsUUFBUTt3QkFDM0IsWUFBWSxFQUFFLDJDQUEyQzt3QkFDekQsNkJBQTZCLEVBQUUsVUFBVTtxQkFDMUM7MEVBY1MsT0FBTztzQkFEaEIsZUFBZTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRTtnQkFJNUUsUUFBUTtzQkFEakIsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBa0JyQixXQUFXO3NCQURqQixLQUFLO2dCQUtDLFNBQVM7c0JBRGYsS0FBSztnQkFNQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsc0JBQXNCO3NCQUQ1QixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxlQUFlO3NCQURyQixLQUFLO2dCQUtDLE1BQU07c0JBRlosTUFBTTtnQkFLQSxXQUFXO3NCQURqQixZQUFZO3VCQUFDLDBCQUEwQjtnQkEyRDlCLFlBQVk7c0JBRnJCLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDaEMsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZXpCLGNBQWM7c0JBRHZCLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSwgZGV0ZWN0Q29udHJvbGxlckNoYW5nZXMsIElkZW50aXR5TWF0Y2hlciwgT0RYX0lERU5USVRZX01BVENIRVIsIFN0cmluZ2lmeUZuIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IEN1c3RvbUZvcm1Db250cm9sIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9jdXN0b20tZm9ybS1jb250cm9sJztcbmltcG9ydCB7IER5bmFtaWNWaWV3RGlyZWN0aXZlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9keW5hbWljLXZpZXcnO1xuaW1wb3J0IHsgRHJvcGRvd25EaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBMb2FkaW5nU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2xvYWRpbmctc3Bpbm5lcic7XG5pbXBvcnQgeyBDU1NDb21wb25lbnQsIENTU01vZGlmaWVyIH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsJztcbmltcG9ydCB7IGZyb21RdWVyeUxpc3QgfSBmcm9tICdAb2R4L2FuZ3VsYXIvcnhqcyc7XG5pbXBvcnQgeyBkZWZlckZuLCBpbmplY3RFbGVtZW50LCBUcmFuc2Zvcm0gfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgU2VsZWN0Q29udHJvbCwgU2VsZWN0Q29udHJvbE9wdGlvbiB9IGZyb20gJy4vYWJzdHJhY3QnO1xuaW1wb3J0IHsgT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IFNlbGVjdFNlYXJjaEZpZWxkRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFNFTEVDVF9DT05UUk9MIH0gZnJvbSAnLi9zZWxlY3QudG9rZW5zJztcblxuQENTU0NvbXBvbmVudCgnc2VsZWN0JylcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ29keC1zZWxlY3QnLFxuICBpbXBvcnRzOiBbQ29yZU1vZHVsZSwgRHJvcGRvd25EaXJlY3RpdmUsIEljb25Db21wb25lbnQsIER5bmFtaWNWaWV3RGlyZWN0aXZlLCBPcHRpb25Db21wb25lbnQsIExvYWRpbmdTcGlubmVyTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBTRUxFQ1RfQ09OVFJPTCxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlbGVjdENvbXBvbmVudCksXG4gICAgfSxcbiAgXSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5hcmlhLWRpc2FibGVkXSc6ICdpc0Rpc2FibGVkIHx8IG51bGwnLFxuICAgICdbY2xhc3MuaXMtb3Blbl0nOiAnaXNPcGVuJyxcbiAgICAnW3RhYmluZGV4XSc6ICdzZWFyY2hGaWVsZEVuYWJsZWQgfHwgaXNEaXNhYmxlZCA/IC0xIDogMCcsXG4gICAgJ1thdHRyLmFyaWEtbXVsdGlzZWxlY3RhYmxlXSc6ICdtdWx0aXBsZScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbXBvbmVudDxUID0gdW5rbm93biB8IHVua25vd25bXT4gZXh0ZW5kcyBDdXN0b21Gb3JtQ29udHJvbDxUIHwgbnVsbD4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBTZWxlY3RDb250cm9sPFQ+IHtcbiAgcHVibGljIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9pc0xvYWRpbmc6IEJvb2xlYW5JbnB1dDtcbiAgcHVibGljIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9tdWx0aXBsZTogQm9vbGVhbklucHV0O1xuXG4gIHByaXZhdGUga2V5TWFuYWdlcj86IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPE9wdGlvbkNvbXBvbmVudDxUPj47XG5cbiAgcHJvdGVjdGVkIHNlYXJjaEZpZWxkRW5hYmxlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc21vb3RoU2Nyb2xsRW5hYmxlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRPcHRpb246IE9wdGlvbkNvbXBvbmVudDxUPiB8IG51bGwgPSBudWxsO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRPcHRpb25UZXh0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBAQ29udGVudENoaWxkcmVuKE9wdGlvbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSwgZW1pdERpc3RpbmN0Q2hhbmdlc09ubHk6IHRydWUgfSlcbiAgcHJvdGVjdGVkIG9wdGlvbnM/OiBRdWVyeUxpc3Q8T3B0aW9uQ29tcG9uZW50PFQ+PjtcblxuICBAVmlld0NoaWxkKERyb3Bkb3duRGlyZWN0aXZlKVxuICBwcm90ZWN0ZWQgZHJvcGRvd24/OiBEcm9wZG93bkRpcmVjdGl2ZTtcblxuICBwdWJsaWMgZ2V0IGhhc09wdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3RFbGVtZW50KCk7XG5cbiAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5kcm9wZG93bj8uaXNPcGVuO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZE9wdGlvbkNvbnRlbnQoKTogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFQgfCBudWxsIH0+IHwgc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRPcHRpb24gPyB0aGlzLnNlbGVjdGVkT3B0aW9uVGVtcGxhdGUgPz8gdGhpcy5zZWxlY3RlZE9wdGlvblRleHQgOiBudWxsO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgQFRyYW5zZm9ybShjb2VyY2VCb29sZWFuUHJvcGVydHkpXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc0xvYWRpbmcgPSBmYWxzZTtcblxuICBAQ1NTTW9kaWZpZXIoKVxuICBAVHJhbnNmb3JtKGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSlcbiAgQElucHV0KClcbiAgcHVibGljIG11bHRpcGxlID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNlbGVjdGVkT3B0aW9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogVCB9PiB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdHJpbmdpZnk/OiBTdHJpbmdpZnlGbjxUIHwgbnVsbD47XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlkZW50aXR5TWF0Y2hlcjogSWRlbnRpdHlNYXRjaGVyPFQgfCBudWxsPiA9IGluamVjdChPRFhfSURFTlRJVFlfTUFUQ0hFUik7XG5cbiAgQE91dHB1dCgpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBwdWJsaWMgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBDb250ZW50Q2hpbGQoU2VsZWN0U2VhcmNoRmllbGREaXJlY3RpdmUpXG4gIHB1YmxpYyBzZWFyY2hGaWVsZD86IFNlbGVjdFNlYXJjaEZpZWxkRGlyZWN0aXZlO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKG51bGwpO1xuICAgIGRldGVjdENvbnRyb2xsZXJDaGFuZ2VzKHRoaXMpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucykgcmV0dXJuO1xuICAgIHRoaXMua2V5TWFuYWdlciA9IG5ldyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcih0aGlzLm9wdGlvbnMpLndpdGhIb21lQW5kRW5kKCkuc2tpcFByZWRpY2F0ZSgoaXRlbSkgPT4gaXRlbS5kaXNhYmxlZCk7XG4gICAgZnJvbVF1ZXJ5TGlzdCh0aGlzLm9wdGlvbnMpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkT3B0aW9uKCk7XG4gICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgZGVmZXJGbigoKSA9PiB0aGlzLmFjdGl2YXRlU2VsZWN0ZWRPcHRpb24oKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zZWFyY2hGaWVsZD8udmFsdWVDaGFuZ2UkLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRyaWdnZXJDb250cm9sbGVyQ2hhbmdlKCkpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogVCB8IG51bGwpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBzdXBlci5yZWdpc3Rlck9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZE9wdGlvbigpO1xuICAgICAgZm4odmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdE9wdGlvbihvcHRpb24/OiBTZWxlY3RDb250cm9sT3B0aW9uPFQgfCBUW10+IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChvcHRpb24gJiYgIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgb3B0aW9uLnN3aXRjaENoZWNrYm94KCk7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMubXVsdGlwbGVcbiAgICAgICAgPyB0aGlzLm9wdGlvbnNcbiAgICAgICAgICAgID8udG9BcnJheSgpXG4gICAgICAgICAgICAuZmlsdGVyKCh7IGlzU2VsZWN0ZWQgfSkgPT4gaXNTZWxlY3RlZClcbiAgICAgICAgICAgIC5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpXG4gICAgICAgIDogb3B0aW9uLnZhbHVlO1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZSgodmFsdWUgYXMgVCkgPz8gbnVsbCk7XG4gICAgfVxuXG4gICAgIXRoaXMubXVsdGlwbGUgJiYgdGhpcy5kcm9wZG93bj8uY2xvc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc09wdGlvblNlbGVjdGVkKG9wdGlvbjogU2VsZWN0Q29udHJvbE9wdGlvbjxUIHwgVFtdPik6IGJvb2xlYW4ge1xuICAgIGlmIChvcHRpb24gJiYgIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgYXMgVFtdKS5pbmNsdWRlcyhvcHRpb24udmFsdWUgYXMgVCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5pZGVudGl0eU1hdGNoZXIob3B0aW9uLnZhbHVlIGFzIFQsIHRoaXMudmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc2Nyb2xsT3B0aW9uSW50b1ZpZXcoeyBlbGVtZW50IH06IFNlbGVjdENvbnRyb2xPcHRpb248VD4pOiB2b2lkIHtcbiAgICBjb25zdCBiZWhhdmlvciA9IHRoaXMuc21vb3RoU2Nyb2xsRW5hYmxlZCA/ICdzbW9vdGgnIDogdW5kZWZpbmVkO1xuICAgIGVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnY2VudGVyJywgYmVoYXZpb3IgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb3BlbkRyb3Bkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNMb2FkaW5nKSByZXR1cm47XG4gICAgaWYgKHRoaXMuaXNPcGVuICYmIHRoaXMuaGFzT3B0aW9ucykge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fCBldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNlbGVjdE9wdGlvbih0aGlzLmtleU1hbmFnZXI/LmFjdGl2ZUl0ZW0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMua2V5TWFuYWdlcj8ub25LZXlkb3duKGV2ZW50KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JylcbiAgcHJvdGVjdGVkIGhhbmRsZUZvY3VzT3V0KCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWN0aXZhdGVTZWxlY3RlZE9wdGlvbigpOiB2b2lkIHtcbiAgICBsZXQgYWN0aXZlSW5kZXggPSB0aGlzLm9wdGlvbnM/LnRvQXJyYXkoKS5maW5kSW5kZXgoKG9wdGlvbikgPT4gb3B0aW9uLmlzU2VsZWN0ZWQgJiYgIW9wdGlvbi5kaXNhYmxlZCk7XG4gICAgaWYgKCFhY3RpdmVJbmRleCB8fCBhY3RpdmVJbmRleCA9PT0gLTEpIHtcbiAgICAgIGFjdGl2ZUluZGV4ID0gdGhpcy5vcHRpb25zPy50b0FycmF5KCkuZmluZEluZGV4KChvcHRpb24pID0+ICFvcHRpb24uZGlzYWJsZWQpID8/IC0xO1xuICAgIH1cbiAgICB0aGlzLmtleU1hbmFnZXI/LnNldEFjdGl2ZUl0ZW0oYWN0aXZlSW5kZXgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRHJvcGRvd25PcGVuKCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RlZE9wdGlvbigpO1xuICAgIGlmICghdGhpcy5zZWFyY2hGaWVsZEVuYWJsZWQpIHtcbiAgICAgIHRoaXMuc2VhcmNoRmllbGRFbmFibGVkID0gISF0aGlzLnNlYXJjaEZpZWxkO1xuICAgICAgZGVmZXJGbigoKSA9PiB0aGlzLnNlYXJjaEZpZWxkPy5mb2N1cygpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Ecm9wZG93bkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZVNtb290aFNjcm9sbCgpO1xuICAgIGlmICh0aGlzLnNlYXJjaEZpZWxkRW5hYmxlZCkge1xuICAgICAgdGhpcy5zZWFyY2hGaWVsZEVuYWJsZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbkRyb3Bkb3duQ2xvc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoRmllbGQ/LnJlc2V0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGlzYWJsZVNtb290aFNjcm9sbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNtb290aFNjcm9sbEVuYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbmFibGVTbW9vdGhTY3JvbGwoKTogdm9pZCB7XG4gICAgdGhpcy5zbW9vdGhTY3JvbGxFbmFibGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0ZWRPcHRpb24oKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucz8udG9BcnJheSgpO1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBvcHRpb25zPy5maW5kKChvcHRpb24pID0+IG9wdGlvbi5pc1NlbGVjdGVkKSA/PyBudWxsO1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uVGV4dCA9XG4gICAgICAgIG9wdGlvbnNcbiAgICAgICAgICA/LmZpbHRlcigoeyBpc1NlbGVjdGVkIH0pID0+IGlzU2VsZWN0ZWQpXG4gICAgICAgICAgLm1hcCgob3B0aW9uKSA9PiB0aGlzLnN0cmluZ2lmeT8uKG9wdGlvbi52YWx1ZSkgPz8gb3B0aW9uLmdldExhYmVsKCkpXG4gICAgICAgICAgLmpvaW4oJywgJykgPz8gbnVsbDtcblxuICAgICAgdGhpcy50cmlnZ2VyQ29udHJvbGxlckNoYW5nZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uVGV4dCA9IHRoaXMuc2VsZWN0ZWRPcHRpb24gPyB0aGlzLnN0cmluZ2lmeT8uKHRoaXMuc2VsZWN0ZWRPcHRpb24/LnZhbHVlKSA/PyB0aGlzLnNlbGVjdGVkT3B0aW9uLmdldExhYmVsKCkgOiBudWxsO1xuICAgIHRoaXMudHJpZ2dlckNvbnRyb2xsZXJDaGFuZ2UoKTtcbiAgfVxufVxuIiwiPGRpdlxuICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gIGNsYXNzPVwib2R4LXNlbGVjdF9fdHJpZ2dlclwiXG4gIFtvZHhEcm9wZG93bl09XCJkcm9wZG93bkNvbnRlbnRcIlxuICBbb2R4RHJvcGRvd25EaXNhYmxlZF09XCJpc0Rpc2FibGVkIHx8IGlzUmVhZG9ubHlcIlxuICBbb2R4RHJvcGRvd25PcHRpb25zXT1cInsgbWF0Y2hSZWZlcmVuY2VXaWR0aDogdHJ1ZSwgb2Zmc2V0OiA0IH1cIlxuICBbb2R4RHJvcGRvd25SZWZlcmVuY2VFbGVtZW50XT1cImVsZW1lbnQubmF0aXZlRWxlbWVudFwiXG4gIFtvZHhEcm9wZG93blNob3dMb2FkZXJdPVwiaXNMb2FkaW5nXCJcbiAgKG9keERyb3Bkb3duQmVmb3JlT3Blbik9XCJvbkRyb3Bkb3duT3BlbigpXCJcbiAgKG9keERyb3Bkb3duQmVmb3JlQ2xvc2UpPVwib25Ecm9wZG93bkNsb3NlKClcIlxuICAob2R4RHJvcGRvd25BZnRlckNsb3NlKT1cIm9uRHJvcGRvd25DbG9zZWQoKVwiXG4gIChvZHhEcm9wZG93bkFmdGVyT3Blbik9XCJlbmFibGVTbW9vdGhTY3JvbGwoKVwiXG4+XG4gIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIhc2VhcmNoRmllbGRFbmFibGVkXCIgW25nSWZFbHNlXT1cInNlYXJjaEZpZWxkVGVtcGxhdGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwib2R4LXNlbGVjdF9fdmFsdWVcIiAqbmdJZj1cInNlbGVjdGVkT3B0aW9uQ29udGVudDsgZWxzZSBwbGFjZWhvbGRlclRlbXBsYXRlXCI+XG4gICAgICA8bmctdGVtcGxhdGUgW29keER5bmFtaWNWaWV3XT1cInNlbGVjdGVkT3B0aW9uQ29udGVudFwiIFtvZHhEeW5hbWljVmlld0NvbnRleHRdPVwieyAkaW1wbGljaXQ6IHZhbHVlIH1cIj48L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyVGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cIm9keC1zZWxlY3RfX3BsYWNlaG9sZGVyXCI+XG4gICAgICB7eyBwbGFjZWhvbGRlciB9fVxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI3NlYXJjaEZpZWxkVGVtcGxhdGU+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW29keFNlbGVjdFNlYXJjaEZpZWxkXVwiPjwvbmctY29udGVudD5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG9keC1pY29uIGNsYXNzPVwib2R4LXNlbGVjdF9faW5kaWNhdG9yXCIgbmFtZT1cImNoZXZyb24tZG93blwiPjwvb2R4LWljb24+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjZHJvcGRvd25Db250ZW50PlxuICA8ZGl2IGNsYXNzPVwib2R4LXNlbGVjdC1kcm9wZG93blwiIHJvbGU9XCJsaXN0Ym94XCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImhhc09wdGlvbnNcIiBbbmdJZkVsc2VdPVwibm9PcHRpb25zVGVtcGxhdGVcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjbm9PcHRpb25zVGVtcGxhdGU+XG4gICAgICA8b2R4LW9wdGlvbiBkaXNhYmxlZCBub3RGb3VuZE1lc3NhZ2U+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbb2R4RHluYW1pY1ZpZXddPVwic2VhcmNoRmllbGQ/Lm5vdEZvdW5kQ29udGVudFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L29keC1vcHRpb24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3NlbGVjdC9zcmMvbGliL3NlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9zZWxlY3Qvc3JjL2xpYi9zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFFLGtCQUFrQixFQUFtQixvQkFBb0IsRUFBRSxrQkFBa0IsRUFBZSxNQUFNLGNBQWMsQ0FBQztBQUMvSixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUs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LEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQyxpQkFFckcsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVCxrQkFBa0IsQ0FBQyxPQUFPLEVBQUU7d0JBQzVCLGtCQUFrQixDQUFDLE9BQU8sRUFBRTt3QkFDNUI7NEJBQ0UsT0FBTyxFQUFFLGNBQWM7NEJBQ3ZCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDO3lCQUMvQztxQkFDRixRQUNLO3dCQUNKLHNCQUFzQixFQUFFLG9CQUFvQjt3QkFDNUMsaUJBQWlCLEVBQUUsUUFBUTt3QkFDM0IsWUFBWSxFQUFFLDJDQUEyQzt3QkFDekQsNkJBQTZCLEVBQUUsVUFBVTtxQkFDMUM7MEVBY1MsT0FBTztzQkFEaEIsZUFBZTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRTtnQkFJNUUsUUFBUTtzQkFEakIsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBa0JyQixXQUFXO3NCQURqQixLQUFLO2dCQUtDLFNBQVM7c0JBRGYsS0FBSztnQkFNQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsc0JBQXNCO3NCQUQ1QixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxlQUFlO3NCQURyQixLQUFLO2dCQUtDLE1BQU07c0JBRlosTUFBTTtnQkFLQSxXQUFXO3NCQURqQixZQUFZO3VCQUFDLDBCQUEwQjtnQkEyRDlCLFlBQVk7c0JBRnJCLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDaEMsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZXpCLGNBQWM7c0JBRHZCLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSwgZGV0ZWN0Q29udHJvbGxlckNoYW5nZXMsIERpc2FibGVkQ29udHJvbGxlciwgSWRlbnRpdHlNYXRjaGVyLCBPRFhfSURFTlRJVFlfTUFUQ0hFUiwgUmVhZG9ubHlDb250cm9sbGVyLCBTdHJpbmdpZnlGbiB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBDdXN0b21Gb3JtQ29udHJvbCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvY3VzdG9tLWZvcm0tY29udHJvbCc7XG5pbXBvcnQgeyBEeW5hbWljVmlld0RpcmVjdGl2ZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvZHluYW1pYy12aWV3JztcbmltcG9ydCB7IERyb3Bkb3duRGlyZWN0aXZlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgTG9hZGluZ1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9sb2FkaW5nLXNwaW5uZXInO1xuaW1wb3J0IHsgQ1NTQ29tcG9uZW50LCBDU1NNb2RpZmllciB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBmcm9tUXVlcnlMaXN0IH0gZnJvbSAnQG9keC9hbmd1bGFyL3J4anMnO1xuaW1wb3J0IHsgZGVmZXJGbiwgaW5qZWN0RWxlbWVudCwgVHJhbnNmb3JtIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IFNlbGVjdENvbnRyb2wsIFNlbGVjdENvbnRyb2xPcHRpb24gfSBmcm9tICcuL2Fic3RyYWN0JztcbmltcG9ydCB7IE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBTZWxlY3RTZWFyY2hGaWVsZERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBTRUxFQ1RfQ09OVFJPTCB9IGZyb20gJy4vc2VsZWN0LnRva2Vucyc7XG5cbkBDU1NDb21wb25lbnQoJ3NlbGVjdCcpXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdvZHgtc2VsZWN0JyxcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIERyb3Bkb3duRGlyZWN0aXZlLCBJY29uQ29tcG9uZW50LCBEeW5hbWljVmlld0RpcmVjdGl2ZSwgT3B0aW9uQ29tcG9uZW50LCBMb2FkaW5nU3Bpbm5lck1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRGlzYWJsZWRDb250cm9sbGVyLmNvbm5lY3QoKSxcbiAgICBSZWFkb25seUNvbnRyb2xsZXIuY29ubmVjdCgpLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFNFTEVDVF9DT05UUk9MLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VsZWN0Q29tcG9uZW50KSxcbiAgICB9LFxuICBdLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLmFyaWEtZGlzYWJsZWRdJzogJ2lzRGlzYWJsZWQgfHwgbnVsbCcsXG4gICAgJ1tjbGFzcy5pcy1vcGVuXSc6ICdpc09wZW4nLFxuICAgICdbdGFiaW5kZXhdJzogJ3NlYXJjaEZpZWxkRW5hYmxlZCB8fCBpc0Rpc2FibGVkID8gLTEgOiAwJyxcbiAgICAnW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdJzogJ211bHRpcGxlJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50PFQgPSB1bmtub3duIHwgdW5rbm93bltdPiBleHRlbmRzIEN1c3RvbUZvcm1Db250cm9sPFQgfCBudWxsPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIFNlbGVjdENvbnRyb2w8VD4ge1xuICBwdWJsaWMgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2lzTG9hZGluZzogQm9vbGVhbklucHV0O1xuICBwdWJsaWMgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX211bHRpcGxlOiBCb29sZWFuSW5wdXQ7XG5cbiAgcHJpdmF0ZSBrZXlNYW5hZ2VyPzogQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8T3B0aW9uQ29tcG9uZW50PFQ+PjtcblxuICBwcm90ZWN0ZWQgc2VhcmNoRmllbGRFbmFibGVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzbW9vdGhTY3JvbGxFbmFibGVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzZWxlY3RlZE9wdGlvbjogT3B0aW9uQ29tcG9uZW50PFQ+IHwgbnVsbCA9IG51bGw7XG4gIHByb3RlY3RlZCBzZWxlY3RlZE9wdGlvblRleHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oT3B0aW9uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlLCBlbWl0RGlzdGluY3RDaGFuZ2VzT25seTogdHJ1ZSB9KVxuICBwcm90ZWN0ZWQgb3B0aW9ucz86IFF1ZXJ5TGlzdDxPcHRpb25Db21wb25lbnQ8VD4+O1xuXG4gIEBWaWV3Q2hpbGQoRHJvcGRvd25EaXJlY3RpdmUpXG4gIHByb3RlY3RlZCBkcm9wZG93bj86IERyb3Bkb3duRGlyZWN0aXZlO1xuXG4gIHB1YmxpYyBnZXQgaGFzT3B0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdEVsZW1lbnQoKTtcblxuICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmRyb3Bkb3duPy5pc09wZW47XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkT3B0aW9uQ29udGVudCgpOiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogVCB8IG51bGwgfT4gfCBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZE9wdGlvbiA/IHRoaXMuc2VsZWN0ZWRPcHRpb25UZW1wbGF0ZSA/PyB0aGlzLnNlbGVjdGVkT3B0aW9uVGV4dCA6IG51bGw7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgcGxhY2Vob2xkZXIgPSAnJztcblxuICBAVHJhbnNmb3JtKGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSlcbiAgQElucHV0KClcbiAgcHVibGljIGlzTG9hZGluZyA9IGZhbHNlO1xuXG4gIEBDU1NNb2RpZmllcigpXG4gIEBUcmFuc2Zvcm0oY29lcmNlQm9vbGVhblByb3BlcnR5KVxuICBASW5wdXQoKVxuICBwdWJsaWMgbXVsdGlwbGUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRPcHRpb25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBUIH0+IHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN0cmluZ2lmeT86IFN0cmluZ2lmeUZuPFQgfCBudWxsPjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaWRlbnRpdHlNYXRjaGVyOiBJZGVudGl0eU1hdGNoZXI8VCB8IG51bGw+ID0gaW5qZWN0KE9EWF9JREVOVElUWV9NQVRDSEVSKTtcblxuICBAT3V0cHV0KClcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIHB1YmxpYyBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQENvbnRlbnRDaGlsZChTZWxlY3RTZWFyY2hGaWVsZERpcmVjdGl2ZSlcbiAgcHVibGljIHNlYXJjaEZpZWxkPzogU2VsZWN0U2VhcmNoRmllbGREaXJlY3RpdmU7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIobnVsbCk7XG4gICAgZGV0ZWN0Q29udHJvbGxlckNoYW5nZXModGhpcykuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5vcHRpb25zKSByZXR1cm47XG4gICAgdGhpcy5rZXlNYW5hZ2VyID0gbmV3IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyKHRoaXMub3B0aW9ucykud2l0aEhvbWVBbmRFbmQoKS5za2lwUHJlZGljYXRlKChpdGVtKSA9PiBpdGVtLmRpc2FibGVkKTtcbiAgICBmcm9tUXVlcnlMaXN0KHRoaXMub3B0aW9ucykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRPcHRpb24oKTtcbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICBkZWZlckZuKCgpID0+IHRoaXMuYWN0aXZhdGVTZWxlY3RlZE9wdGlvbigpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnNlYXJjaEZpZWxkPy52YWx1ZUNoYW5nZSQuc3Vic2NyaWJlKCgpID0+IHRoaXMudHJpZ2dlckNvbnRyb2xsZXJDaGFuZ2UoKSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBUIHwgbnVsbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHN1cGVyLnJlZ2lzdGVyT25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkT3B0aW9uKCk7XG4gICAgICBmbih2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0T3B0aW9uKG9wdGlvbj86IFNlbGVjdENvbnRyb2xPcHRpb248VCB8IFRbXT4gfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKG9wdGlvbiAmJiAhb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICBvcHRpb24uc3dpdGNoQ2hlY2tib3goKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5tdWx0aXBsZVxuICAgICAgICA/IHRoaXMub3B0aW9uc1xuICAgICAgICAgICAgPy50b0FycmF5KClcbiAgICAgICAgICAgIC5maWx0ZXIoKHsgaXNTZWxlY3RlZCB9KSA9PiBpc1NlbGVjdGVkKVxuICAgICAgICAgICAgLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSlcbiAgICAgICAgOiBvcHRpb24udmFsdWU7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKCh2YWx1ZSBhcyBUKSA/PyBudWxsKTtcbiAgICB9XG5cbiAgICAhdGhpcy5tdWx0aXBsZSAmJiB0aGlzLmRyb3Bkb3duPy5jbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIGlzT3B0aW9uU2VsZWN0ZWQob3B0aW9uOiBTZWxlY3RDb250cm9sT3B0aW9uPFQgfCBUW10+KTogYm9vbGVhbiB7XG4gICAgaWYgKG9wdGlvbiAmJiAhb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAodGhpcy52YWx1ZSBhcyBUW10pLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSBhcyBUKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmlkZW50aXR5TWF0Y2hlcihvcHRpb24udmFsdWUgYXMgVCwgdGhpcy52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzY3JvbGxPcHRpb25JbnRvVmlldyh7IGVsZW1lbnQgfTogU2VsZWN0Q29udHJvbE9wdGlvbjxUPik6IHZvaWQge1xuICAgIGNvbnN0IGJlaGF2aW9yID0gdGhpcy5zbW9vdGhTY3JvbGxFbmFibGVkID8gJ3Ntb290aCcgOiB1bmRlZmluZWQ7XG4gICAgZWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICdjZW50ZXInLCBiZWhhdmlvciB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBvcGVuRHJvcGRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc0xvYWRpbmcpIHJldHVybjtcbiAgICBpZiAodGhpcy5pc09wZW4gJiYgdGhpcy5oYXNPcHRpb25zKSB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0T3B0aW9uKHRoaXMua2V5TWFuYWdlcj8uYWN0aXZlSXRlbSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5rZXlNYW5hZ2VyPy5vbktleWRvd24oZXZlbnQpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXNvdXQnKVxuICBwcm90ZWN0ZWQgaGFuZGxlRm9jdXNPdXQoKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhY3RpdmF0ZVNlbGVjdGVkT3B0aW9uKCk6IHZvaWQge1xuICAgIGxldCBhY3RpdmVJbmRleCA9IHRoaXMub3B0aW9ucz8udG9BcnJheSgpLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24uaXNTZWxlY3RlZCAmJiAhb3B0aW9uLmRpc2FibGVkKTtcbiAgICBpZiAoIWFjdGl2ZUluZGV4IHx8IGFjdGl2ZUluZGV4ID09PSAtMSkge1xuICAgICAgYWN0aXZlSW5kZXggPSB0aGlzLm9wdGlvbnM/LnRvQXJyYXkoKS5maW5kSW5kZXgoKG9wdGlvbikgPT4gIW9wdGlvbi5kaXNhYmxlZCkgPz8gLTE7XG4gICAgfVxuICAgIHRoaXMua2V5TWFuYWdlcj8uc2V0QWN0aXZlSXRlbShhY3RpdmVJbmRleCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Ecm9wZG93bk9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdGVkT3B0aW9uKCk7XG4gICAgaWYgKCF0aGlzLnNlYXJjaEZpZWxkRW5hYmxlZCkge1xuICAgICAgdGhpcy5zZWFyY2hGaWVsZEVuYWJsZWQgPSAhIXRoaXMuc2VhcmNoRmllbGQ7XG4gICAgICBkZWZlckZuKCgpID0+IHRoaXMuc2VhcmNoRmllbGQ/LmZvY3VzKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbkRyb3Bkb3duQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlU21vb3RoU2Nyb2xsKCk7XG4gICAgaWYgKHRoaXMuc2VhcmNoRmllbGRFbmFibGVkKSB7XG4gICAgICB0aGlzLnNlYXJjaEZpZWxkRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uRHJvcGRvd25DbG9zZWQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hGaWVsZD8ucmVzZXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkaXNhYmxlU21vb3RoU2Nyb2xsKCk6IHZvaWQge1xuICAgIHRoaXMuc21vb3RoU2Nyb2xsRW5hYmxlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVuYWJsZVNtb290aFNjcm9sbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNtb290aFNjcm9sbEVuYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZE9wdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zPy50b0FycmF5KCk7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG9wdGlvbnM/LmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLmlzU2VsZWN0ZWQpID8/IG51bGw7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25UZXh0ID1cbiAgICAgICAgb3B0aW9uc1xuICAgICAgICAgID8uZmlsdGVyKCh7IGlzU2VsZWN0ZWQgfSkgPT4gaXNTZWxlY3RlZClcbiAgICAgICAgICAubWFwKChvcHRpb24pID0+IHRoaXMuc3RyaW5naWZ5Py4ob3B0aW9uLnZhbHVlKSA/PyBvcHRpb24uZ2V0TGFiZWwoKSlcbiAgICAgICAgICAuam9pbignLCAnKSA/PyBudWxsO1xuXG4gICAgICB0aGlzLnRyaWdnZXJDb250cm9sbGVyQ2hhbmdlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25UZXh0ID0gdGhpcy5zZWxlY3RlZE9wdGlvbiA/IHRoaXMuc3RyaW5naWZ5Py4odGhpcy5zZWxlY3RlZE9wdGlvbj8udmFsdWUpID8/IHRoaXMuc2VsZWN0ZWRPcHRpb24uZ2V0TGFiZWwoKSA6IG51bGw7XG4gICAgdGhpcy50cmlnZ2VyQ29udHJvbGxlckNoYW5nZSgpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgY2xhc3M9XCJvZHgtc2VsZWN0X190cmlnZ2VyXCJcbiAgW29keERyb3Bkb3duXT1cImRyb3Bkb3duQ29udGVudFwiXG4gIFtvZHhEcm9wZG93bkRpc2FibGVkXT1cImlzRGlzYWJsZWQgfHwgaXNSZWFkb25seVwiXG4gIFtvZHhEcm9wZG93bk9wdGlvbnNdPVwieyBtYXRjaFJlZmVyZW5jZVdpZHRoOiB0cnVlLCBvZmZzZXQ6IDQgfVwiXG4gIFtvZHhEcm9wZG93blJlZmVyZW5jZUVsZW1lbnRdPVwiZWxlbWVudC5uYXRpdmVFbGVtZW50XCJcbiAgW29keERyb3Bkb3duU2hvd0xvYWRlcl09XCJpc0xvYWRpbmdcIlxuICAob2R4RHJvcGRvd25CZWZvcmVPcGVuKT1cIm9uRHJvcGRvd25PcGVuKClcIlxuICAob2R4RHJvcGRvd25CZWZvcmVDbG9zZSk9XCJvbkRyb3Bkb3duQ2xvc2UoKVwiXG4gIChvZHhEcm9wZG93bkFmdGVyQ2xvc2UpPVwib25Ecm9wZG93bkNsb3NlZCgpXCJcbiAgKG9keERyb3Bkb3duQWZ0ZXJPcGVuKT1cImVuYWJsZVNtb290aFNjcm9sbCgpXCJcbj5cbiAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiFzZWFyY2hGaWVsZEVuYWJsZWRcIiBbbmdJZkVsc2VdPVwic2VhcmNoRmllbGRUZW1wbGF0ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJvZHgtc2VsZWN0X192YWx1ZVwiICpuZ0lmPVwic2VsZWN0ZWRPcHRpb25Db250ZW50OyBlbHNlIHBsYWNlaG9sZGVyVGVtcGxhdGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbb2R4RHluYW1pY1ZpZXddPVwic2VsZWN0ZWRPcHRpb25Db250ZW50XCIgW29keER5bmFtaWNWaWV3Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogdmFsdWUgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXJUZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwib2R4LXNlbGVjdF9fcGxhY2Vob2xkZXJcIj5cbiAgICAgIHt7IHBsYWNlaG9sZGVyIH19XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjc2VhcmNoRmllbGRUZW1wbGF0ZT5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbb2R4U2VsZWN0U2VhcmNoRmllbGRdXCI+PC9uZy1jb250ZW50PlxuICA8L25nLXRlbXBsYXRlPlxuICA8b2R4LWljb24gY2xhc3M9XCJvZHgtc2VsZWN0X19pbmRpY2F0b3JcIiBuYW1lPVwiY2hldnJvbi1kb3duXCI+PC9vZHgtaWNvbj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNkcm9wZG93bkNvbnRlbnQ+XG4gIDxkaXYgY2xhc3M9XCJvZHgtc2VsZWN0LWRyb3Bkb3duXCIgcm9sZT1cImxpc3Rib3hcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaGFzT3B0aW9uc1wiIFtuZ0lmRWxzZV09XCJub09wdGlvbnNUZW1wbGF0ZVwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNub09wdGlvbnNUZW1wbGF0ZT5cbiAgICAgIDxvZHgtb3B0aW9uIGRpc2FibGVkIG5vdEZvdW5kTWVzc2FnZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtvZHhEeW5hbWljVmlld109XCJzZWFyY2hGaWVsZD8ubm90Rm91bmRDb250ZW50XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvb2R4LW9wdGlvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';
3
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Directive } from '@angular/core';
4
4
  import * as i1 from '@odx/angular';
5
5
  import { WithDisabledState } from '@odx/angular';
6
6
  import { CSSModifier, CSSComponent } from '@odx/angular/internal';
@@ -53,9 +53,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
53
53
  type: Input
54
54
  }] } });
55
55
 
56
+ class ResponsiveButtonDirective {
57
+ constructor() {
58
+ // eslint-disable-next-line @angular-eslint/no-input-rename
59
+ this.breakpoint = null;
60
+ }
61
+ }
62
+ ResponsiveButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ResponsiveButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
63
+ ResponsiveButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.4", type: ResponsiveButtonDirective, isStandalone: true, selector: "[odxButton][odxResponsiveButton]", inputs: { breakpoint: ["odxResponsiveButton", "breakpoint"] }, host: { properties: { "attr.data-breakpoint": "breakpoint" } }, ngImport: i0 });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ResponsiveButtonDirective, decorators: [{
65
+ type: Directive,
66
+ args: [{
67
+ standalone: true,
68
+ selector: '[odxButton][odxResponsiveButton]',
69
+ host: {
70
+ '[attr.data-breakpoint]': 'breakpoint',
71
+ },
72
+ }]
73
+ }], propDecorators: { breakpoint: [{
74
+ type: Input,
75
+ args: ['odxResponsiveButton']
76
+ }] } });
77
+
56
78
  /**
57
79
  * Generated bundle index. Do not edit.
58
80
  */
59
81
 
60
- export { ButtonComponent, ButtonSize, ButtonVariant };
82
+ export { ButtonComponent, ButtonSize, ButtonVariant, ResponsiveButtonDirective };
61
83
  //# sourceMappingURL=odx-angular-components-button.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-button.mjs","sources":["../../../../libs/angular/components/button/src/lib/models/button-size.ts","../../../../libs/angular/components/button/src/lib/models/button-variant.ts","../../../../libs/angular/components/button/src/lib/button.component.ts","../../../../libs/angular/components/button/src/lib/button.component.html","../../../../libs/angular/components/button/src/odx-angular-components-button.ts"],"sourcesContent":["export type ButtonSize = typeof ButtonSize[keyof typeof ButtonSize];\n\nexport const ButtonSize = {\n SMALL: 'small',\n MEDIUM: 'medium',\n} as const;\n","export type ButtonVariant = typeof ButtonVariant[keyof typeof ButtonVariant];\n\nexport const ButtonVariant = {\n PRIMARY: 'primary',\n SECONDARY: 'secondary',\n GHOST: 'ghost',\n HIGHLIGHT: 'highlight',\n SUCCESS: 'success',\n CONFIRMATION: 'confirmation',\n DANGER: 'danger',\n} as const;\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { WithDisabledState } from '@odx/angular';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { ButtonSize, ButtonVariant } from './models';\n\n@CSSComponent('button')\n@Component({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[odxButton], a[odxButton]',\n templateUrl: './button.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [WithDisabledState],\n host: {\n '[attr.type]': 'type || \"button\"',\n },\n})\nexport class ButtonComponent {\n public readonly element = injectElement<HTMLButtonElement | HTMLLinkElement>();\n public readonly type = this.element.nativeElement.getAttribute('type');\n\n @CSSModifier()\n @Input()\n public variant?: ButtonVariant | null = ButtonVariant.SECONDARY;\n\n @CSSModifier()\n @Input()\n public size?: ButtonSize | null = ButtonSize.MEDIUM;\n}\n","<ng-content select=\"odx-icon[alignLeft]\"></ng-content>\n<ng-content></ng-content>\n<ng-content select=\"odx-icon[alignRight]\"></ng-content>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAEa,MAAA,UAAU,GAAG;AACxB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,QAAQ;;;ACFL,MAAA,aAAa,GAAG;AAC3B,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,YAAY,EAAE,cAAc;AAC5B,IAAA,MAAM,EAAE,QAAQ;;;ACUL,IAAA,eAAe,GAArB,MAAM,eAAe,CAAA;AAArB,IAAA,WAAA,GAAA;AACW,QAAA,IAAO,CAAA,OAAA,GAAG,aAAa,EAAuC,CAAC;AAC/D,QAAA,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAIhE,QAAA,IAAA,CAAA,OAAO,GAA0B,aAAa,CAAC,SAAS,CAAC;AAIzD,QAAA,IAAA,CAAA,IAAI,GAAuB,UAAU,CAAC,MAAM,CAAC;KACrD;;4GAXY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,6PCnB5B,kJAGA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;ADoBE,UAAA,CAAA;AAAC,IAAA,WAAW,EAAE;;CAEkD,EAAA,eAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEhE,UAAA,CAAA;AAAC,IAAA,WAAW,EAAE;;CAEsC,EAAA,eAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAVzC,eAAe,GAAA,UAAA,CAAA;IAb3B,YAAY,CAAC,QAAQ,CAAC;CAaV,EAAA,eAAe,CAW3B,CAAA;2FAXY,eAAe,EAAA,UAAA,EAAA,CAAA;kBAZ3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EAEN,QAAA,EAAA,iCAAiC,EAE5B,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,cAAA,EAC/B,CAAC,iBAAiB,CAAC,EAC7B,IAAA,EAAA;AACJ,wBAAA,aAAa,EAAE,kBAAkB;AAClC,qBAAA,EAAA,QAAA,EAAA,kJAAA,EAAA,CAAA;8BAQM,OAAO,EAAA,CAAA;sBADb,KAAK;gBAKC,IAAI,EAAA,CAAA;sBADV,KAAK;;;AE5BR;;AAEG;;;;"}
1
+ {"version":3,"file":"odx-angular-components-button.mjs","sources":["../../../../libs/angular/components/button/src/lib/models/button-size.ts","../../../../libs/angular/components/button/src/lib/models/button-variant.ts","../../../../libs/angular/components/button/src/lib/button.component.ts","../../../../libs/angular/components/button/src/lib/button.component.html","../../../../libs/angular/components/button/src/lib/directives/responsive-button.directive.ts","../../../../libs/angular/components/button/src/odx-angular-components-button.ts"],"sourcesContent":["export type ButtonSize = typeof ButtonSize[keyof typeof ButtonSize];\n\nexport const ButtonSize = {\n SMALL: 'small',\n MEDIUM: 'medium',\n} as const;\n","export type ButtonVariant = typeof ButtonVariant[keyof typeof ButtonVariant];\n\nexport const ButtonVariant = {\n PRIMARY: 'primary',\n SECONDARY: 'secondary',\n GHOST: 'ghost',\n HIGHLIGHT: 'highlight',\n SUCCESS: 'success',\n CONFIRMATION: 'confirmation',\n DANGER: 'danger',\n} as const;\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { WithDisabledState } from '@odx/angular';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { ButtonSize, ButtonVariant } from './models';\n\n@CSSComponent('button')\n@Component({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[odxButton], a[odxButton]',\n templateUrl: './button.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [WithDisabledState],\n host: {\n '[attr.type]': 'type || \"button\"',\n },\n})\nexport class ButtonComponent {\n public readonly element = injectElement<HTMLButtonElement | HTMLLinkElement>();\n public readonly type = this.element.nativeElement.getAttribute('type');\n\n @CSSModifier()\n @Input()\n public variant?: ButtonVariant | null = ButtonVariant.SECONDARY;\n\n @CSSModifier()\n @Input()\n public size?: ButtonSize | null = ButtonSize.MEDIUM;\n}\n","<ng-content select=\"odx-icon[alignLeft]\"></ng-content>\n<ng-content></ng-content>\n<ng-content select=\"odx-icon[alignRight]\"></ng-content>\n","import { Directive, Input } from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[odxButton][odxResponsiveButton]',\n host: {\n '[attr.data-breakpoint]': 'breakpoint',\n },\n})\nexport class ResponsiveButtonDirective {\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('odxResponsiveButton')\n public breakpoint: string | null = null;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -333,7 +333,7 @@ let FormFieldComponent = class FormFieldComponent {
333
333
  }
334
334
  };
335
335
  FormFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
336
- FormFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: FormFieldComponent, isStandalone: true, selector: "odx-form-field", inputs: { label: "label", hasWarning: "hasWarning", variant: "variant" }, providers: [FormFieldService, FormFieldErrorService, ReadonlyController.connect()], queries: [{ propertyName: "labelDirective", first: true, predicate: FormFieldLabelDirective, descendants: true }], ngImport: i0, template: "<label class=\"odx-form-field__label\" [attr.for]=\"formFieldService.controlId$ | async\" [attr.aria-owns]=\"formFieldService.controlId$ | async\" *ngIf=\"hasLabel\">\n <odx-form-field-label *ngIf=\"label; else labelTemplate\">\n {{ label }}\n </odx-form-field-label>\n <ng-template #labelTemplate>\n <ng-content select=\"odx-form-field-label\"></ng-content>\n </ng-template>\n</label>\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\">\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\"></ng-content>\n </div>\n </div>\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\" *ngIf=\"!formGroup\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n </odx-form-field-info>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: FormFieldInfoComponent, selector: "odx-form-field-info", inputs: ["error"] }, { kind: "directive", type: FormFieldLabelDirective, selector: "odx-form-field-label" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
336
+ FormFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: FormFieldComponent, isStandalone: true, selector: "odx-form-field", inputs: { label: "label", hasWarning: "hasWarning", variant: "variant" }, providers: [FormFieldService, FormFieldErrorService, DisabledController.connect(), ReadonlyController.connect()], queries: [{ propertyName: "labelDirective", first: true, predicate: FormFieldLabelDirective, descendants: true }], ngImport: i0, template: "<label class=\"odx-form-field__label\" [attr.for]=\"formFieldService.controlId$ | async\" [attr.aria-owns]=\"formFieldService.controlId$ | async\" *ngIf=\"hasLabel\">\n <odx-form-field-label *ngIf=\"label; else labelTemplate\">\n {{ label }}\n </odx-form-field-label>\n <ng-template #labelTemplate>\n <ng-content select=\"odx-form-field-label\"></ng-content>\n </ng-template>\n</label>\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\">\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\"></ng-content>\n </div>\n </div>\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\" *ngIf=\"!formGroup\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n </odx-form-field-info>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: FormFieldInfoComponent, selector: "odx-form-field-info", inputs: ["error"] }, { kind: "directive", type: FormFieldLabelDirective, selector: "odx-form-field-label" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
337
337
  __decorate([
338
338
  CSSModifier(),
339
339
  __metadata("design:type", Object)
@@ -344,7 +344,7 @@ FormFieldComponent = __decorate([
344
344
  ], FormFieldComponent);
345
345
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FormFieldComponent, decorators: [{
346
346
  type: Component,
347
- args: [{ standalone: true, selector: 'odx-form-field', imports: [CoreModule, FormFieldInfoComponent, FormFieldLabelDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormFieldService, FormFieldErrorService, ReadonlyController.connect()], template: "<label class=\"odx-form-field__label\" [attr.for]=\"formFieldService.controlId$ | async\" [attr.aria-owns]=\"formFieldService.controlId$ | async\" *ngIf=\"hasLabel\">\n <odx-form-field-label *ngIf=\"label; else labelTemplate\">\n {{ label }}\n </odx-form-field-label>\n <ng-template #labelTemplate>\n <ng-content select=\"odx-form-field-label\"></ng-content>\n </ng-template>\n</label>\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\">\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\"></ng-content>\n </div>\n </div>\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\" *ngIf=\"!formGroup\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n </odx-form-field-info>\n</div>\n" }]
347
+ args: [{ standalone: true, selector: 'odx-form-field', imports: [CoreModule, FormFieldInfoComponent, FormFieldLabelDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormFieldService, FormFieldErrorService, DisabledController.connect(), ReadonlyController.connect()], template: "<label class=\"odx-form-field__label\" [attr.for]=\"formFieldService.controlId$ | async\" [attr.aria-owns]=\"formFieldService.controlId$ | async\" *ngIf=\"hasLabel\">\n <odx-form-field-label *ngIf=\"label; else labelTemplate\">\n {{ label }}\n </odx-form-field-label>\n <ng-template #labelTemplate>\n <ng-content select=\"odx-form-field-label\"></ng-content>\n </ng-template>\n</label>\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\">\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\"></ng-content>\n </div>\n </div>\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\" *ngIf=\"!formGroup\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n </odx-form-field-info>\n</div>\n" }]
348
348
  }], ctorParameters: function () { return []; }, propDecorators: { labelDirective: [{
349
349
  type: ContentChild,
350
350
  args: [FormFieldLabelDirective]
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-form-field.mjs","sources":["../../../../libs/angular/components/form-field/src/lib/form-field.config.ts","../../../../libs/angular/components/form-field/src/lib/form-field.service.ts","../../../../libs/angular/components/form-field/src/lib/services/form-field-error.service.ts","../../../../libs/angular/components/form-field/src/lib/directives/form.directive.ts","../../../../libs/angular/components/form-field/src/lib/directives/form-field-control.directive.ts","../../../../libs/angular/components/form-field/src/lib/directives/form-field-error.directive.ts","../../../../libs/angular/components/form-field/src/lib/directives/form-field-hint.directive.ts","../../../../libs/angular/components/form-field/src/lib/directives/form-field-label.directive.ts","../../../../libs/angular/components/form-field/src/lib/components/form-field-info/form-field-info.component.ts","../../../../libs/angular/components/form-field/src/lib/components/form-field-info/form-field-info.component.html","../../../../libs/angular/components/form-field/src/lib/components/form-group/form-group.component.ts","../../../../libs/angular/components/form-field/src/lib/components/form-group/form-group.component.html","../../../../libs/angular/components/form-field/src/lib/models/form-field-variant.ts","../../../../libs/angular/components/form-field/src/lib/form-field.component.ts","../../../../libs/angular/components/form-field/src/lib/form-field.component.html","../../../../libs/angular/components/form-field/src/lib/form-field.module.ts","../../../../libs/angular/components/form-field/src/odx-angular-components-form-field.ts"],"sourcesContent":["import { createConfigTokens } from '@odx/angular/utils';\nimport { FormFieldErrorResolvers } from './models';\n\nexport interface FormFieldConfig {\n /**\n * Object of error resolvers used to resolve error messages globally\n * @default {}\n */\n errors: FormFieldErrorResolvers;\n /**\n * Detect form field control changes on `blur` and/or `change`\n * @default ['blur']\n */\n updateOn: Array<'blur' | 'change'>;\n ignoreErrors: string[];\n}\n\nexport const { FormFieldDefaultConfig, FormFieldConfig, injectFormFieldConfig, provideFormFieldConfig } = createConfigTokens(\n 'FormField',\n '@odx/angular/components/form-field',\n {\n errors: {},\n ignoreErrors: [],\n updateOn: ['blur'],\n } as FormFieldConfig\n);\n","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { AbstractControl, Validators } from '@angular/forms';\nimport { Controller, DisabledController, ReadonlyController } from '@odx/angular';\nimport { BehaviorSubject, distinctUntilChanged, EMPTY, map, merge, Observable, of, shareReplay, startWith, switchMap, tap } from 'rxjs';\n\ninterface FieldControl {\n control: AbstractControl;\n nativeElement: HTMLElement;\n}\n\n@Injectable()\nexport class FormFieldService extends Controller implements OnDestroy {\n private static ID = 0;\n\n private readonly disabledController = DisabledController.inject();\n private readonly readonlyController = ReadonlyController.inject();\n private readonly control$$ = new BehaviorSubject<FieldControl | null>(null);\n\n public readonly control$ = this.control$$.pipe(shareReplay({ refCount: true }));\n public readonly controlId$ = this.control$.pipe(\n map((control) => (control ? control.nativeElement.id || `odx-form-field-${FormFieldService.ID++}` : null)),\n shareReplay({ refCount: true })\n );\n public readonly controlHintId$ = this.controlId$.pipe(\n map((id) => (id ? `${id}-hint` : null)),\n shareReplay({ refCount: true })\n );\n public readonly controlErrorId$ = this.controlId$.pipe(\n map((id) => (id ? `${id}-error` : null)),\n shareReplay({ refCount: true })\n );\n public readonly isDisabled$ = this.control$.pipe(\n switchMap((control) => (control ? merge(this.updateControlDisabledState(control), this.getControlDisabledState(control)) : of(false))),\n distinctUntilChanged(),\n shareReplay({ refCount: true })\n );\n public readonly isRequired$ = this.control$.pipe(\n map((control) => (control ? control.nativeElement.hasAttribute('required') || control.control.hasValidator(Validators.required) : false)),\n shareReplay({ refCount: true })\n );\n public readonly isReadonly$ = this.control$.pipe(\n switchMap((control) => (control && this.readonlyController ? this.readonlyController.isReadonly$ : of(false)))\n );\n\n public override ngOnDestroy(): void {\n this.control$$.complete();\n super.ngOnDestroy();\n }\n\n public registerControl(control: AbstractControl, { nativeElement }: ElementRef<HTMLElement>): void {\n this.control$$.next({ control, nativeElement });\n }\n\n public removeControl(): void {\n this.control$$.next(null);\n }\n\n private updateControlDisabledState({ control }: FieldControl): Observable<boolean> {\n if (this.disabledController) {\n return this.disabledController.isDisabled$.pipe(\n tap((state) => {\n if (state) {\n control.disable();\n } else {\n control.enable();\n }\n })\n );\n }\n return EMPTY;\n }\n\n private getControlDisabledState({ control }: FieldControl): Observable<boolean> {\n return control.statusChanges.pipe(\n startWith(control.status),\n map((status) => status === 'DISABLED'),\n distinctUntilChanged()\n );\n }\n}\n","import { Injectable, OnDestroy, TemplateRef } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { isTemplateRef } from '@odx/angular/utils';\nimport { BehaviorSubject, combineLatest, distinctUntilChanged, map, shareReplay } from 'rxjs';\nimport { injectFormFieldConfig } from '../form-field.config';\nimport { FormFieldError } from '../models';\n\nconst DEFAULT_CUSTOM_FORM_FIELD_ERROR = '@odx/angular/form-field/default-error';\nconst DEFAULT_ERROR_RESOLVER = () => '';\n\ninterface NgFormFieldError {\n key: string;\n context: unknown;\n}\n\ntype CustomFormFieldErrors = Record<string, TemplateRef<unknown>>;\n\n@Injectable()\nexport class FormFieldErrorService implements OnDestroy {\n private readonly config = injectFormFieldConfig();\n private readonly fieldError$$ = new BehaviorSubject<NgFormFieldError | null>(null);\n private readonly customErrors$$ = new BehaviorSubject<CustomFormFieldErrors>({});\n\n public readonly error$ = combineLatest([this.fieldError$$, this.customErrors$$]).pipe(\n map(([error, customErrors]) => this.resolveError(error, customErrors)),\n distinctUntilChanged(),\n shareReplay({ refCount: true })\n );\n public readonly hasError$ = this.error$.pipe(map((error) => error !== null));\n\n public get hasError(): boolean {\n return this.fieldError$$.getValue() !== null;\n }\n\n public ngOnDestroy(): void {\n this.fieldError$$.next(null);\n this.customErrors$$.next({});\n this.fieldError$$.complete();\n this.customErrors$$.complete();\n }\n\n public setError(errors?: ValidationErrors | null): void {\n this.fieldError$$.next(this.getFirstError(errors ?? {}));\n }\n\n public registerCustomError(key: string | undefined, template: TemplateRef<unknown>): void {\n this.customErrors$$.next({ ...this.customErrors$$.getValue(), [key || DEFAULT_CUSTOM_FORM_FIELD_ERROR]: template });\n }\n\n private getFirstError(errors: ValidationErrors): NgFormFieldError | null {\n const [key, context] = Object.entries(errors ?? {}).find(([errorKey]) => !this.config.ignoreErrors.includes(errorKey)) ?? [];\n\n return key ? { key, context } : null;\n }\n\n private resolveError(error: NgFormFieldError | null, customErrors: CustomFormFieldErrors): FormFieldError | null {\n if (!error) return null;\n const { key, context } = error;\n const message = customErrors[key] ?? customErrors[DEFAULT_CUSTOM_FORM_FIELD_ERROR];\n if (isTemplateRef(message)) {\n return {\n key,\n message,\n context: { $implicit: context },\n };\n }\n\n const getMessage = this.config.errors[key] ?? DEFAULT_ERROR_RESOLVER;\n return { key, message: getMessage(context) };\n }\n}\n","import { Directive } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { fromEvent, share } from 'rxjs';\n\n@CSSComponent('form')\n@Directive({\n standalone: true,\n selector: 'form[odxForm]',\n})\nexport class FormDirective {\n private readonly takeUntilDestroyed = untilDestroyed();\n\n public readonly element = injectElement<HTMLFormElement>();\n public readonly submit$ = fromEvent<Event>(this.element.nativeElement, 'submit').pipe(this.takeUntilDestroyed(), share());\n public readonly reset$ = fromEvent<Event>(this.element.nativeElement, 'reset').pipe(this.takeUntilDestroyed(), share());\n}\n","import { Directive, inject, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, FormControl, NgControl } from '@angular/forms';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { booleanToOptionalAttributeString, injectElement, reactiveAttributeBinding, untilDestroyed } from '@odx/angular/utils';\nimport { EMPTY, fromEvent, map, merge, NEVER, Observable, of, startWith, switchMap, tap } from 'rxjs';\nimport { injectFormFieldConfig } from '../form-field.config';\nimport { FormFieldService } from '../form-field.service';\nimport { FormFieldErrorService } from '../services';\nimport { FormDirective } from './form.directive';\n\n@CSSComponent('form-field-control')\n@Directive({\n standalone: true,\n selector: '[odxFormFieldControl]',\n exportAs: 'odxFormFieldControl',\n})\nexport class FormFieldControlDirective implements OnInit, OnDestroy {\n private readonly config = injectFormFieldConfig();\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n private readonly form = inject(FormDirective, { optional: true, skipSelf: true });\n private readonly onFormReset$ = this.form?.reset$ ?? EMPTY;\n private readonly onFormSubmit$ = this.form?.submit$ ?? EMPTY;\n private readonly formFieldService = inject(FormFieldService);\n private readonly formFieldErrorService = inject(FormFieldErrorService);\n private readonly takeUntilDestroyed = untilDestroyed();\n public readonly element = injectElement();\n\n constructor() {\n reactiveAttributeBinding(this.formFieldService.controlId$, 'id');\n reactiveAttributeBinding(this.formFieldService.controlHintId$, 'aria-describedby');\n reactiveAttributeBinding(this.formFieldService.isReadonly$, 'readonly');\n reactiveAttributeBinding(this.formFieldService.isDisabled$.pipe(map(booleanToOptionalAttributeString)), 'aria-disabled');\n reactiveAttributeBinding(this.formFieldService.isReadonly$.pipe(map(booleanToOptionalAttributeString)), 'aria-readonly');\n reactiveAttributeBinding(this.formFieldService.isRequired$.pipe(map(booleanToOptionalAttributeString)), 'aria-required');\n reactiveAttributeBinding(this.formFieldErrorService.hasError$.pipe(map(booleanToOptionalAttributeString)), 'aria-invalid');\n reactiveAttributeBinding(\n this.formFieldErrorService.hasError$.pipe(switchMap((hasError) => (hasError ? this.formFieldService.controlErrorId$ : of(null)))),\n 'aria-errormessage'\n );\n }\n\n public ngOnInit() {\n const control = this.ngControl?.control;\n this.formFieldService.registerControl(control ?? new FormControl(), this.element);\n if (!control) return;\n\n const controlChanges$ = merge(this.registerOnBlur(control), this.registerOnChange(control), this.registerOnSubmit(control));\n const changes$ = merge(\n this.onFormReset$.pipe(tap(() => this.formFieldErrorService?.setError(null))),\n controlChanges$.pipe(tap(() => this.formFieldErrorService?.setError(control.errors)))\n );\n changes$.pipe(this.takeUntilDestroyed()).subscribe();\n }\n\n public ngOnDestroy(): void {\n this.formFieldService.removeControl();\n }\n\n private registerOnBlur({ valueChanges }: AbstractControl): Observable<unknown> {\n if (this.config.updateOn.includes('blur')) {\n return fromEvent(this.element.nativeElement, 'focusout').pipe(switchMap(() => valueChanges.pipe(startWith(true))));\n }\n return EMPTY;\n }\n\n private registerOnChange({ valueChanges }: AbstractControl): Observable<unknown> {\n if (this.config.updateOn.includes('change')) {\n return valueChanges;\n }\n return EMPTY;\n }\n\n private registerOnSubmit({ statusChanges, valueChanges }: AbstractControl): Observable<unknown> {\n return merge(this.onFormSubmit$, this.onFormReset$).pipe(\n switchMap(({ type }) => (type === 'submit' ? merge(statusChanges, valueChanges).pipe(startWith(true)) : NEVER))\n );\n }\n}\n","import { Directive, inject, Input, OnInit, TemplateRef } from '@angular/core';\nimport { FormFieldErrorService } from '../services';\n\n@Directive({\n standalone: true,\n selector: '[odxFormFieldError]',\n})\nexport class FormFieldErrorDirective implements OnInit {\n private readonly formFieldErrorService = inject(FormFieldErrorService, { skipSelf: true });\n private readonly template = inject(TemplateRef, { self: true });\n\n @Input('odxFormFieldError')\n public key?: string;\n\n public ngOnInit() {\n this.formFieldErrorService.registerCustomError(this.key, this.template);\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { reactiveAttributeBinding } from '@odx/angular/utils';\nimport { FormFieldService } from '../form-field.service';\n\n@Directive({\n standalone: true,\n selector: 'odx-form-field-hint',\n host: {\n '[class.odx-form-field__hint]': 'true',\n },\n})\nexport class FormFieldHintDirective {\n protected readonly formFieldService = inject(FormFieldService, { skipSelf: true });\n\n constructor() {\n reactiveAttributeBinding(inject(FormFieldService).controlHintId$, 'id');\n }\n}\n","import { Directive } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n@CSSComponent('form-field-label')\n@Directive({\n standalone: true,\n selector: 'odx-form-field-label',\n})\nexport class FormFieldLabelDirective {\n public readonly element = injectElement();\n}\n","import { Component, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { FormFieldHintDirective } from '../../directives';\nimport { FormFieldService } from '../../form-field.service';\nimport { FormFieldError } from '../../models';\n\n@Component({\n standalone: true,\n selector: 'odx-form-field-info',\n templateUrl: './form-field-info.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [CoreModule, DynamicViewDirective, FormFieldHintDirective],\n host: {\n '[class.odx-form-field__info]': 'true',\n },\n})\nexport class FormFieldInfoComponent {\n protected readonly formFieldService = inject(FormFieldService);\n\n @Input()\n public error: FormFieldError | null = null;\n}\n","<span class=\"odx-form-field-error\" [attr.id]=\"formFieldService.controlErrorId$ | async\" *ngIf=\"error; else hint\">\n <ng-template [odxDynamicView]=\"error.message\" [odxDynamicViewContext]=\"error.context\"></ng-template>\n</span>\n<ng-template #hint>\n <ng-content></ng-content>\n</ng-template>\n","import { AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, QueryList, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { combineLatest, map, Observable, startWith, switchMap } from 'rxjs';\nimport { FormFieldService } from '../../form-field.service';\nimport { FormFieldError } from '../../models';\nimport { FormFieldErrorService } from '../../services';\nimport { FormFieldInfoComponent } from '../form-field-info/form-field-info.component';\n\n@CSSComponent('form-group')\n@Component({\n standalone: true,\n selector: 'odx-form-group',\n templateUrl: './form-group.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CoreModule, FormFieldInfoComponent],\n providers: [FormFieldService],\n})\nexport class FormGroupComponent implements AfterContentInit {\n public readonly element = injectElement();\n public error$: Observable<FormFieldError | null> | null = null;\n\n @ContentChildren(FormFieldErrorService, { descendants: false })\n public formFieldErrorServices!: QueryList<FormFieldErrorService>;\n\n public ngAfterContentInit() {\n this.error$ = this.formFieldErrorServices.changes.pipe(\n startWith<QueryList<FormFieldErrorService>>(this.formFieldErrorServices),\n switchMap((services) => combineLatest(services.map((service) => service.error$))),\n map((errors) => errors.find((error) => error !== null) ?? null)\n );\n }\n}\n","<div class=\"odx-form-group__content\" odxLayout=\"grid auto vertical-end\">\n <ng-content select=\"odx-form-field\"> </ng-content>\n</div>\n<odx-form-field-info [error]=\"error$ | async\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n</odx-form-field-info>\n","export type FormFieldVariant = (typeof FormFieldVariant)[keyof typeof FormFieldVariant];\n\nexport const FormFieldVariant = {\n FULL: 'full',\n SIMPLE: 'simple',\n} as const;\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectionStrategy, Component, ContentChild, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { CoreModule, ReadonlyController } from '@odx/angular';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement, reactiveClassBinding } from '@odx/angular/utils';\nimport { BehaviorSubject, combineLatest, map } from 'rxjs';\nimport { FormFieldInfoComponent, FormGroupComponent } from './components';\nimport { FormFieldLabelDirective } from './directives';\nimport { FormFieldService } from './form-field.service';\nimport { FormFieldVariant } from './models';\nimport { FormFieldErrorService } from './services';\n\n@CSSComponent('form-field')\n@Component({\n standalone: true,\n selector: 'odx-form-field',\n imports: [CoreModule, FormFieldInfoComponent, FormFieldLabelDirective],\n templateUrl: './form-field.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [FormFieldService, FormFieldErrorService, ReadonlyController.connect()],\n})\nexport class FormFieldComponent {\n public static ngAcceptInputType_warnings: string | string[] | null;\n\n protected readonly hasWarning$$ = new BehaviorSubject(false);\n\n protected readonly formGroup = inject(FormGroupComponent, { optional: true, host: true });\n protected readonly formFieldService = inject(FormFieldService, { self: true });\n protected readonly formFieldErrorService = inject(FormFieldErrorService, { self: true });\n public readonly element = injectElement();\n\n @ContentChild(FormFieldLabelDirective)\n public labelDirective?: FormFieldLabelDirective;\n\n @Input()\n public label?: string | null = null;\n\n @Input()\n public set hasWarning(value: unknown) {\n this.hasWarning$$.next(coerceBooleanProperty(value));\n }\n public get hasWarning(): boolean {\n return this.hasWarning$$.getValue();\n }\n\n @CSSModifier()\n @Input()\n public variant: FormFieldVariant | null = FormFieldVariant.FULL;\n\n public get hasLabel(): boolean {\n return !!(this.labelDirective || this.label);\n }\n\n constructor() {\n const hasWarning$ = combineLatest([this.formFieldErrorService.error$, this.hasWarning$$]).pipe(map(([hasError, hasWarning]) => hasError && hasWarning));\n reactiveClassBinding(this.formFieldService.isRequired$, 'odx-form-field--required');\n reactiveClassBinding(this.formFieldService.isDisabled$, 'is-disabled');\n reactiveClassBinding(this.formFieldService.isReadonly$, 'is-readonly');\n reactiveClassBinding(this.formFieldErrorService.hasError$, 'has-error');\n reactiveClassBinding(hasWarning$, 'has-warning');\n }\n}\n","<label class=\"odx-form-field__label\" [attr.for]=\"formFieldService.controlId$ | async\" [attr.aria-owns]=\"formFieldService.controlId$ | async\" *ngIf=\"hasLabel\">\n <odx-form-field-label *ngIf=\"label; else labelTemplate\">\n {{ label }}\n </odx-form-field-label>\n <ng-template #labelTemplate>\n <ng-content select=\"odx-form-field-label\"></ng-content>\n </ng-template>\n</label>\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\">\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\"></ng-content>\n </div>\n </div>\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\" *ngIf=\"!formGroup\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n </odx-form-field-info>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { FormGroupComponent } from './components';\nimport { FormDirective, FormFieldControlDirective, FormFieldErrorDirective, FormFieldHintDirective, FormFieldLabelDirective } from './directives';\nimport { FormFieldComponent } from './form-field.component';\n\nconst modules = [\n FormFieldComponent,\n FormGroupComponent,\n FormDirective,\n FormFieldControlDirective,\n FormFieldErrorDirective,\n FormFieldHintDirective,\n FormFieldLabelDirective,\n];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class FormFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-form-field.mjs","sources":["../../../../libs/angular/components/form-field/src/lib/form-field.config.ts","../../../../libs/angular/components/form-field/src/lib/form-field.service.ts","../../../../libs/angular/components/form-field/src/lib/services/form-field-error.service.ts","../../../../libs/angular/components/form-field/src/lib/directives/form.directive.ts","../../../../libs/angular/components/form-field/src/lib/directives/form-field-control.directive.ts","../../../../libs/angular/components/form-field/src/lib/directives/form-field-error.directive.ts","../../../../libs/angular/components/form-field/src/lib/directives/form-field-hint.directive.ts","../../../../libs/angular/components/form-field/src/lib/directives/form-field-label.directive.ts","../../../../libs/angular/components/form-field/src/lib/components/form-field-info/form-field-info.component.ts","../../../../libs/angular/components/form-field/src/lib/components/form-field-info/form-field-info.component.html","../../../../libs/angular/components/form-field/src/lib/components/form-group/form-group.component.ts","../../../../libs/angular/components/form-field/src/lib/components/form-group/form-group.component.html","../../../../libs/angular/components/form-field/src/lib/models/form-field-variant.ts","../../../../libs/angular/components/form-field/src/lib/form-field.component.ts","../../../../libs/angular/components/form-field/src/lib/form-field.component.html","../../../../libs/angular/components/form-field/src/lib/form-field.module.ts","../../../../libs/angular/components/form-field/src/odx-angular-components-form-field.ts"],"sourcesContent":["import { createConfigTokens } from '@odx/angular/utils';\nimport { FormFieldErrorResolvers } from './models';\n\nexport interface FormFieldConfig {\n /**\n * Object of error resolvers used to resolve error messages globally\n * @default {}\n */\n errors: FormFieldErrorResolvers;\n /**\n * Detect form field control changes on `blur` and/or `change`\n * @default ['blur']\n */\n updateOn: Array<'blur' | 'change'>;\n ignoreErrors: string[];\n}\n\nexport const { FormFieldDefaultConfig, FormFieldConfig, injectFormFieldConfig, provideFormFieldConfig } = createConfigTokens(\n 'FormField',\n '@odx/angular/components/form-field',\n {\n errors: {},\n ignoreErrors: [],\n updateOn: ['blur'],\n } as FormFieldConfig\n);\n","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { AbstractControl, Validators } from '@angular/forms';\nimport { Controller, DisabledController, ReadonlyController } from '@odx/angular';\nimport { BehaviorSubject, distinctUntilChanged, EMPTY, map, merge, Observable, of, shareReplay, startWith, switchMap, tap } from 'rxjs';\n\ninterface FieldControl {\n control: AbstractControl;\n nativeElement: HTMLElement;\n}\n\n@Injectable()\nexport class FormFieldService extends Controller implements OnDestroy {\n private static ID = 0;\n\n private readonly disabledController = DisabledController.inject();\n private readonly readonlyController = ReadonlyController.inject();\n private readonly control$$ = new BehaviorSubject<FieldControl | null>(null);\n\n public readonly control$ = this.control$$.pipe(shareReplay({ refCount: true }));\n public readonly controlId$ = this.control$.pipe(\n map((control) => (control ? control.nativeElement.id || `odx-form-field-${FormFieldService.ID++}` : null)),\n shareReplay({ refCount: true })\n );\n public readonly controlHintId$ = this.controlId$.pipe(\n map((id) => (id ? `${id}-hint` : null)),\n shareReplay({ refCount: true })\n );\n public readonly controlErrorId$ = this.controlId$.pipe(\n map((id) => (id ? `${id}-error` : null)),\n shareReplay({ refCount: true })\n );\n public readonly isDisabled$ = this.control$.pipe(\n switchMap((control) => (control ? merge(this.updateControlDisabledState(control), this.getControlDisabledState(control)) : of(false))),\n distinctUntilChanged(),\n shareReplay({ refCount: true })\n );\n public readonly isRequired$ = this.control$.pipe(\n map((control) => (control ? control.nativeElement.hasAttribute('required') || control.control.hasValidator(Validators.required) : false)),\n shareReplay({ refCount: true })\n );\n public readonly isReadonly$ = this.control$.pipe(\n switchMap((control) => (control && this.readonlyController ? this.readonlyController.isReadonly$ : of(false)))\n );\n\n public override ngOnDestroy(): void {\n this.control$$.complete();\n super.ngOnDestroy();\n }\n\n public registerControl(control: AbstractControl, { nativeElement }: ElementRef<HTMLElement>): void {\n this.control$$.next({ control, nativeElement });\n }\n\n public removeControl(): void {\n this.control$$.next(null);\n }\n\n private updateControlDisabledState({ control }: FieldControl): Observable<boolean> {\n if (this.disabledController) {\n return this.disabledController.isDisabled$.pipe(\n tap((state) => {\n if (state) {\n control.disable();\n } else {\n control.enable();\n }\n })\n );\n }\n return EMPTY;\n }\n\n private getControlDisabledState({ control }: FieldControl): Observable<boolean> {\n return control.statusChanges.pipe(\n startWith(control.status),\n map((status) => status === 'DISABLED'),\n distinctUntilChanged()\n );\n }\n}\n","import { Injectable, OnDestroy, TemplateRef } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { isTemplateRef } from '@odx/angular/utils';\nimport { BehaviorSubject, combineLatest, distinctUntilChanged, map, shareReplay } from 'rxjs';\nimport { injectFormFieldConfig } from '../form-field.config';\nimport { FormFieldError } from '../models';\n\nconst DEFAULT_CUSTOM_FORM_FIELD_ERROR = '@odx/angular/form-field/default-error';\nconst DEFAULT_ERROR_RESOLVER = () => '';\n\ninterface NgFormFieldError {\n key: string;\n context: unknown;\n}\n\ntype CustomFormFieldErrors = Record<string, TemplateRef<unknown>>;\n\n@Injectable()\nexport class FormFieldErrorService implements OnDestroy {\n private readonly config = injectFormFieldConfig();\n private readonly fieldError$$ = new BehaviorSubject<NgFormFieldError | null>(null);\n private readonly customErrors$$ = new BehaviorSubject<CustomFormFieldErrors>({});\n\n public readonly error$ = combineLatest([this.fieldError$$, this.customErrors$$]).pipe(\n map(([error, customErrors]) => this.resolveError(error, customErrors)),\n distinctUntilChanged(),\n shareReplay({ refCount: true })\n );\n public readonly hasError$ = this.error$.pipe(map((error) => error !== null));\n\n public get hasError(): boolean {\n return this.fieldError$$.getValue() !== null;\n }\n\n public ngOnDestroy(): void {\n this.fieldError$$.next(null);\n this.customErrors$$.next({});\n this.fieldError$$.complete();\n this.customErrors$$.complete();\n }\n\n public setError(errors?: ValidationErrors | null): void {\n this.fieldError$$.next(this.getFirstError(errors ?? {}));\n }\n\n public registerCustomError(key: string | undefined, template: TemplateRef<unknown>): void {\n this.customErrors$$.next({ ...this.customErrors$$.getValue(), [key || DEFAULT_CUSTOM_FORM_FIELD_ERROR]: template });\n }\n\n private getFirstError(errors: ValidationErrors): NgFormFieldError | null {\n const [key, context] = Object.entries(errors ?? {}).find(([errorKey]) => !this.config.ignoreErrors.includes(errorKey)) ?? [];\n\n return key ? { key, context } : null;\n }\n\n private resolveError(error: NgFormFieldError | null, customErrors: CustomFormFieldErrors): FormFieldError | null {\n if (!error) return null;\n const { key, context } = error;\n const message = customErrors[key] ?? customErrors[DEFAULT_CUSTOM_FORM_FIELD_ERROR];\n if (isTemplateRef(message)) {\n return {\n key,\n message,\n context: { $implicit: context },\n };\n }\n\n const getMessage = this.config.errors[key] ?? DEFAULT_ERROR_RESOLVER;\n return { key, message: getMessage(context) };\n }\n}\n","import { Directive } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { fromEvent, share } from 'rxjs';\n\n@CSSComponent('form')\n@Directive({\n standalone: true,\n selector: 'form[odxForm]',\n})\nexport class FormDirective {\n private readonly takeUntilDestroyed = untilDestroyed();\n\n public readonly element = injectElement<HTMLFormElement>();\n public readonly submit$ = fromEvent<Event>(this.element.nativeElement, 'submit').pipe(this.takeUntilDestroyed(), share());\n public readonly reset$ = fromEvent<Event>(this.element.nativeElement, 'reset').pipe(this.takeUntilDestroyed(), share());\n}\n","import { Directive, inject, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, FormControl, NgControl } from '@angular/forms';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { booleanToOptionalAttributeString, injectElement, reactiveAttributeBinding, untilDestroyed } from '@odx/angular/utils';\nimport { EMPTY, fromEvent, map, merge, NEVER, Observable, of, startWith, switchMap, tap } from 'rxjs';\nimport { injectFormFieldConfig } from '../form-field.config';\nimport { FormFieldService } from '../form-field.service';\nimport { FormFieldErrorService } from '../services';\nimport { FormDirective } from './form.directive';\n\n@CSSComponent('form-field-control')\n@Directive({\n standalone: true,\n selector: '[odxFormFieldControl]',\n exportAs: 'odxFormFieldControl',\n})\nexport class FormFieldControlDirective implements OnInit, OnDestroy {\n private readonly config = injectFormFieldConfig();\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n private readonly form = inject(FormDirective, { optional: true, skipSelf: true });\n private readonly onFormReset$ = this.form?.reset$ ?? EMPTY;\n private readonly onFormSubmit$ = this.form?.submit$ ?? EMPTY;\n private readonly formFieldService = inject(FormFieldService);\n private readonly formFieldErrorService = inject(FormFieldErrorService);\n private readonly takeUntilDestroyed = untilDestroyed();\n public readonly element = injectElement();\n\n constructor() {\n reactiveAttributeBinding(this.formFieldService.controlId$, 'id');\n reactiveAttributeBinding(this.formFieldService.controlHintId$, 'aria-describedby');\n reactiveAttributeBinding(this.formFieldService.isReadonly$, 'readonly');\n reactiveAttributeBinding(this.formFieldService.isDisabled$.pipe(map(booleanToOptionalAttributeString)), 'aria-disabled');\n reactiveAttributeBinding(this.formFieldService.isReadonly$.pipe(map(booleanToOptionalAttributeString)), 'aria-readonly');\n reactiveAttributeBinding(this.formFieldService.isRequired$.pipe(map(booleanToOptionalAttributeString)), 'aria-required');\n reactiveAttributeBinding(this.formFieldErrorService.hasError$.pipe(map(booleanToOptionalAttributeString)), 'aria-invalid');\n reactiveAttributeBinding(\n this.formFieldErrorService.hasError$.pipe(switchMap((hasError) => (hasError ? this.formFieldService.controlErrorId$ : of(null)))),\n 'aria-errormessage'\n );\n }\n\n public ngOnInit() {\n const control = this.ngControl?.control;\n this.formFieldService.registerControl(control ?? new FormControl(), this.element);\n if (!control) return;\n\n const controlChanges$ = merge(this.registerOnBlur(control), this.registerOnChange(control), this.registerOnSubmit(control));\n const changes$ = merge(\n this.onFormReset$.pipe(tap(() => this.formFieldErrorService?.setError(null))),\n controlChanges$.pipe(tap(() => this.formFieldErrorService?.setError(control.errors)))\n );\n changes$.pipe(this.takeUntilDestroyed()).subscribe();\n }\n\n public ngOnDestroy(): void {\n this.formFieldService.removeControl();\n }\n\n private registerOnBlur({ valueChanges }: AbstractControl): Observable<unknown> {\n if (this.config.updateOn.includes('blur')) {\n return fromEvent(this.element.nativeElement, 'focusout').pipe(switchMap(() => valueChanges.pipe(startWith(true))));\n }\n return EMPTY;\n }\n\n private registerOnChange({ valueChanges }: AbstractControl): Observable<unknown> {\n if (this.config.updateOn.includes('change')) {\n return valueChanges;\n }\n return EMPTY;\n }\n\n private registerOnSubmit({ statusChanges, valueChanges }: AbstractControl): Observable<unknown> {\n return merge(this.onFormSubmit$, this.onFormReset$).pipe(\n switchMap(({ type }) => (type === 'submit' ? merge(statusChanges, valueChanges).pipe(startWith(true)) : NEVER))\n );\n }\n}\n","import { Directive, inject, Input, OnInit, TemplateRef } from '@angular/core';\nimport { FormFieldErrorService } from '../services';\n\n@Directive({\n standalone: true,\n selector: '[odxFormFieldError]',\n})\nexport class FormFieldErrorDirective implements OnInit {\n private readonly formFieldErrorService = inject(FormFieldErrorService, { skipSelf: true });\n private readonly template = inject(TemplateRef, { self: true });\n\n @Input('odxFormFieldError')\n public key?: string;\n\n public ngOnInit() {\n this.formFieldErrorService.registerCustomError(this.key, this.template);\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { reactiveAttributeBinding } from '@odx/angular/utils';\nimport { FormFieldService } from '../form-field.service';\n\n@Directive({\n standalone: true,\n selector: 'odx-form-field-hint',\n host: {\n '[class.odx-form-field__hint]': 'true',\n },\n})\nexport class FormFieldHintDirective {\n protected readonly formFieldService = inject(FormFieldService, { skipSelf: true });\n\n constructor() {\n reactiveAttributeBinding(inject(FormFieldService).controlHintId$, 'id');\n }\n}\n","import { Directive } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n@CSSComponent('form-field-label')\n@Directive({\n standalone: true,\n selector: 'odx-form-field-label',\n})\nexport class FormFieldLabelDirective {\n public readonly element = injectElement();\n}\n","import { Component, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { FormFieldHintDirective } from '../../directives';\nimport { FormFieldService } from '../../form-field.service';\nimport { FormFieldError } from '../../models';\n\n@Component({\n standalone: true,\n selector: 'odx-form-field-info',\n templateUrl: './form-field-info.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [CoreModule, DynamicViewDirective, FormFieldHintDirective],\n host: {\n '[class.odx-form-field__info]': 'true',\n },\n})\nexport class FormFieldInfoComponent {\n protected readonly formFieldService = inject(FormFieldService);\n\n @Input()\n public error: FormFieldError | null = null;\n}\n","<span class=\"odx-form-field-error\" [attr.id]=\"formFieldService.controlErrorId$ | async\" *ngIf=\"error; else hint\">\n <ng-template [odxDynamicView]=\"error.message\" [odxDynamicViewContext]=\"error.context\"></ng-template>\n</span>\n<ng-template #hint>\n <ng-content></ng-content>\n</ng-template>\n","import { AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, QueryList, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { combineLatest, map, Observable, startWith, switchMap } from 'rxjs';\nimport { FormFieldService } from '../../form-field.service';\nimport { FormFieldError } from '../../models';\nimport { FormFieldErrorService } from '../../services';\nimport { FormFieldInfoComponent } from '../form-field-info/form-field-info.component';\n\n@CSSComponent('form-group')\n@Component({\n standalone: true,\n selector: 'odx-form-group',\n templateUrl: './form-group.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CoreModule, FormFieldInfoComponent],\n providers: [FormFieldService],\n})\nexport class FormGroupComponent implements AfterContentInit {\n public readonly element = injectElement();\n public error$: Observable<FormFieldError | null> | null = null;\n\n @ContentChildren(FormFieldErrorService, { descendants: false })\n public formFieldErrorServices!: QueryList<FormFieldErrorService>;\n\n public ngAfterContentInit() {\n this.error$ = this.formFieldErrorServices.changes.pipe(\n startWith<QueryList<FormFieldErrorService>>(this.formFieldErrorServices),\n switchMap((services) => combineLatest(services.map((service) => service.error$))),\n map((errors) => errors.find((error) => error !== null) ?? null)\n );\n }\n}\n","<div class=\"odx-form-group__content\" odxLayout=\"grid auto vertical-end\">\n <ng-content select=\"odx-form-field\"> </ng-content>\n</div>\n<odx-form-field-info [error]=\"error$ | async\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n</odx-form-field-info>\n","export type FormFieldVariant = (typeof FormFieldVariant)[keyof typeof FormFieldVariant];\n\nexport const FormFieldVariant = {\n FULL: 'full',\n SIMPLE: 'simple',\n} as const;\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectionStrategy, Component, ContentChild, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { CoreModule, DisabledController, ReadonlyController } from '@odx/angular';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement, reactiveClassBinding } from '@odx/angular/utils';\nimport { BehaviorSubject, combineLatest, map } from 'rxjs';\nimport { FormFieldInfoComponent, FormGroupComponent } from './components';\nimport { FormFieldLabelDirective } from './directives';\nimport { FormFieldService } from './form-field.service';\nimport { FormFieldVariant } from './models';\nimport { FormFieldErrorService } from './services';\n\n@CSSComponent('form-field')\n@Component({\n standalone: true,\n selector: 'odx-form-field',\n imports: [CoreModule, FormFieldInfoComponent, FormFieldLabelDirective],\n templateUrl: './form-field.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [FormFieldService, FormFieldErrorService, DisabledController.connect(), ReadonlyController.connect()],\n})\nexport class FormFieldComponent {\n public static ngAcceptInputType_warnings: string | string[] | null;\n\n protected readonly hasWarning$$ = new BehaviorSubject(false);\n\n protected readonly formGroup = inject(FormGroupComponent, { optional: true, host: true });\n protected readonly formFieldService = inject(FormFieldService, { self: true });\n protected readonly formFieldErrorService = inject(FormFieldErrorService, { self: true });\n public readonly element = injectElement();\n\n @ContentChild(FormFieldLabelDirective)\n public labelDirective?: FormFieldLabelDirective;\n\n @Input()\n public label?: string | null = null;\n\n @Input()\n public set hasWarning(value: unknown) {\n this.hasWarning$$.next(coerceBooleanProperty(value));\n }\n public get hasWarning(): boolean {\n return this.hasWarning$$.getValue();\n }\n\n @CSSModifier()\n @Input()\n public variant: FormFieldVariant | null = FormFieldVariant.FULL;\n\n public get hasLabel(): boolean {\n return !!(this.labelDirective || this.label);\n }\n\n constructor() {\n const hasWarning$ = combineLatest([this.formFieldErrorService.error$, this.hasWarning$$]).pipe(map(([hasError, hasWarning]) => hasError && hasWarning));\n reactiveClassBinding(this.formFieldService.isRequired$, 'odx-form-field--required');\n reactiveClassBinding(this.formFieldService.isDisabled$, 'is-disabled');\n reactiveClassBinding(this.formFieldService.isReadonly$, 'is-readonly');\n reactiveClassBinding(this.formFieldErrorService.hasError$, 'has-error');\n reactiveClassBinding(hasWarning$, 'has-warning');\n }\n}\n","<label class=\"odx-form-field__label\" [attr.for]=\"formFieldService.controlId$ | async\" [attr.aria-owns]=\"formFieldService.controlId$ | async\" *ngIf=\"hasLabel\">\n <odx-form-field-label *ngIf=\"label; else labelTemplate\">\n {{ label }}\n </odx-form-field-label>\n <ng-template #labelTemplate>\n <ng-content select=\"odx-form-field-label\"></ng-content>\n </ng-template>\n</label>\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\">\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\"></ng-content>\n </div>\n </div>\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\" *ngIf=\"!formGroup\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n </odx-form-field-info>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { FormGroupComponent } from './components';\nimport { FormDirective, FormFieldControlDirective, FormFieldErrorDirective, FormFieldHintDirective, FormFieldLabelDirective } from './directives';\nimport { FormFieldComponent } from './form-field.component';\n\nconst modules = [\n FormFieldComponent,\n FormGroupComponent,\n FormDirective,\n FormFieldControlDirective,\n FormFieldErrorDirective,\n FormFieldHintDirective,\n FormFieldLabelDirective,\n];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class FormFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -57,7 +57,7 @@ let LaunchTileComponent = class LaunchTileComponent {
57
57
  }
58
58
  };
59
59
  LaunchTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: LaunchTileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
60
- LaunchTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: LaunchTileComponent, isStandalone: true, selector: "odx-launch-tile", outputs: { interact: "interact" }, queries: [{ propertyName: "menu", first: true, predicate: MenuComponent, descendants: true }, { propertyName: "footer", first: true, predicate: LaunchTileFooterComponent, descendants: true, read: ElementRef }], viewQueries: [{ propertyName: "menuHost", first: true, predicate: MenuDirective, descendants: true }], hostDirectives: [{ directive: i1.InteractiveDirective }], ngImport: i0, template: "<div class=\"odx-launch-tile__trigger\">\n <div class=\"odx-launch-tile__container\">\n <ng-content select=\"odx-avatar\"></ng-content>\n <div class=\"odx-launch-tile__content\">\n <div class=\"odx-launch-tile__title\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"odx-launch-tile-subtitle\"></ng-content>\n </div>\n </div>\n\n <ng-content select=\"odx-launch-tile-footer\"></ng-content>\n\n <odx-action-group class=\"odx-launch-tile-menu\" *ngIf=\"menu\" #menuHost>\n <button odxButton [odxMenu]=\"menuTpl\" odxMenuPosition=\"bottom-end\">\n <odx-icon name=\"more\"></odx-icon>\n </button>\n\n <ng-template #menuTpl>\n <ng-content select=\"odx-menu\"></ng-content>\n </ng-template>\n </odx-action-group>\n</div>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name"] }, { kind: "ngmodule", type: MenuModule }, { kind: "directive", type: i3.MenuDirective, selector: "[odxMenu]", inputs: ["odxMenu", "odxMenuPosition"] }, { kind: "directive", type: i3.MenuItemDirective, selector: "odx-menu a[odxButton], odx-menu button[odxButton]" }, { kind: "component", type: ActionGroupComponent, selector: "odx-action-group", inputs: ["reverse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
60
+ LaunchTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: LaunchTileComponent, isStandalone: true, selector: "odx-launch-tile", outputs: { interact: "interact" }, queries: [{ propertyName: "menu", first: true, predicate: MenuComponent, descendants: true }, { propertyName: "footer", first: true, predicate: LaunchTileFooterComponent, descendants: true, read: ElementRef }], viewQueries: [{ propertyName: "menuHost", first: true, predicate: MenuDirective, descendants: true }], hostDirectives: [{ directive: i1.InteractiveDirective }], ngImport: i0, template: "<div class=\"odx-launch-tile__trigger\">\n <div class=\"odx-launch-tile__container\">\n <ng-content select=\"odx-avatar\"></ng-content>\n <div class=\"odx-launch-tile__content\">\n <div class=\"odx-launch-tile__title\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"odx-launch-tile-subtitle\"></ng-content>\n </div>\n </div>\n\n <ng-content select=\"odx-launch-tile-footer\"></ng-content>\n\n <odx-action-group class=\"odx-launch-tile-menu\" *ngIf=\"menu\" #menuHost>\n <button odxButton [odxMenu]=\"menuTpl\" odxMenuPosition=\"bottom-end\">\n <odx-icon name=\"more\"></odx-icon>\n </button>\n\n <ng-template #menuTpl>\n <ng-content select=\"odx-menu\"></ng-content>\n </ng-template>\n </odx-action-group>\n</div>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name"] }, { kind: "ngmodule", type: MenuModule }, { kind: "directive", type: i3.MenuDirective, selector: "[odxMenu]", inputs: ["odxMenu", "odxMenuPosition"], exportAs: ["odxMenu"] }, { kind: "directive", type: i3.MenuItemDirective, selector: "odx-menu a[odxButton], odx-menu button[odxButton]" }, { kind: "component", type: ActionGroupComponent, selector: "odx-action-group", inputs: ["reverse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
61
61
  LaunchTileComponent = __decorate([
62
62
  CSSComponent('launch-tile'),
63
63
  __metadata("design:paramtypes", [])
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-launch-tile.mjs","sources":["../../../../libs/angular/components/launch-tile/src/lib/components/launch-tile-footer/launch-tile-footer.component.ts","../../../../libs/angular/components/launch-tile/src/lib/components/launch-tile-footer/launch-tile-footer.component.html","../../../../libs/angular/components/launch-tile/src/lib/components/launch-tile-subtitle/launch-tile-subtitle.component.ts","../../../../libs/angular/components/launch-tile/src/lib/components/launch-tile-subtitle/launch-tile-subtitle.component.html","../../../../libs/angular/components/launch-tile/src/lib/launch-tile.component.ts","../../../../libs/angular/components/launch-tile/src/lib/launch-tile.component.html","../../../../libs/angular/components/launch-tile/src/lib/launch-tile.module.ts","../../../../libs/angular/components/launch-tile/src/odx-angular-components-launch-tile.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'odx-launch-tile-footer',\n templateUrl: './launch-tile-footer.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.odx-launch-tile__footer]': 'true',\n },\n})\nexport class LaunchTileFooterComponent {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'odx-launch-tile-subtitle',\n templateUrl: './launch-tile-subtitle.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.odx-launch-tile__subtitle]': 'true',\n },\n})\nexport class LaunchTileSubtitleComponent {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, inject, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { A11yModule, InteractiveDirective } from '@odx/angular/cdk/a11y';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { MenuComponent, MenuDirective, MenuModule } from '@odx/angular/components/menu';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { containsElement, injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { LaunchTileFooterComponent } from './components';\n\n@CSSComponent('launch-tile')\n@Component({\n selector: 'odx-launch-tile',\n templateUrl: './launch-tile.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [A11yModule, ButtonComponent, IconComponent, MenuModule, ActionGroupComponent],\n hostDirectives: [InteractiveDirective],\n})\nexport class LaunchTileComponent {\n private readonly interactiveDirective = inject(InteractiveDirective, { host: true });\n private readonly takeUntilDestroyed = untilDestroyed();\n\n @ContentChild(MenuComponent)\n protected readonly menu?: MenuComponent;\n\n @ViewChild(MenuDirective)\n protected readonly menuHost?: MenuDirective;\n\n @ContentChild(LaunchTileFooterComponent, { read: ElementRef })\n protected readonly footer?: ElementRef<HTMLElement>;\n\n @Output()\n public interact = new EventEmitter<Event>();\n\n public readonly element = injectElement();\n\n constructor() {\n this.interactiveDirective.interact.pipe(this.takeUntilDestroyed()).subscribe((event) => {\n this.stopEvents(event);\n });\n }\n\n protected stopEvents(event: Event): void {\n const target = event.target as Element | null;\n const isFooterEvent = containsElement(this.footer?.nativeElement, target, false);\n const isMenuEvent = containsElement(this.menuHost?.element.nativeElement, target);\n if (!isFooterEvent && !isMenuEvent && !this.menuHost?.isOpen()) {\n this.interact.emit(event);\n }\n }\n}\n","<div class=\"odx-launch-tile__trigger\">\n <div class=\"odx-launch-tile__container\">\n <ng-content select=\"odx-avatar\"></ng-content>\n <div class=\"odx-launch-tile__content\">\n <div class=\"odx-launch-tile__title\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"odx-launch-tile-subtitle\"></ng-content>\n </div>\n </div>\n\n <ng-content select=\"odx-launch-tile-footer\"></ng-content>\n\n <odx-action-group class=\"odx-launch-tile-menu\" *ngIf=\"menu\" #menuHost>\n <button odxButton [odxMenu]=\"menuTpl\" odxMenuPosition=\"bottom-end\">\n <odx-icon name=\"more\"></odx-icon>\n </button>\n\n <ng-template #menuTpl>\n <ng-content select=\"odx-menu\"></ng-content>\n </ng-template>\n </odx-action-group>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { AvatarComponent } from '@odx/angular/components/avatar';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { MenuModule } from '@odx/angular/components/menu';\nimport { LaunchTileFooterComponent, LaunchTileSubtitleComponent } from './components';\nimport { LaunchTileComponent } from './launch-tile.component';\n\nconst modules = [LaunchTileComponent, LaunchTileFooterComponent, LaunchTileSubtitleComponent, AvatarComponent, ButtonComponent, IconComponent];\n\n@NgModule({\n imports: [modules],\n exports: [CoreModule, MenuModule, ...modules],\n})\nexport class LaunchTileModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-launch-tile.mjs","sources":["../../../../libs/angular/components/launch-tile/src/lib/components/launch-tile-footer/launch-tile-footer.component.ts","../../../../libs/angular/components/launch-tile/src/lib/components/launch-tile-footer/launch-tile-footer.component.html","../../../../libs/angular/components/launch-tile/src/lib/components/launch-tile-subtitle/launch-tile-subtitle.component.ts","../../../../libs/angular/components/launch-tile/src/lib/components/launch-tile-subtitle/launch-tile-subtitle.component.html","../../../../libs/angular/components/launch-tile/src/lib/launch-tile.component.ts","../../../../libs/angular/components/launch-tile/src/lib/launch-tile.component.html","../../../../libs/angular/components/launch-tile/src/lib/launch-tile.module.ts","../../../../libs/angular/components/launch-tile/src/odx-angular-components-launch-tile.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'odx-launch-tile-footer',\n templateUrl: './launch-tile-footer.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.odx-launch-tile__footer]': 'true',\n },\n})\nexport class LaunchTileFooterComponent {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'odx-launch-tile-subtitle',\n templateUrl: './launch-tile-subtitle.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.odx-launch-tile__subtitle]': 'true',\n },\n})\nexport class LaunchTileSubtitleComponent {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, inject, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { A11yModule, InteractiveDirective } from '@odx/angular/cdk/a11y';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { MenuComponent, MenuDirective, MenuModule } from '@odx/angular/components/menu';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { containsElement, injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { LaunchTileFooterComponent } from './components';\n\n@CSSComponent('launch-tile')\n@Component({\n selector: 'odx-launch-tile',\n templateUrl: './launch-tile.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [A11yModule, ButtonComponent, IconComponent, MenuModule, ActionGroupComponent],\n hostDirectives: [InteractiveDirective],\n})\nexport class LaunchTileComponent {\n private readonly interactiveDirective = inject(InteractiveDirective, { host: true });\n private readonly takeUntilDestroyed = untilDestroyed();\n\n @ContentChild(MenuComponent)\n protected readonly menu?: MenuComponent;\n\n @ViewChild(MenuDirective)\n protected readonly menuHost?: MenuDirective;\n\n @ContentChild(LaunchTileFooterComponent, { read: ElementRef })\n protected readonly footer?: ElementRef<HTMLElement>;\n\n @Output()\n public interact = new EventEmitter<Event>();\n\n public readonly element = injectElement();\n\n constructor() {\n this.interactiveDirective.interact.pipe(this.takeUntilDestroyed()).subscribe((event) => {\n this.stopEvents(event);\n });\n }\n\n protected stopEvents(event: Event): void {\n const target = event.target as Element | null;\n const isFooterEvent = containsElement(this.footer?.nativeElement, target, false);\n const isMenuEvent = containsElement(this.menuHost?.element.nativeElement, target);\n if (!isFooterEvent && !isMenuEvent && !this.menuHost?.isOpen()) {\n this.interact.emit(event);\n }\n }\n}\n","<div class=\"odx-launch-tile__trigger\">\n <div class=\"odx-launch-tile__container\">\n <ng-content select=\"odx-avatar\"></ng-content>\n <div class=\"odx-launch-tile__content\">\n <div class=\"odx-launch-tile__title\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"odx-launch-tile-subtitle\"></ng-content>\n </div>\n </div>\n\n <ng-content select=\"odx-launch-tile-footer\"></ng-content>\n\n <odx-action-group class=\"odx-launch-tile-menu\" *ngIf=\"menu\" #menuHost>\n <button odxButton [odxMenu]=\"menuTpl\" odxMenuPosition=\"bottom-end\">\n <odx-icon name=\"more\"></odx-icon>\n </button>\n\n <ng-template #menuTpl>\n <ng-content select=\"odx-menu\"></ng-content>\n </ng-template>\n </odx-action-group>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { AvatarComponent } from '@odx/angular/components/avatar';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { MenuModule } from '@odx/angular/components/menu';\nimport { LaunchTileFooterComponent, LaunchTileSubtitleComponent } from './components';\nimport { LaunchTileComponent } from './launch-tile.component';\n\nconst modules = [LaunchTileComponent, LaunchTileFooterComponent, LaunchTileSubtitleComponent, AvatarComponent, ButtonComponent, IconComponent];\n\n@NgModule({\n imports: [modules],\n exports: [CoreModule, MenuModule, ...modules],\n})\nexport class LaunchTileModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;MAYa,yBAAyB,CAAA;;sHAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,qJCZtC,6BACA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDWa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAVrC,SAAS;+BACE,wBAAwB,EAAA,UAAA,EAEtB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC/B,IAAA,EAAA;AACJ,wBAAA,iCAAiC,EAAE,MAAM;AAC1C,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,CAAA;;;MEEU,2BAA2B,CAAA;;wHAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,yJCZxC,6BACA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDWa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAVvC,SAAS;+BACE,0BAA0B,EAAA,UAAA,EAExB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC/B,IAAA,EAAA;AACJ,wBAAA,mCAAmC,EAAE,MAAM;AAC5C,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,CAAA;;;AEUU,IAAA,mBAAmB,GAAzB,MAAM,mBAAmB,CAAA;AAkB9B,IAAA,WAAA,GAAA;AAjBiB,QAAA,IAAoB,CAAA,oBAAA,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACpE,QAAA,IAAkB,CAAA,kBAAA,GAAG,cAAc,EAAE,CAAC;AAYhD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAS,CAAC;AAE5B,QAAA,IAAO,CAAA,OAAA,GAAG,aAAa,EAAE,CAAC;AAGxC,QAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACrF,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACzB,SAAC,CAAC,CAAC;KACJ;AAES,IAAA,UAAU,CAAC,KAAY,EAAA;;AAC/B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAwB,CAAC;AAC9C,QAAA,MAAM,aAAa,GAAG,eAAe,CAAC,MAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACjF,QAAA,MAAM,WAAW,GAAG,eAAe,CAAC,MAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE,CAAA,EAAE;AAC9D,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,SAAA;KACF;;gHA/BU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,gJAIhB,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAMb,yBAAyB,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,uEAHhD,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B1B,qxBAuBA,EDNY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAU,mIAAE,eAAe,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAE,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAU,sRAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;AAG3E,mBAAmB,GAAA,UAAA,CAAA;IAV/B,YAAY,CAAC,aAAa,CAAC;;CAUf,EAAA,mBAAmB,CAgC/B,CAAA;2FAhCY,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,SAAS;+BACE,iBAAiB,EAAA,UAAA,EAEf,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC5B,OAAA,EAAA,CAAC,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,oBAAoB,CAAC,EAAA,cAAA,EACvE,CAAC,oBAAoB,CAAC,EAAA,QAAA,EAAA,qxBAAA,EAAA,CAAA;0EAOnB,IAAI,EAAA,CAAA;sBADtB,YAAY;uBAAC,aAAa,CAAA;gBAIR,QAAQ,EAAA,CAAA;sBAD1B,SAAS;uBAAC,aAAa,CAAA;gBAIL,MAAM,EAAA,CAAA;sBADxB,YAAY;gBAAC,IAAA,EAAA,CAAA,yBAAyB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBAItD,QAAQ,EAAA,CAAA;sBADd,MAAM;;;AExBT,MAAM,OAAO,GAAG,CAAC,mBAAmB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;MAMlI,gBAAgB,CAAA;;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;8GAAhB,gBAAgB,EAAA,OAAA,EAAA,CANZ,mBAAmB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,CAAA,EAAA,OAAA,EAAA,CAIjI,UAAU,EAAE,UAAU,EAJjB,mBAAmB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;AAMhI,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAHjB,OAAA,EAAA,CAAA,OAAO,EACP,UAAU,EAAE,UAAU,CAAA,EAAA,CAAA,CAAA;2FAErB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;iBAC9C,CAAA;;;ACdD;;AAEG;;;;"}