@ngx-stoui/core 15.0.1 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +7 -7
  2. package/{esm2020 → esm2022}/index.mjs +1 -1
  3. package/{esm2020 → esm2022}/lib/abstract-and-interfaces/keyPress.enum.mjs +1 -1
  4. package/esm2022/lib/sto-directives/context-menu.directive.mjs +36 -0
  5. package/esm2022/lib/sto-directives/date-form-field-click.directive.mjs +46 -0
  6. package/esm2022/lib/sto-directives/directives.module.mjs +64 -0
  7. package/{esm2020 → esm2022}/lib/sto-directives/index.mjs +1 -1
  8. package/esm2022/lib/sto-directives/menu-overlay.directive.mjs +48 -0
  9. package/{esm2020 → esm2022}/lib/sto-directives/quick-keys.directive.mjs +4 -4
  10. package/{esm2020 → esm2022}/lib/sto-directives/sto-grid.directive.mjs +10 -10
  11. package/{esm2020 → esm2022}/lib/sto-directives/sto-select-text-on-focus.directive.mjs +4 -4
  12. package/{esm2020 → esm2022}/lib/sto-pipes/currency-format.pipe.mjs +4 -4
  13. package/{esm2020 → esm2022}/lib/sto-pipes/date-format.pipe.mjs +4 -4
  14. package/{esm2020 → esm2022}/lib/sto-pipes/keys.pipe.mjs +4 -4
  15. package/{esm2020 → esm2022}/lib/sto-pipes/number-format.pipe.mjs +4 -4
  16. package/{esm2020 → esm2022}/lib/sto-pipes/sto-pipes.module.mjs +17 -17
  17. package/{esm2020 → esm2022}/lib/sto-pipes/with-unit.mjs +7 -7
  18. package/{esm2020 → esm2022}/lib/sto-pipes/yes-no.mjs +4 -4
  19. package/{fesm2020 → fesm2022}/ngx-stoui-core.mjs +83 -84
  20. package/fesm2022/ngx-stoui-core.mjs.map +1 -0
  21. package/lib/sto-directives/context-menu.directive.d.ts +2 -2
  22. package/lib/sto-directives/date-form-field-click.directive.d.ts +2 -2
  23. package/lib/sto-directives/menu-overlay.directive.d.ts +1 -1
  24. package/lib/sto-directives/quick-keys.directive.d.ts +1 -1
  25. package/lib/sto-directives/sto-grid.directive.d.ts +2 -2
  26. package/ngx-datatable.css +26 -9
  27. package/ngx-stoui.css +3289 -3554
  28. package/package.json +18 -18
  29. package/style/_fonts.scss +3 -3
  30. package/style/datatable/_ngx-datatable-compact.scss +144 -144
  31. package/style/datatable/_ngx-datatable-form.scss +94 -95
  32. package/style/datatable/_ngx-datatable-variables.scss +10 -10
  33. package/style/datatable/ngx-datatable.scss +404 -398
  34. package/style/form/sto-form.scss +348 -342
  35. package/style/grid.scss +20 -20
  36. package/style/sto-dialog.scss +73 -73
  37. package/style/sto-grid.scss +67 -67
  38. package/style/theme/_action-footer.scss +20 -20
  39. package/style/theme/_appheader.scss +121 -122
  40. package/style/theme/_card.scss +28 -26
  41. package/style/theme/_colors.scss +170 -170
  42. package/style/theme/_datatable.scss +231 -224
  43. package/style/theme/_daterange.scss +47 -51
  44. package/style/theme/_dialog.scss +25 -25
  45. package/style/theme/_filterpanel.scss +88 -88
  46. package/style/theme/_input-overrides.scss +119 -117
  47. package/style/theme/_message-panel.scss +89 -89
  48. package/style/theme/_number-input.scss +23 -23
  49. package/style/theme/_number-unit-input.scss +34 -34
  50. package/style/theme/_select-filter.scss +16 -16
  51. package/style/theme/_sto-indicators.scss +89 -89
  52. package/style/theme/_theme-variables.scss +63 -61
  53. package/style/theme/_theme.scss +22 -16
  54. package/style/theme/_typography.scss +44 -41
  55. package/style/theme/_wysiwyg.scss +38 -38
  56. package/style/theme/components.scss +16 -16
  57. package/style/theme/preference-manager.scss +50 -50
  58. package/style/theme.scss +41 -35
  59. package/esm2020/lib/sto-directives/context-menu.directive.mjs +0 -36
  60. package/esm2020/lib/sto-directives/date-form-field-click.directive.mjs +0 -46
  61. package/esm2020/lib/sto-directives/directives.module.mjs +0 -64
  62. package/esm2020/lib/sto-directives/menu-overlay.directive.mjs +0 -48
  63. package/fesm2015/ngx-stoui-core.mjs +0 -829
  64. package/fesm2015/ngx-stoui-core.mjs.map +0 -1
  65. package/fesm2020/ngx-stoui-core.mjs.map +0 -1
  66. /package/{esm2020 → esm2022}/ngx-stoui-core.mjs +0 -0
@@ -1,50 +1,50 @@
1
- @import "theme";
2
- @import "typography";
3
-
4
- @mixin preference-manager-theme($theme, $variables) {
5
- $selected-color: map_get($variables, selected-bg);
6
- $hover-color: map_get($variables, hover-bg);
7
- $border-color: map_get($variables, border-color);
8
- $secondary-color: map_get($variables, secondary);
9
-
10
- sto-preference-manager {
11
-
12
- .filter-title {
13
- small {
14
- color: $secondary-color;
15
- }
16
- }
17
- }
18
-
19
- .mat-menu-panel.preference-manager-list {
20
-
21
- .preference-manager-list-item {
22
- &:hover:not(.selected) {
23
- background-color: $hover-color !important; // Angular material has super strict rules we need to override.
24
- }
25
-
26
-
27
- &.selected {
28
- background-color: $selected-color !important;
29
- }
30
-
31
- .preference-manager-list-item-title {
32
-
33
- small {
34
- color: $secondary-color;
35
- }
36
- }
37
- }
38
-
39
- .preference-manager-list-footer {
40
- border-top: 1px solid $border-color;
41
- background: $hover-color;
42
- }
43
- }
44
-
45
- }
46
-
47
- // Include theme styles for your custom components.
48
- body {
49
- @include preference-manager-theme($sto-theme, $variables);
50
- }
1
+ @import "theme";
2
+ @import "typography";
3
+
4
+ @mixin preference-manager-theme($theme, $variables) {
5
+ $selected-color: map_get($variables, selected-bg);
6
+ $hover-color: map_get($variables, hover-bg);
7
+ $border-color: map_get($variables, border-color);
8
+ $secondary-color: map_get($variables, secondary);
9
+
10
+ sto-preference-manager {
11
+
12
+ .filter-title {
13
+ small {
14
+ color: $secondary-color;
15
+ }
16
+ }
17
+ }
18
+
19
+ .mat-menu-panel.preference-manager-list {
20
+
21
+ .preference-manager-list-item {
22
+ &:hover:not(.selected) {
23
+ background-color: $hover-color !important; // Angular material has super strict rules we need to override.
24
+ }
25
+
26
+
27
+ &.selected {
28
+ background-color: $selected-color !important;
29
+ }
30
+
31
+ .preference-manager-list-item-title {
32
+
33
+ small {
34
+ color: $secondary-color;
35
+ }
36
+ }
37
+ }
38
+
39
+ .preference-manager-list-footer {
40
+ border-top: 1px solid $border-color;
41
+ background: $hover-color;
42
+ }
43
+ }
44
+
45
+ }
46
+
47
+ // Include theme styles for your custom components.
48
+ body {
49
+ @include preference-manager-theme($sto-theme, $variables);
50
+ }
package/style/theme.scss CHANGED
@@ -1,35 +1,41 @@
1
- @use '@angular/material' as mat;
2
- @import "./theme/typography";
3
- @import "./theme/theme";
4
- @import "./theme/components";
5
-
6
- @include mat.legacy-core();
7
-
8
- // Include theme styles for core and each component used in your app.
9
- @include mat.legacy-core-theme($sto-theme);
10
- @include mat.all-legacy-component-themes($sto-theme);
11
-
12
- body, .sto-header, .mat-card {
13
- transition: background-color 200ms ease;
14
- }
15
-
16
- @include mat.legacy-typography-hierarchy($sto-typography, '.mat-typography');
17
- @include mat.legacy-typography-hierarchy($sto-sm-typography, '.mat-typography.sto-sm-typography');
18
- @include mat.legacy-typography-hierarchy($sto-l-typography, '.mat-typography.sto-l-typography');
19
-
20
-
21
- .mat-typography {
22
- @include mat.core-typography($sto-typography);
23
- @include mat.all-legacy-component-typographies($sto-typography);
24
- }
25
-
26
- .mat-typography.sto-sm-typography {
27
- @include mat.core-typography($sto-sm-typography);
28
- @include mat.all-legacy-component-typographies($sto-typography);
29
- }
30
-
31
- .mat-typography.sto-l-typography {
32
- @include mat.core-typography($sto-l-typography);
33
- @include mat.all-legacy-component-typographies($sto-typography);
34
- }
35
-
1
+ @use '@angular/material' as mat;
2
+ @import './theme/typography';
3
+ @import './theme/theme';
4
+ @import './theme/components';
5
+
6
+ @include mat.core();
7
+
8
+ // Include theme styles for core and each component used in your app.
9
+ @include mat.core-theme($sto-theme);
10
+ @include mat.all-component-themes($sto-theme);
11
+
12
+ body,
13
+ .sto-header,
14
+ .mat-card {
15
+ transition: background-color 200ms ease;
16
+ }
17
+
18
+ @include mat.typography-hierarchy($sto-typography, '.mat-typography');
19
+ @include mat.typography-hierarchy(
20
+ $sto-sm-typography,
21
+ '.mat-typography.sto-sm-typography'
22
+ );
23
+ @include mat.typography-hierarchy(
24
+ $sto-l-typography,
25
+ '.mat-typography.sto-l-typography'
26
+ );
27
+
28
+ .mat-typography {
29
+ @include mat.core-typography($sto-typography);
30
+ @include mat.all-component-typographies($sto-typography);
31
+ }
32
+
33
+ .mat-typography.sto-sm-typography {
34
+ @include mat.core-typography($sto-sm-typography);
35
+ @include mat.all-component-typographies($sto-sm-typography);
36
+ }
37
+
38
+ .mat-typography.sto-l-typography {
39
+ @include mat.core-typography($sto-l-typography);
40
+ @include mat.all-component-typographies($sto-l-typography);
41
+ }
@@ -1,36 +0,0 @@
1
- import { Directive, HostListener, Input } from '@angular/core';
2
- import { MatLegacyMenuTrigger as MatMenuTrigger } from '@angular/material/legacy-menu';
3
- import { MenuOverlayDirective } from './menu-overlay.directive';
4
- import * as i0 from "@angular/core";
5
- export class ContextMenuDirective {
6
- contextMenu(event) {
7
- event.preventDefault();
8
- if (this.menuTrigger.menuOpen) {
9
- this.menuTrigger.closeMenu();
10
- }
11
- this.overlayDirective.updatePosition(event);
12
- setTimeout(() => {
13
- this.menuTrigger.menuData = this.menuContext;
14
- this.menuTrigger.openMenu();
15
- }, 150);
16
- }
17
- }
18
- ContextMenuDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ContextMenuDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
19
- ContextMenuDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.1", type: ContextMenuDirective, isStandalone: true, selector: "[stoContextMenu]", inputs: { menuTrigger: "menuTrigger", overlayDirective: "overlayDirective", menuContext: "menuContext" }, host: { listeners: { "contextmenu": "contextMenu($event)" } }, ngImport: i0 });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ContextMenuDirective, decorators: [{
21
- type: Directive,
22
- args: [{
23
- selector: '[stoContextMenu]',
24
- standalone: true
25
- }]
26
- }], propDecorators: { menuTrigger: [{
27
- type: Input
28
- }], overlayDirective: [{
29
- type: Input
30
- }], menuContext: [{
31
- type: Input
32
- }], contextMenu: [{
33
- type: HostListener,
34
- args: ['contextmenu', ['$event']]
35
- }] } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3N0by1kaXJlY3RpdmVzL2NvbnRleHQtbWVudS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsSUFBSSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFNaEUsTUFBTSxPQUFPLG9CQUFvQjtJQVMvQixXQUFXLENBQUMsS0FBaUI7UUFDM0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUc7WUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUM5QjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDOztpSEFuQlUsb0JBQW9CO3FHQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFKaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBR0MsV0FBVztzQkFEVixLQUFLO2dCQUdOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUdOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixXQUFXO3NCQURWLFlBQVk7dUJBQUMsYUFBYSxFQUFFLENBQUUsUUFBUSxDQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRMZWdhY3lNZW51VHJpZ2dlciBhcyBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1tZW51JztcbmltcG9ydCB7IE1lbnVPdmVybGF5RGlyZWN0aXZlIH0gZnJvbSAnLi9tZW51LW92ZXJsYXkuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3N0b0NvbnRleHRNZW51XScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dE1lbnVEaXJlY3RpdmUge1xuICBASW5wdXQoKVxuICBtZW51VHJpZ2dlcjogTWF0TWVudVRyaWdnZXI7XG4gIEBJbnB1dCgpXG4gIG92ZXJsYXlEaXJlY3RpdmU6IE1lbnVPdmVybGF5RGlyZWN0aXZlO1xuICBASW5wdXQoKVxuICBtZW51Q29udGV4dDogdW5rbm93bjtcblxuICBASG9zdExpc3RlbmVyKCdjb250ZXh0bWVudScsIFsgJyRldmVudCcgXSlcbiAgY29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICggdGhpcy5tZW51VHJpZ2dlci5tZW51T3BlbiApIHtcbiAgICAgIHRoaXMubWVudVRyaWdnZXIuY2xvc2VNZW51KCk7XG4gICAgfVxuICAgIHRoaXMub3ZlcmxheURpcmVjdGl2ZS51cGRhdGVQb3NpdGlvbihldmVudCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1lbnVUcmlnZ2VyLm1lbnVEYXRhID0gdGhpcy5tZW51Q29udGV4dDtcbiAgICAgIHRoaXMubWVudVRyaWdnZXIub3Blbk1lbnUoKTtcbiAgICB9LCAxNTApO1xuICB9XG5cbn1cbiJdfQ==
@@ -1,46 +0,0 @@
1
- import { ContentChildren, Directive, HostListener, Input, QueryList } from '@angular/core';
2
- import { MatDatepicker } from '@angular/material/datepicker';
3
- import { MatLegacyInput as MatInput } from '@angular/material/legacy-input';
4
- import { Subject } from 'rxjs';
5
- import { takeUntil } from 'rxjs/operators';
6
- import * as i0 from "@angular/core";
7
- /**
8
- * Directive that can be placed on mat-form-fields that contains a mat-datepicker.
9
- * This directive has two tasks:
10
- * Clicking anywhere on the mat-form-field will open the datepicker dialog
11
- * When the datepicker is closed in any manner, we shift focus back to the datepicker input
12
- */
13
- export class DateFormFieldClickDirective {
14
- constructor() {
15
- this.destroy$ = new Subject();
16
- }
17
- clickEvent() {
18
- this.stoDateFormFieldClick.open();
19
- }
20
- ngOnInit() {
21
- this.stoDateFormFieldClick.closedStream
22
- .pipe(takeUntil(this.destroy$)).subscribe(() => this.inputs.first.focus());
23
- }
24
- ngOnDestroy() {
25
- this.destroy$.next(true);
26
- this.destroy$.complete();
27
- }
28
- }
29
- DateFormFieldClickDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DateFormFieldClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
30
- DateFormFieldClickDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.1", type: DateFormFieldClickDirective, isStandalone: true, selector: "[stoDateFormFieldClick]", inputs: { stoDateFormFieldClick: "stoDateFormFieldClick" }, host: { listeners: { "click": "clickEvent()" } }, queries: [{ propertyName: "inputs", predicate: MatInput }], ngImport: i0 });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DateFormFieldClickDirective, decorators: [{
32
- type: Directive,
33
- args: [{
34
- selector: '[stoDateFormFieldClick]',
35
- standalone: true
36
- }]
37
- }], propDecorators: { inputs: [{
38
- type: ContentChildren,
39
- args: [MatInput]
40
- }], stoDateFormFieldClick: [{
41
- type: Input
42
- }], clickEvent: [{
43
- type: HostListener,
44
- args: ['click']
45
- }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1mb3JtLWZpZWxkLWNsaWNrLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3N0by1kaXJlY3RpdmVzL2RhdGUtZm9ybS1maWVsZC1jbGljay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxJQUFJLFFBQVEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUUzQzs7Ozs7R0FLRztBQUtILE1BQU0sT0FBTywyQkFBMkI7SUFKeEM7UUFPVSxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztLQWtCbEM7SUFmQyxVQUFVO1FBQ1IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVk7YUFDcEMsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ3pCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7O3dIQXBCVSwyQkFBMkI7NEdBQTNCLDJCQUEyQix3TkFDckIsUUFBUTsyRkFEZCwyQkFBMkI7a0JBSnZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQUU0QixNQUFNO3NCQUFoQyxlQUFlO3VCQUFDLFFBQVE7Z0JBQ2hCLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFJTixVQUFVO3NCQURULFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNYXRMZWdhY3lJbnB1dCBhcyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1pbnB1dCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogRGlyZWN0aXZlIHRoYXQgY2FuIGJlIHBsYWNlZCBvbiBtYXQtZm9ybS1maWVsZHMgdGhhdCBjb250YWlucyBhIG1hdC1kYXRlcGlja2VyLlxuICogVGhpcyBkaXJlY3RpdmUgaGFzIHR3byB0YXNrczpcbiAqIENsaWNraW5nIGFueXdoZXJlIG9uIHRoZSBtYXQtZm9ybS1maWVsZCB3aWxsIG9wZW4gdGhlIGRhdGVwaWNrZXIgZGlhbG9nXG4gKiBXaGVuIHRoZSBkYXRlcGlja2VyIGlzIGNsb3NlZCBpbiBhbnkgbWFubmVyLCB3ZSBzaGlmdCBmb2N1cyBiYWNrIHRvIHRoZSBkYXRlcGlja2VyIGlucHV0XG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzdG9EYXRlRm9ybUZpZWxkQ2xpY2tdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlRm9ybUZpZWxkQ2xpY2tEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0SW5wdXQpIGlucHV0czogUXVlcnlMaXN0PE1hdElucHV0PjtcbiAgQElucHV0KCkgc3RvRGF0ZUZvcm1GaWVsZENsaWNrOiBNYXREYXRlcGlja2VyPERhdGU+O1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIGNsaWNrRXZlbnQoKSB7XG4gICAgdGhpcy5zdG9EYXRlRm9ybUZpZWxkQ2xpY2sub3BlbigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zdG9EYXRlRm9ybUZpZWxkQ2xpY2suY2xvc2VkU3RyZWFtXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICApLnN1YnNjcmliZSgoKSA9PiB0aGlzLmlucHV0cy5maXJzdC5mb2N1cygpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,64 +0,0 @@
1
- import { QuickKeysDirective } from './quick-keys.directive';
2
- import { DateFormFieldClickDirective } from './date-form-field-click.directive';
3
- import { StoSelectTextOnFocusDirective } from './sto-select-text-on-focus.directive';
4
- import { StoGridColumnDirective, StoGridDirective, StoGridSpacerDirective } from './sto-grid.directive';
5
- import { MenuOverlayDirective } from './menu-overlay.directive';
6
- import { ContextMenuDirective } from './context-menu.directive';
7
- /**
8
- * Directives have been made standalone, import them directly:
9
- * QuickKeysDirective
10
- * DateFormFieldClickDirective
11
- * StoSelectTextOnFocusDirective
12
- * StoGridDirective
13
- * StoGridColumnDirective
14
- * StoGridSpacerDirective
15
- * MenuOverlayDirective
16
- * ContextMenuDirective
17
- */
18
- import { NgModule } from '@angular/core';
19
- import * as i0 from "@angular/core";
20
- export class StoDirectivesModule {
21
- }
22
- StoDirectivesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: StoDirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
23
- StoDirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.1", ngImport: i0, type: StoDirectivesModule, imports: [QuickKeysDirective,
24
- DateFormFieldClickDirective,
25
- StoSelectTextOnFocusDirective,
26
- StoGridDirective,
27
- StoGridColumnDirective,
28
- StoGridSpacerDirective,
29
- MenuOverlayDirective,
30
- ContextMenuDirective], exports: [QuickKeysDirective,
31
- DateFormFieldClickDirective,
32
- StoSelectTextOnFocusDirective,
33
- StoGridDirective,
34
- StoGridColumnDirective,
35
- StoGridSpacerDirective,
36
- MenuOverlayDirective,
37
- ContextMenuDirective] });
38
- StoDirectivesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: StoDirectivesModule });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: StoDirectivesModule, decorators: [{
40
- type: NgModule,
41
- args: [{
42
- imports: [
43
- QuickKeysDirective,
44
- DateFormFieldClickDirective,
45
- StoSelectTextOnFocusDirective,
46
- StoGridDirective,
47
- StoGridColumnDirective,
48
- StoGridSpacerDirective,
49
- MenuOverlayDirective,
50
- ContextMenuDirective
51
- ],
52
- exports: [
53
- QuickKeysDirective,
54
- DateFormFieldClickDirective,
55
- StoSelectTextOnFocusDirective,
56
- StoGridDirective,
57
- StoGridColumnDirective,
58
- StoGridSpacerDirective,
59
- MenuOverlayDirective,
60
- ContextMenuDirective
61
- ]
62
- }]
63
- }] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zdG8tZGlyZWN0aXZlcy9kaXJlY3RpdmVzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVoRTs7Ozs7Ozs7OztHQVVHO0FBQ0gsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUF3QnpDLE1BQU0sT0FBTyxtQkFBbUI7O2dIQUFuQixtQkFBbUI7aUhBQW5CLG1CQUFtQixZQXBCNUIsa0JBQWtCO1FBQ2hCLDJCQUEyQjtRQUMzQiw2QkFBNkI7UUFDN0IsZ0JBQWdCO1FBQ2hCLHNCQUFzQjtRQUN0QixzQkFBc0I7UUFDdEIsb0JBQW9CO1FBQ3BCLG9CQUFvQixhQUd0QixrQkFBa0I7UUFDaEIsMkJBQTJCO1FBQzNCLDZCQUE2QjtRQUM3QixnQkFBZ0I7UUFDaEIsc0JBQXNCO1FBQ3RCLHNCQUFzQjtRQUN0QixvQkFBb0I7UUFDcEIsb0JBQW9CO2lIQUdiLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQXRCL0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3dCQUNoQiwyQkFBMkI7d0JBQzNCLDZCQUE2Qjt3QkFDN0IsZ0JBQWdCO3dCQUNoQixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIsb0JBQW9CO3dCQUNwQixvQkFBb0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7d0JBQ2hCLDJCQUEyQjt3QkFDM0IsNkJBQTZCO3dCQUM3QixnQkFBZ0I7d0JBQ2hCLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3dCQUN0QixvQkFBb0I7d0JBQ3BCLG9CQUFvQjtxQkFDdkI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWlja0tleXNEaXJlY3RpdmUgfSBmcm9tICcuL3F1aWNrLWtleXMuZGlyZWN0aXZlJztcbmltcG9ydCB7IERhdGVGb3JtRmllbGRDbGlja0RpcmVjdGl2ZSB9IGZyb20gJy4vZGF0ZS1mb3JtLWZpZWxkLWNsaWNrLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTdG9TZWxlY3RUZXh0T25Gb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4vc3RvLXNlbGVjdC10ZXh0LW9uLWZvY3VzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTdG9HcmlkQ29sdW1uRGlyZWN0aXZlLCBTdG9HcmlkRGlyZWN0aXZlLCBTdG9HcmlkU3BhY2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9zdG8tZ3JpZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTWVudU92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuL21lbnUtb3ZlcmxheS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29udGV4dE1lbnVEaXJlY3RpdmUgfSBmcm9tICcuL2NvbnRleHQtbWVudS5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIERpcmVjdGl2ZXMgaGF2ZSBiZWVuIG1hZGUgc3RhbmRhbG9uZSwgaW1wb3J0IHRoZW0gZGlyZWN0bHk6XG4gKiAgICAgUXVpY2tLZXlzRGlyZWN0aXZlXG4gKiAgICAgRGF0ZUZvcm1GaWVsZENsaWNrRGlyZWN0aXZlXG4gKiAgICAgU3RvU2VsZWN0VGV4dE9uRm9jdXNEaXJlY3RpdmVcbiAqICAgICBTdG9HcmlkRGlyZWN0aXZlXG4gKiAgICAgU3RvR3JpZENvbHVtbkRpcmVjdGl2ZVxuICogICAgIFN0b0dyaWRTcGFjZXJEaXJlY3RpdmVcbiAqICAgICBNZW51T3ZlcmxheURpcmVjdGl2ZVxuICogICAgIENvbnRleHRNZW51RGlyZWN0aXZlXG4gKi9cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBRdWlja0tleXNEaXJlY3RpdmVcbiAgICAsIERhdGVGb3JtRmllbGRDbGlja0RpcmVjdGl2ZVxuICAgICwgU3RvU2VsZWN0VGV4dE9uRm9jdXNEaXJlY3RpdmVcbiAgICAsIFN0b0dyaWREaXJlY3RpdmVcbiAgICAsIFN0b0dyaWRDb2x1bW5EaXJlY3RpdmVcbiAgICAsIFN0b0dyaWRTcGFjZXJEaXJlY3RpdmVcbiAgICAsIE1lbnVPdmVybGF5RGlyZWN0aXZlXG4gICAgLCBDb250ZXh0TWVudURpcmVjdGl2ZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgUXVpY2tLZXlzRGlyZWN0aXZlXG4gICAgLCBEYXRlRm9ybUZpZWxkQ2xpY2tEaXJlY3RpdmVcbiAgICAsIFN0b1NlbGVjdFRleHRPbkZvY3VzRGlyZWN0aXZlXG4gICAgLCBTdG9HcmlkRGlyZWN0aXZlXG4gICAgLCBTdG9HcmlkQ29sdW1uRGlyZWN0aXZlXG4gICAgLCBTdG9HcmlkU3BhY2VyRGlyZWN0aXZlXG4gICAgLCBNZW51T3ZlcmxheURpcmVjdGl2ZVxuICAgICwgQ29udGV4dE1lbnVEaXJlY3RpdmVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTdG9EaXJlY3RpdmVzTW9kdWxlIHtcbn1cbiJdfQ==
@@ -1,48 +0,0 @@
1
- import { Directive, ElementRef, Host, HostBinding } from '@angular/core';
2
- import { MatLegacyMenuTrigger as MatMenuTrigger } from '@angular/material/legacy-menu';
3
- import { fromEvent } from 'rxjs';
4
- import { switchMap, take } from 'rxjs/operators';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/material/legacy-menu";
7
- export class MenuOverlayDirective {
8
- constructor(trigger, el) {
9
- this.trigger = trigger;
10
- this.left = 0;
11
- this.top = 0;
12
- this.menu = trigger.menu;
13
- this.trigger.menuOpened.pipe(switchMap(() => fromEvent(document, 'click')
14
- .pipe(take(1)))).subscribe(() => {
15
- this.trigger.closeMenu();
16
- });
17
- this.setStyle(el.nativeElement);
18
- }
19
- updatePosition(event) {
20
- this.left = event.x;
21
- this.top = event.y;
22
- }
23
- setStyle(element) {
24
- element.style.overflow = 'hidden';
25
- element.style.position = 'fixed';
26
- element.style.height = '1px';
27
- element.style.width = '1px';
28
- }
29
- }
30
- MenuOverlayDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: MenuOverlayDirective, deps: [{ token: i1.MatLegacyMenuTrigger, host: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
31
- MenuOverlayDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.1", type: MenuOverlayDirective, isStandalone: true, selector: "[stoMenuOverlay]", host: { properties: { "style.left.px": "this.left", "style.top.px": "this.top" } }, exportAs: ["stoMenuOverlay"], ngImport: i0 });
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: MenuOverlayDirective, decorators: [{
33
- type: Directive,
34
- args: [{
35
- selector: '[stoMenuOverlay]',
36
- exportAs: 'stoMenuOverlay',
37
- standalone: true
38
- }]
39
- }], ctorParameters: function () { return [{ type: i1.MatLegacyMenuTrigger, decorators: [{
40
- type: Host
41
- }] }, { type: i0.ElementRef }]; }, propDecorators: { left: [{
42
- type: HostBinding,
43
- args: ['style.left.px']
44
- }], top: [{
45
- type: HostBinding,
46
- args: ['style.top.px']
47
- }] } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1vdmVybGF5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3N0by1kaXJlY3RpdmVzL21lbnUtb3ZlcmxheS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQXNDLG9CQUFvQixJQUFJLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBT2pELE1BQU0sT0FBTyxvQkFBb0I7SUFPL0IsWUFBNEIsT0FBdUIsRUFBRSxFQUFpQztRQUExRCxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUxuRCxTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRVQsUUFBRyxHQUFHLENBQUMsQ0FBQztRQUlOLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQW9CLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUMxQixTQUFTLENBQUMsR0FBRyxFQUFFLENBQ2IsU0FBUyxDQUFhLFFBQVEsRUFBRSxPQUFPLENBQUM7YUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNqQixDQUNGLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWlCO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVPLFFBQVEsQ0FBQyxPQUEwQjtRQUN6QyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDbEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUM3QixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQzs7aUhBOUJVLG9CQUFvQjtxR0FBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBTGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFRYyxJQUFJO3FFQUxqQixJQUFJO3NCQURILFdBQVc7dUJBQUMsZUFBZTtnQkFHNUIsR0FBRztzQkFERixXQUFXO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3QsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRMZWdhY3lNZW51UGFuZWwgYXMgTWF0TWVudVBhbmVsLCBNYXRMZWdhY3lNZW51VHJpZ2dlciBhcyBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1tZW51JztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc3RvTWVudU92ZXJsYXldJyxcbiAgZXhwb3J0QXM6ICdzdG9NZW51T3ZlcmxheScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWVudU92ZXJsYXlEaXJlY3RpdmUge1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmxlZnQucHgnKVxuICBsZWZ0ID0gMDtcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS50b3AucHgnKVxuICB0b3AgPSAwO1xuICBwcml2YXRlIHJlYWRvbmx5IG1lbnU6IE1hdE1lbnVQYW5lbDtcblxuICBjb25zdHJ1Y3RvcihASG9zdCgpIHByaXZhdGUgdHJpZ2dlcjogTWF0TWVudVRyaWdnZXIsIGVsOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50Pikge1xuICAgIHRoaXMubWVudSA9IHRyaWdnZXIubWVudSBhcyBNYXRNZW51UGFuZWw7XG4gICAgdGhpcy50cmlnZ2VyLm1lbnVPcGVuZWQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdjbGljaycpXG4gICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICksXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlTWVudSgpO1xuICAgIH0pO1xuICAgIHRoaXMuc2V0U3R5bGUoZWwubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUG9zaXRpb24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmxlZnQgPSBldmVudC54O1xuICAgIHRoaXMudG9wID0gZXZlbnQueTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U3R5bGUoZWxlbWVudDogSFRNTEJ1dHRvbkVsZW1lbnQpIHtcbiAgICBlbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG4gICAgZWxlbWVudC5zdHlsZS5oZWlnaHQgPSAnMXB4JztcbiAgICBlbGVtZW50LnN0eWxlLndpZHRoID0gJzFweCc7XG4gIH1cbn1cbiJdfQ==