@up_si_vale/sivale-componentes-angular 1.0.0 → 1.0.2

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 (94) hide show
  1. package/esm2022/lib/atoms/button/button.component.mjs +55 -0
  2. package/esm2022/lib/atoms/checkbox/checkbox.component.mjs +174 -0
  3. package/esm2022/lib/atoms/date-picker/date-picker.component.mjs +835 -0
  4. package/esm2022/lib/atoms/input/input.component.mjs +218 -0
  5. package/esm2022/lib/atoms/loader/loader.component.mjs +81 -0
  6. package/esm2022/lib/atoms/radio/radio.component.mjs +142 -0
  7. package/esm2022/lib/atoms/textarea/textarea.component.mjs +126 -0
  8. package/esm2022/lib/directives/asset-source.directive.mjs +68 -0
  9. package/esm2022/lib/directives/icon-source.directive.mjs +65 -0
  10. package/esm2022/lib/directives/no-leading-space.directive.mjs +24 -0
  11. package/esm2022/lib/directives/only-letters.directive.mjs +25 -0
  12. package/esm2022/lib/directives/only-number.directive.mjs +21 -0
  13. package/esm2022/lib/directives/rfc.directive.mjs +67 -0
  14. package/esm2022/lib/directives/tooltip.directive.mjs +199 -0
  15. package/esm2022/lib/models/snackbar.models.mjs +2 -0
  16. package/esm2022/lib/molecules/alert/alert.component.mjs +79 -0
  17. package/esm2022/lib/molecules/copy-input/copy-input.component.mjs +46 -0
  18. package/esm2022/lib/molecules/multiselect/multiselect.component.mjs +466 -0
  19. package/esm2022/lib/molecules/option/option.component.mjs +55 -0
  20. package/esm2022/lib/molecules/phone-input/phone-input.component.mjs +64 -0
  21. package/esm2022/lib/molecules/select/select.component.mjs +498 -0
  22. package/esm2022/lib/molecules/snackbar/snackbar.component.mjs +581 -0
  23. package/esm2022/lib/organisms/sidebar/sidebar-icon.component.mjs +91 -0
  24. package/esm2022/lib/organisms/sidebar/sidebar.component.mjs +115 -0
  25. package/esm2022/lib/services/snackbar.service.mjs +96 -0
  26. package/esm2022/lib/tokens/asset-base-url.token.mjs +10 -0
  27. package/esm2022/public-api.mjs +37 -0
  28. package/esm2022/up_si_vale-sivale-componentes-angular.mjs +5 -0
  29. package/fesm2022/up_si_vale-sivale-componentes-angular.mjs +4116 -0
  30. package/fesm2022/up_si_vale-sivale-componentes-angular.mjs.map +1 -0
  31. package/index.d.ts +5 -0
  32. package/lib/atoms/button/button.component.d.ts +20 -0
  33. package/lib/atoms/checkbox/checkbox.component.d.ts +31 -0
  34. package/lib/atoms/date-picker/date-picker.component.d.ts +134 -0
  35. package/lib/atoms/input/input.component.d.ts +35 -0
  36. package/lib/atoms/loader/loader.component.d.ts +10 -0
  37. package/lib/atoms/radio/radio.component.d.ts +25 -0
  38. package/lib/atoms/textarea/textarea.component.d.ts +27 -0
  39. package/lib/directives/asset-source.directive.d.ts +19 -0
  40. package/lib/directives/icon-source.directive.d.ts +18 -0
  41. package/lib/directives/no-leading-space.directive.d.ts +6 -0
  42. package/lib/directives/only-letters.directive.d.ts +7 -0
  43. package/lib/directives/only-number.directive.d.ts +6 -0
  44. package/lib/directives/rfc.directive.d.ts +12 -0
  45. package/lib/directives/tooltip.directive.d.ts +27 -0
  46. package/{src/lib/models/snackbar.models.ts → lib/models/snackbar.models.d.ts} +8 -10
  47. package/lib/molecules/alert/alert.component.d.ts +29 -0
  48. package/lib/molecules/copy-input/copy-input.component.d.ts +14 -0
  49. package/lib/molecules/multiselect/multiselect.component.d.ts +74 -0
  50. package/lib/molecules/option/option.component.d.ts +19 -0
  51. package/lib/molecules/phone-input/phone-input.component.d.ts +12 -0
  52. package/lib/molecules/select/select.component.d.ts +88 -0
  53. package/lib/molecules/snackbar/snackbar.component.d.ts +17 -0
  54. package/lib/organisms/sidebar/sidebar-icon.component.d.ts +8 -0
  55. package/lib/organisms/sidebar/sidebar.component.d.ts +47 -0
  56. package/lib/services/snackbar.service.d.ts +40 -0
  57. package/{src/lib/tokens/asset-base-url.token.ts → lib/tokens/asset-base-url.token.d.ts} +1 -5
  58. package/package.json +39 -28
  59. package/{src/public-api.ts → public-api.d.ts} +3 -15
  60. package/ng-package.json +0 -9
  61. package/src/lib/atoms/button/button.component.html +0 -21
  62. package/src/lib/atoms/button/button.component.scss +0 -242
  63. package/src/lib/atoms/button/button.component.ts +0 -43
  64. package/src/lib/atoms/checkbox/checkbox.component.scss +0 -131
  65. package/src/lib/atoms/checkbox/checkbox.component.ts +0 -130
  66. package/src/lib/atoms/date-picker/date-picker.component.html +0 -295
  67. package/src/lib/atoms/date-picker/date-picker.component.scss +0 -1002
  68. package/src/lib/atoms/date-picker/date-picker.component.ts +0 -942
  69. package/src/lib/atoms/input/input.component.ts +0 -239
  70. package/src/lib/atoms/loader/loader.component.scss +0 -144
  71. package/src/lib/atoms/loader/loader.component.ts +0 -44
  72. package/src/lib/atoms/radio/radio.component.scss +0 -115
  73. package/src/lib/atoms/radio/radio.component.ts +0 -103
  74. package/src/lib/atoms/textarea/textarea.component.ts +0 -155
  75. package/src/lib/directives/asset-source.directive.ts +0 -64
  76. package/src/lib/directives/icon-source.directive.ts +0 -74
  77. package/src/lib/directives/no-leading-space.directive.ts +0 -18
  78. package/src/lib/directives/only-letters.directive.ts +0 -21
  79. package/src/lib/directives/only-number.directive.ts +0 -15
  80. package/src/lib/directives/rfc.directive.ts +0 -60
  81. package/src/lib/directives/tooltip.directive.ts +0 -211
  82. package/src/lib/molecules/copy-input/copy-input.component.html +0 -29
  83. package/src/lib/molecules/copy-input/copy-input.component.scss +0 -101
  84. package/src/lib/molecules/copy-input/copy-input.component.ts +0 -41
  85. package/src/lib/molecules/multiselect/multiselect.component.scss +0 -298
  86. package/src/lib/molecules/multiselect/multiselect.component.ts +0 -487
  87. package/src/lib/molecules/option/option.component.ts +0 -45
  88. package/src/lib/molecules/phone-input/phone-input.component.scss +0 -78
  89. package/src/lib/molecules/phone-input/phone-input.component.ts +0 -43
  90. package/src/lib/molecules/select/select.component.ts +0 -482
  91. package/src/lib/molecules/snackbar/snackbar.component.scss +0 -201
  92. package/src/lib/molecules/snackbar/snackbar.component.ts +0 -321
  93. package/src/lib/services/snackbar.service.ts +0 -103
  94. package/tsconfig.json +0 -31
@@ -0,0 +1,68 @@
1
+ import { Directive, Input, Inject, Optional } from '@angular/core';
2
+ import { ASSET_BASE_URL } from '../tokens/asset-base-url.token';
3
+ import * as i0 from "@angular/core";
4
+ export class AssetSourceDirective {
5
+ el;
6
+ assetBaseUrl;
7
+ assetSource = 'mf';
8
+ assetPath;
9
+ originalSrc = null;
10
+ constructor(el, assetBaseUrl) {
11
+ this.el = el;
12
+ this.assetBaseUrl = assetBaseUrl;
13
+ }
14
+ ngOnInit() {
15
+ this.captureOriginalSrc();
16
+ }
17
+ ngAfterViewInit() {
18
+ this.updateSrc();
19
+ }
20
+ ngOnChanges() {
21
+ this.updateSrc();
22
+ }
23
+ captureOriginalSrc() {
24
+ if (this.el.nativeElement.tagName === 'IMG') {
25
+ this.originalSrc = this.el.nativeElement.getAttribute('src');
26
+ }
27
+ }
28
+ updateSrc() {
29
+ const assetPath = this.assetPath || this.originalSrc;
30
+ if (!assetPath) {
31
+ return;
32
+ }
33
+ const baseUrl = this.getBaseUrl();
34
+ const fullPath = `${baseUrl}/${assetPath}`;
35
+ if (this.el.nativeElement.tagName === 'IMG') {
36
+ this.el.nativeElement.src = fullPath;
37
+ }
38
+ }
39
+ getBaseUrl() {
40
+ switch (this.assetSource) {
41
+ case 'mf':
42
+ return this.assetBaseUrl ?? '';
43
+ case 'main':
44
+ return '/assets';
45
+ default:
46
+ return this.assetBaseUrl ?? '';
47
+ }
48
+ }
49
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AssetSourceDirective, deps: [{ token: i0.ElementRef }, { token: ASSET_BASE_URL, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
50
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: AssetSourceDirective, isStandalone: true, selector: "[assetSource]", inputs: { assetSource: "assetSource", assetPath: "assetPath" }, usesOnChanges: true, ngImport: i0 });
51
+ }
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AssetSourceDirective, decorators: [{
53
+ type: Directive,
54
+ args: [{
55
+ selector: '[assetSource]',
56
+ standalone: true
57
+ }]
58
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
59
+ type: Optional
60
+ }, {
61
+ type: Inject,
62
+ args: [ASSET_BASE_URL]
63
+ }] }], propDecorators: { assetSource: [{
64
+ type: Input
65
+ }], assetPath: [{
66
+ type: Input
67
+ }] } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtc291cmNlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZGlyZWN0aXZlcy9hc3NldC1zb3VyY2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFnRCxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFRaEUsTUFBTSxPQUFPLG9CQUFvQjtJQU9yQjtJQUNvQztJQVByQyxXQUFXLEdBQWdCLElBQUksQ0FBQztJQUNoQyxTQUFTLENBQVU7SUFFcEIsV0FBVyxHQUFrQixJQUFJLENBQUM7SUFFMUMsWUFDVSxFQUFnQyxFQUNJLFlBQTJCO1FBRC9ELE9BQUUsR0FBRixFQUFFLENBQThCO1FBQ0ksaUJBQVksR0FBWixZQUFZLENBQWU7SUFDdEUsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO0lBRU8sU0FBUztRQUNmLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUVyRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxNQUFNLFFBQVEsR0FBRyxHQUFHLE9BQU8sSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUUzQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRU8sVUFBVTtRQUNoQixRQUFRLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN6QixLQUFLLElBQUk7Z0JBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUNqQyxLQUFLLE1BQU07Z0JBQ1QsT0FBTyxTQUFTLENBQUM7WUFDbkI7Z0JBQ0UsT0FBTyxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQzt3R0FyRFUsb0JBQW9CLDRDQVFULGNBQWM7NEZBUnpCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFKaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFTSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGNBQWM7eUNBUDNCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBU1NFVF9CQVNFX1VSTCB9IGZyb20gJy4uL3Rva2Vucy9hc3NldC1iYXNlLXVybC50b2tlbic7XG5cbmV4cG9ydCB0eXBlIEFzc2V0U291cmNlID0gJ21mJyB8ICdtYWluJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Fzc2V0U291cmNlXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQXNzZXRTb3VyY2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGFzc2V0U291cmNlOiBBc3NldFNvdXJjZSA9ICdtZic7XG4gIEBJbnB1dCgpIGFzc2V0UGF0aD86IHN0cmluZztcblxuICBwcml2YXRlIG9yaWdpbmFsU3JjOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmPEhUTUxJbWFnZUVsZW1lbnQ+LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVNTRVRfQkFTRV9VUkwpIHByaXZhdGUgYXNzZXRCYXNlVXJsOiBzdHJpbmcgfCBudWxsXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNhcHR1cmVPcmlnaW5hbFNyYygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMudXBkYXRlU3JjKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLnVwZGF0ZVNyYygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYXB0dXJlT3JpZ2luYWxTcmMoKSB7XG4gICAgaWYgKHRoaXMuZWwubmF0aXZlRWxlbWVudC50YWdOYW1lID09PSAnSU1HJykge1xuICAgICAgdGhpcy5vcmlnaW5hbFNyYyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3NyYycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3JjKCkge1xuICAgIGNvbnN0IGFzc2V0UGF0aCA9IHRoaXMuYXNzZXRQYXRoIHx8IHRoaXMub3JpZ2luYWxTcmM7XG5cbiAgICBpZiAoIWFzc2V0UGF0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmdldEJhc2VVcmwoKTtcbiAgICBjb25zdCBmdWxsUGF0aCA9IGAke2Jhc2VVcmx9LyR7YXNzZXRQYXRofWA7XG5cbiAgICBpZiAodGhpcy5lbC5uYXRpdmVFbGVtZW50LnRhZ05hbWUgPT09ICdJTUcnKSB7XG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3JjID0gZnVsbFBhdGg7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRCYXNlVXJsKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLmFzc2V0U291cmNlKSB7XG4gICAgICBjYXNlICdtZic6XG4gICAgICAgIHJldHVybiB0aGlzLmFzc2V0QmFzZVVybCA/PyAnJztcbiAgICAgIGNhc2UgJ21haW4nOlxuICAgICAgICByZXR1cm4gJy9hc3NldHMnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNzZXRCYXNlVXJsID8/ICcnO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,65 @@
1
+ import { Directive, Input, Inject, Optional } from '@angular/core';
2
+ import { ASSET_BASE_URL } from '../tokens/asset-base-url.token';
3
+ import * as i0 from "@angular/core";
4
+ export class IconSourceDirective {
5
+ el;
6
+ assetBaseUrl;
7
+ iconName;
8
+ assetSource = 'mf';
9
+ constructor(el, assetBaseUrl) {
10
+ this.el = el;
11
+ this.assetBaseUrl = assetBaseUrl;
12
+ }
13
+ ngOnInit() {
14
+ this.addIconClass();
15
+ }
16
+ ngAfterViewInit() {
17
+ this.setIconUrl();
18
+ }
19
+ ngOnChanges() {
20
+ this.setIconUrl();
21
+ }
22
+ addIconClass() {
23
+ if (this.iconName) {
24
+ this.el.nativeElement.classList.add(`icon-${this.iconName}`);
25
+ }
26
+ }
27
+ setIconUrl() {
28
+ if (!this.iconName) {
29
+ return;
30
+ }
31
+ const baseUrl = this.getBaseUrl();
32
+ const iconUrl = `${baseUrl}/icons/${this.iconName}.svg`;
33
+ this.el.nativeElement.style.maskImage = `url('${iconUrl}')`;
34
+ this.el.nativeElement.style.webkitMaskImage = `url('${iconUrl}')`;
35
+ }
36
+ getBaseUrl() {
37
+ switch (this.assetSource) {
38
+ case 'mf':
39
+ return this.assetBaseUrl ?? '';
40
+ case 'main':
41
+ return '/assets';
42
+ default:
43
+ return this.assetBaseUrl ?? '';
44
+ }
45
+ }
46
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IconSourceDirective, deps: [{ token: i0.ElementRef }, { token: ASSET_BASE_URL, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
47
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: IconSourceDirective, isStandalone: true, selector: "i[iconName]", inputs: { iconName: "iconName", assetSource: "assetSource" }, usesOnChanges: true, ngImport: i0 });
48
+ }
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IconSourceDirective, decorators: [{
50
+ type: Directive,
51
+ args: [{
52
+ selector: 'i[iconName]',
53
+ standalone: true
54
+ }]
55
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
56
+ type: Optional
57
+ }, {
58
+ type: Inject,
59
+ args: [ASSET_BASE_URL]
60
+ }] }], propDecorators: { iconName: [{
61
+ type: Input
62
+ }], assetSource: [{
63
+ type: Input
64
+ }] } });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1zb3VyY2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9kaXJlY3RpdmVzL2ljb24tc291cmNlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZ0QsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBc0JoRSxNQUFNLE9BQU8sbUJBQW1CO0lBS3BCO0lBQ29DO0lBTHJDLFFBQVEsQ0FBWTtJQUNwQixXQUFXLEdBQWtCLElBQUksQ0FBQztJQUUzQyxZQUNVLEVBQTJCLEVBQ1MsWUFBMkI7UUFEL0QsT0FBRSxHQUFGLEVBQUUsQ0FBeUI7UUFDUyxpQkFBWSxHQUFaLFlBQVksQ0FBZTtJQUV6RSxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztJQUNILENBQUM7SUFFTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEMsTUFBTSxPQUFPLEdBQUcsR0FBRyxPQUFPLFVBQVUsSUFBSSxDQUFDLFFBQVEsTUFBTSxDQUFDO1FBRXhELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsUUFBUSxPQUFPLElBQUksQ0FBQztRQUM1RCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEUsQ0FBQztJQUVPLFVBQVU7UUFDaEIsUUFBUSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDekIsS0FBSyxJQUFJO2dCQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7WUFDakMsS0FBSyxNQUFNO2dCQUNULE9BQU8sU0FBUyxDQUFDO1lBQ25CO2dCQUNFLE9BQU8sSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7d0dBakRVLG1CQUFtQiw0Q0FNUixjQUFjOzRGQU56QixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBT0ksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxjQUFjO3lDQUwzQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBFbGVtZW50UmVmLCBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVNTRVRfQkFTRV9VUkwgfSBmcm9tICcuLi90b2tlbnMvYXNzZXQtYmFzZS11cmwudG9rZW4nO1xuXG5leHBvcnQgdHlwZSBJY29uTmFtZSA9XG4gICd1c2VyJ1xuICB8ICdtYWlsJ1xuICB8ICdidWlsZCdcbiAgfCAnbWFwLXBpbidcbiAgfCAnbW9uZXknXG4gIHwgJ2NhcmQnXG4gIHwgJ25hdi1hcnJvdy11cCdcbiAgfCAnbmF2LWFycm93LWRvd24nXG4gIHwgJ2NhcidcbiAgfCAndHJhc2gnXG4gIHwgJ2hhbmQtY2FyZCdcbiAgfCAnaGVscC1vdXRsaW5lZCdcbiAgfCAnZWRpdCdcbiAgfCAnc2hvcHBpbmctY2FydCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lbaWNvbk5hbWVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJY29uU291cmNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBpY29uTmFtZSE6IEljb25OYW1lO1xuICBASW5wdXQoKSBhc3NldFNvdXJjZTogJ21mJyB8ICdtYWluJyA9ICdtZic7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBU1NFVF9CQVNFX1VSTCkgcHJpdmF0ZSBhc3NldEJhc2VVcmw6IHN0cmluZyB8IG51bGxcbiAgKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFkZEljb25DbGFzcygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc2V0SWNvblVybCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5zZXRJY29uVXJsKCk7XG4gIH1cblxuICBwcml2YXRlIGFkZEljb25DbGFzcygpIHtcbiAgICBpZiAodGhpcy5pY29uTmFtZSkge1xuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoYGljb24tJHt0aGlzLmljb25OYW1lfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0SWNvblVybCgpIHtcbiAgICBpZiAoIXRoaXMuaWNvbk5hbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5nZXRCYXNlVXJsKCk7XG4gICAgY29uc3QgaWNvblVybCA9IGAke2Jhc2VVcmx9L2ljb25zLyR7dGhpcy5pY29uTmFtZX0uc3ZnYDtcblxuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5tYXNrSW1hZ2UgPSBgdXJsKCcke2ljb25Vcmx9JylgO1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS53ZWJraXRNYXNrSW1hZ2UgPSBgdXJsKCcke2ljb25Vcmx9JylgO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCYXNlVXJsKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLmFzc2V0U291cmNlKSB7XG4gICAgICBjYXNlICdtZic6XG4gICAgICAgIHJldHVybiB0aGlzLmFzc2V0QmFzZVVybCA/PyAnJztcbiAgICAgIGNhc2UgJ21haW4nOlxuICAgICAgICByZXR1cm4gJy9hc3NldHMnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNzZXRCYXNlVXJsID8/ICcnO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,24 @@
1
+ import { Directive, HostListener } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NoLeadingSpaceDirective {
4
+ onInput(event) {
5
+ const value = event.target.value;
6
+ // Elimina espacios al inicio
7
+ if (value.startsWith(' ')) {
8
+ event.target.value = value.trimStart();
9
+ }
10
+ }
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoLeadingSpaceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
12
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NoLeadingSpaceDirective, isStandalone: true, selector: "[noLeadingSpace]", host: { listeners: { "input": "onInput($event)" } }, ngImport: i0 });
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoLeadingSpaceDirective, decorators: [{
15
+ type: Directive,
16
+ args: [{
17
+ selector: '[noLeadingSpace]',
18
+ standalone: true
19
+ }]
20
+ }], propDecorators: { onInput: [{
21
+ type: HostListener,
22
+ args: ['input', ['$event']]
23
+ }] } });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tbGVhZGluZy1zcGFjZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2RpcmVjdGl2ZXMvbm8tbGVhZGluZy1zcGFjZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTXhELE1BQU0sT0FBTyx1QkFBdUI7SUFHbEMsT0FBTyxDQUFDLEtBQVU7UUFDaEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFFakMsNkJBQTZCO1FBQzdCLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFCLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQzt3R0FWVSx1QkFBdUI7NEZBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBSUMsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tub0xlYWRpbmdTcGFjZV0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE5vTGVhZGluZ1NwYWNlRGlyZWN0aXZlIHtcblxuICBASG9zdExpc3RlbmVyKCdpbnB1dCcsIFsnJGV2ZW50J10pXG4gIG9uSW5wdXQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuXG4gICAgLy8gRWxpbWluYSBlc3BhY2lvcyBhbCBpbmljaW9cbiAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnICcpKSB7XG4gICAgICBldmVudC50YXJnZXQudmFsdWUgPSB2YWx1ZS50cmltU3RhcnQoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,25 @@
1
+ import { Directive, HostListener } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class OnlyLettersDirective {
4
+ regex = /^[A-Za-zÁÉÍÓÚÜÑáéíóúüñ' -]*$/;
5
+ onInput(event) {
6
+ const value = event.target.value;
7
+ event.target.value = value
8
+ .split('')
9
+ .filter(char => this.regex.test(char))
10
+ .join('');
11
+ }
12
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OnlyLettersDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
13
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: OnlyLettersDirective, isStandalone: true, selector: "[onlyLetters]", host: { listeners: { "input": "onInput($event)" } }, ngImport: i0 });
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OnlyLettersDirective, decorators: [{
16
+ type: Directive,
17
+ args: [{
18
+ selector: '[onlyLetters]',
19
+ standalone: true
20
+ }]
21
+ }], propDecorators: { onInput: [{
22
+ type: HostListener,
23
+ args: ['input', ['$event']]
24
+ }] } });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25seS1sZXR0ZXJzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZGlyZWN0aXZlcy9vbmx5LWxldHRlcnMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU94RCxNQUFNLE9BQU8sb0JBQW9CO0lBRXZCLEtBQUssR0FBRyw4QkFBOEIsQ0FBQztJQUcvQyxPQUFPLENBQUMsS0FBVTtRQUNoQixNQUFNLEtBQUssR0FBVyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUV6QyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLO2FBQ3ZCLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDVCxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNyQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDZCxDQUFDO3dHQVpVLG9CQUFvQjs0RkFBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBT0MsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tvbmx5TGV0dGVyc10nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuXG5leHBvcnQgY2xhc3MgT25seUxldHRlcnNEaXJlY3RpdmUge1xuXG4gIHByaXZhdGUgcmVnZXggPSAvXltBLVphLXrDgcOJw43Dk8Oaw5zDkcOhw6nDrcOzw7rDvMOxJyAtXSokLztcblxuICBASG9zdExpc3RlbmVyKCdpbnB1dCcsIFsnJGV2ZW50J10pXG4gIG9uSW5wdXQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSBldmVudC50YXJnZXQudmFsdWU7XG5cbiAgICBldmVudC50YXJnZXQudmFsdWUgPSB2YWx1ZVxuICAgICAgLnNwbGl0KCcnKVxuICAgICAgLmZpbHRlcihjaGFyID0+IHRoaXMucmVnZXgudGVzdChjaGFyKSlcbiAgICAgIC5qb2luKCcnKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,21 @@
1
+ import { Directive, HostListener } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class OnlyNumberDirective {
4
+ onInput(event) {
5
+ const value = event.target.value;
6
+ event.target.value = value.replace(/\D/g, '');
7
+ }
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OnlyNumberDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
9
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: OnlyNumberDirective, isStandalone: true, selector: "[onlyNumber]", host: { listeners: { "input": "onInput($event)" } }, ngImport: i0 });
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OnlyNumberDirective, decorators: [{
12
+ type: Directive,
13
+ args: [{
14
+ selector: '[onlyNumber]',
15
+ standalone: true
16
+ }]
17
+ }], propDecorators: { onInput: [{
18
+ type: HostListener,
19
+ args: ['input', ['$event']]
20
+ }] } });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25seS1udW1iZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9kaXJlY3RpdmVzL29ubHktbnVtYmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPeEQsTUFBTSxPQUFPLG1CQUFtQjtJQUU5QixPQUFPLENBQUMsS0FBVTtRQUNoQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNqQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO3dHQUxVLG1CQUFtQjs0RkFBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUwvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBSUMsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tvbmx5TnVtYmVyXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5cbmV4cG9ydCBjbGFzcyBPbmx5TnVtYmVyRGlyZWN0aXZlIHtcbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnLCBbJyRldmVudCddKVxuICBvbklucHV0KGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICBldmVudC50YXJnZXQudmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9cXEQvZywgJycpO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,67 @@
1
+ import { Directive, HostListener, Input, Optional, Self } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/forms";
4
+ export class RfcDirective {
5
+ ngControl;
6
+ tipoContribuyente = null;
7
+ constructor(ngControl) {
8
+ this.ngControl = ngControl;
9
+ }
10
+ // Función para obtener el límite según el tipo de contribuyente
11
+ getMaxLength() {
12
+ if (this.tipoContribuyente === 'fisica')
13
+ return 13;
14
+ if (this.tipoContribuyente === 'moral')
15
+ return 12;
16
+ return 13; // Default por si no llega el valor
17
+ }
18
+ onInput(event) {
19
+ const input = event.target;
20
+ let value = input.value;
21
+ // Solo letras y números
22
+ value = value.replace(/[^a-zA-Z0-9]/g, '');
23
+ // Mayúsculas
24
+ value = value.toUpperCase();
25
+ // Aplicar límite dinámico
26
+ const max = this.getMaxLength();
27
+ if (value.length > max) {
28
+ value = value.substring(0, max);
29
+ }
30
+ this.ngControl?.control?.setValue(value, { emitEvent: false });
31
+ }
32
+ onPaste(event) {
33
+ const pasted = event.clipboardData?.getData('text') || '';
34
+ const max = this.getMaxLength();
35
+ // Bloquear pegado con caracteres inválidos
36
+ if (/[^a-zA-Z0-9]/.test(pasted)) {
37
+ event.preventDefault();
38
+ return;
39
+ }
40
+ // Bloquear pegado si excede el máximo
41
+ if (pasted.length > max) {
42
+ event.preventDefault();
43
+ }
44
+ }
45
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RfcDirective, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
46
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: RfcDirective, isStandalone: true, selector: "[rfcValidator]", inputs: { tipoContribuyente: "tipoContribuyente" }, host: { listeners: { "input": "onInput($event)", "paste": "onPaste($event)" } }, ngImport: i0 });
47
+ }
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RfcDirective, decorators: [{
49
+ type: Directive,
50
+ args: [{
51
+ selector: '[rfcValidator]',
52
+ standalone: true
53
+ }]
54
+ }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
55
+ type: Optional
56
+ }, {
57
+ type: Self
58
+ }] }], propDecorators: { tipoContribuyente: [{
59
+ type: Input
60
+ }], onInput: [{
61
+ type: HostListener,
62
+ args: ['input', ['$event']]
63
+ }], onPaste: [{
64
+ type: HostListener,
65
+ args: ['paste', ['$event']]
66
+ }] } });
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmZjLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZGlyZWN0aXZlcy9yZmMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPL0UsTUFBTSxPQUFPLFlBQVk7SUFJaUI7SUFGL0IsaUJBQWlCLEdBQWtCLElBQUksQ0FBQztJQUVqRCxZQUF3QyxTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUNuRSxDQUFDO0lBRUQsZ0VBQWdFO0lBQ3hELFlBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssUUFBUTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ25ELElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLE9BQU87WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNsRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLG1DQUFtQztJQUNoRCxDQUFDO0lBR0QsT0FBTyxDQUFDLEtBQVk7UUFDbEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDL0MsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUV4Qix3QkFBd0I7UUFDeEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTNDLGFBQWE7UUFDYixLQUFLLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTVCLDBCQUEwQjtRQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFHRCxPQUFPLENBQUMsS0FBcUI7UUFDM0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVoQywyQ0FBMkM7UUFDM0MsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDaEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU87UUFDVCxDQUFDO1FBRUQsc0NBQXNDO1FBQ3RDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7d0dBakRVLFlBQVk7NEZBQVosWUFBWTs7NEZBQVosWUFBWTtrQkFKeEIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQUtjLFFBQVE7OzBCQUFJLElBQUk7eUNBRnBCLGlCQUFpQjtzQkFBekIsS0FBSztnQkFhTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXFCakMsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3B0aW9uYWwsIFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3JmY1ZhbGlkYXRvcl0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFJmY0RpcmVjdGl2ZSB7XG5cbiAgQElucHV0KCkgdGlwb0NvbnRyaWJ1eWVudGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTZWxmKCkgcHJpdmF0ZSBuZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwpIHtcbiAgfVxuXG4gIC8vIEZ1bmNpw7NuIHBhcmEgb2J0ZW5lciBlbCBsw61taXRlIHNlZ8O6biBlbCB0aXBvIGRlIGNvbnRyaWJ1eWVudGVcbiAgcHJpdmF0ZSBnZXRNYXhMZW5ndGgoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy50aXBvQ29udHJpYnV5ZW50ZSA9PT0gJ2Zpc2ljYScpIHJldHVybiAxMztcbiAgICBpZiAodGhpcy50aXBvQ29udHJpYnV5ZW50ZSA9PT0gJ21vcmFsJykgcmV0dXJuIDEyO1xuICAgIHJldHVybiAxMzsgLy8gRGVmYXVsdCBwb3Igc2kgbm8gbGxlZ2EgZWwgdmFsb3JcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2lucHV0JywgWyckZXZlbnQnXSlcbiAgb25JbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGxldCB2YWx1ZSA9IGlucHV0LnZhbHVlO1xuXG4gICAgLy8gU29sbyBsZXRyYXMgeSBuw7ptZXJvc1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15hLXpBLVowLTldL2csICcnKTtcblxuICAgIC8vIE1hecO6c2N1bGFzXG4gICAgdmFsdWUgPSB2YWx1ZS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgLy8gQXBsaWNhciBsw61taXRlIGRpbsOhbWljb1xuICAgIGNvbnN0IG1heCA9IHRoaXMuZ2V0TWF4TGVuZ3RoKCk7XG4gICAgaWYgKHZhbHVlLmxlbmd0aCA+IG1heCkge1xuICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoMCwgbWF4KTtcbiAgICB9XG5cbiAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uc2V0VmFsdWUodmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3Bhc3RlJywgWyckZXZlbnQnXSlcbiAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBwYXN0ZWQgPSBldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0JykgfHwgJyc7XG4gICAgY29uc3QgbWF4ID0gdGhpcy5nZXRNYXhMZW5ndGgoKTtcblxuICAgIC8vIEJsb3F1ZWFyIHBlZ2FkbyBjb24gY2FyYWN0ZXJlcyBpbnbDoWxpZG9zXG4gICAgaWYgKC9bXmEtekEtWjAtOV0vLnRlc3QocGFzdGVkKSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBCbG9xdWVhciBwZWdhZG8gc2kgZXhjZWRlIGVsIG3DoXhpbW9cbiAgICBpZiAocGFzdGVkLmxlbmd0aCA+IG1heCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cbn1cblxuXG4iXX0=
@@ -0,0 +1,199 @@
1
+ import { Directive, Input, HostListener, HostBinding } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TooltipDirective {
4
+ el;
5
+ renderer;
6
+ tooltipText = '';
7
+ tooltipPosition = 'auto';
8
+ tooltipDelay = 300;
9
+ tooltipMaxWidth = 280;
10
+ tooltipClass = '';
11
+ cursor = 'help';
12
+ tooltipElement = null;
13
+ showTimeout;
14
+ hideTimeout;
15
+ constructor(el, renderer) {
16
+ this.el = el;
17
+ this.renderer = renderer;
18
+ }
19
+ onMouseEnter() {
20
+ if (this.hideTimeout) {
21
+ clearTimeout(this.hideTimeout);
22
+ this.hideTimeout = undefined;
23
+ }
24
+ this.showTimeout = window.setTimeout(() => {
25
+ this.showTooltip();
26
+ }, this.tooltipDelay);
27
+ }
28
+ onMouseLeave() {
29
+ if (this.showTimeout) {
30
+ clearTimeout(this.showTimeout);
31
+ this.showTimeout = undefined;
32
+ }
33
+ this.hideTimeout = window.setTimeout(() => {
34
+ this.hideTooltip();
35
+ }, 100);
36
+ }
37
+ onClick() {
38
+ // Allow click events to propagate
39
+ }
40
+ showTooltip() {
41
+ if (!this.tooltipText || this.tooltipElement) {
42
+ return;
43
+ }
44
+ // Create tooltip element
45
+ this.tooltipElement = this.renderer.createElement('div');
46
+ this.renderer.addClass(this.tooltipElement, 'app-tooltip');
47
+ if (this.tooltipClass) {
48
+ this.renderer.addClass(this.tooltipElement, this.tooltipClass);
49
+ }
50
+ // Create tooltip content
51
+ const tooltipContent = this.renderer.createElement('div');
52
+ this.renderer.addClass(tooltipContent, 'app-tooltip-content');
53
+ this.renderer.setStyle(tooltipContent, 'max-width', `${this.tooltipMaxWidth}px`);
54
+ const textNode = this.renderer.createText(this.tooltipText);
55
+ this.renderer.appendChild(tooltipContent, textNode);
56
+ this.renderer.appendChild(this.tooltipElement, tooltipContent);
57
+ // Create arrow element
58
+ const arrow = this.renderer.createElement('div');
59
+ this.renderer.addClass(arrow, 'app-tooltip-arrow');
60
+ this.renderer.appendChild(this.tooltipElement, arrow);
61
+ // Add to body
62
+ this.renderer.appendChild(document.body, this.tooltipElement);
63
+ // Position tooltip
64
+ this.positionTooltip();
65
+ // Trigger animation
66
+ requestAnimationFrame(() => {
67
+ if (this.tooltipElement) {
68
+ this.renderer.addClass(this.tooltipElement, 'app-tooltip-show');
69
+ }
70
+ });
71
+ }
72
+ hideTooltip() {
73
+ if (!this.tooltipElement) {
74
+ return;
75
+ }
76
+ this.renderer.removeClass(this.tooltipElement, 'app-tooltip-show');
77
+ setTimeout(() => {
78
+ if (this.tooltipElement) {
79
+ this.renderer.removeChild(document.body, this.tooltipElement);
80
+ this.tooltipElement = null;
81
+ }
82
+ }, 200);
83
+ }
84
+ positionTooltip() {
85
+ if (!this.tooltipElement) {
86
+ return;
87
+ }
88
+ const hostRect = this.el.nativeElement.getBoundingClientRect();
89
+ const tooltipRect = this.tooltipElement.getBoundingClientRect();
90
+ const scrollX = window.scrollX || window.pageXOffset;
91
+ const scrollY = window.scrollY || window.pageYOffset;
92
+ const gap = 16; // Space between element and tooltip
93
+ // Calculate available space in each direction
94
+ const spaceTop = hostRect.top;
95
+ const spaceBottom = window.innerHeight - hostRect.bottom;
96
+ const spaceLeft = hostRect.left;
97
+ const spaceRight = window.innerWidth - hostRect.right;
98
+ let position = this.tooltipPosition;
99
+ let top = 0;
100
+ let left = 0;
101
+ // Auto-detect best position
102
+ if (position === 'auto') {
103
+ if (spaceTop >= tooltipRect.height + gap) {
104
+ position = 'top';
105
+ }
106
+ else if (spaceBottom >= tooltipRect.height + gap) {
107
+ position = 'bottom';
108
+ }
109
+ else if (spaceRight >= tooltipRect.width + gap) {
110
+ position = 'right';
111
+ }
112
+ else if (spaceLeft >= tooltipRect.width + gap) {
113
+ position = 'left';
114
+ }
115
+ else {
116
+ // Default to top if no space is sufficient
117
+ position = 'top';
118
+ }
119
+ }
120
+ // Calculate position based on detected/specified position
121
+ switch (position) {
122
+ case 'top':
123
+ top = hostRect.top + scrollY - tooltipRect.height - gap;
124
+ left = hostRect.left + scrollX + (hostRect.width / 2) - (tooltipRect.width / 2);
125
+ break;
126
+ case 'bottom':
127
+ top = hostRect.bottom + scrollY + gap;
128
+ left = hostRect.left + scrollX + (hostRect.width / 2) - (tooltipRect.width / 2);
129
+ break;
130
+ case 'left':
131
+ top = hostRect.top + scrollY + (hostRect.height / 2) - (tooltipRect.height / 2);
132
+ left = hostRect.left + scrollX - tooltipRect.width - gap;
133
+ break;
134
+ case 'right':
135
+ top = hostRect.top + scrollY + (hostRect.height / 2) - (tooltipRect.height / 2);
136
+ left = hostRect.right + scrollX + gap;
137
+ break;
138
+ }
139
+ // Adjust horizontal position to keep tooltip within viewport
140
+ if (position === 'top' || position === 'bottom') {
141
+ const minLeft = scrollX + 10;
142
+ const maxLeft = scrollX + window.innerWidth - tooltipRect.width - 10;
143
+ left = Math.max(minLeft, Math.min(left, maxLeft));
144
+ }
145
+ // Adjust vertical position to keep tooltip within viewport
146
+ if (position === 'left' || position === 'right') {
147
+ const minTop = scrollY + 10;
148
+ const maxTop = scrollY + window.innerHeight - tooltipRect.height - 10;
149
+ top = Math.max(minTop, Math.min(top, maxTop));
150
+ }
151
+ // Apply position
152
+ this.renderer.setStyle(this.tooltipElement, 'top', `${top}px`);
153
+ this.renderer.setStyle(this.tooltipElement, 'left', `${left}px`);
154
+ // Add position class for arrow styling
155
+ this.renderer.addClass(this.tooltipElement, `app-tooltip-${position}`);
156
+ }
157
+ ngOnDestroy() {
158
+ if (this.showTimeout) {
159
+ clearTimeout(this.showTimeout);
160
+ }
161
+ if (this.hideTimeout) {
162
+ clearTimeout(this.hideTimeout);
163
+ }
164
+ this.hideTooltip();
165
+ }
166
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
167
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: TooltipDirective, isStandalone: true, selector: "[appTooltip]", inputs: { tooltipText: ["appTooltip", "tooltipText"], tooltipPosition: "tooltipPosition", tooltipDelay: "tooltipDelay", tooltipMaxWidth: "tooltipMaxWidth", tooltipClass: "tooltipClass" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "click": "onClick()" }, properties: { "style.cursor": "this.cursor" } }, ngImport: i0 });
168
+ }
169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TooltipDirective, decorators: [{
170
+ type: Directive,
171
+ args: [{
172
+ selector: '[appTooltip]',
173
+ standalone: true
174
+ }]
175
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { tooltipText: [{
176
+ type: Input,
177
+ args: ['appTooltip']
178
+ }], tooltipPosition: [{
179
+ type: Input
180
+ }], tooltipDelay: [{
181
+ type: Input
182
+ }], tooltipMaxWidth: [{
183
+ type: Input
184
+ }], tooltipClass: [{
185
+ type: Input
186
+ }], cursor: [{
187
+ type: HostBinding,
188
+ args: ['style.cursor']
189
+ }], onMouseEnter: [{
190
+ type: HostListener,
191
+ args: ['mouseenter']
192
+ }], onMouseLeave: [{
193
+ type: HostListener,
194
+ args: ['mouseleave']
195
+ }], onClick: [{
196
+ type: HostListener,
197
+ args: ['click']
198
+ }] } });
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2RpcmVjdGl2ZXMvdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBRUwsWUFBWSxFQUdaLFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQzs7QUFRdkIsTUFBTSxPQUFPLGdCQUFnQjtJQWNqQjtJQUNBO0lBZFcsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUM3QixlQUFlLEdBQW9CLE1BQU0sQ0FBQztJQUMxQyxZQUFZLEdBQUcsR0FBRyxDQUFDO0lBQ25CLGVBQWUsR0FBRyxHQUFHLENBQUM7SUFDdEIsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUVFLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFFckMsY0FBYyxHQUF1QixJQUFJLENBQUM7SUFDMUMsV0FBVyxDQUFVO0lBQ3JCLFdBQVcsQ0FBVTtJQUU3QixZQUNVLEVBQWMsRUFDZCxRQUFtQjtRQURuQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUMxQixDQUFDO0lBR0osWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7UUFDL0IsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUdELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixZQUFZLENBQUMsSUFBSSxDQUFDLFdB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QkFBcEIsS0FBSztnQkFFdUIsTUFBTTtzQkFBbEMsV0FBVzt1QkFBQyxjQUFjO2dCQVkzQixZQUFZO3NCQURYLFlBQVk7dUJBQUMsWUFBWTtnQkFhMUIsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLFlBQVk7Z0JBYTFCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBSZW5kZXJlcjIsXG4gIE9uRGVzdHJveSxcbiAgSG9zdEJpbmRpbmdcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbnR5cGUgVG9vbHRpcFBvc2l0aW9uID0gJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnYXV0byc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thcHBUb29sdGlwXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgnYXBwVG9vbHRpcCcpIHRvb2x0aXBUZXh0ID0gJyc7XG4gIEBJbnB1dCgpIHRvb2x0aXBQb3NpdGlvbjogVG9vbHRpcFBvc2l0aW9uID0gJ2F1dG8nO1xuICBASW5wdXQoKSB0b29sdGlwRGVsYXkgPSAzMDA7XG4gIEBJbnB1dCgpIHRvb2x0aXBNYXhXaWR0aCA9IDI4MDtcbiAgQElucHV0KCkgdG9vbHRpcENsYXNzID0gJyc7XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5jdXJzb3InKSBjdXJzb3IgPSAnaGVscCc7XG5cbiAgcHJpdmF0ZSB0b29sdGlwRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBzaG93VGltZW91dD86IG51bWJlcjtcbiAgcHJpdmF0ZSBoaWRlVGltZW91dD86IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gIG9uTW91c2VFbnRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oaWRlVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGlkZVRpbWVvdXQpO1xuICAgICAgdGhpcy5oaWRlVGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zaG93VG9vbHRpcCgpO1xuICAgIH0sIHRoaXMudG9vbHRpcERlbGF5KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICBvbk1vdXNlTGVhdmUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvd1RpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNob3dUaW1lb3V0KTtcbiAgICAgIHRoaXMuc2hvd1RpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5oaWRlVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaGlkZVRvb2x0aXAoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBvbkNsaWNrKCk6IHZvaWQge1xuICAgIC8vIEFsbG93IGNsaWNrIGV2ZW50cyB0byBwcm9wYWdhdGVcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1Rvb2x0aXAoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRvb2x0aXBUZXh0IHx8IHRoaXMudG9vbHRpcEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdG9vbHRpcCBlbGVtZW50XG4gICAgdGhpcy50b29sdGlwRWxlbWVudCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRvb2x0aXBFbGVtZW50LCAnYXBwLXRvb2x0aXAnKTtcblxuICAgIGlmICh0aGlzLnRvb2x0aXBDbGFzcykge1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRvb2x0aXBFbGVtZW50LCB0aGlzLnRvb2x0aXBDbGFzcyk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRvb2x0aXAgY29udGVudFxuICAgIGNvbnN0IHRvb2x0aXBDb250ZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRvb2x0aXBDb250ZW50LCAnYXBwLXRvb2x0aXAtY29udGVudCcpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodG9vbHRpcENvbnRlbnQsICdtYXgtd2lkdGgnLCBgJHt0aGlzLnRvb2x0aXBNYXhXaWR0aH1weGApO1xuXG4gICAgY29uc3QgdGV4dE5vZGUgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRleHQodGhpcy50b29sdGlwVGV4dCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0b29sdGlwQ29udGVudCwgdGV4dE5vZGUpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy50b29sdGlwRWxlbWVudCwgdG9vbHRpcENvbnRlbnQpO1xuXG4gICAgLy8gQ3JlYXRlIGFycm93IGVsZW1lbnRcbiAgICBjb25zdCBhcnJvdyA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhhcnJvdywgJ2FwcC10b29sdGlwLWFycm93Jyk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBFbGVtZW50LCBhcnJvdyk7XG5cbiAgICAvLyBBZGQgdG8gYm9keVxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuYm9keSwgdGhpcy50b29sdGlwRWxlbWVudCk7XG5cbiAgICAvLyBQb3NpdGlvbiB0b29sdGlwXG4gICAgdGhpcy5wb3NpdGlvblRvb2x0aXAoKTtcblxuICAgIC8vIFRyaWdnZXIgYW5pbWF0aW9uXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnRvb2x0aXBFbGVtZW50KSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy50b29sdGlwRWxlbWVudCwgJ2FwcC10b29sdGlwLXNob3cnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGlkZVRvb2x0aXAoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRvb2x0aXBFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnRvb2x0aXBFbGVtZW50LCAnYXBwLXRvb2x0aXAtc2hvdycpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy50b29sdGlwRWxlbWVudCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKGRvY3VtZW50LmJvZHksIHRoaXMudG9vbHRpcEVsZW1lbnQpO1xuICAgICAgICB0aGlzLnRvb2x0aXBFbGVtZW50ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9LCAyMDApO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3NpdGlvblRvb2x0aXAoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRvb2x0aXBFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaG9zdFJlY3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgdG9vbHRpcFJlY3QgPSB0aGlzLnRvb2x0aXBFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHNjcm9sbFggPSB3aW5kb3cuc2Nyb2xsWCB8fCB3aW5kb3cucGFnZVhPZmZzZXQ7XG4gICAgY29uc3Qgc2Nyb2xsWSA9IHdpbmRvdy5zY3JvbGxZIHx8IHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgICBjb25zdCBnYXAgPSAxNjsgLy8gU3BhY2UgYmV0d2VlbiBlbGVtZW50IGFuZCB0b29sdGlwXG5cbiAgICAvLyBDYWxjdWxhdGUgYXZhaWxhYmxlIHNwYWNlIGluIGVhY2ggZGlyZWN0aW9uXG4gICAgY29uc3Qgc3BhY2VUb3AgPSBob3N0UmVjdC50b3A7XG4gICAgY29uc3Qgc3BhY2VCb3R0b20gPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBob3N0UmVjdC5ib3R0b207XG4gICAgY29uc3Qgc3BhY2VMZWZ0ID0gaG9zdFJlY3QubGVmdDtcbiAgICBjb25zdCBzcGFjZVJpZ2h0ID0gd2luZG93LmlubmVyV2lkdGggLSBob3N0UmVjdC5yaWdodDtcblxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMudG9vbHRpcFBvc2l0aW9uO1xuICAgIGxldCB0b3AgPSAwO1xuICAgIGxldCBsZWZ0ID0gMDtcblxuICAgIC8vIEF1dG8tZGV0ZWN0IGJlc3QgcG9zaXRpb25cbiAgICBpZiAocG9zaXRpb24gPT09ICdhdXRvJykge1xuICAgICAgaWYgKHNwYWNlVG9wID49IHRvb2x0aXBSZWN0LmhlaWdodCArIGdhcCkge1xuICAgICAgICBwb3NpdGlvbiA9ICd0b3AnO1xuICAgICAgfSBlbHNlIGlmIChzcGFjZUJvdHRvbSA+PSB0b29sdGlwUmVjdC5oZWlnaHQgKyBnYXApIHtcbiAgICAgICAgcG9zaXRpb24gPSAnYm90dG9tJztcbiAgICAgIH0gZWxzZSBpZiAoc3BhY2VSaWdodCA+PSB0b29sdGlwUmVjdC53aWR0aCArIGdhcCkge1xuICAgICAgICBwb3NpdGlvbiA9ICdyaWdodCc7XG4gICAgICB9IGVsc2UgaWYgKHNwYWNlTGVmdCA+PSB0b29sdGlwUmVjdC53aWR0aCArIGdhcCkge1xuICAgICAgICBwb3NpdGlvbiA9ICdsZWZ0JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERlZmF1bHQgdG8gdG9wIGlmIG5vIHNwYWNlIGlzIHN1ZmZpY2llbnRcbiAgICAgICAgcG9zaXRpb24gPSAndG9wJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDYWxjdWxhdGUgcG9zaXRpb24gYmFzZWQgb24gZGV0ZWN0ZWQvc3BlY2lmaWVkIHBvc2l0aW9uXG4gICAgc3dpdGNoIChwb3NpdGlvbikge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgdG9wID0gaG9zdFJlY3QudG9wICsgc2Nyb2xsWSAtIHRvb2x0aXBSZWN0LmhlaWdodCAtIGdhcDtcbiAgICAgICAgbGVmdCA9IGhvc3RSZWN0LmxlZnQgKyBzY3JvbGxYICsgKGhvc3RSZWN0LndpZHRoIC8gMikgLSAodG9vbHRpcFJlY3Qud2lkdGggLyAyKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHRvcCA9IGhvc3RSZWN0LmJvdHRvbSArIHNjcm9sbFkgKyBnYXA7XG4gICAgICAgIGxlZnQgPSBob3N0UmVjdC5sZWZ0ICsgc2Nyb2xsWCArIChob3N0UmVjdC53aWR0aCAvIDIpIC0gKHRvb2x0aXBSZWN0LndpZHRoIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgdG9wID0gaG9zdFJlY3QudG9wICsgc2Nyb2xsWSArIChob3N0UmVjdC5oZWlnaHQgLyAyKSAtICh0b29sdGlwUmVjdC5oZWlnaHQgLyAyKTtcbiAgICAgICAgbGVmdCA9IGhvc3RSZWN0LmxlZnQgKyBzY3JvbGxYIC0gdG9vbHRpcFJlY3Qud2lkdGggLSBnYXA7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHRvcCA9IGhvc3RSZWN0LnRvcCArIHNjcm9sbFkgKyAoaG9zdFJlY3QuaGVpZ2h0IC8gMikgLSAodG9vbHRpcFJlY3QuaGVpZ2h0IC8gMik7XG4gICAgICAgIGxlZnQgPSBob3N0UmVjdC5yaWdodCArIHNjcm9sbFggKyBnYXA7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIEFkanVzdCBob3Jpem9udGFsIHBvc2l0aW9uIHRvIGtlZXAgdG9vbHRpcCB3aXRoaW4gdmlld3BvcnRcbiAgICBpZiAocG9zaXRpb24gPT09ICd0b3AnIHx8IHBvc2l0aW9uID09PSAnYm90dG9tJykge1xuICAgICAgY29uc3QgbWluTGVmdCA9IHNjcm9sbFggKyAxMDtcbiAgICAgIGNvbnN0IG1heExlZnQgPSBzY3JvbGxYICsgd2luZG93LmlubmVyV2lkdGggLSB0b29sdGlwUmVjdC53aWR0aCAtIDEwO1xuICAgICAgbGVmdCA9IE1hdGgubWF4KG1pbkxlZnQsIE1hdGgubWluKGxlZnQsIG1heExlZnQpKTtcbiAgICB9XG5cbiAgICAvLyBBZGp1c3QgdmVydGljYWwgcG9zaXRpb24gdG8ga2VlcCB0b29sdGlwIHdpdGhpbiB2aWV3cG9ydFxuICAgIGlmIChwb3NpdGlvbiA9PT0gJ2xlZnQnIHx8IHBvc2l0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICBjb25zdCBtaW5Ub3AgPSBzY3JvbGxZICsgMTA7XG4gICAgICBjb25zdCBtYXhUb3AgPSBzY3JvbGxZICsgd2luZG93LmlubmVySGVpZ2h0IC0gdG9vbHRpcFJlY3QuaGVpZ2h0IC0gMTA7XG4gICAgICB0b3AgPSBNYXRoLm1heChtaW5Ub3AsIE1hdGgubWluKHRvcCwgbWF4VG9wKSk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgcG9zaXRpb25cbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcEVsZW1lbnQsICd0b3AnLCBgJHt0b3B9cHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcEVsZW1lbnQsICdsZWZ0JywgYCR7bGVmdH1weGApO1xuXG4gICAgLy8gQWRkIHBvc2l0aW9uIGNsYXNzIGZvciBhcnJvdyBzdHlsaW5nXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRvb2x0aXBFbGVtZW50LCBgYXBwLXRvb2x0aXAtJHtwb3NpdGlvbn1gKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3dUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93VGltZW91dCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhpZGVUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5oaWRlVGltZW91dCk7XG4gICAgfVxuICAgIHRoaXMuaGlkZVRvb2x0aXAoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXIubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2RlbHMvc25hY2tiYXIubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBTbmFja2JhclR5cGUgPSAnc3VjY2VzcycgfCAnZXJyb3InIHwgJ3dhcm5pbmcnIHwgJ2luZm8nO1xuZXhwb3J0IHR5cGUgU25hY2tiYXJQb3NpdGlvbiA9ICd0b3AtcmlnaHQnIHwgJ3RvcC1sZWZ0JyB8ICd0b3AtY2VudGVyJyB8ICdib3R0b20tcmlnaHQnIHwgJ2JvdHRvbS1sZWZ0JyB8ICdib3R0b20tY2VudGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBTbmFja2JhckNvbmZpZyB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdHlwZTogU25hY2tiYXJUeXBlO1xuICBkdXJhdGlvbj86IG51bWJlcjtcbiAgcG9zaXRpb24/OiBTbmFja2JhclBvc2l0aW9uO1xuICBhY3Rpb24/OiBzdHJpbmc7XG4gIGFjdGlvbkNhbGxiYWNrPzogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTbmFja2JhckRhdGEgZXh0ZW5kcyBTbmFja2JhckNvbmZpZyB7XG4gIGlkOiBzdHJpbmc7XG4gIHBvc2l0aW9uOiBTbmFja2JhclBvc2l0aW9uO1xufVxuIl19