@kusena/wui-single 18.0.1

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 (117) hide show
  1. package/README.md +24 -0
  2. package/esm2022/kusena-wui-single.mjs +5 -0
  3. package/esm2022/lib/components/app/app.component.mjs +63 -0
  4. package/esm2022/lib/components/app-bar/app-bar.component.mjs +16 -0
  5. package/esm2022/lib/components/avatar/avatar.component.mjs +35 -0
  6. package/esm2022/lib/components/dialog/dialog.component.mjs +54 -0
  7. package/esm2022/lib/components/drawer/drawer-item.component.mjs +41 -0
  8. package/esm2022/lib/components/drawer/drawer.component.mjs +82 -0
  9. package/esm2022/lib/components/drawer/drawer.directive.mjs +22 -0
  10. package/esm2022/lib/components/form-field/wui-form-field.component.mjs +63 -0
  11. package/esm2022/lib/components/form-field/wui-input.directive.mjs +68 -0
  12. package/esm2022/lib/components/icon/icon.component.mjs +22 -0
  13. package/esm2022/lib/components/list/list.component.mjs +31 -0
  14. package/esm2022/lib/components/loading/loading.component.mjs +60 -0
  15. package/esm2022/lib/components/loading-dialog/loading-dialog.component.mjs +24 -0
  16. package/esm2022/lib/components/menu/menu.component.mjs +134 -0
  17. package/esm2022/lib/components/modal/modal-host.component.mjs +21 -0
  18. package/esm2022/lib/components/modal/modal-overlay.mjs +63 -0
  19. package/esm2022/lib/components/modal/modal.component.mjs +38 -0
  20. package/esm2022/lib/components/nav/nav.component.mjs +85 -0
  21. package/esm2022/lib/components/page/page-host.component.mjs +21 -0
  22. package/esm2022/lib/components/page/page-overlay.service.mjs +63 -0
  23. package/esm2022/lib/components/page/page.component.mjs +23 -0
  24. package/esm2022/lib/components/snackbar/snackbar.component.mjs +65 -0
  25. package/esm2022/lib/components/toggle/toggle.component.mjs +79 -0
  26. package/esm2022/lib/directives/menu.directive.mjs +79 -0
  27. package/esm2022/lib/directives/nav.directive.mjs +78 -0
  28. package/esm2022/lib/directives/num-input.directive.mjs +105 -0
  29. package/esm2022/lib/directives/page-header.directive.mjs +48 -0
  30. package/esm2022/lib/directives/ripple.directive.mjs +87 -0
  31. package/esm2022/lib/directives/scroll-end.directive.mjs +27 -0
  32. package/esm2022/lib/directives/sortable.directive.mjs +99 -0
  33. package/esm2022/lib/index.mjs +39 -0
  34. package/esm2022/lib/services/message.service.mjs +22 -0
  35. package/esm2022/lib/services/modal.service.mjs +26 -0
  36. package/esm2022/lib/services/nav.service.mjs +55 -0
  37. package/esm2022/lib/services/page.service.mjs +38 -0
  38. package/esm2022/lib/services/router.service.mjs +42 -0
  39. package/esm2022/lib/services/wui.service.mjs +43 -0
  40. package/esm2022/lib/wui-single.component.mjs +19 -0
  41. package/esm2022/lib/wui.providers.mjs +20 -0
  42. package/esm2022/public-api.mjs +5 -0
  43. package/fesm2022/kusena-wui-single.mjs +1841 -0
  44. package/fesm2022/kusena-wui-single.mjs.map +1 -0
  45. package/index.d.ts +5 -0
  46. package/lib/components/app/app.component.d.ts +16 -0
  47. package/lib/components/app-bar/app-bar.component.d.ts +5 -0
  48. package/lib/components/avatar/avatar.component.d.ts +10 -0
  49. package/lib/components/dialog/dialog.component.d.ts +9 -0
  50. package/lib/components/drawer/drawer-item.component.d.ts +8 -0
  51. package/lib/components/drawer/drawer.component.d.ts +21 -0
  52. package/lib/components/drawer/drawer.directive.d.ts +7 -0
  53. package/lib/components/form-field/wui-form-field.component.d.ts +13 -0
  54. package/lib/components/form-field/wui-input.directive.d.ts +17 -0
  55. package/lib/components/icon/icon.component.d.ts +7 -0
  56. package/lib/components/list/list.component.d.ts +9 -0
  57. package/lib/components/loading/loading.component.d.ts +9 -0
  58. package/lib/components/loading-dialog/loading-dialog.component.d.ts +8 -0
  59. package/lib/components/menu/menu.component.d.ts +27 -0
  60. package/lib/components/modal/modal-host.component.d.ts +10 -0
  61. package/lib/components/modal/modal-overlay.d.ts +25 -0
  62. package/lib/components/modal/modal.component.d.ts +11 -0
  63. package/lib/components/nav/nav.component.d.ts +17 -0
  64. package/lib/components/page/page-host.component.d.ts +10 -0
  65. package/lib/components/page/page-overlay.service.d.ts +25 -0
  66. package/lib/components/page/page.component.d.ts +5 -0
  67. package/lib/components/snackbar/snackbar.component.d.ts +18 -0
  68. package/lib/components/toggle/toggle.component.d.ts +21 -0
  69. package/lib/directives/menu.directive.d.ts +17 -0
  70. package/lib/directives/nav.directive.d.ts +30 -0
  71. package/lib/directives/num-input.directive.d.ts +27 -0
  72. package/lib/directives/page-header.directive.d.ts +13 -0
  73. package/lib/directives/ripple.directive.d.ts +16 -0
  74. package/lib/directives/scroll-end.directive.d.ts +9 -0
  75. package/lib/directives/sortable.directive.d.ts +19 -0
  76. package/lib/index.d.ts +33 -0
  77. package/lib/services/message.service.d.ts +9 -0
  78. package/lib/services/modal.service.d.ts +13 -0
  79. package/lib/services/nav.service.d.ts +14 -0
  80. package/lib/services/page.service.d.ts +16 -0
  81. package/lib/services/router.service.d.ts +16 -0
  82. package/lib/services/wui.service.d.ts +16 -0
  83. package/lib/wui-single.component.d.ts +5 -0
  84. package/lib/wui.providers.d.ts +2 -0
  85. package/package.json +25 -0
  86. package/public-api.d.ts +1 -0
  87. package/scss/screen/appbar.scss +71 -0
  88. package/scss/screen/avatar.scss +17 -0
  89. package/scss/screen/backdrop.scss +15 -0
  90. package/scss/screen/box.scss +67 -0
  91. package/scss/screen/breadcrumb.scss +34 -0
  92. package/scss/screen/buttons.scss +177 -0
  93. package/scss/screen/core.scss +103 -0
  94. package/scss/screen/drawer.scss +273 -0
  95. package/scss/screen/formfields.scss +288 -0
  96. package/scss/screen/icon.scss +33 -0
  97. package/scss/screen/list.scss +90 -0
  98. package/scss/screen/loading.scss +169 -0
  99. package/scss/screen/menu.scss +120 -0
  100. package/scss/screen/modal.scss +238 -0
  101. package/scss/screen/normalize.scss +340 -0
  102. package/scss/screen/page.scss +115 -0
  103. package/scss/screen/pagination.scss +46 -0
  104. package/scss/screen/ripple.scss +18 -0
  105. package/scss/screen/scrollbar.scss +108 -0
  106. package/scss/screen/searchbox.scss +40 -0
  107. package/scss/screen/selection.scss +190 -0
  108. package/scss/screen/snackbar.scss +25 -0
  109. package/scss/screen/sortable.scss +10 -0
  110. package/scss/screen/table.scss +199 -0
  111. package/scss/screen/tabs.scss +71 -0
  112. package/scss/screen/toogle.scss +79 -0
  113. package/scss/screen/tooltip.scss +16 -0
  114. package/scss/screen/utils.scss +140 -0
  115. package/scss/variables/colors.scss +180 -0
  116. package/scss/variables/defaults.scss +0 -0
  117. package/scss/wui.scss +2 -0
@@ -0,0 +1,65 @@
1
+ import { Component, HostBinding } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../services/message.service";
6
+ export class SnackbarComponent {
7
+ messageService;
8
+ actionItems = [];
9
+ label = '';
10
+ show = false;
11
+ autocloseTimeoutId;
12
+ unsub = new Subject();
13
+ constructor(messageService) {
14
+ this.messageService = messageService;
15
+ }
16
+ open(label, autoclose = true, actionItems = []) {
17
+ this.label = label;
18
+ this.actionItems = actionItems;
19
+ clearTimeout(this.autocloseTimeoutId);
20
+ if (this.show) {
21
+ this.close();
22
+ setTimeout(() => this.show = true, 150);
23
+ }
24
+ else {
25
+ this.show = true;
26
+ }
27
+ if (autoclose) {
28
+ this.autocloseTimeoutId = setTimeout(() => this.close(), 3000);
29
+ }
30
+ }
31
+ close() {
32
+ this.show = false;
33
+ }
34
+ ngOnInit() {
35
+ this.messageService.get('wui:snackbar')
36
+ .pipe(takeUntil(this.unsub))
37
+ .subscribe(data => {
38
+ if (data.label === 'close') {
39
+ this.close();
40
+ }
41
+ else {
42
+ this.open(data.label, data.autoclose ?? true, data.actionItems);
43
+ }
44
+ });
45
+ }
46
+ ngOnDestroy() {
47
+ this.unsub.next();
48
+ this.unsub.complete();
49
+ clearTimeout(this.autocloseTimeoutId);
50
+ }
51
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SnackbarComponent, deps: [{ token: i1.MessageService }], target: i0.ɵɵFactoryTarget.Component });
52
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SnackbarComponent, isStandalone: true, selector: "wui-snackbar", host: { properties: { "class.show": "this.show" } }, ngImport: i0, template: `{{ label }}`, isInline: true });
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SnackbarComponent, decorators: [{
55
+ type: Component,
56
+ args: [{
57
+ selector: 'wui-snackbar',
58
+ standalone: true,
59
+ template: `{{ label }}`
60
+ }]
61
+ }], ctorParameters: () => [{ type: i1.MessageService }], propDecorators: { show: [{
62
+ type: HostBinding,
63
+ args: ['class.show']
64
+ }] } });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd3VpLXNpbmdsZS9zcmMvbGliL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFPM0MsTUFBTSxPQUFPLGlCQUFpQjtJQVNSO0lBUHBCLFdBQVcsR0FBVSxFQUFFLENBQUM7SUFDeEIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNnQixJQUFJLEdBQUcsS0FBSyxDQUFDO0lBRWhDLGtCQUFrQixDQUFNO0lBQ2YsS0FBSyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFN0MsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQUcsQ0FBQztJQUV0RCxJQUFJLENBQUMsS0FBYSxFQUFFLFNBQVMsR0FBRyxJQUFJLEVBQUUsY0FBcUIsRUFBRTtRQUMzRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUUvQixZQUFZLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFdEMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDMUMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNuQixDQUFDO1FBRUQsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO2FBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoQixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN4QyxDQUFDO3dHQWpEVSxpQkFBaUI7NEZBQWpCLGlCQUFpQiw2SEFGbEIsYUFBYTs7NEZBRVosaUJBQWlCO2tCQUw3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCO21GQUs0QixJQUFJO3NCQUE5QixXQUFXO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSG9zdEJpbmRpbmcsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3dWktc25hY2tiYXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgdGVtcGxhdGU6IGB7eyBsYWJlbCB9fWBcclxufSlcclxuZXhwb3J0IGNsYXNzIFNuYWNrYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBhY3Rpb25JdGVtczogYW55W10gPSBbXTtcclxuICBsYWJlbCA9ICcnO1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2hvdycpIHNob3cgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBhdXRvY2xvc2VUaW1lb3V0SWQ6IGFueTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHVuc3ViID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UpIHt9XHJcblxyXG4gIG9wZW4obGFiZWw6IHN0cmluZywgYXV0b2Nsb3NlID0gdHJ1ZSwgYWN0aW9uSXRlbXM6IGFueVtdID0gW10pIHtcclxuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcclxuICAgIHRoaXMuYWN0aW9uSXRlbXMgPSBhY3Rpb25JdGVtcztcclxuXHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy5hdXRvY2xvc2VUaW1lb3V0SWQpO1xyXG5cclxuICAgIGlmICh0aGlzLnNob3cpIHtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2hvdyA9IHRydWUsIDE1MCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3cgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChhdXRvY2xvc2UpIHtcclxuICAgICAgdGhpcy5hdXRvY2xvc2VUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xvc2UoKSwgMzAwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmdldCgnd3VpOnNuYWNrYmFyJylcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWIpKVxyXG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhLmxhYmVsID09PSAnY2xvc2UnKSB7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMub3BlbihkYXRhLmxhYmVsLCBkYXRhLmF1dG9jbG9zZSA/PyB0cnVlLCBkYXRhLmFjdGlvbkl0ZW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVuc3ViLm5leHQoKTtcclxuICAgIHRoaXMudW5zdWIuY29tcGxldGUoKTtcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLmF1dG9jbG9zZVRpbWVvdXRJZCk7XHJcbiAgfVxyXG59Il19
@@ -0,0 +1,79 @@
1
+ import { Component, effect, model, output, input, signal } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ export class ToggleComponent {
5
+ // Input signals
6
+ tabindex = input(0);
7
+ // Output signals
8
+ change = output();
9
+ // State signals
10
+ checked = model(false);
11
+ disabled = signal(false);
12
+ isTouched = signal(false);
13
+ // ControlValueAccessor callbacks
14
+ onChange = () => { };
15
+ onTouched = () => { };
16
+ constructor() {
17
+ // Auto-update form control value
18
+ effect(() => {
19
+ this.onChange(this.checked());
20
+ });
21
+ }
22
+ onKeyDown(e) {
23
+ if (e.key === ' ') {
24
+ e.preventDefault();
25
+ this.toggle();
26
+ }
27
+ }
28
+ toggle() {
29
+ if (!this.disabled()) {
30
+ this.markAsTouched();
31
+ this.checked.update(value => !value);
32
+ this.change.emit(this.checked());
33
+ }
34
+ }
35
+ // ControlValueAccessor implementation
36
+ writeValue(value) {
37
+ this.checked.set(!!value);
38
+ }
39
+ registerOnChange(fn) {
40
+ this.onChange = fn;
41
+ }
42
+ registerOnTouched(fn) {
43
+ this.onTouched = fn;
44
+ }
45
+ setDisabledState(isDisabled) {
46
+ this.disabled.set(isDisabled);
47
+ }
48
+ markAsTouched() {
49
+ if (!this.isTouched()) {
50
+ this.onTouched();
51
+ this.isTouched.set(true);
52
+ }
53
+ }
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
55
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: ToggleComponent, isStandalone: true, selector: "wui-toggle", inputs: { tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change", checked: "checkedChange" }, host: { listeners: { "click": "toggle()", "keydown": "onKeyDown($event)" }, properties: { "attr.tabindex": "tabindex()", "class.wui-toggle-checked": "checked()", "attr.disabled": "disabled() ? \"\" : null" } }, providers: [
56
+ {
57
+ provide: NG_VALUE_ACCESSOR,
58
+ multi: true,
59
+ useExisting: ToggleComponent
60
+ }
61
+ ], ngImport: i0, template: "<div class=\"wui-toggle-switch-outer\">\n <div class=\"wui-toggle-switch-track\">\n <div class=\"wui-toggle-switch\"></div>\n </div>\n</div>\n<div><ng-content class=\"wui-toggle-label\"></ng-content></div>", styles: [""] });
62
+ }
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToggleComponent, decorators: [{
64
+ type: Component,
65
+ args: [{ selector: 'wui-toggle', standalone: true, providers: [
66
+ {
67
+ provide: NG_VALUE_ACCESSOR,
68
+ multi: true,
69
+ useExisting: ToggleComponent
70
+ }
71
+ ], host: {
72
+ '[attr.tabindex]': 'tabindex()',
73
+ '[class.wui-toggle-checked]': 'checked()',
74
+ '[attr.disabled]': 'disabled() ? "" : null',
75
+ '(click)': 'toggle()',
76
+ '(keydown)': 'onKeyDown($event)'
77
+ }, template: "<div class=\"wui-toggle-switch-outer\">\n <div class=\"wui-toggle-switch-track\">\n <div class=\"wui-toggle-switch\"></div>\n </div>\n</div>\n<div><ng-content class=\"wui-toggle-label\"></ng-content></div>" }]
78
+ }], ctorParameters: () => [] });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3d1aS1zaW5nbGUvc3JjL2xpYi9jb21wb25lbnRzL3RvZ2dsZS90b2dnbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd3VpLXNpbmdsZS9zcmMvbGliL2NvbXBvbmVudHMvdG9nZ2xlL3RvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQXNCekUsTUFBTSxPQUFPLGVBQWU7SUFDMUIsZ0JBQWdCO0lBQ2hCLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFcEIsaUJBQWlCO0lBQ2pCLE1BQU0sR0FBRyxNQUFNLEVBQVcsQ0FBQztJQUUzQixnQkFBZ0I7SUFDaEIsT0FBTyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzFCLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFbEMsaUNBQWlDO0lBQ3pCLFFBQVEsR0FBNkIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQzlDLFNBQVMsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFFekM7UUFDRSxpQ0FBaUM7UUFDakMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLENBQWdCO1FBQ3hCLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNsQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLFVBQVUsQ0FBQyxLQUFjO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBNEI7UUFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7d0dBNURVLGVBQWU7NEZBQWYsZUFBZSxnbEJBZmY7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixLQUFLLEVBQUUsSUFBSTtnQkFDWCxXQUFXLEVBQUUsZUFBZTthQUM3QjtTQUNGLDBCQ2RILG9OQUs2RDs7NEZEa0JoRCxlQUFlO2tCQXBCM0IsU0FBUzsrQkFDRSxZQUFZLGNBQ1gsSUFBSSxhQUdKO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsaUJBQWlCO3lCQUM3QjtxQkFDRixRQUNLO3dCQUNKLGlCQUFpQixFQUFFLFlBQVk7d0JBQy9CLDRCQUE0QixFQUFFLFdBQVc7d0JBQ3pDLGlCQUFpQixFQUFFLHdCQUF3Qjt3QkFDM0MsU0FBUyxFQUFFLFVBQVU7d0JBQ3JCLFdBQVcsRUFBRSxtQkFBbUI7cUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBlZmZlY3QsIG1vZGVsLCBvdXRwdXQsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd3VpLXRvZ2dsZScsXG4gIHN0YW5kYWxvbmU6dHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RvZ2dsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi90b2dnbGUuY29tcG9uZW50LnNjc3MnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IFRvZ2dsZUNvbXBvbmVudFxuICAgIH1cbiAgXSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci50YWJpbmRleF0nOiAndGFiaW5kZXgoKScsXG4gICAgJ1tjbGFzcy53dWktdG9nZ2xlLWNoZWNrZWRdJzogJ2NoZWNrZWQoKScsXG4gICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCgpID8gXCJcIiA6IG51bGwnLFxuICAgICcoY2xpY2spJzogJ3RvZ2dsZSgpJyxcbiAgICAnKGtleWRvd24pJzogJ29uS2V5RG93bigkZXZlbnQpJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIFRvZ2dsZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLy8gSW5wdXQgc2lnbmFsc1xuICB0YWJpbmRleCA9IGlucHV0KDApO1xuICBcbiAgLy8gT3V0cHV0IHNpZ25hbHNcbiAgY2hhbmdlID0gb3V0cHV0PGJvb2xlYW4+KCk7XG4gIFxuICAvLyBTdGF0ZSBzaWduYWxzXG4gIGNoZWNrZWQgPSBtb2RlbDxib29sZWFuPihmYWxzZSk7XG4gIGRpc2FibGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBpc1RvdWNoZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGNhbGxiYWNrc1xuICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBBdXRvLXVwZGF0ZSBmb3JtIGNvbnRyb2wgdmFsdWVcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmNoZWNrZWQoKSk7XG4gICAgfSk7XG4gIH1cblxuICBvbktleURvd24oZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChlLmtleSA9PT0gJyAnKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB0aGlzLmNoZWNrZWQudXBkYXRlKHZhbHVlID0+ICF2YWx1ZSk7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMuY2hlY2tlZCgpKTtcbiAgICB9XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRhdGlvblxuICB3cml0ZVZhbHVlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja2VkLnNldCghIXZhbHVlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQuc2V0KGlzRGlzYWJsZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrQXNUb3VjaGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1RvdWNoZWQoKSkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuaXNUb3VjaGVkLnNldCh0cnVlKTtcbiAgICB9XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwid3VpLXRvZ2dsZS1zd2l0Y2gtb3V0ZXJcIj5cbiAgPGRpdiBjbGFzcz1cInd1aS10b2dnbGUtc3dpdGNoLXRyYWNrXCI+XG4gICAgPGRpdiBjbGFzcz1cInd1aS10b2dnbGUtc3dpdGNoXCI+PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2PjxuZy1jb250ZW50IGNsYXNzPVwid3VpLXRvZ2dsZS1sYWJlbFwiPjwvbmctY29udGVudD48L2Rpdj4iXX0=
@@ -0,0 +1,79 @@
1
+ import { CdkMenu, CdkMenuItem, CdkMenuTrigger, MENU_TRIGGER, PARENT_OR_NEW_MENU_STACK_PROVIDER } from "@angular/cdk/menu";
2
+ import { Directive, HostListener, Input } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ export class ContextMenuDirective extends CdkMenu {
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextMenuDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
6
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ContextMenuDirective, isStandalone: true, selector: "[wuiContextMenu]", usesInheritance: true, ngImport: i0 });
7
+ }
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextMenuDirective, decorators: [{
9
+ type: Directive,
10
+ args: [{
11
+ selector: '[wuiContextMenu]',
12
+ standalone: true
13
+ }]
14
+ }] });
15
+ export class ContextMenuItemDirective extends CdkMenuItem {
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextMenuItemDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
17
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ContextMenuItemDirective, isStandalone: true, selector: "[wuiContextMenuItem]", usesInheritance: true, ngImport: i0 });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextMenuItemDirective, decorators: [{
20
+ type: Directive,
21
+ args: [{
22
+ selector: '[wuiContextMenuItem]',
23
+ standalone: true
24
+ }]
25
+ }] });
26
+ export class ContextMenuTriggerDirective extends CdkMenuTrigger {
27
+ menuPosBehavior = 'default'; // or 'edge'
28
+ handleDocumentEvent(event) {
29
+ if (this.isOpen())
30
+ this.close();
31
+ }
32
+ open() {
33
+ if (this.menuPosBehavior === 'default') {
34
+ this.menuPosition = [
35
+ { overlayY: 'top', overlayX: 'start', originY: 'top', originX: 'start' },
36
+ { overlayY: 'top', overlayX: 'end', originY: 'top', originX: 'end' },
37
+ { overlayY: 'bottom', overlayX: 'start', originY: 'bottom', originX: 'start' },
38
+ { overlayY: 'bottom', overlayX: 'end', originY: 'bottom', originX: 'start' }
39
+ ];
40
+ }
41
+ super.open();
42
+ }
43
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextMenuTriggerDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
44
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ContextMenuTriggerDirective, isStandalone: true, selector: "[wuiContextMenuTrigger]", inputs: { menuTemplateRef: ["wuiContextMenuTrigger", "menuTemplateRef"], menuPosition: ["wuiContextMenuPosition", "menuPosition"], menuData: ["wuiContextMenuTriggerData", "menuData"], menuPosBehavior: ["wuiContextMenuPosBehavior", "menuPosBehavior"] }, host: { listeners: { "document:touchmove": "handleDocumentEvent($event)", "document:mousewheel": "handleDocumentEvent($event)" } }, providers: [
45
+ { provide: MENU_TRIGGER, useExisting: ContextMenuTriggerDirective },
46
+ PARENT_OR_NEW_MENU_STACK_PROVIDER,
47
+ ], exportAs: ["wuiContextMenuTrigger"], usesInheritance: true, ngImport: i0 });
48
+ }
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextMenuTriggerDirective, decorators: [{
50
+ type: Directive,
51
+ args: [{
52
+ selector: '[wuiContextMenuTrigger]',
53
+ exportAs: 'wuiContextMenuTrigger',
54
+ standalone: true,
55
+ inputs: [
56
+ { name: 'menuTemplateRef', alias: 'wuiContextMenuTrigger' },
57
+ { name: 'menuPosition', alias: 'wuiContextMenuPosition' },
58
+ { name: 'menuData', alias: 'wuiContextMenuTriggerData' }
59
+ ],
60
+ providers: [
61
+ { provide: MENU_TRIGGER, useExisting: ContextMenuTriggerDirective },
62
+ PARENT_OR_NEW_MENU_STACK_PROVIDER,
63
+ ],
64
+ host: {
65
+ '(document:touchmove)': 'handleDocumentEvent($event)',
66
+ '(document:mousewheel)': 'handleDocumentEvent($event)'
67
+ }
68
+ }]
69
+ }], propDecorators: { menuPosBehavior: [{
70
+ type: Input,
71
+ args: ['wuiContextMenuPosBehavior']
72
+ }], handleDocumentEvent: [{
73
+ type: HostListener,
74
+ args: ['document:touchmove', ['$event']]
75
+ }, {
76
+ type: HostListener,
77
+ args: ['document:mousewheel', ['$event']]
78
+ }] } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93dWktc2luZ2xlL3NyYy9saWIvZGlyZWN0aXZlcy9tZW51LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0vRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsT0FBTzt3R0FBcEMsb0JBQW9COzRGQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBSmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOztBQU9ELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxXQUFXO3dHQUE1Qyx3QkFBd0I7NEZBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7O0FBcUJELE1BQU0sT0FBTywyQkFBNEIsU0FBUSxjQUFjO0lBQ3pCLGVBQWUsR0FBRyxTQUFTLENBQUMsQ0FBQyxZQUFZO0lBSTdFLG1CQUFtQixDQUFDLEtBQVk7UUFDOUIsSUFBRyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFUSxJQUFJO1FBQ1gsSUFBRyxJQUFJLENBQUMsZUFBZSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUc7Z0JBQ2xCLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBQztnQkFDdEUsRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDO2dCQUNsRSxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUM7Z0JBQzVFLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBQzthQUMzRSxDQUFDO1FBQ0osQ0FBQztRQUNELEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNmLENBQUM7d0dBbkJVLDJCQUEyQjs0RkFBM0IsMkJBQTJCLHVjQVQzQjtZQUNULEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUM7WUFDakUsaUNBQWlDO1NBQ2xDOzs0RkFNVSwyQkFBMkI7a0JBbEJ2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixNQUFNLEVBQUU7d0JBQ04sRUFBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFDO3dCQUN6RCxFQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFDO3dCQUN2RCxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLDJCQUEyQixFQUFDO3FCQUN2RDtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsNkJBQTZCLEVBQUM7d0JBQ2pFLGlDQUFpQztxQkFDbEM7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLHNCQUFzQixFQUFFLDZCQUE2Qjt3QkFDckQsdUJBQXVCLEVBQUUsNkJBQTZCO3FCQUN2RDtpQkFDRjs4QkFFcUMsZUFBZTtzQkFBbEQsS0FBSzt1QkFBQywyQkFBMkI7Z0JBSWxDLG1CQUFtQjtzQkFGbEIsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzdDLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtNZW51LCBDZGtNZW51SXRlbSwgQ2RrTWVudVRyaWdnZXIsIE1FTlVfVFJJR0dFUiwgUEFSRU5UX09SX05FV19NRU5VX1NUQUNLX1BST1ZJREVSIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9tZW51XCI7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbd3VpQ29udGV4dE1lbnVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0TWVudURpcmVjdGl2ZSBleHRlbmRzIENka01lbnUgeyB9XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t3dWlDb250ZXh0TWVudUl0ZW1dJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0TWVudUl0ZW1EaXJlY3RpdmUgZXh0ZW5kcyBDZGtNZW51SXRlbSB7IH1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3d1aUNvbnRleHRNZW51VHJpZ2dlcl0nLFxuICBleHBvcnRBczogJ3d1aUNvbnRleHRNZW51VHJpZ2dlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGlucHV0czogW1xuICAgIHtuYW1lOiAnbWVudVRlbXBsYXRlUmVmJywgYWxpYXM6ICd3dWlDb250ZXh0TWVudVRyaWdnZXInfSxcbiAgICB7bmFtZTogJ21lbnVQb3NpdGlvbicsIGFsaWFzOiAnd3VpQ29udGV4dE1lbnVQb3NpdGlvbid9LFxuICAgIHtuYW1lOiAnbWVudURhdGEnLCBhbGlhczogJ3d1aUNvbnRleHRNZW51VHJpZ2dlckRhdGEnfVxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7cHJvdmlkZTogTUVOVV9UUklHR0VSLCB1c2VFeGlzdGluZzogQ29udGV4dE1lbnVUcmlnZ2VyRGlyZWN0aXZlfSxcbiAgICBQQVJFTlRfT1JfTkVXX01FTlVfU1RBQ0tfUFJPVklERVIsXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnKGRvY3VtZW50OnRvdWNobW92ZSknOiAnaGFuZGxlRG9jdW1lbnRFdmVudCgkZXZlbnQpJyxcbiAgICAnKGRvY3VtZW50Om1vdXNld2hlZWwpJzogJ2hhbmRsZURvY3VtZW50RXZlbnQoJGV2ZW50KSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0TWVudVRyaWdnZXJEaXJlY3RpdmUgZXh0ZW5kcyBDZGtNZW51VHJpZ2dlciB7XG4gIEBJbnB1dCgnd3VpQ29udGV4dE1lbnVQb3NCZWhhdmlvcicpIG1lbnVQb3NCZWhhdmlvciA9ICdkZWZhdWx0JzsgLy8gb3IgJ2VkZ2UnXG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6dG91Y2htb3ZlJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V3aGVlbCcsIFsnJGV2ZW50J10pIFxuICBoYW5kbGVEb2N1bWVudEV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIGlmKHRoaXMuaXNPcGVuKCkpIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG9wZW4oKSB7XG4gICAgaWYodGhpcy5tZW51UG9zQmVoYXZpb3IgPT09ICdkZWZhdWx0Jykge1xuICAgICAgdGhpcy5tZW51UG9zaXRpb24gPSBbXG4gICAgICAgIHtvdmVybGF5WTogJ3RvcCcsIG92ZXJsYXlYOiAnc3RhcnQnLCBvcmlnaW5ZOiAndG9wJywgb3JpZ2luWDogJ3N0YXJ0J30sXG4gICAgICAgIHtvdmVybGF5WTogJ3RvcCcsIG92ZXJsYXlYOiAnZW5kJywgb3JpZ2luWTogJ3RvcCcsIG9yaWdpblg6ICdlbmQnfSxcbiAgICAgICAge292ZXJsYXlZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdzdGFydCcsIG9yaWdpblk6ICdib3R0b20nLCBvcmlnaW5YOiAnc3RhcnQnfSxcbiAgICAgICAge292ZXJsYXlZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdlbmQnLCBvcmlnaW5ZOiAnYm90dG9tJywgb3JpZ2luWDogJ3N0YXJ0J31cbiAgICAgIF07XG4gICAgfVxuICAgIHN1cGVyLm9wZW4oKTtcbiAgfVxufSJdfQ==
@@ -0,0 +1,78 @@
1
+ import { Directive, input, output, inject } from '@angular/core';
2
+ import { NavService } from '../services/nav.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../services/nav.service";
5
+ export class NavRootDirective {
6
+ navService = inject(NavService);
7
+ name = input.required({ alias: 'wuiNavRoot' });
8
+ params = input({}, { alias: 'wuiNavParams' });
9
+ navigated = output();
10
+ navigateToRoot() {
11
+ this.navService.setRoot(this.name());
12
+ this.navigated.emit();
13
+ }
14
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
15
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: NavRootDirective, isStandalone: true, selector: "[wuiNavRoot]", inputs: { name: { classPropertyName: "name", publicName: "wuiNavRoot", isSignal: true, isRequired: true, transformFunction: null }, params: { classPropertyName: "params", publicName: "wuiNavParams", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { navigated: "navigated" }, host: { listeners: { "click": "navigateToRoot()" } }, ngImport: i0 });
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavRootDirective, decorators: [{
18
+ type: Directive,
19
+ args: [{
20
+ selector: '[wuiNavRoot]',
21
+ standalone: true,
22
+ host: {
23
+ '(click)': 'navigateToRoot()'
24
+ }
25
+ }]
26
+ }] });
27
+ export class NavPushDirective {
28
+ navService;
29
+ name = input.required({ alias: 'wuiNavPush' });
30
+ params = input({}, { alias: 'wuiNavParams' });
31
+ navigated = output();
32
+ constructor(navService) {
33
+ this.navService = navService;
34
+ }
35
+ navigatePush() {
36
+ this.navService.push(this.name());
37
+ this.navigated.emit();
38
+ }
39
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavPushDirective, deps: [{ token: i1.NavService }], target: i0.ɵɵFactoryTarget.Directive });
40
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: NavPushDirective, isStandalone: true, selector: "[wuiNavPush]", inputs: { name: { classPropertyName: "name", publicName: "wuiNavPush", isSignal: true, isRequired: true, transformFunction: null }, params: { classPropertyName: "params", publicName: "wuiNavParams", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { navigated: "navigated" }, host: { listeners: { "click": "navigatePush()" } }, ngImport: i0 });
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavPushDirective, decorators: [{
43
+ type: Directive,
44
+ args: [{
45
+ selector: '[wuiNavPush]',
46
+ standalone: true,
47
+ host: {
48
+ '(click)': 'navigatePush()'
49
+ }
50
+ }]
51
+ }], ctorParameters: () => [{ type: i1.NavService }] });
52
+ export class NavPopDirective {
53
+ navService;
54
+ // Optional pop params
55
+ params = input(null, { alias: 'wuiNavParams' });
56
+ // Navigation event output
57
+ navigated = output();
58
+ constructor(navService) {
59
+ this.navService = navService;
60
+ }
61
+ navigatePop() {
62
+ this.navService.pop(this.params());
63
+ this.navigated.emit();
64
+ }
65
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavPopDirective, deps: [{ token: i1.NavService }], target: i0.ɵɵFactoryTarget.Directive });
66
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: NavPopDirective, isStandalone: true, selector: "[wuiNavPop]", inputs: { params: { classPropertyName: "params", publicName: "wuiNavParams", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { navigated: "navigated" }, host: { listeners: { "click": "navigatePop()" } }, ngImport: i0 });
67
+ }
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavPopDirective, decorators: [{
69
+ type: Directive,
70
+ args: [{
71
+ selector: '[wuiNavPop]',
72
+ standalone: true,
73
+ host: {
74
+ '(click)': 'navigatePop()'
75
+ }
76
+ }]
77
+ }], ctorParameters: () => [{ type: i1.NavService }] });
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3d1aS1zaW5nbGUvc3JjL2xpYi9kaXJlY3RpdmVzL25hdi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVMsTUFBTSxFQUFnQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFTckQsTUFBTSxPQUFPLGdCQUFnQjtJQUVuQixVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXhDLElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7SUFFdkQsTUFBTSxHQUFHLEtBQUssQ0FBMEIsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFFdkUsU0FBUyxHQUFHLE1BQU0sRUFBUSxDQUFDO0lBRTNCLGNBQWM7UUFDWixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7d0dBYlUsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBUDVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUU7d0JBQ0osU0FBUyxFQUFFLGtCQUFrQjtxQkFDOUI7aUJBQ0Y7O0FBd0JELE1BQU0sT0FBTyxnQkFBZ0I7SUFPUDtJQU5wQixJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBRXZELE1BQU0sR0FBRyxLQUFLLENBQTBCLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBRXZFLFNBQVMsR0FBRyxNQUFNLEVBQVEsQ0FBQztJQUUzQixZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUcsQ0FBQztJQUU5QyxZQUFZO1FBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO3dHQVpVLGdCQUFnQjs0RkFBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQVA1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNKLFNBQVMsRUFBRSxnQkFBZ0I7cUJBQzVCO2lCQUNGOztBQXVCRCxNQUFNLE9BQU8sZUFBZTtJQU9OO0lBTnBCLHNCQUFzQjtJQUN0QixNQUFNLEdBQUcsS0FBSyxDQUFVLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBRXpELDBCQUEwQjtJQUMxQixTQUFTLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFFM0IsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUFHLENBQUM7SUFFOUMsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQzt3R0FaVSxlQUFlOzRGQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBUDNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUU7d0JBQ0osU0FBUyxFQUFFLGVBQWU7cUJBQzNCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbnB1dCwgbW9kZWwsIG91dHB1dCwgRXZlbnRFbWl0dGVyLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmF2U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL25hdi5zZXJ2aWNlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3d1aU5hdlJvb3RdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGhvc3Q6IHtcclxuICAgICcoY2xpY2spJzogJ25hdmlnYXRlVG9Sb290KCknXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmF2Um9vdERpcmVjdGl2ZSB7XHJcblxyXG4gIHByaXZhdGUgbmF2U2VydmljZSA9IGluamVjdChOYXZTZXJ2aWNlKTtcclxuXHJcbiAgbmFtZSA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oeyBhbGlhczogJ3d1aU5hdlJvb3QnIH0pO1xyXG4gIFxyXG4gIHBhcmFtcyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih7fSwgeyBhbGlhczogJ3d1aU5hdlBhcmFtcycgfSk7XHJcblxyXG4gIG5hdmlnYXRlZCA9IG91dHB1dDx2b2lkPigpO1xyXG5cclxuICBuYXZpZ2F0ZVRvUm9vdCgpIHtcclxuICAgIHRoaXMubmF2U2VydmljZS5zZXRSb290KHRoaXMubmFtZSgpKTtcclxuICAgIHRoaXMubmF2aWdhdGVkLmVtaXQoKTtcclxuICB9XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3d1aU5hdlB1c2hdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGhvc3Q6IHtcclxuICAgICcoY2xpY2spJzogJ25hdmlnYXRlUHVzaCgpJ1xyXG4gIH1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdlB1c2hEaXJlY3RpdmUge1xyXG4gIG5hbWUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KHsgYWxpYXM6ICd3dWlOYXZQdXNoJyB9KTtcclxuICBcclxuICBwYXJhbXMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe30sIHsgYWxpYXM6ICd3dWlOYXZQYXJhbXMnIH0pO1xyXG5cclxuICBuYXZpZ2F0ZWQgPSBvdXRwdXQ8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuYXZTZXJ2aWNlOiBOYXZTZXJ2aWNlKSB7fVxyXG5cclxuICBuYXZpZ2F0ZVB1c2goKSB7XHJcbiAgICB0aGlzLm5hdlNlcnZpY2UucHVzaCh0aGlzLm5hbWUoKSk7XHJcbiAgICB0aGlzLm5hdmlnYXRlZC5lbWl0KCk7XHJcbiAgfVxyXG59XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1t3dWlOYXZQb3BdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGhvc3Q6IHtcclxuICAgICcoY2xpY2spJzogJ25hdmlnYXRlUG9wKCknXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmF2UG9wRGlyZWN0aXZlIHtcclxuICAvLyBPcHRpb25hbCBwb3AgcGFyYW1zXHJcbiAgcGFyYW1zID0gaW5wdXQ8dW5rbm93bj4obnVsbCwgeyBhbGlhczogJ3d1aU5hdlBhcmFtcycgfSk7XHJcblxyXG4gIC8vIE5hdmlnYXRpb24gZXZlbnQgb3V0cHV0XHJcbiAgbmF2aWdhdGVkID0gb3V0cHV0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmF2U2VydmljZTogTmF2U2VydmljZSkge31cclxuXHJcbiAgbmF2aWdhdGVQb3AoKSB7XHJcbiAgICB0aGlzLm5hdlNlcnZpY2UucG9wKHRoaXMucGFyYW1zKCkpO1xyXG4gICAgdGhpcy5uYXZpZ2F0ZWQuZW1pdCgpO1xyXG4gIH1cclxufSJdfQ==
@@ -0,0 +1,105 @@
1
+ import { DecimalPipe } from '@angular/common';
2
+ import { Directive, ElementRef, computed, effect, inject, input, model } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ export class NumInputDirective {
6
+ decimalPipe = inject(DecimalPipe);
7
+ elementRef = inject((ElementRef));
8
+ // Input signals
9
+ format = input('1.0-2');
10
+ value = model(null);
11
+ // Computed signals
12
+ isNegative = computed(() => this.value()?.includes('-') ?? false);
13
+ isDecimal = computed(() => this.value()?.includes('.') ?? false);
14
+ numberPart = computed(() => {
15
+ const regex = this.isNegative() ? /-(.*)/ : /(.*)/;
16
+ const match = this.value()?.match(regex);
17
+ return this.parseNumber(match?.[1] ?? null);
18
+ });
19
+ decimalPart = computed(() => {
20
+ if (!this.isDecimal())
21
+ return null;
22
+ const match = this.value()?.match(/\.(.*)/);
23
+ return match?.[1] ?? null;
24
+ });
25
+ numericValue = computed(() => {
26
+ const numStr = [this.numberPart(), this.decimalPart()].filter(Boolean).join('.');
27
+ const num = parseFloat(numStr);
28
+ return this.isNegative() ? -num : num;
29
+ });
30
+ formattedValue = computed(() => {
31
+ const prefix = this.isNegative() ? '-' : '';
32
+ const number = this.numberPart() ?
33
+ this.decimalPipe.transform(this.numberPart(), this.format()) : '';
34
+ const decimal = this.isDecimal() ? `.${this.decimalPart()}` : '';
35
+ return `${prefix}${number}${decimal}`;
36
+ });
37
+ // Filter functions (unchanged from previous version)
38
+ allowNumbers(event) { }
39
+ allowFunctional(event) { }
40
+ allowDecimals(event) { }
41
+ allowNegative(event) { }
42
+ constructor() {
43
+ effect(() => {
44
+ this.elementRef.nativeElement.value = this.formattedValue();
45
+ });
46
+ }
47
+ handleKeyDown(event) {
48
+ const allowed = [
49
+ this.allowNumbers(event),
50
+ this.allowFunctional(event),
51
+ this.allowDecimals(event),
52
+ this.allowNegative(event)
53
+ ].some(Boolean);
54
+ if (!allowed) {
55
+ event.preventDefault();
56
+ return;
57
+ }
58
+ setTimeout(() => {
59
+ this.value.set(this.elementRef.nativeElement.value);
60
+ });
61
+ }
62
+ handleFocusOut() {
63
+ this.value.set(this.elementRef.nativeElement.value);
64
+ }
65
+ parseNumber(str) {
66
+ if (!str)
67
+ return null;
68
+ const num = parseFloat(str.replace(/[^\d.]/g, ''));
69
+ return isNaN(num) ? null : num;
70
+ }
71
+ // ControlValueAccessor implementation
72
+ writeValue(obj) {
73
+ this.value.set(obj?.toString() ?? null);
74
+ }
75
+ registerOnChange(fn) {
76
+ effect(() => {
77
+ fn(this.numericValue());
78
+ });
79
+ }
80
+ registerOnTouched(fn) { }
81
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NumInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
82
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: NumInputDirective, isStandalone: true, selector: "[wuiNumInput]", inputs: { format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { listeners: { "keydown": "handleKeyDown($event)", "focusout": "handleFocusOut($event)" }, properties: { "attr.inputmode": "\"decimal\"" } }, providers: [{
83
+ provide: NG_VALUE_ACCESSOR,
84
+ useExisting: NumInputDirective,
85
+ multi: true
86
+ }], ngImport: i0 });
87
+ }
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NumInputDirective, decorators: [{
89
+ type: Directive,
90
+ args: [{
91
+ selector: '[wuiNumInput]',
92
+ standalone: true,
93
+ providers: [{
94
+ provide: NG_VALUE_ACCESSOR,
95
+ useExisting: NumInputDirective,
96
+ multi: true
97
+ }],
98
+ host: {
99
+ '(keydown)': 'handleKeyDown($event)',
100
+ '(focusout)': 'handleFocusOut($event)',
101
+ '[attr.inputmode]': '"decimal"'
102
+ }
103
+ }]
104
+ }], ctorParameters: () => [] });
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3d1aS1zaW5nbGUvc3JjL2xpYi9kaXJlY3RpdmVzL251bS1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQWdCekUsTUFBTSxPQUFPLGlCQUFpQjtJQUNwQixXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUE0QixDQUFBLENBQUMsQ0FBQztJQUUxRCxnQkFBZ0I7SUFDaEIsTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QixLQUFLLEdBQUcsS0FBSyxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUVuQyxtQkFBbUI7SUFDbkIsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ2xFLFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztJQUVqRSxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUN6QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ25ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQyxDQUFDO0lBRUgsV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0lBRUgsWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDM0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUM3QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pFLE9BQU8sR0FBRyxNQUFNLEdBQUcsTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBRUgscURBQXFEO0lBQzdDLFlBQVksQ0FBQyxLQUFvQixJQUFjLENBQUM7SUFDaEQsZUFBZSxDQUFDLEtBQW9CLElBQWMsQ0FBQztJQUNuRCxhQUFhLENBQUMsS0FBb0IsSUFBYyxDQUFDO0lBQ2pELGFBQWEsQ0FBQyxLQUFvQixJQUFjLENBQUM7SUFFekQ7UUFDRSxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBb0I7UUFDaEMsTUFBTSxPQUFPLEdBQUc7WUFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztZQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztTQUMxQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFFRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTyxXQUFXLENBQUMsR0FBa0I7UUFDcEMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN0QixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDakMsQ0FBQztJQUVELHNDQUFzQztJQUN0QyxVQUFVLENBQUMsR0FBa0I7UUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFrQztRQUNqRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQWMsSUFBUyxDQUFDO3dHQXpGL0IsaUJBQWlCOzRGQUFqQixpQkFBaUIsa2ZBWGpCLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLGlCQUFpQjtnQkFDOUIsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDOzs0RkFPUyxpQkFBaUI7a0JBZDdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUUsQ0FBQzs0QkFDVixPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLG1CQUFtQjs0QkFDOUIsS0FBSyxFQUFFLElBQUk7eUJBQ1osQ0FBQztvQkFDRixJQUFJLEVBQUU7d0JBQ0osV0FBVyxFQUFFLHVCQUF1Qjt3QkFDcEMsWUFBWSxFQUFFLHdCQUF3Qjt3QkFDdEMsa0JBQWtCLEVBQUUsV0FBVztxQkFDaEM7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNpbWFsUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t3dWlOdW1JbnB1dF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IE51bUlucHV0RGlyZWN0aXZlLFxuICAgIG11bHRpOiB0cnVlXG4gIH1dLFxuICBob3N0OiB7XG4gICAgJyhrZXlkb3duKSc6ICdoYW5kbGVLZXlEb3duKCRldmVudCknLFxuICAgICcoZm9jdXNvdXQpJzogJ2hhbmRsZUZvY3VzT3V0KCRldmVudCknLFxuICAgICdbYXR0ci5pbnB1dG1vZGVdJzogJ1wiZGVjaW1hbFwiJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE51bUlucHV0RGlyZWN0aXZlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBwcml2YXRlIGRlY2ltYWxQaXBlID0gaW5qZWN0KERlY2ltYWxQaXBlKTtcbiAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4pO1xuXG4gIC8vIElucHV0IHNpZ25hbHNcbiAgZm9ybWF0ID0gaW5wdXQoJzEuMC0yJyk7XG4gIHZhbHVlID0gbW9kZWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gQ29tcHV0ZWQgc2lnbmFsc1xuICBpc05lZ2F0aXZlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52YWx1ZSgpPy5pbmNsdWRlcygnLScpID8/IGZhbHNlKTtcbiAgaXNEZWNpbWFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52YWx1ZSgpPy5pbmNsdWRlcygnLicpID8/IGZhbHNlKTtcblxuICBudW1iZXJQYXJ0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gdGhpcy5pc05lZ2F0aXZlKCkgPyAvLSguKikvIDogLyguKikvO1xuICAgIGNvbnN0IG1hdGNoID0gdGhpcy52YWx1ZSgpPy5tYXRjaChyZWdleCk7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VOdW1iZXIobWF0Y2g/LlsxXSA/PyBudWxsKTtcbiAgfSk7XG5cbiAgZGVjaW1hbFBhcnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmlzRGVjaW1hbCgpKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBtYXRjaCA9IHRoaXMudmFsdWUoKT8ubWF0Y2goL1xcLiguKikvKTtcbiAgICByZXR1cm4gbWF0Y2g/LlsxXSA/PyBudWxsO1xuICB9KTtcblxuICBudW1lcmljVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbnVtU3RyID0gW3RoaXMubnVtYmVyUGFydCgpLCB0aGlzLmRlY2ltYWxQYXJ0KCldLmZpbHRlcihCb29sZWFuKS5qb2luKCcuJyk7XG4gICAgY29uc3QgbnVtID0gcGFyc2VGbG9hdChudW1TdHIpO1xuICAgIHJldHVybiB0aGlzLmlzTmVnYXRpdmUoKSA/IC1udW0gOiBudW07XG4gIH0pO1xuXG4gIGZvcm1hdHRlZFZhbHVlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHByZWZpeCA9IHRoaXMuaXNOZWdhdGl2ZSgpID8gJy0nIDogJyc7XG4gICAgY29uc3QgbnVtYmVyID0gdGhpcy5udW1iZXJQYXJ0KCkgPyBcbiAgICAgIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKHRoaXMubnVtYmVyUGFydCgpLCB0aGlzLmZvcm1hdCgpKSA6ICcnO1xuICAgIGNvbnN0IGRlY2ltYWwgPSB0aGlzLmlzRGVjaW1hbCgpID8gYC4ke3RoaXMuZGVjaW1hbFBhcnQoKX1gIDogJyc7XG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke251bWJlcn0ke2RlY2ltYWx9YDtcbiAgfSk7XG5cbiAgLy8gRmlsdGVyIGZ1bmN0aW9ucyAodW5jaGFuZ2VkIGZyb20gcHJldmlvdXMgdmVyc2lvbilcbiAgcHJpdmF0ZSBhbGxvd051bWJlcnMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHsgLyogLi4uICovIH1cbiAgcHJpdmF0ZSBhbGxvd0Z1bmN0aW9uYWwoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHsgLyogLi4uICovIH1cbiAgcHJpdmF0ZSBhbGxvd0RlY2ltYWxzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7IC8qIC4uLiAqLyB9XG4gIHByaXZhdGUgYWxsb3dOZWdhdGl2ZShldmVudDogS2V5Ym9hcmRFdmVudCkgeyAvKiAuLi4gKi8gfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZm9ybWF0dGVkVmFsdWUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBhbGxvd2VkID0gW1xuICAgICAgdGhpcy5hbGxvd051bWJlcnMoZXZlbnQpLFxuICAgICAgdGhpcy5hbGxvd0Z1bmN0aW9uYWwoZXZlbnQpLFxuICAgICAgdGhpcy5hbGxvd0RlY2ltYWxzKGV2ZW50KSxcbiAgICAgIHRoaXMuYWxsb3dOZWdhdGl2ZShldmVudClcbiAgICBdLnNvbWUoQm9vbGVhbik7XG5cbiAgICBpZiAoIWFsbG93ZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnZhbHVlLnNldCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVGb2N1c091dCgpIHtcbiAgICB0aGlzLnZhbHVlLnNldCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlTnVtYmVyKHN0cjogc3RyaW5nIHwgbnVsbCkge1xuICAgIGlmICghc3RyKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBudW0gPSBwYXJzZUZsb2F0KHN0ci5yZXBsYWNlKC9bXlxcZC5dL2csICcnKSk7XG4gICAgcmV0dXJuIGlzTmFOKG51bSkgPyBudWxsIDogbnVtO1xuICB9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW1wbGVtZW50YXRpb25cbiAgd3JpdGVWYWx1ZShvYmo6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlLnNldChvYmo/LnRvU3RyaW5nKCkgPz8gbnVsbCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IG51bWJlciB8IG51bGwpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgZm4odGhpcy5udW1lcmljVmFsdWUoKSk7XG4gICAgfSk7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge31cbn0iXX0=
@@ -0,0 +1,48 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class PageHeaderDirective {
4
+ el;
5
+ contentEl;
6
+ wuiTitle;
7
+ constructor(el) {
8
+ this.el = el;
9
+ }
10
+ getClosest(elem, selector) {
11
+ for (; elem && elem !== document; elem = elem.parentNode) {
12
+ if (elem.matches(selector))
13
+ return elem;
14
+ }
15
+ return null;
16
+ }
17
+ ;
18
+ onScroll(e) {
19
+ if (e.target.scrollTop > Math.round((e.target.offsetHeight / 2) / 2)) {
20
+ this.wuiTitle.classList.add('show');
21
+ }
22
+ else {
23
+ this.wuiTitle.classList.remove('show');
24
+ }
25
+ }
26
+ ngOnInit() {
27
+ this.contentEl = this.getClosest(this.el.nativeElement, 'div.content');
28
+ this.el.nativeElement.style.height = Math.round(this.contentEl.offsetHeight / 2) + "px";
29
+ if (this.wuiTitle !== undefined) {
30
+ this.contentEl.addEventListener('scroll', (e) => {
31
+ this.onScroll(e);
32
+ });
33
+ }
34
+ }
35
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageHeaderDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
36
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: PageHeaderDirective, isStandalone: true, selector: "[wuiPageHeader]", inputs: { wuiTitle: "wuiTitle" }, ngImport: i0 });
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageHeaderDirective, decorators: [{
39
+ type: Directive,
40
+ args: [{
41
+ selector: '[wuiPageHeader]',
42
+ standalone: true
43
+ }]
44
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { wuiTitle: [{
45
+ type: Input,
46
+ args: ['wuiTitle']
47
+ }] } });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1oZWFkZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd3VpLXNpbmdsZS9zcmMvbGliL2RpcmVjdGl2ZXMvcGFnZS1oZWFkZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLE1BQU0sZUFBZSxDQUFDOztBQU03RCxNQUFNLE9BQU8sbUJBQW1CO0lBTXBCO0lBSlYsU0FBUyxDQUFNO0lBQ0ksUUFBUSxDQUFNO0lBRWpDLFlBQ1UsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7SUFDcEIsQ0FBQztJQUVMLFVBQVUsQ0FBQyxJQUFTLEVBQUUsUUFBYTtRQUNqQyxPQUFRLElBQUksSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFHLENBQUM7WUFDM0QsSUFBSyxJQUFJLENBQUMsT0FBTyxDQUFFLFFBQVEsQ0FBRTtnQkFBRyxPQUFPLElBQUksQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQUEsQ0FBQztJQUVGLFFBQVEsQ0FBQyxDQUFNO1FBQ2IsSUFBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsQ0FBQzthQUFJLENBQUM7WUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDeEYsSUFBRyxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBTSxFQUFFLEVBQUU7Z0JBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzt3R0FoQ1UsbUJBQW1COzRGQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOytFQUlvQixRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t3dWlQYWdlSGVhZGVyXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUhlYWRlckRpcmVjdGl2ZSB7XG5cbiAgY29udGVudEVsOiBhbnk7XG4gIEBJbnB1dCgnd3VpVGl0bGUnKSB3dWlUaXRsZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWZcbiAgKSB7IH1cblxuICBnZXRDbG9zZXN0KGVsZW06IGFueSwgc2VsZWN0b3I6IGFueSkge1xuICAgIGZvciAoIDsgZWxlbSAmJiBlbGVtICE9PSBkb2N1bWVudDsgZWxlbSA9IGVsZW0ucGFyZW50Tm9kZSApIHtcbiAgICAgIGlmICggZWxlbS5tYXRjaGVzKCBzZWxlY3RvciApICkgcmV0dXJuIGVsZW07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIG9uU2Nyb2xsKGU6IGFueSkge1xuICAgIGlmKGUudGFyZ2V0LnNjcm9sbFRvcCA+IE1hdGgucm91bmQoKGUudGFyZ2V0Lm9mZnNldEhlaWdodCAvIDIpIC8gMikpIHtcbiAgICAgIHRoaXMud3VpVGl0bGUuY2xhc3NMaXN0LmFkZCgnc2hvdycpO1xuICAgIH1lbHNle1xuICAgICAgdGhpcy53dWlUaXRsZS5jbGFzc0xpc3QucmVtb3ZlKCdzaG93Jyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jb250ZW50RWwgPSB0aGlzLmdldENsb3Nlc3QodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZGl2LmNvbnRlbnQnKTtcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gTWF0aC5yb3VuZCh0aGlzLmNvbnRlbnRFbC5vZmZzZXRIZWlnaHQgLyAyKSArIFwicHhcIjtcbiAgICBpZih0aGlzLnd1aVRpdGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY29udGVudEVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIChlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5vblNjcm9sbChlKTtcbiAgICAgIH0pOyBcbiAgICB9XG4gIH1cblxufSJdfQ==
@@ -0,0 +1,87 @@
1
+ import { Directive, HostListener, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class RippleDirective {
4
+ el;
5
+ rippleEl;
6
+ interval;
7
+ theme = 'light';
8
+ constructor(el) {
9
+ this.el = el;
10
+ }
11
+ onMouseDown(e) {
12
+ this.start(e.clientX, e.clientY);
13
+ }
14
+ onTouchStart(e) {
15
+ this.start(e.touches[0].clientX, e.touches[0].clientY);
16
+ }
17
+ start(x, y) {
18
+ if (!this.rippleEl) {
19
+ this.rippleEl = document.createElement('div');
20
+ this.rippleEl.classList.add('wuiRipple__obj');
21
+ this.rippleEl.classList.add('wuiRipple__' + this.theme);
22
+ this.el.nativeElement.appendChild(this.rippleEl);
23
+ }
24
+ this.rippleEl.style.cssText = "";
25
+ if (this.interval) {
26
+ clearInterval(this.interval);
27
+ }
28
+ var elRect = this.el.nativeElement.getBoundingClientRect();
29
+ let top = (y - elRect.y);
30
+ let left = (x - elRect.x);
31
+ this.rippleEl.style.top = top + 'px';
32
+ this.rippleEl.style.left = left + 'px';
33
+ let matrix = (this.el.nativeElement.offsetWidth > this.el.nativeElement.offsetHeight ? 'width' : 'height');
34
+ let size = 0;
35
+ let durMatrix = 0;
36
+ if (matrix == 'width') {
37
+ size = ((this.el.nativeElement.offsetWidth - left) > left ? ((this.el.nativeElement.offsetWidth - left) * 2) :
38
+ (left * 2));
39
+ durMatrix = document.body.clientWidth;
40
+ }
41
+ else {
42
+ size = ((this.el.nativeElement.offsetHeight - top) > top ? ((this.el.nativeElement.offsetHeight - top) * 2) :
43
+ (top * 2));
44
+ durMatrix = document.body.clientHeight;
45
+ }
46
+ this.animate(size, 200 + (200 * (size / durMatrix)));
47
+ }
48
+ animate(size, duration) {
49
+ let pos = 0;
50
+ this.interval = setInterval(() => {
51
+ let vsize = this.rippleEl.offsetHeight + (size / (duration / 10));
52
+ this.rippleEl.style.width = vsize + 'px';
53
+ this.rippleEl.style.height = vsize + 'px';
54
+ this.rippleEl.style.opacity = ((duration - pos) / duration);
55
+ if (pos < duration) {
56
+ pos += 10;
57
+ }
58
+ else {
59
+ this.rippleEl.style.cssText = "";
60
+ clearInterval(this.interval);
61
+ }
62
+ }, 10);
63
+ }
64
+ ngOnInit() {
65
+ this.el.nativeElement.style.position = 'relative';
66
+ this.el.nativeElement.style.overflow = 'hidden';
67
+ }
68
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RippleDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
69
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: RippleDirective, isStandalone: true, selector: "[wuiRipple]", inputs: { theme: ["rippleTheme", "theme"] }, host: { listeners: { "mousedown": "onMouseDown($event)", "touchstart": "onTouchStart($event)" } }, ngImport: i0 });
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RippleDirective, decorators: [{
72
+ type: Directive,
73
+ args: [{
74
+ selector: '[wuiRipple]',
75
+ standalone: true
76
+ }]
77
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { theme: [{
78
+ type: Input,
79
+ args: ['rippleTheme']
80
+ }], onMouseDown: [{
81
+ type: HostListener,
82
+ args: ['mousedown', ['$event']]
83
+ }], onTouchStart: [{
84
+ type: HostListener,
85
+ args: ['touchstart', ['$event']]
86
+ }] } });
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlwcGxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3d1aS1zaW5nbGUvc3JjL2xpYi9kaXJlY3RpdmVzL3JpcHBsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNbkYsTUFBTSxPQUFPLGVBQWU7SUFPaEI7SUFMVixRQUFRLENBQU07SUFDZCxRQUFRLENBQU07SUFDUSxLQUFLLEdBQUcsT0FBTyxDQUFDO0lBRXRDLFlBQ1UsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7SUFDcEIsQ0FBQztJQUVrQyxXQUFXLENBQUMsQ0FBTTtRQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFdUMsWUFBWSxDQUFDLENBQU07UUFDekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxLQUFLLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDeEIsSUFBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFD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QUssR0FBRyxJQUFJLENBQUM7WUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDNUQsSUFBRyxHQUFHLEdBQUcsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDWixDQUFDO2lCQUFJLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDakMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQixDQUFDO1FBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUNsRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUNsRCxDQUFDO3dHQXBFVSxlQUFlOzRGQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBSjNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjsrRUFLdUIsS0FBSztzQkFBMUIsS0FBSzt1QkFBQyxhQUFhO2dCQU1tQixXQUFXO3NCQUFqRCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJRyxZQUFZO3NCQUFuRCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25Jbml0LCBIb3N0TGlzdGVuZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1t3dWlSaXBwbGVdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSaXBwbGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICByaXBwbGVFbDogYW55O1xyXG4gIGludGVydmFsOiBhbnk7XHJcbiAgQElucHV0KCdyaXBwbGVUaGVtZScpIHRoZW1lID0gJ2xpZ2h0JztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmXHJcbiAgKSB7IH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSkgb25Nb3VzZURvd24oZTogYW55KSB7XHJcbiAgICB0aGlzLnN0YXJ0KGUuY2xpZW50WCwgZS5jbGllbnRZKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBbJyRldmVudCddKSBvblRvdWNoU3RhcnQoZTogYW55KSB7XHJcbiAgICB0aGlzLnN0YXJ0KGUudG91Y2hlc1swXS5jbGllbnRYLCBlLnRvdWNoZXNbMF0uY2xpZW50WSk7XHJcbiAgfVxyXG5cclxuICBzdGFydCh4OiBudW1iZXIsIHk6IG51bWJlcikge1xyXG4gICAgaWYoIXRoaXMucmlwcGxlRWwpIHtcclxuICAgICAgdGhpcy5yaXBwbGVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICB0aGlzLnJpcHBsZUVsLmNsYXNzTGlzdC5hZGQoJ3d1aVJpcHBsZV9fb2JqJyk7XHJcbiAgICAgIHRoaXMucmlwcGxlRWwuY2xhc3NMaXN0LmFkZCgnd3VpUmlwcGxlX18nICsgdGhpcy50aGVtZSk7XHJcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnJpcHBsZUVsKTtcclxuICAgIH1cclxuICAgIHRoaXMucmlwcGxlRWwuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XHJcbiAgICBpZih0aGlzLmludGVydmFsKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XHJcbiAgICB9XHJcbiAgICB2YXIgZWxSZWN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgbGV0IHRvcCA9ICh5IC0gZWxSZWN0LnkpO1xyXG4gICAgbGV0IGxlZnQgPSAoeCAtIGVsUmVjdC54KTtcclxuICAgIHRoaXMucmlwcGxlRWwuc3R5bGUudG9wID0gdG9wICsgJ3B4JztcclxuICAgIHRoaXMucmlwcGxlRWwuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnO1xyXG4gICAgbGV0IG1hdHJpeCA9ICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ID8gJ3dpZHRoJyA6ICdoZWlnaHQnKTtcclxuICAgIGxldCBzaXplID0gMDtcclxuICAgIGxldCBkdXJNYXRyaXggPSAwO1xyXG4gICAgaWYobWF0cml4ID09ICd3aWR0aCcpIHtcclxuICAgICAgc2l6ZSA9ICgodGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC0gbGVmdCkgPiBsZWZ0ID8gKCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSBsZWZ0KSAqIDIpIDogXHJcbiAgICAgICAgKGxlZnQgKiAyKSk7XHJcbiAgICAgIGR1ck1hdHJpeCA9IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzaXplID0gKCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gdG9wKSA+IHRvcCA/ICgodGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtIHRvcCkgKiAyKSA6IFxyXG4gICAgICAgICh0b3AgKiAyKSk7XHJcbiAgICAgIGR1ck1hdHJpeCA9IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgdGhpcy5hbmltYXRlKHNpemUsIDIwMCArICgyMDAgKiAoc2l6ZSAvIGR1ck1hdHJpeCkpKTtcclxuICB9XHJcblxyXG4gIGFuaW1hdGUoc2l6ZTogYW55LCBkdXJhdGlvbjogYW55KSB7XHJcbiAgICBsZXQgcG9zID0gMDtcclxuICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGxldCB2c2l6ZSA9IHRoaXMucmlwcGxlRWwub2Zmc2V0SGVpZ2h0ICsgKHNpemUgLyAoZHVyYXRpb24gLyAxMCkpO1xyXG4gICAgICB0aGlzLnJpcHBsZUVsLnN0eWxlLndpZHRoID0gdnNpemUgKyAncHgnO1xyXG4gICAgICB0aGlzLnJpcHBsZUVsLnN0eWxlLmhlaWdodCA9IHZzaXplICsgJ3B4JztcclxuICAgICAgdGhpcy5yaXBwbGVFbC5zdHlsZS5vcGFjaXR5ID0gKChkdXJhdGlvbiAtIHBvcykgLyBkdXJhdGlvbik7XHJcbiAgICAgIGlmKHBvcyA8IGR1cmF0aW9uKSB7XHJcbiAgICAgICAgcG9zICs9IDEwO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLnJpcHBsZUVsLnN0eWxlLmNzc1RleHQgPSBcIlwiO1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDEwKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcclxuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xyXG4gIH1cclxuXHJcbn1cclxuIl19