@enigmatry/entry-components 15.0.0-preview.3 → 15.0.0-preview.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/common/README.md +56 -1
  2. package/common/common.module.d.ts +6 -2
  3. package/common/directives/auto-disable-button.directive.d.ts +26 -0
  4. package/common/directives/index.d.ts +2 -1
  5. package/common/event-plugins/abstract.plugin.d.ts +40 -0
  6. package/common/event-plugins/debounce.plugin.d.ts +15 -0
  7. package/common/event-plugins/index.d.ts +2 -0
  8. package/common/event-plugins/throttle.plugin.d.ts +15 -0
  9. package/common/public-api.d.ts +2 -1
  10. package/esm2020/common/common.module.mjs +28 -5
  11. package/esm2020/common/directives/auto-disable-button.directive.mjs +75 -0
  12. package/esm2020/common/directives/index.mjs +3 -2
  13. package/esm2020/common/event-plugins/abstract.plugin.mjs +35 -0
  14. package/esm2020/common/event-plugins/debounce.plugin.mjs +34 -0
  15. package/esm2020/common/event-plugins/index.mjs +3 -0
  16. package/esm2020/common/event-plugins/throttle.plugin.mjs +34 -0
  17. package/esm2020/common/public-api.mjs +3 -2
  18. package/esm2020/modules/entry-components.module.mjs +6 -2
  19. package/esm2020/public-api.mjs +2 -1
  20. package/fesm2015/enigmatry-entry-components-common.mjs +192 -7
  21. package/fesm2015/enigmatry-entry-components-common.mjs.map +1 -1
  22. package/fesm2015/enigmatry-entry-components.mjs +6 -1
  23. package/fesm2015/enigmatry-entry-components.mjs.map +1 -1
  24. package/fesm2020/enigmatry-entry-components-common.mjs +192 -7
  25. package/fesm2020/enigmatry-entry-components-common.mjs.map +1 -1
  26. package/fesm2020/enigmatry-entry-components.mjs +6 -1
  27. package/fesm2020/enigmatry-entry-components.mjs.map +1 -1
  28. package/modules/entry-components.module.d.ts +8 -7
  29. package/package.json +3 -2
  30. package/public-api.d.ts +1 -0
package/common/README.md CHANGED
@@ -6,13 +6,68 @@ EntryCommonModule includes a set of commonly used directives, pipes, services an
6
6
 
7
7
  ## Directives
8
8
 
9
- ### `ScrollToInvalidControlDirective`
9
+ ### AutoDisableButtonDirective
10
+
11
+ Auto disables button after click or submit event, unless disabling is handled manually. Default auto disable interval is 2000ms (2sec).
12
+
13
+ Selector: `button[entry-auto-disable]:not([disabled])`
14
+
15
+ Usage
16
+
17
+ `<button mat-button entry-submit-button entry-auto-disable type="submit">Submit</button>`
18
+
19
+ or with custom disable interval in milliseconds
20
+
21
+ `<button mat-button entry-submit-button entry-auto-disable="5000" type="submit">Submit</button>`
22
+
23
+ ### ScrollToInvalidControlDirective
10
24
 
11
25
  Scrolls to first invalid form control when form is submitted.
12
26
 
13
27
  Selector: `form[formGroup],form[ngForm]`
14
28
 
29
+ Usage
30
+
15
31
  Directive is applied to reactive or template driven forms, no additional selectors are required. Directive will listen to form submit event and scroll to first invalid form control when form is invalid. For this to work, submit button should be enabled so users always get feedback of what is wrong.
32
+
33
+ ## Event plugins
34
+
35
+ Extending Angular events binding syntax with debounce and throttle event plugins.
36
+
37
+ When binding to events in Angular we can add debounce or throttle modifier after the event name:
38
+ * using the event binding syntax "`(click.debounce)="onSave()`"
39
+ * or HostListener "`@HostListener('keyup.throttle')`".
40
+
41
+ Example: Debouncing a click event with default delay
42
+ ```html
43
+ <button (click.debounce)="onClick($event)">
44
+ ```
45
+ Example: Debouncing a keyup event with custom delay
46
+ ```html
47
+ <input (keyup.debounce.1000)="doSomething($event)">
48
+ ```
49
+
50
+ Example: Throttling a click event with default delay
51
+ ```html
52
+ <input (keyup.throttle)="onKeyUp($event)">
53
+ ```
54
+ Example: Throttle a keyup event with custom delay
55
+ ```html
56
+ <input (keyup.throttle.1000)="onKeyUp($event)">
57
+ ```
58
+
59
+ Modifier options `keyup.debounce.1000.leading`
60
+ * event name e.g. `keyup`
61
+ * modifier: `debounce` or `throttle`
62
+ * milliseconds: delay in milliseconds before the event handler is executed
63
+ * option: `leading` or `trailing`. If set to 'leading', the event handler is executed on the leading edge of the debounce timeout. If set to 'trailing', it's executed on the trailing edge.
64
+
65
+
66
+ Difference between `debounce` and `throttle`
67
+ * Debouncing waits for a certain time before invoking the function again.
68
+ * Debouncing ensures that the function is called only once, even if the event is triggered multiple times.
69
+ * Throttling limits the number of times the function can be called over a certain period.
70
+ * Throttling ensures that the function is called at a regular interval, even if the event is triggered multiple times.
16
71
 
17
72
  ## Pipes
18
73
 
@@ -1,8 +1,12 @@
1
+ import { ModuleWithProviders, Provider } from '@angular/core';
1
2
  import * as i0 from "@angular/core";
2
3
  import * as i1 from "@angular/common";
3
- import * as i2 from "./directives/scroll-to-invalid-control.directive";
4
+ import * as i2 from "./directives/auto-disable-button.directive";
5
+ import * as i3 from "./directives/scroll-to-invalid-control.directive";
6
+ export declare const NG_EVENT_PLUGINS: Provider[];
4
7
  export declare class EntryCommonModule {
8
+ static forRoot(): ModuleWithProviders<EntryCommonModule>;
5
9
  static ɵfac: i0.ɵɵFactoryDeclaration<EntryCommonModule, never>;
6
- static ɵmod: i0.ɵɵNgModuleDeclaration<EntryCommonModule, never, [typeof i1.CommonModule, typeof i2.ScrollToInvalidControlDirective], [typeof i2.ScrollToInvalidControlDirective]>;
10
+ static ɵmod: i0.ɵɵNgModuleDeclaration<EntryCommonModule, never, [typeof i1.CommonModule, typeof i2.AutoDisableButtonDirective, typeof i3.ScrollToInvalidControlDirective], [typeof i2.AutoDisableButtonDirective, typeof i3.ScrollToInvalidControlDirective]>;
7
11
  static ɵinj: i0.ɵɵInjectorDeclaration<EntryCommonModule>;
8
12
  }
@@ -0,0 +1,26 @@
1
+ import { ElementRef, OnDestroy, OnInit } from '@angular/core';
2
+ import { NumberInput } from '@angular/cdk/coercion';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Auto disable button after click or submit with entry-auto-disable directive.
6
+ * Directive is applied to 'button[entry-auto-disable]:not([disabled])'
7
+ * Default auto disable interval is 2000ms (2sec)
8
+ *
9
+ * Usage
10
+ * <button mat-button entry-submit-button entry-auto-disable type="submit">Submit</button>
11
+ * or with auto disabled interval in milliseconds
12
+ * <button mat-button entry-submit-button entry-auto-disable="5000" type="submit">Submit</button>
13
+ */
14
+ export declare class AutoDisableButtonDirective implements OnInit, OnDestroy {
15
+ private elementRef;
16
+ private _destroy$;
17
+ private _disableIntervalInMs;
18
+ constructor(elementRef: ElementRef<HTMLButtonElement>);
19
+ get disableIntervalInMs(): NumberInput;
20
+ set disableIntervalInMs(value: NumberInput);
21
+ ngOnInit(): void;
22
+ ngOnDestroy(): void;
23
+ private disableButton;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<AutoDisableButtonDirective, never>;
25
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AutoDisableButtonDirective, "button[entry-auto-disable]:not([disabled])", never, { "disableIntervalInMs": "entry-auto-disable"; }, {}, never, never, true, never>;
26
+ }
@@ -1 +1,2 @@
1
- export * from './scroll-to-invalid-control.directive';
1
+ export { AutoDisableButtonDirective } from './auto-disable-button.directive';
2
+ export { ScrollToInvalidControlDirective } from './scroll-to-invalid-control.directive';
@@ -0,0 +1,40 @@
1
+ import { EventManager } from '@angular/platform-browser';
2
+ /**
3
+ * abstract class EventManagerPlugin will be exposed in the public api
4
+ * https://github.com/angular/angular/pull/49969
5
+ *
6
+ * Until then creating it from reference
7
+ * https://github.com/angular/angular/blob/main/packages/platform-browser/src/dom/events/event_manager.ts#L93
8
+ *
9
+ * How to create custom event modifiers
10
+ * https://github.com/Tinkoff/ng-event-plugins,
11
+ * https://github.com/angular/angular/blob/main/packages/platform-browser/src/dom/events/key_events.ts
12
+ * https://netbasal.com/lifting-the-veil-insights-into-angulars-eventmanagerplugin-ed9d14cbb31a
13
+ */
14
+ export declare abstract class EventManagerPlugin {
15
+ manager: EventManager;
16
+ /** Should return `true` for every event name that should be supported by this plugin */
17
+ abstract supports(eventName: string): boolean;
18
+ /**
19
+ * Registers a handler for a specific element and event.
20
+ *
21
+ * @param element The HTML element to receive event notifications.
22
+ * @param eventName The name of the event to listen for.
23
+ * @param handler A function to call when the notification occurs. Receives the
24
+ * event object as an argument.
25
+ * @returns A callback function that can be used to remove the handler.
26
+ */
27
+ abstract addEventListener(element: HTMLElement, eventName: string, handler: Function): Function;
28
+ }
29
+ /**
30
+ * Entry event plugin base class
31
+ */
32
+ export declare abstract class EntryEventManagerPlugin extends EventManagerPlugin {
33
+ abstract modifier: string;
34
+ /** return `true` for every event name that has specified modifier */
35
+ supports(eventName: string): boolean;
36
+ /** unwrap params e.g. (click.debounce.500) => ['debounce', 500] */
37
+ unwrapParams(eventName: string): string[];
38
+ /** get event name e.g. (click.debounce.500) => click */
39
+ unwrapEventName(eventName: string): string;
40
+ }
@@ -0,0 +1,15 @@
1
+ import { EntryEventManagerPlugin } from './abstract.plugin';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Provides event plugin for debouncing events.
5
+ *
6
+ * How to use:
7
+ * <button (click.debounce)="doSomething($event)">
8
+ * <input (keyup.debounce.500)="doSomething($event)">
9
+ */
10
+ export declare class DebounceEventPlugin extends EntryEventManagerPlugin {
11
+ modifier: string;
12
+ addEventListener(element: HTMLElement, eventName: string, originalHandler: Function): Function;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<DebounceEventPlugin, never>;
14
+ static ɵprov: i0.ɵɵInjectableDeclaration<DebounceEventPlugin>;
15
+ }
@@ -0,0 +1,2 @@
1
+ export { ThrottleEventPlugin } from './throttle.plugin';
2
+ export { DebounceEventPlugin } from './debounce.plugin';
@@ -0,0 +1,15 @@
1
+ import { EntryEventManagerPlugin } from './abstract.plugin';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Provides event plugin for throttling events.
5
+ *
6
+ * How to use:
7
+ * <button (click.throttle)="doSomething($event)">
8
+ * <input (keyup.throttle.500)="doSomething($event)">
9
+ */
10
+ export declare class ThrottleEventPlugin extends EntryEventManagerPlugin {
11
+ modifier: string;
12
+ addEventListener(element: HTMLElement, eventName: string, originalHandler: Function): Function;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<ThrottleEventPlugin, never>;
14
+ static ɵprov: i0.ɵɵInjectableDeclaration<ThrottleEventPlugin>;
15
+ }
@@ -1,3 +1,4 @@
1
- export { EntryCommonModule } from './common.module';
1
+ export { EntryCommonModule, NG_EVENT_PLUGINS } from './common.module';
2
2
  export * from './utils';
3
3
  export * from './directives';
4
+ export * from './event-plugins';
@@ -1,15 +1,38 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  /** Directives */
4
+ import { AutoDisableButtonDirective } from './directives/auto-disable-button.directive';
4
5
  import { ScrollToInvalidControlDirective } from './directives/scroll-to-invalid-control.directive';
6
+ /** Event plugins */
7
+ import { DebounceEventPlugin } from './event-plugins/debounce.plugin';
8
+ import { ThrottleEventPlugin } from './event-plugins/throttle.plugin';
9
+ import { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';
5
10
  import * as i0 from "@angular/core";
6
11
  const DIRECTIVES = [
7
- ScrollToInvalidControlDirective
12
+ AutoDisableButtonDirective,
13
+ ScrollToInvalidControlDirective,
8
14
  ];
15
+ const EVENT_PLUGINS = [
16
+ DebounceEventPlugin,
17
+ ThrottleEventPlugin
18
+ ];
19
+ export const NG_EVENT_PLUGINS = EVENT_PLUGINS.map(useClass => ({
20
+ provide: EVENT_MANAGER_PLUGINS,
21
+ multi: true,
22
+ useClass
23
+ }));
9
24
  export class EntryCommonModule {
25
+ static forRoot() {
26
+ return {
27
+ ngModule: EntryCommonModule,
28
+ providers: NG_EVENT_PLUGINS
29
+ };
30
+ }
10
31
  }
11
32
  EntryCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
- EntryCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: EntryCommonModule, imports: [CommonModule, ScrollToInvalidControlDirective], exports: [ScrollToInvalidControlDirective] });
33
+ EntryCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: EntryCommonModule, imports: [CommonModule, AutoDisableButtonDirective,
34
+ ScrollToInvalidControlDirective], exports: [AutoDisableButtonDirective,
35
+ ScrollToInvalidControlDirective] });
13
36
  EntryCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryCommonModule, imports: [CommonModule] });
14
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryCommonModule, decorators: [{
15
38
  type: NgModule,
@@ -17,11 +40,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
17
40
  declarations: [],
18
41
  imports: [
19
42
  CommonModule,
20
- ...DIRECTIVES
43
+ DIRECTIVES
21
44
  ],
22
45
  exports: [
23
- ...DIRECTIVES
46
+ DIRECTIVES
24
47
  ]
25
48
  }]
26
49
  }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZW50cnktY29tcG9uZW50cy9jb21tb24vY29tbW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxpQkFBaUI7QUFFakIsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sa0RBQWtELENBQUM7O0FBRW5HLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLCtCQUErQjtDQUNoQyxDQUFDO0FBYUYsTUFBTSxPQUFPLGlCQUFpQjs7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLFlBUDFCLFlBQVksRUFQZCwrQkFBK0IsYUFBL0IsK0JBQStCOytHQWNwQixpQkFBaUIsWUFQMUIsWUFBWTsyRkFPSCxpQkFBaUI7a0JBWDdCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osR0FBRyxVQUFVO3FCQUNkO29CQUNELE9BQU8sRUFBRTt3QkFDUCxHQUFHLFVBQVU7cUJBQ2Q7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuLyoqIERpcmVjdGl2ZXMgKi9cclxuXHJcbmltcG9ydCB7IFNjcm9sbFRvSW52YWxpZENvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2Nyb2xsLXRvLWludmFsaWQtY29udHJvbC5kaXJlY3RpdmUnO1xyXG5cclxuY29uc3QgRElSRUNUSVZFUyA9IFtcclxuICBTY3JvbGxUb0ludmFsaWRDb250cm9sRGlyZWN0aXZlXHJcbl07XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgLi4uRElSRUNUSVZFU1xyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgLi4uRElSRUNUSVZFU1xyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEVudHJ5Q29tbW9uTW9kdWxlIHtcclxufVxyXG4iXX0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZW50cnktY29tcG9uZW50cy9jb21tb24vY29tbW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsaUJBQWlCO0FBRWpCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBT25HLG9CQUFvQjtBQUVwQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFUbEUsTUFBTSxVQUFVLEdBQUc7SUFDakIsMEJBQTBCO0lBQzFCLCtCQUErQjtDQUNoQyxDQUFDO0FBUUYsTUFBTSxhQUFhLEdBQUc7SUFDcEIsbUJBQW1CO0lBQ25CLG1CQUFtQjtDQUNwQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQWUsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekUsT0FBTyxFQUFFLHFCQUFxQjtJQUM5QixLQUFLLEVBQUUsSUFBSTtJQUNYLFFBQVE7Q0FDVCxDQUFDLENBQUMsQ0FBQztBQWNKLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixTQUFTLEVBQUUsZ0JBQWdCO1NBQzVCLENBQUM7SUFDSixDQUFDOzs4R0FOVSxpQkFBaUI7K0dBQWpCLGlCQUFpQixZQVAxQixZQUFZLEVBMUJkLDBCQUEwQjtRQUMxQiwrQkFBK0IsYUFEL0IsMEJBQTBCO1FBQzFCLCtCQUErQjsrR0FnQ3BCLGlCQUFpQixZQVAxQixZQUFZOzJGQU9ILGlCQUFpQjtrQkFYN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixVQUFVO3FCQUNYO29CQUNELE9BQU8sRUFBRTt3QkFDUCxVQUFVO3FCQUNYO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuLyoqIERpcmVjdGl2ZXMgKi9cclxuXHJcbmltcG9ydCB7IEF1dG9EaXNhYmxlQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2F1dG8tZGlzYWJsZS1idXR0b24uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2Nyb2xsVG9JbnZhbGlkQ29udHJvbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zY3JvbGwtdG8taW52YWxpZC1jb250cm9sLmRpcmVjdGl2ZSc7XHJcblxyXG5jb25zdCBESVJFQ1RJVkVTID0gW1xyXG4gIEF1dG9EaXNhYmxlQnV0dG9uRGlyZWN0aXZlLFxyXG4gIFNjcm9sbFRvSW52YWxpZENvbnRyb2xEaXJlY3RpdmUsXHJcbl07XHJcblxyXG4vKiogRXZlbnQgcGx1Z2lucyAqL1xuXG5pbXBvcnQgeyBEZWJvdW5jZUV2ZW50UGx1Z2luIH0gZnJvbSAnLi9ldmVudC1wbHVnaW5zL2RlYm91bmNlLnBsdWdpbic7XG5pbXBvcnQgeyBUaHJvdHRsZUV2ZW50UGx1Z2luIH0gZnJvbSAnLi9ldmVudC1wbHVnaW5zL3Rocm90dGxlLnBsdWdpbic7XG5pbXBvcnQgeyBFVkVOVF9NQU5BR0VSX1BMVUdJTlMgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuY29uc3QgRVZFTlRfUExVR0lOUyA9IFtcbiAgRGVib3VuY2VFdmVudFBsdWdpbixcbiAgVGhyb3R0bGVFdmVudFBsdWdpblxuXTtcblxuZXhwb3J0IGNvbnN0IE5HX0VWRU5UX1BMVUdJTlM6IFByb3ZpZGVyW10gPSBFVkVOVF9QTFVHSU5TLm1hcCh1c2VDbGFzcyA9PiAoe1xuICBwcm92aWRlOiBFVkVOVF9NQU5BR0VSX1BMVUdJTlMsXG4gIG11bHRpOiB0cnVlLFxuICB1c2VDbGFzc1xufSkpO1xuXG5cbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBESVJFQ1RJVkVTXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBESVJFQ1RJVkVTXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW50cnlDb21tb25Nb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RW50cnlDb21tb25Nb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEVudHJ5Q29tbW9uTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBOR19FVkVOVF9QTFVHSU5TXG4gICAgfTtcbiAgfVxufVxyXG4iXX0=
@@ -0,0 +1,75 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { Subject, fromEvent, timer } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import { NG_VALID_CLASS } from '../constants';
5
+ import { coerceNumberProperty } from '@angular/cdk/coercion';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * Auto disable button after click or submit with entry-auto-disable directive.
9
+ * Directive is applied to 'button[entry-auto-disable]:not([disabled])'
10
+ * Default auto disable interval is 2000ms (2sec)
11
+ *
12
+ * Usage
13
+ * <button mat-button entry-submit-button entry-auto-disable type="submit">Submit</button>
14
+ * or with auto disabled interval in milliseconds
15
+ * <button mat-button entry-submit-button entry-auto-disable="5000" type="submit">Submit</button>
16
+ */
17
+ export class AutoDisableButtonDirective {
18
+ constructor(elementRef) {
19
+ this.elementRef = elementRef;
20
+ this._destroy$ = new Subject();
21
+ this._disableIntervalInMs = 2000;
22
+ }
23
+ get disableIntervalInMs() {
24
+ return this._disableIntervalInMs;
25
+ }
26
+ set disableIntervalInMs(value) {
27
+ this._disableIntervalInMs = coerceNumberProperty(value, 2000);
28
+ }
29
+ ngOnInit() {
30
+ const button = this.elementRef.nativeElement;
31
+ const isTypeSubmit = button.getAttribute('type') === 'submit';
32
+ const form = button.closest('form');
33
+ if (isTypeSubmit && form) {
34
+ // listen to form submit event
35
+ fromEvent(form, 'submit')
36
+ .pipe(takeUntil(this._destroy$))
37
+ .subscribe(_ => {
38
+ if (form.matches(NG_VALID_CLASS)) {
39
+ this.disableButton(this._disableIntervalInMs);
40
+ }
41
+ });
42
+ }
43
+ else {
44
+ // otherwise listen to click event
45
+ fromEvent(button, 'click')
46
+ .pipe(takeUntil(this._destroy$))
47
+ .subscribe(_ => this.disableButton(this._disableIntervalInMs));
48
+ }
49
+ }
50
+ ngOnDestroy() {
51
+ this._destroy$.next();
52
+ this._destroy$.complete();
53
+ }
54
+ disableButton(disablePeriodInMs) {
55
+ const button = this.elementRef.nativeElement;
56
+ button.disabled = true;
57
+ timer(disablePeriodInMs)
58
+ .pipe(takeUntil(this._destroy$))
59
+ .subscribe(() => button.disabled = false);
60
+ }
61
+ }
62
+ AutoDisableButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutoDisableButtonDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
63
+ AutoDisableButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: AutoDisableButtonDirective, isStandalone: true, selector: "button[entry-auto-disable]:not([disabled])", inputs: { disableIntervalInMs: ["entry-auto-disable", "disableIntervalInMs"] }, ngImport: i0 });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutoDisableButtonDirective, decorators: [{
65
+ type: Directive,
66
+ args: [{
67
+ standalone: true,
68
+ // eslint-disable-next-line @angular-eslint/directive-selector
69
+ selector: 'button[entry-auto-disable]:not([disabled])'
70
+ }]
71
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { disableIntervalInMs: [{
72
+ type: Input,
73
+ args: ['entry-auto-disable']
74
+ }] } });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1kaXNhYmxlLWJ1dHRvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2VudHJ5LWNvbXBvbmVudHMvY29tbW9uL2RpcmVjdGl2ZXMvYXV0by1kaXNhYmxlLWJ1dHRvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQWUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFMUU7Ozs7Ozs7OztHQVNHO0FBTUgsTUFBTSxPQUFPLDBCQUEwQjtJQUtyQyxZQUFvQixVQUF5QztRQUF6QyxlQUFVLEdBQVYsVUFBVSxDQUErQjtRQUhyRCxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNoQyx5QkFBb0IsR0FBRyxJQUFJLENBQUM7SUFFNkIsQ0FBQztJQUVsRSxJQUNJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsSUFBSSxtQkFBbUIsQ0FBQyxLQUFrQjtRQUN4QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDN0MsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxRQUFRLENBQUM7UUFDOUQsTUFBTSxJQUFJLEdBQW9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckQsSUFBSSxZQUFZLElBQUksSUFBSSxFQUFFO1lBQ3hCLDhCQUE4QjtZQUM5QixTQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztpQkFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQy9CLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDYixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUU7b0JBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7aUJBQy9DO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDTjthQUFNO1lBQ0wsa0NBQWtDO1lBQ2xDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO2lCQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDL0IsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO1NBQ2xFO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxpQkFBeUI7UUFDN0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFFN0MsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFFdkIsS0FBSyxDQUFDLGlCQUFpQixDQUFDO2FBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQy9CLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7O3VIQWxEVSwwQkFBMEI7MkdBQTFCLDBCQUEwQjsyRkFBMUIsMEJBQTBCO2tCQUx0QyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQiw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSw0Q0FBNEM7aUJBQ3ZEO2lHQVNLLG1CQUFtQjtzQkFEdEIsS0FBSzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50LCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTkdfVkFMSURfQ0xBU1MgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgTnVtYmVySW5wdXQsIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuLyoqXG4gKiBBdXRvIGRpc2FibGUgYnV0dG9uIGFmdGVyIGNsaWNrIG9yIHN1Ym1pdCB3aXRoIGVudHJ5LWF1dG8tZGlzYWJsZSBkaXJlY3RpdmUuXG4gKiBEaXJlY3RpdmUgaXMgYXBwbGllZCB0byAnYnV0dG9uW2VudHJ5LWF1dG8tZGlzYWJsZV06bm90KFtkaXNhYmxlZF0pJ1xuICogRGVmYXVsdCBhdXRvIGRpc2FibGUgaW50ZXJ2YWwgaXMgMjAwMG1zICgyc2VjKVxuICpcbiAqIFVzYWdlXG4gKiA8YnV0dG9uIG1hdC1idXR0b24gZW50cnktc3VibWl0LWJ1dHRvbiBlbnRyeS1hdXRvLWRpc2FibGUgdHlwZT1cInN1Ym1pdFwiPlN1Ym1pdDwvYnV0dG9uPlxuICogb3Igd2l0aCBhdXRvIGRpc2FibGVkIGludGVydmFsIGluIG1pbGxpc2Vjb25kc1xuICogPGJ1dHRvbiBtYXQtYnV0dG9uIGVudHJ5LXN1Ym1pdC1idXR0b24gZW50cnktYXV0by1kaXNhYmxlPVwiNTAwMFwiIHR5cGU9XCJzdWJtaXRcIj5TdWJtaXQ8L2J1dHRvbj5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnYnV0dG9uW2VudHJ5LWF1dG8tZGlzYWJsZV06bm90KFtkaXNhYmxlZF0pJ1xufSlcbmV4cG9ydCBjbGFzcyBBdXRvRGlzYWJsZUJ1dHRvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2Rpc2FibGVJbnRlcnZhbEluTXMgPSAyMDAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD4pIHsgfVxuXG4gIEBJbnB1dCgnZW50cnktYXV0by1kaXNhYmxlJylcbiAgZ2V0IGRpc2FibGVJbnRlcnZhbEluTXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVJbnRlcnZhbEluTXM7XG4gIH1cbiAgc2V0IGRpc2FibGVJbnRlcnZhbEluTXModmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy5fZGlzYWJsZUludGVydmFsSW5NcyA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCAyMDAwKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGlzVHlwZVN1Ym1pdCA9IGJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSA9PT0gJ3N1Ym1pdCc7XG4gICAgY29uc3QgZm9ybTogSFRNTEZvcm1FbGVtZW50ID0gYnV0dG9uLmNsb3Nlc3QoJ2Zvcm0nKTtcblxuICAgIGlmIChpc1R5cGVTdWJtaXQgJiYgZm9ybSkge1xuICAgICAgLy8gbGlzdGVuIHRvIGZvcm0gc3VibWl0IGV2ZW50XG4gICAgICBmcm9tRXZlbnQoZm9ybSwgJ3N1Ym1pdCcpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgaWYgKGZvcm0ubWF0Y2hlcyhOR19WQUxJRF9DTEFTUykpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbih0aGlzLl9kaXNhYmxlSW50ZXJ2YWxJbk1zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBvdGhlcndpc2UgbGlzdGVuIHRvIGNsaWNrIGV2ZW50XG4gICAgICBmcm9tRXZlbnQoYnV0dG9uLCAnY2xpY2snKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKF8gPT4gdGhpcy5kaXNhYmxlQnV0dG9uKHRoaXMuX2Rpc2FibGVJbnRlcnZhbEluTXMpKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzYWJsZUJ1dHRvbihkaXNhYmxlUGVyaW9kSW5NczogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgYnV0dG9uID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBidXR0b24uZGlzYWJsZWQgPSB0cnVlO1xuXG4gICAgdGltZXIoZGlzYWJsZVBlcmlvZEluTXMpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiBidXR0b24uZGlzYWJsZWQgPSBmYWxzZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,3 @@
1
- export * from './scroll-to-invalid-control.directive';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2VudHJ5LWNvbXBvbmVudHMvY29tbW9uL2RpcmVjdGl2ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2Nyb2xsLXRvLWludmFsaWQtY29udHJvbC5kaXJlY3RpdmUnO1xyXG4iXX0=
1
+ export { AutoDisableButtonDirective } from './auto-disable-button.directive';
2
+ export { ScrollToInvalidControlDirective } from './scroll-to-invalid-control.directive';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2VudHJ5LWNvbXBvbmVudHMvY29tbW9uL2RpcmVjdGl2ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0UsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBBdXRvRGlzYWJsZUJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4vYXV0by1kaXNhYmxlLWJ1dHRvbi5kaXJlY3RpdmUnO1xyXG5leHBvcnQgeyBTY3JvbGxUb0ludmFsaWRDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9zY3JvbGwtdG8taW52YWxpZC1jb250cm9sLmRpcmVjdGl2ZSc7XHJcbiJdfQ==
@@ -0,0 +1,35 @@
1
+ /**
2
+ * abstract class EventManagerPlugin will be exposed in the public api
3
+ * https://github.com/angular/angular/pull/49969
4
+ *
5
+ * Until then creating it from reference
6
+ * https://github.com/angular/angular/blob/main/packages/platform-browser/src/dom/events/event_manager.ts#L93
7
+ *
8
+ * How to create custom event modifiers
9
+ * https://github.com/Tinkoff/ng-event-plugins,
10
+ * https://github.com/angular/angular/blob/main/packages/platform-browser/src/dom/events/key_events.ts
11
+ * https://netbasal.com/lifting-the-veil-insights-into-angulars-eventmanagerplugin-ed9d14cbb31a
12
+ */
13
+ export class EventManagerPlugin {
14
+ }
15
+ /**
16
+ * Entry event plugin base class
17
+ */
18
+ export class EntryEventManagerPlugin extends EventManagerPlugin {
19
+ /** return `true` for every event name that has specified modifier */
20
+ supports(eventName) {
21
+ return eventName.includes(this.modifier);
22
+ }
23
+ /** unwrap params e.g. (click.debounce.500) => ['debounce', 500] */
24
+ unwrapParams(eventName) {
25
+ return eventName
26
+ .substring(eventName.indexOf(this.modifier))
27
+ .split('.')
28
+ .filter(x => !!x);
29
+ }
30
+ /** get event name e.g. (click.debounce.500) => click */
31
+ unwrapEventName(eventName) {
32
+ return eventName.substring(0, eventName.indexOf(this.modifier));
33
+ }
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL2NvbW1vbi9ldmVudC1wbHVnaW5zL2Fic3RyYWN0LnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sT0FBZ0Isa0JBQWtCO0NBbUJ2QztBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFnQix1QkFBd0IsU0FBUSxrQkFBa0I7SUFHdEUscUVBQXFFO0lBQ3JFLFFBQVEsQ0FBQyxTQUFpQjtRQUN4QixPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsWUFBWSxDQUFDLFNBQWlCO1FBQzVCLE9BQU8sU0FBUzthQUNiLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMzQyxLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1YsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCx3REFBd0Q7SUFDeEQsZUFBZSxDQUFDLFNBQWlCO1FBQy9CLE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudE1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbi8qKlxyXG4gKiBhYnN0cmFjdCBjbGFzcyBFdmVudE1hbmFnZXJQbHVnaW4gd2lsbCBiZSBleHBvc2VkIGluIHRoZSBwdWJsaWMgYXBpXHJcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvcHVsbC80OTk2OVxyXG4gKlxyXG4gKiBVbnRpbCB0aGVuIGNyZWF0aW5nIGl0IGZyb20gcmVmZXJlbmNlXHJcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi9tYWluL3BhY2thZ2VzL3BsYXRmb3JtLWJyb3dzZXIvc3JjL2RvbS9ldmVudHMvZXZlbnRfbWFuYWdlci50cyNMOTNcclxuICpcclxuICogSG93IHRvIGNyZWF0ZSBjdXN0b20gZXZlbnQgbW9kaWZpZXJzXHJcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9UaW5rb2ZmL25nLWV2ZW50LXBsdWdpbnMsXHJcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi9tYWluL3BhY2thZ2VzL3BsYXRmb3JtLWJyb3dzZXIvc3JjL2RvbS9ldmVudHMva2V5X2V2ZW50cy50c1xyXG4gKiBodHRwczovL25ldGJhc2FsLmNvbS9saWZ0aW5nLXRoZS12ZWlsLWluc2lnaHRzLWludG8tYW5ndWxhcnMtZXZlbnRtYW5hZ2VycGx1Z2luLWVkOWQxNGNiYjMxYVxyXG4gKi9cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEV2ZW50TWFuYWdlclBsdWdpbiB7XHJcblxyXG4gIC8vIFVzaW5nIG5vbi1udWxsIGFzc2VydGlvbiBiZWNhdXNlIGl0J3Mgc2V0IGJ5IEV2ZW50TWFuYWdlcidzIGNvbnN0cnVjdG9yXHJcbiAgbWFuYWdlciE6IEV2ZW50TWFuYWdlcjtcclxuXHJcbiAgLyoqIFNob3VsZCByZXR1cm4gYHRydWVgIGZvciBldmVyeSBldmVudCBuYW1lIHRoYXQgc2hvdWxkIGJlIHN1cHBvcnRlZCBieSB0aGlzIHBsdWdpbiAqL1xyXG4gIGFic3RyYWN0IHN1cHBvcnRzKGV2ZW50TmFtZTogc3RyaW5nKTogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgaGFuZGxlciBmb3IgYSBzcGVjaWZpYyBlbGVtZW50IGFuZCBldmVudC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBIVE1MIGVsZW1lbnQgdG8gcmVjZWl2ZSBldmVudCBub3RpZmljYXRpb25zLlxyXG4gICAqIEBwYXJhbSBldmVudE5hbWUgVGhlIG5hbWUgb2YgdGhlIGV2ZW50IHRvIGxpc3RlbiBmb3IuXHJcbiAgICogQHBhcmFtIGhhbmRsZXIgQSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIG5vdGlmaWNhdGlvbiBvY2N1cnMuIFJlY2VpdmVzIHRoZVxyXG4gICAqIGV2ZW50IG9iamVjdCBhcyBhbiBhcmd1bWVudC5cclxuICAgKiBAcmV0dXJucyAgQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlbW92ZSB0aGUgaGFuZGxlci5cclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xyXG4gIGFic3RyYWN0IGFkZEV2ZW50TGlzdGVuZXIoZWxlbWVudDogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBoYW5kbGVyOiBGdW5jdGlvbik6IEZ1bmN0aW9uO1xyXG59XHJcblxyXG4vKipcclxuICogRW50cnkgZXZlbnQgcGx1Z2luIGJhc2UgY2xhc3NcclxuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnRyeUV2ZW50TWFuYWdlclBsdWdpbiBleHRlbmRzIEV2ZW50TWFuYWdlclBsdWdpbiB7XHJcbiAgYWJzdHJhY3QgbW9kaWZpZXI6IHN0cmluZztcclxuXHJcbiAgLyoqIHJldHVybiBgdHJ1ZWAgZm9yIGV2ZXJ5IGV2ZW50IG5hbWUgdGhhdCBoYXMgc3BlY2lmaWVkIG1vZGlmaWVyICovXHJcbiAgc3VwcG9ydHMoZXZlbnROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBldmVudE5hbWUuaW5jbHVkZXModGhpcy5tb2RpZmllcik7XHJcbiAgfVxyXG5cclxuICAvKiogdW53cmFwIHBhcmFtcyBlLmcuIChjbGljay5kZWJvdW5jZS41MDApID0+IFsnZGVib3VuY2UnLCA1MDBdICovXHJcbiAgdW53cmFwUGFyYW1zKGV2ZW50TmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIGV2ZW50TmFtZVxyXG4gICAgICAuc3Vic3RyaW5nKGV2ZW50TmFtZS5pbmRleE9mKHRoaXMubW9kaWZpZXIpKVxyXG4gICAgICAuc3BsaXQoJy4nKVxyXG4gICAgICAuZmlsdGVyKHggPT4gISF4KTtcclxuICB9XHJcblxyXG4gIC8qKiBnZXQgZXZlbnQgbmFtZSBlLmcuIChjbGljay5kZWJvdW5jZS41MDApID0+IGNsaWNrICovXHJcbiAgdW53cmFwRXZlbnROYW1lKGV2ZW50TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBldmVudE5hbWUuc3Vic3RyaW5nKDAsIGV2ZW50TmFtZS5pbmRleE9mKHRoaXMubW9kaWZpZXIpKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,34 @@
1
+ /* eslint-disable @typescript-eslint/ban-types */
2
+ import { Injectable } from '@angular/core';
3
+ import { EntryEventManagerPlugin } from './abstract.plugin';
4
+ import { debounce } from 'lodash-es';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Provides event plugin for debouncing events.
8
+ *
9
+ * How to use:
10
+ * <button (click.debounce)="doSomething($event)">
11
+ * <input (keyup.debounce.500)="doSomething($event)">
12
+ */
13
+ export class DebounceEventPlugin extends EntryEventManagerPlugin {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.modifier = '.debounce';
17
+ }
18
+ addEventListener(element, eventName, originalHandler) {
19
+ // e.g. (click.debounce.500)
20
+ const [_modifier, milliseconds = 500, option = 'leading'] = this.unwrapParams(eventName);
21
+ // run original handler inside ngZone in which the event occurred
22
+ const innerHandler = (event) => this.manager.getZone().runGuarded(() => originalHandler(event));
23
+ // create debounced handler
24
+ const debouncedHandler = debounce(innerHandler, milliseconds, { leading: option === 'leading', trailing: option === 'trailing' });
25
+ // register event with debounced handler
26
+ return this.manager.addEventListener(element, this.unwrapEventName(eventName), debouncedHandler);
27
+ }
28
+ }
29
+ DebounceEventPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DebounceEventPlugin, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
30
+ DebounceEventPlugin.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DebounceEventPlugin });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DebounceEventPlugin, decorators: [{
32
+ type: Injectable
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VuY2UucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL2NvbW1vbi9ldmVudC1wbHVnaW5zL2RlYm91bmNlLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpREFBaUQ7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUVyQzs7Ozs7O0dBTUc7QUFFSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsdUJBQXVCO0lBRGhFOztRQUdFLGFBQVEsR0FBRyxXQUFXLENBQUM7S0FnQnhCO0lBZEMsZ0JBQWdCLENBQUMsT0FBb0IsRUFBRSxTQUFpQixFQUFFLGVBQXlCO1FBQ2pGLDRCQUE0QjtRQUM1QixNQUFNLENBQUMsU0FBUyxFQUFFLFlBQVksR0FBRyxHQUFHLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFekYsaUVBQWlFO1FBQ2pFLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVyRywyQkFBMkI7UUFDM0IsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLFlBQVksRUFDMUQsRUFBRSxPQUFPLEVBQUUsTUFBTSxLQUFLLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFdEUsd0NBQXdDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25HLENBQUM7O2dIQWpCVSxtQkFBbUI7b0hBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlcyAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVudHJ5RXZlbnRNYW5hZ2VyUGx1Z2luIH0gZnJvbSAnLi9hYnN0cmFjdC5wbHVnaW4nO1xyXG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcblxyXG4vKipcclxuICogUHJvdmlkZXMgZXZlbnQgcGx1Z2luIGZvciBkZWJvdW5jaW5nIGV2ZW50cy5cclxuICpcclxuICogSG93IHRvIHVzZTpcclxuICogPGJ1dHRvbiAoY2xpY2suZGVib3VuY2UpPVwiZG9Tb21ldGhpbmcoJGV2ZW50KVwiPlxyXG4gKiA8aW5wdXQgKGtleXVwLmRlYm91bmNlLjUwMCk9XCJkb1NvbWV0aGluZygkZXZlbnQpXCI+XHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBEZWJvdW5jZUV2ZW50UGx1Z2luIGV4dGVuZHMgRW50cnlFdmVudE1hbmFnZXJQbHVnaW4ge1xyXG5cclxuICBtb2RpZmllciA9ICcuZGVib3VuY2UnO1xyXG5cclxuICBhZGRFdmVudExpc3RlbmVyKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgb3JpZ2luYWxIYW5kbGVyOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcclxuICAgIC8vIGUuZy4gKGNsaWNrLmRlYm91bmNlLjUwMClcclxuICAgIGNvbnN0IFtfbW9kaWZpZXIsIG1pbGxpc2Vjb25kcyA9IDUwMCwgb3B0aW9uID0gJ2xlYWRpbmcnXSA9IHRoaXMudW53cmFwUGFyYW1zKGV2ZW50TmFtZSk7XHJcblxyXG4gICAgLy8gcnVuIG9yaWdpbmFsIGhhbmRsZXIgaW5zaWRlIG5nWm9uZSBpbiB3aGljaCB0aGUgZXZlbnQgb2NjdXJyZWRcclxuICAgIGNvbnN0IGlubmVySGFuZGxlciA9IChldmVudDogYW55KSA9PiB0aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpLnJ1bkd1YXJkZWQoKCkgPT4gb3JpZ2luYWxIYW5kbGVyKGV2ZW50KSk7XHJcblxyXG4gICAgLy8gY3JlYXRlIGRlYm91bmNlZCBoYW5kbGVyXHJcbiAgICBjb25zdCBkZWJvdW5jZWRIYW5kbGVyID0gZGVib3VuY2UoaW5uZXJIYW5kbGVyLCBtaWxsaXNlY29uZHMsXHJcbiAgICAgIHsgbGVhZGluZzogb3B0aW9uID09PSAnbGVhZGluZycsIHRyYWlsaW5nOiBvcHRpb24gPT09ICd0cmFpbGluZycgfSk7XHJcblxyXG4gICAgLy8gcmVnaXN0ZXIgZXZlbnQgd2l0aCBkZWJvdW5jZWQgaGFuZGxlclxyXG4gICAgcmV0dXJuIHRoaXMubWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGVsZW1lbnQsIHRoaXMudW53cmFwRXZlbnROYW1lKGV2ZW50TmFtZSksIGRlYm91bmNlZEhhbmRsZXIpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,3 @@
1
+ export { ThrottleEventPlugin } from './throttle.plugin';
2
+ export { DebounceEventPlugin } from './debounce.plugin';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2VudHJ5LWNvbXBvbmVudHMvY29tbW9uL2V2ZW50LXBsdWdpbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBUaHJvdHRsZUV2ZW50UGx1Z2luIH0gZnJvbSAnLi90aHJvdHRsZS5wbHVnaW4nO1xyXG5leHBvcnQgeyBEZWJvdW5jZUV2ZW50UGx1Z2luIH0gZnJvbSAnLi9kZWJvdW5jZS5wbHVnaW4nO1xyXG4iXX0=
@@ -0,0 +1,34 @@
1
+ /* eslint-disable @typescript-eslint/ban-types */
2
+ import { Injectable } from '@angular/core';
3
+ import { EntryEventManagerPlugin } from './abstract.plugin';
4
+ import { throttle } from 'lodash-es';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Provides event plugin for throttling events.
8
+ *
9
+ * How to use:
10
+ * <button (click.throttle)="doSomething($event)">
11
+ * <input (keyup.throttle.500)="doSomething($event)">
12
+ */
13
+ export class ThrottleEventPlugin extends EntryEventManagerPlugin {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.modifier = '.throttle';
17
+ }
18
+ addEventListener(element, eventName, originalHandler) {
19
+ // e.g. (keyup.throttle.500)
20
+ const [_modifier, milliseconds = 500] = this.unwrapParams(eventName);
21
+ // run original handler inside ngZone in which the event occurred
22
+ const innerHandler = (event) => this.manager.getZone().runGuarded(() => originalHandler(event));
23
+ // create throttled handler
24
+ const throttledHandler = throttle(innerHandler, milliseconds);
25
+ // register event with throttled handler
26
+ return this.manager.addEventListener(element, this.unwrapEventName(eventName), throttledHandler);
27
+ }
28
+ }
29
+ ThrottleEventPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ThrottleEventPlugin, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
30
+ ThrottleEventPlugin.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ThrottleEventPlugin });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ThrottleEventPlugin, decorators: [{
32
+ type: Injectable
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3R0bGUucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL2NvbW1vbi9ldmVudC1wbHVnaW5zL3Rocm90dGxlLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpREFBaUQ7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUVyQzs7Ozs7O0dBTUc7QUFFSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsdUJBQXVCO0lBRGhFOztRQUdFLGFBQVEsR0FBRyxXQUFXLENBQUM7S0FleEI7SUFiQyxnQkFBZ0IsQ0FBQyxPQUFvQixFQUFFLFNBQWlCLEVBQUUsZUFBeUI7UUFDakYsNEJBQTRCO1FBQzVCLE1BQU0sQ0FBQyxTQUFTLEVBQUUsWUFBWSxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFckUsaUVBQWlFO1FBQ2pFLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVyRywyQkFBMkI7UUFDM0IsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRTlELHdDQUF3QztRQUN4QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUNuRyxDQUFDOztnSEFoQlUsbUJBQW1CO29IQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbnRyeUV2ZW50TWFuYWdlclBsdWdpbiB9IGZyb20gJy4vYWJzdHJhY3QucGx1Z2luJztcclxuaW1wb3J0IHsgdGhyb3R0bGUgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5cclxuLyoqXHJcbiAqIFByb3ZpZGVzIGV2ZW50IHBsdWdpbiBmb3IgdGhyb3R0bGluZyBldmVudHMuXHJcbiAqXHJcbiAqIEhvdyB0byB1c2U6XHJcbiAqIDxidXR0b24gKGNsaWNrLnRocm90dGxlKT1cImRvU29tZXRoaW5nKCRldmVudClcIj5cclxuICogPGlucHV0IChrZXl1cC50aHJvdHRsZS41MDApPVwiZG9Tb21ldGhpbmcoJGV2ZW50KVwiPlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVGhyb3R0bGVFdmVudFBsdWdpbiBleHRlbmRzIEVudHJ5RXZlbnRNYW5hZ2VyUGx1Z2luIHtcclxuXHJcbiAgbW9kaWZpZXIgPSAnLnRocm90dGxlJztcclxuXHJcbiAgYWRkRXZlbnRMaXN0ZW5lcihlbGVtZW50OiBIVE1MRWxlbWVudCwgZXZlbnROYW1lOiBzdHJpbmcsIG9yaWdpbmFsSGFuZGxlcjogRnVuY3Rpb24pOiBGdW5jdGlvbiB7XHJcbiAgICAvLyBlLmcuIChrZXl1cC50aHJvdHRsZS41MDApXHJcbiAgICBjb25zdCBbX21vZGlmaWVyLCBtaWxsaXNlY29uZHMgPSA1MDBdID0gdGhpcy51bndyYXBQYXJhbXMoZXZlbnROYW1lKTtcclxuXHJcbiAgICAvLyBydW4gb3JpZ2luYWwgaGFuZGxlciBpbnNpZGUgbmdab25lIGluIHdoaWNoIHRoZSBldmVudCBvY2N1cnJlZFxyXG4gICAgY29uc3QgaW5uZXJIYW5kbGVyID0gKGV2ZW50OiBhbnkpID0+IHRoaXMubWFuYWdlci5nZXRab25lKCkucnVuR3VhcmRlZCgoKSA9PiBvcmlnaW5hbEhhbmRsZXIoZXZlbnQpKTtcclxuXHJcbiAgICAvLyBjcmVhdGUgdGhyb3R0bGVkIGhhbmRsZXJcclxuICAgIGNvbnN0IHRocm90dGxlZEhhbmRsZXIgPSB0aHJvdHRsZShpbm5lckhhbmRsZXIsIG1pbGxpc2Vjb25kcyk7XHJcblxyXG4gICAgLy8gcmVnaXN0ZXIgZXZlbnQgd2l0aCB0aHJvdHRsZWQgaGFuZGxlclxyXG4gICAgcmV0dXJuIHRoaXMubWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGVsZW1lbnQsIHRoaXMudW53cmFwRXZlbnROYW1lKGV2ZW50TmFtZSksIHRocm90dGxlZEhhbmRsZXIpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,4 +1,5 @@
1
- export { EntryCommonModule } from './common.module';
1
+ export { EntryCommonModule, NG_EVENT_PLUGINS } from './common.module';
2
2
  export * from './utils';
3
3
  export * from './directives';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZW50cnktY29tcG9uZW50cy9jb21tb24vcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEVudHJ5Q29tbW9uTW9kdWxlIH0gZnJvbSAnLi9jb21tb24ubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMnO1xuIl19
4
+ export * from './event-plugins';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZW50cnktY29tcG9uZW50cy9jb21tb24vcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RSxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQgeyBFbnRyeUNvbW1vbk1vZHVsZSwgTkdfRVZFTlRfUExVR0lOUyB9IGZyb20gJy4vY29tbW9uLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vZXZlbnQtcGx1Z2lucyc7XG4iXX0=
@@ -6,6 +6,7 @@ import { EntrySearchFilterModule } from '@enigmatry/entry-components/search-filt
6
6
  import { EntryValidationModule } from '@enigmatry/entry-components/validation';
7
7
  import { EntryFileInputModule } from '@enigmatry/entry-components/file-input';
8
8
  import { EntryTableModule } from '@enigmatry/entry-components/table';
9
+ import { EntryCommonModule, NG_EVENT_PLUGINS } from '@enigmatry/entry-components/common';
9
10
  import * as i0 from "@angular/core";
10
11
  /**
11
12
  * Exports all entry components.
@@ -19,7 +20,7 @@ export class EntryComponentsModule {
19
20
  const permissionServiceProvider = options.permissionService
20
21
  ? [{ provide: EntryPermissionService, useClass: options.permissionService }]
21
22
  : [];
22
- const providers = [...permissionServiceProvider];
23
+ const providers = [...permissionServiceProvider, ...NG_EVENT_PLUGINS];
23
24
  return {
24
25
  ngModule: EntryComponentsModule,
25
26
  providers
@@ -28,6 +29,7 @@ export class EntryComponentsModule {
28
29
  }
29
30
  EntryComponentsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
30
31
  EntryComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: EntryComponentsModule, exports: [EntryButtonModule,
32
+ EntryCommonModule,
31
33
  EntryDialogModule,
32
34
  EntryFileInputModule,
33
35
  EntryValidationModule,
@@ -35,6 +37,7 @@ EntryComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", v
35
37
  EntrySearchFilterModule,
36
38
  EntryTableModule] });
37
39
  EntryComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryComponentsModule, imports: [EntryButtonModule,
40
+ EntryCommonModule,
38
41
  EntryDialogModule,
39
42
  EntryFileInputModule,
40
43
  EntryValidationModule,
@@ -47,6 +50,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
47
50
  declarations: [],
48
51
  exports: [
49
52
  EntryButtonModule,
53
+ EntryCommonModule,
50
54
  EntryDialogModule,
51
55
  EntryFileInputModule,
52
56
  EntryValidationModule,
@@ -56,4 +60,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
56
60
  ]
57
61
  }]
58
62
  }] });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnktY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2VudHJ5LWNvbXBvbmVudHMvbW9kdWxlcy9lbnRyeS1jb21wb25lbnRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDeEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBTXJFOzs7Ozs7R0FNRztBQWFILE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUF3QyxFQUFFO1FBRXZELE1BQU0seUJBQXlCLEdBQWUsT0FBTyxDQUFDLGlCQUFpQjtZQUNyRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDNUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQLE1BQU0sU0FBUyxHQUFlLENBQUMsR0FBRyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzdELE9BQU87WUFDTCxRQUFRLEVBQUUscUJBQXFCO1lBQy9CLFNBQVM7U0FDVixDQUFDO0lBQ0osQ0FBQzs7a0hBWlUscUJBQXFCO21IQUFyQixxQkFBcUIsWUFUOUIsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixvQkFBb0I7UUFDcEIscUJBQXFCO1FBQ3JCLHFCQUFxQjtRQUNyQix1QkFBdUI7UUFDdkIsZ0JBQWdCO21IQUdQLHFCQUFxQixZQVQ5QixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLG9CQUFvQjtRQUNwQixxQkFBcUI7UUFDckIscUJBQXFCO1FBQ3JCLHVCQUF1QjtRQUN2QixnQkFBZ0I7MkZBR1AscUJBQXFCO2tCQVpqQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQixxQkFBcUI7d0JBQ3JCLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3FCQUNqQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBQcm92aWRlciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbnRyeUJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy9idXR0b24nO1xyXG5pbXBvcnQgeyBFbnRyeURpYWxvZ01vZHVsZSB9IGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy9kaWFsb2cnO1xyXG5pbXBvcnQgeyBFbnRyeVBlcm1pc3Npb25Nb2R1bGUsIEVudHJ5UGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICdAZW5pZ21hdHJ5L2VudHJ5LWNvbXBvbmVudHMvcGVybWlzc2lvbnMnO1xyXG5pbXBvcnQgeyBFbnRyeVNlYXJjaEZpbHRlck1vZHVsZSB9IGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy9zZWFyY2gtZmlsdGVyJztcclxuaW1wb3J0IHsgRW50cnlWYWxpZGF0aW9uTW9kdWxlIH0gZnJvbSAnQGVuaWdtYXRyeS9lbnRyeS1jb21wb25lbnRzL3ZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBFbnRyeUZpbGVJbnB1dE1vZHVsZSB9IGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy9maWxlLWlucHV0JztcclxuaW1wb3J0IHsgRW50cnlUYWJsZU1vZHVsZSB9IGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy90YWJsZSc7XHJcblxyXG5pbnRlcmZhY2UgRW50cnlDb21wb25lbnRzTW9kdWxlT3B0aW9ucyB7XHJcbiAgcGVybWlzc2lvblNlcnZpY2U/OiBUeXBlPGFueT47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBFeHBvcnRzIGFsbCBlbnRyeSBjb21wb25lbnRzLlxyXG4gKlxyXG4gKiBVc2FnZVxyXG4gKiBpbXBvcnQgRW50cnlDb21wb25lbnRzTW9kdWxlIGluIHNoYXJlZC5tb2R1bGUudHMgdG8gaGF2ZSBhY2Nlc3MgdG8gYWxsIGNvbXBvbmVudHMsIGRpcmVjdGl2ZXMsIHBpcGVzLlxyXG4gKiBpbXBvcnQgRW50cnlDb21wb25lbnRzTW9kdWxlLmZvclJvb3QoKSBpbiBhcHAubW9kdWxlLnRzIHRvIHJlZ2lzdGVyIHJvb3QgbW9kdWxlIHByb3ZpZGVycy5cclxuICovXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBFbnRyeUJ1dHRvbk1vZHVsZSxcclxuICAgIEVudHJ5RGlhbG9nTW9kdWxlLFxyXG4gICAgRW50cnlGaWxlSW5wdXRNb2R1bGUsXHJcbiAgICBFbnRyeVZhbGlkYXRpb25Nb2R1bGUsXHJcbiAgICBFbnRyeVBlcm1pc3Npb25Nb2R1bGUsXHJcbiAgICBFbnRyeVNlYXJjaEZpbHRlck1vZHVsZSxcclxuICAgIEVudHJ5VGFibGVNb2R1bGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbnRyeUNvbXBvbmVudHNNb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JSb290KG9wdGlvbnM6IEVudHJ5Q29tcG9uZW50c01vZHVsZU9wdGlvbnMgPSB7fSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RW50cnlDb21wb25lbnRzTW9kdWxlPiB7XHJcblxyXG4gICAgY29uc3QgcGVybWlzc2lvblNlcnZpY2VQcm92aWRlcjogUHJvdmlkZXJbXSA9IG9wdGlvbnMucGVybWlzc2lvblNlcnZpY2VcclxuICAgICAgPyBbeyBwcm92aWRlOiBFbnRyeVBlcm1pc3Npb25TZXJ2aWNlLCB1c2VDbGFzczogb3B0aW9ucy5wZXJtaXNzaW9uU2VydmljZSB9XVxyXG4gICAgICA6IFtdO1xyXG5cclxuICAgIGNvbnN0IHByb3ZpZGVyczogUHJvdmlkZXJbXSA9IFsuLi5wZXJtaXNzaW9uU2VydmljZVByb3ZpZGVyXTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBFbnRyeUNvbXBvbmVudHNNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyc1xyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnktY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2VudHJ5LWNvbXBvbmVudHMvbW9kdWxlcy9lbnRyeS1jb21wb25lbnRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDeEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBTXpGOzs7Ozs7R0FNRztBQWNILE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUF3QyxFQUFFO1FBRXZELE1BQU0seUJBQXlCLEdBQWUsT0FBTyxDQUFDLGlCQUFpQjtZQUNyRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDNUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQLE1BQU0sU0FBUyxHQUFlLENBQUMsR0FBRyx5QkFBeUIsRUFBRSxHQUFHLGdCQUFnQixDQUFDLENBQUM7UUFDbEYsT0FBTztZQUNMLFFBQVEsRUFBRSxxQkFBcUI7WUFDL0IsU0FBUztTQUNWLENBQUM7SUFDSixDQUFDOztrSEFaVSxxQkFBcUI7bUhBQXJCLHFCQUFxQixZQVY5QixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixvQkFBb0I7UUFDcEIscUJBQXFCO1FBQ3JCLHFCQUFxQjtRQUNyQix1QkFBdUI7UUFDdkIsZ0JBQWdCO21IQUdQLHFCQUFxQixZQVY5QixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixvQkFBb0I7UUFDcEIscUJBQXFCO1FBQ3JCLHFCQUFxQjtRQUNyQix1QkFBdUI7UUFDdkIsZ0JBQWdCOzJGQUdQLHFCQUFxQjtrQkFiakMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQixxQkFBcUI7d0JBQ3JCLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3FCQUNqQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBQcm92aWRlciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbnRyeUJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy9idXR0b24nO1xyXG5pbXBvcnQgeyBFbnRyeURpYWxvZ01vZHVsZSB9IGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy9kaWFsb2cnO1xyXG5pbXBvcnQgeyBFbnRyeVBlcm1pc3Npb25Nb2R1bGUsIEVudHJ5UGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICdAZW5pZ21hdHJ5L2VudHJ5LWNvbXBvbmVudHMvcGVybWlzc2lvbnMnO1xyXG5pbXBvcnQgeyBFbnRyeVNlYXJjaEZpbHRlck1vZHVsZSB9IGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy9zZWFyY2gtZmlsdGVyJztcclxuaW1wb3J0IHsgRW50cnlWYWxpZGF0aW9uTW9kdWxlIH0gZnJvbSAnQGVuaWdtYXRyeS9lbnRyeS1jb21wb25lbnRzL3ZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBFbnRyeUZpbGVJbnB1dE1vZHVsZSB9IGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy9maWxlLWlucHV0JztcclxuaW1wb3J0IHsgRW50cnlUYWJsZU1vZHVsZSB9IGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy90YWJsZSc7XHJcbmltcG9ydCB7IEVudHJ5Q29tbW9uTW9kdWxlLCBOR19FVkVOVF9QTFVHSU5TIH0gZnJvbSAnQGVuaWdtYXRyeS9lbnRyeS1jb21wb25lbnRzL2NvbW1vbic7XHJcblxyXG5pbnRlcmZhY2UgRW50cnlDb21wb25lbnRzTW9kdWxlT3B0aW9ucyB7XHJcbiAgcGVybWlzc2lvblNlcnZpY2U/OiBUeXBlPGFueT47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBFeHBvcnRzIGFsbCBlbnRyeSBjb21wb25lbnRzLlxyXG4gKlxyXG4gKiBVc2FnZVxyXG4gKiBpbXBvcnQgRW50cnlDb21wb25lbnRzTW9kdWxlIGluIHNoYXJlZC5tb2R1bGUudHMgdG8gaGF2ZSBhY2Nlc3MgdG8gYWxsIGNvbXBvbmVudHMsIGRpcmVjdGl2ZXMsIHBpcGVzLlxyXG4gKiBpbXBvcnQgRW50cnlDb21wb25lbnRzTW9kdWxlLmZvclJvb3QoKSBpbiBhcHAubW9kdWxlLnRzIHRvIHJlZ2lzdGVyIHJvb3QgbW9kdWxlIHByb3ZpZGVycy5cclxuICovXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBFbnRyeUJ1dHRvbk1vZHVsZSxcclxuICAgIEVudHJ5Q29tbW9uTW9kdWxlLFxyXG4gICAgRW50cnlEaWFsb2dNb2R1bGUsXHJcbiAgICBFbnRyeUZpbGVJbnB1dE1vZHVsZSxcclxuICAgIEVudHJ5VmFsaWRhdGlvbk1vZHVsZSxcclxuICAgIEVudHJ5UGVybWlzc2lvbk1vZHVsZSxcclxuICAgIEVudHJ5U2VhcmNoRmlsdGVyTW9kdWxlLFxyXG4gICAgRW50cnlUYWJsZU1vZHVsZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEVudHJ5Q29tcG9uZW50c01vZHVsZSB7XHJcbiAgc3RhdGljIGZvclJvb3Qob3B0aW9uczogRW50cnlDb21wb25lbnRzTW9kdWxlT3B0aW9ucyA9IHt9KTogTW9kdWxlV2l0aFByb3ZpZGVyczxFbnRyeUNvbXBvbmVudHNNb2R1bGU+IHtcclxuXHJcbiAgICBjb25zdCBwZXJtaXNzaW9uU2VydmljZVByb3ZpZGVyOiBQcm92aWRlcltdID0gb3B0aW9ucy5wZXJtaXNzaW9uU2VydmljZVxyXG4gICAgICA/IFt7IHByb3ZpZGU6IEVudHJ5UGVybWlzc2lvblNlcnZpY2UsIHVzZUNsYXNzOiBvcHRpb25zLnBlcm1pc3Npb25TZXJ2aWNlIH1dXHJcbiAgICAgIDogW107XHJcblxyXG4gICAgY29uc3QgcHJvdmlkZXJzOiBQcm92aWRlcltdID0gWy4uLnBlcm1pc3Npb25TZXJ2aWNlUHJvdmlkZXIsIC4uLk5HX0VWRU5UX1BMVUdJTlNdO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IEVudHJ5Q29tcG9uZW50c01vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -2,6 +2,7 @@
2
2
  * Public API Surface of entry-components
3
3
  */
4
4
  export * from '@enigmatry/entry-components/button';
5
+ export * from '@enigmatry/entry-components/common';
5
6
  export * from '@enigmatry/entry-components/dialog';
6
7
  export * from '@enigmatry/entry-components/file-input';
7
8
  export * from '@enigmatry/entry-components/permissions';
@@ -9,4 +10,4 @@ export * from '@enigmatry/entry-components/search-filter';
9
10
  export * from '@enigmatry/entry-components/validation';
10
11
  export * from '@enigmatry/entry-components/table';
11
12
  export { EntryComponentsModule } from './modules/entry-components.module';
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvZW50cnktY29tcG9uZW50cy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBOztHQUVHO0FBQ0gsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxtQ0FBbUMsQ0FBQztBQUVsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBlbnRyeS1jb21wb25lbnRzXG4gKi9cbmV4cG9ydCAqIGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy9idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnQGVuaWdtYXRyeS9lbnRyeS1jb21wb25lbnRzL2RpYWxvZyc7XG5leHBvcnQgKiBmcm9tICdAZW5pZ21hdHJ5L2VudHJ5LWNvbXBvbmVudHMvZmlsZS1pbnB1dCc7XG5leHBvcnQgKiBmcm9tICdAZW5pZ21hdHJ5L2VudHJ5LWNvbXBvbmVudHMvcGVybWlzc2lvbnMnO1xuZXhwb3J0ICogZnJvbSAnQGVuaWdtYXRyeS9lbnRyeS1jb21wb25lbnRzL3NlYXJjaC1maWx0ZXInO1xuZXhwb3J0ICogZnJvbSAnQGVuaWdtYXRyeS9lbnRyeS1jb21wb25lbnRzL3ZhbGlkYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnQGVuaWdtYXRyeS9lbnRyeS1jb21wb25lbnRzL3RhYmxlJztcblxuZXhwb3J0IHsgRW50cnlDb21wb25lbnRzTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL2VudHJ5LWNvbXBvbmVudHMubW9kdWxlJztcbiJdfQ==
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvZW50cnktY29tcG9uZW50cy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBOztHQUVHO0FBQ0gsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLG1DQUFtQyxDQUFDO0FBRWxELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG4vKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGVudHJ5LWNvbXBvbmVudHNcbiAqL1xuZXhwb3J0ICogZnJvbSAnQGVuaWdtYXRyeS9lbnRyeS1jb21wb25lbnRzL2J1dHRvbic7XG5leHBvcnQgKiBmcm9tICdAZW5pZ21hdHJ5L2VudHJ5LWNvbXBvbmVudHMvY29tbW9uJztcbmV4cG9ydCAqIGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy9kaWFsb2cnO1xuZXhwb3J0ICogZnJvbSAnQGVuaWdtYXRyeS9lbnRyeS1jb21wb25lbnRzL2ZpbGUtaW5wdXQnO1xuZXhwb3J0ICogZnJvbSAnQGVuaWdtYXRyeS9lbnRyeS1jb21wb25lbnRzL3Blcm1pc3Npb25zJztcbmV4cG9ydCAqIGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy9zZWFyY2gtZmlsdGVyJztcbmV4cG9ydCAqIGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy92YWxpZGF0aW9uJztcbmV4cG9ydCAqIGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy90YWJsZSc7XG5cbmV4cG9ydCB7IEVudHJ5Q29tcG9uZW50c01vZHVsZSB9IGZyb20gJy4vbW9kdWxlcy9lbnRyeS1jb21wb25lbnRzLm1vZHVsZSc7XG4iXX0=