@joster-dev/chaos-control 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.md +86 -86
  2. package/fesm2022/joster-dev-chaos-control.mjs +380 -742
  3. package/fesm2022/joster-dev-chaos-control.mjs.map +1 -1
  4. package/{lib/LICENSE → lib} +9 -9
  5. package/package.json +6 -7
  6. package/src/lib/scss/all.scss +7 -0
  7. package/src/lib/scss/card.scss +78 -0
  8. package/src/lib/scss/control.scss +49 -0
  9. package/src/lib/scss/reboot.scss +13 -0
  10. package/src/lib/scss/utility.scss +179 -0
  11. package/src/lib/scss/variables.scss +7 -0
  12. package/src/lib/styles.scss +28 -28
  13. package/types/joster-dev-chaos-control.d.ts +243 -0
  14. package/esm2022/joster-dev-chaos-control.mjs +0 -5
  15. package/esm2022/lib/chaos-control.module.mjs +0 -77
  16. package/esm2022/lib/chaos-control.service.mjs +0 -14
  17. package/esm2022/lib/components/busy/busy.component.mjs +0 -11
  18. package/esm2022/lib/components/choice/choice.component.mjs +0 -53
  19. package/esm2022/lib/components/color/color.component.mjs +0 -78
  20. package/esm2022/lib/components/file/file.component.mjs +0 -135
  21. package/esm2022/lib/components/icon/icon.component.mjs +0 -117
  22. package/esm2022/lib/components/icon-stack/icon-stack.component.mjs +0 -29
  23. package/esm2022/lib/components/index.mjs +0 -11
  24. package/esm2022/lib/components/number/number.component.mjs +0 -135
  25. package/esm2022/lib/components/readonly/readonly.component.mjs +0 -14
  26. package/esm2022/lib/components/select/select.component.mjs +0 -99
  27. package/esm2022/lib/components/text/text.component.mjs +0 -162
  28. package/esm2022/lib/directives/border-radius.directive.mjs +0 -41
  29. package/esm2022/lib/directives/busy.directive.mjs +0 -71
  30. package/esm2022/lib/directives/control.directive.mjs +0 -46
  31. package/esm2022/lib/directives/index.mjs +0 -6
  32. package/esm2022/lib/directives/item.directive.mjs +0 -117
  33. package/esm2022/lib/directives/size.directive.mjs +0 -38
  34. package/esm2022/lib/models/icon-types.const.mjs +0 -33
  35. package/esm2022/lib/models/icon.type.mjs +0 -2
  36. package/esm2022/lib/models/index.mjs +0 -9
  37. package/esm2022/lib/models/is-item.function.mjs +0 -8
  38. package/esm2022/lib/models/is-items.function.mjs +0 -5
  39. package/esm2022/lib/models/is-number.function.mjs +0 -5
  40. package/esm2022/lib/models/is-primitive.function.mjs +0 -7
  41. package/esm2022/lib/models/item.interface.mjs +0 -2
  42. package/esm2022/lib/models/primitive.type.mjs +0 -2
  43. package/esm2022/public-api.mjs +0 -7
  44. package/index.d.ts +0 -5
  45. package/lib/chaos-control.module.d.ts +0 -23
  46. package/lib/chaos-control.service.d.ts +0 -6
  47. package/lib/components/busy/busy.component.d.ts +0 -5
  48. package/lib/components/choice/choice.component.d.ts +0 -15
  49. package/lib/components/color/color.component.d.ts +0 -22
  50. package/lib/components/file/file.component.d.ts +0 -32
  51. package/lib/components/icon/icon.component.d.ts +0 -31
  52. package/lib/components/icon-stack/icon-stack.component.d.ts +0 -9
  53. package/lib/components/index.d.ts +0 -10
  54. package/lib/components/number/number.component.d.ts +0 -33
  55. package/lib/components/readonly/readonly.component.d.ts +0 -8
  56. package/lib/components/select/select.component.d.ts +0 -28
  57. package/lib/components/text/text.component.d.ts +0 -41
  58. package/lib/directives/border-radius.directive.d.ts +0 -12
  59. package/lib/directives/busy.directive.d.ts +0 -20
  60. package/lib/directives/control.directive.d.ts +0 -18
  61. package/lib/directives/index.d.ts +0 -5
  62. package/lib/directives/item.directive.d.ts +0 -36
  63. package/lib/directives/size.directive.d.ts +0 -12
  64. package/lib/models/icon-types.const.d.ts +0 -1
  65. package/lib/models/icon.type.d.ts +0 -2
  66. package/lib/models/index.d.ts +0 -8
  67. package/lib/models/is-item.function.d.ts +0 -2
  68. package/lib/models/is-items.function.d.ts +0 -2
  69. package/lib/models/is-number.function.d.ts +0 -1
  70. package/lib/models/is-primitive.function.d.ts +0 -2
  71. package/lib/models/item.interface.d.ts +0 -6
  72. package/lib/models/primitive.type.d.ts +0 -1
  73. package/public-api.d.ts +0 -5
@@ -1,99 +0,0 @@
1
- import { Component, HostBinding, HostListener, Input, Self, ViewChild } from '@angular/core';
2
- import { ItemDirective } from '../../directives';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/forms";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "../icon/icon.component";
7
- import * as i4 from "../../directives/size.directive";
8
- export class SelectComponent extends ItemDirective {
9
- get searchTerm() {
10
- return this._searchTerm;
11
- }
12
- set searchTerm(value) {
13
- this._searchTerm = value;
14
- this.filteredItems = value
15
- ? this._items.filter(item => item.value.toLowerCase().includes(value.toLowerCase()))
16
- : this._items;
17
- }
18
- constructor(ngControl, hostElement) {
19
- super(ngControl);
20
- this.ngControl = ngControl;
21
- this.hostElement = hostElement;
22
- this.dropHeightPx = 200;
23
- this._searchTerm = '';
24
- this.isDropdownCloseToBottom = false;
25
- this.id = `${Math.random().toString(36).substr(2, 9)}`;
26
- }
27
- get activeItemValues() {
28
- return this._items
29
- .filter(item => this._model.includes(item.key))
30
- .map(item => item.value)
31
- .join(', ');
32
- }
33
- get isSelectedAll() {
34
- return this._items.every(item => this._model.includes(item.key));
35
- }
36
- onGlobalClick(event) {
37
- if (!this.hostElement.nativeElement.contains(event.target))
38
- this.closeDropdown();
39
- }
40
- onClickGroup() {
41
- this.closeDropdown();
42
- if (this.dropGroup.nativeElement.getBoundingClientRect().bottom + this.dropHeightPx > window.innerHeight) {
43
- this.dropup.nativeElement.show();
44
- }
45
- else {
46
- this.dropdown.nativeElement.show();
47
- }
48
- }
49
- onClick(item) {
50
- this._model = this._model.filter(key => this._items.map(item => item.key).includes(key));
51
- if (this._model.includes(item.key)) {
52
- if (this.required === true && this._model.length === 1)
53
- return;
54
- this.model = this._model.filter(key => key !== item.key);
55
- return;
56
- }
57
- if (!this.isMultiple && this._model.length === 1) {
58
- this.model = [item.key];
59
- return;
60
- }
61
- this.model = [...this._model, item.key];
62
- }
63
- onClickSelectAll() {
64
- this.model = this.isSelectedAll
65
- ? []
66
- : this._items.map(item => item.key);
67
- }
68
- closeDropdown() {
69
- this.searchTerm = '';
70
- this.dropdown.nativeElement.close();
71
- this.dropup.nativeElement.close();
72
- }
73
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: SelectComponent, deps: [{ token: i1.NgControl, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
74
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: SelectComponent, selector: "jo-select", inputs: { dropHeightPx: "dropHeightPx" }, host: { listeners: { "document:mousedown": "onGlobalClick($event)" }, properties: { "style.--dropHeightPx": "this.dropHeightPx" } }, viewQueries: [{ propertyName: "dropGroup", first: true, predicate: ["dropGroup"], descendants: true }, { propertyName: "dropup", first: true, predicate: ["dropup"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex justify-content-between\">\r\n <label\r\n id=\"select_{{id}}\"\r\n [class.required]=\"required\"\r\n >\r\n <ng-content></ng-content>\r\n </label>\r\n <div>\r\n <ng-content select=\"[rightAligned]\"></ng-content>\r\n </div>\r\n</div>\r\n\r\n<div class=\"position-relative\">\r\n <dialog #dropup>\r\n <ng-template [ngTemplateOutlet]=\"dropContent\"></ng-template>\r\n </dialog>\r\n</div>\r\n\r\n<div\r\n #dropGroup\r\n class=\"d-flex align-items-stretch\"\r\n role=\"group\"\r\n attr.aria-labelledby=\"select_{{id}}\"\r\n>\r\n <button\r\n class=\"flex-1 br-start text-start\"\r\n type=\"button\"\r\n [class.active]=\"_model.length > 0\"\r\n [class.invalid]=\"!ngControl.control?.invalid\"\r\n (click)=\"onClickGroup()\"\r\n (blur)=\"onTouched()\"\r\n >\r\n {{activeItemValues}}\r\n </button>\r\n <button\r\n class=\"d-flex br-end d-flex align-items-center justify-content-center\"\r\n [class.invalid]=\"!ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"onClickGroup()\"\r\n (blur)=\"onTouched()\"\r\n >\r\n <icon\r\n size=\"1rem\"\r\n type=\"chevron\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n [stroke]=\"['current']\"\r\n [class.up]=\"dropup.open\"\r\n [class.down]=\"dropdown.open\"\r\n ></icon>\r\n </button>\r\n</div>\r\n\r\n<dialog #dropdown>\r\n <ng-template [ngTemplateOutlet]=\"dropContent\"></ng-template>\r\n</dialog>\r\n\r\n<ng-template #dropContent>\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <div class=\"d-flex gap-2 align-items-stretch\">\r\n <input\r\n [(ngModel)]=\"searchTerm\"\r\n class=\"flex-1 br-start br-end\"\r\n />\r\n <button\r\n *ngIf=\"_isMultiple\"\r\n type=\"button\"\r\n class=\"br-start br-end\"\r\n (click)=\"onClickSelectAll()\"\r\n >\r\n {{isSelectedAll ? 'Deselect' : 'Select'}} All\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column\">\r\n <button\r\n *ngFor=\"let item of filteredItems\"\r\n class=\"d-flex flex-1 align-items-center text-start gap-2\"\r\n [disabled]=\"isDisabled\"\r\n [class.active]=\"_model.includes(item.key)\"\r\n (click)=\"onClick(item)\"\r\n >\r\n <div\r\n class=\"jo-button {{isMultiple ? 'br-20' : 'br-50'}}\"\r\n [class.active]=\"_model.includes(item.key)\"\r\n [class.disabled]=\"isDisabled\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n >\r\n <icon\r\n *ngIf=\"_model.includes(item.key)\"\r\n size=\"1rem\"\r\n [type]=\"isMultiple ? 'check' : 'dot'\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n </div>\r\n {{item.value}}\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [":host{position:relative;display:block}:host>.position-relative>dialog{bottom:0}.drop{max-height:200px;overflow-y:auto}.drop.down{top:100%}.drop.up{bottom:100%}div[role=group]>button:first-child{border-right:none;white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis}div[role=group]>button:last-child{border-left:none}dialog{padding:0;border:0;margin:0;background:transparent;width:100%;z-index:2;color:currentColor}dialog>.card{-webkit-backdrop-filter:blur(1.5rem);backdrop-filter:blur(1.5rem);max-height:calc(var(--dropHeightPx) * 1px);overflow-y:auto}dialog>.card>.flex-column>button{border-color:transparent;border-width:.075em}dialog>.card>.flex-column>button>.jo-button{position:relative;text-align:left}dialog>.card>.flex-column>button>.jo-button>icon{position:absolute;top:0;left:0}icon[type=chevron]{transform:rotate(90deg)}icon[type=chevron].up{transform:rotate(0)}icon[type=chevron].down{transform:rotate(180deg)}.br-20{border-radius:20%}.br-50{border-radius:50%}\n", "body{font-family:Arial;margin:0}h1,h2,h3,h4,h5,h6{margin:0}a:not(.jo-ignore),button:not(.jo-ignore),.jo-button,input,textarea{color:inherit;background:transparent;border-width:.15rem;border-style:outset;border-color:currentColor;padding:.5rem;margin:0;font-size:1rem;line-height:1rem;font-family:inherit;min-width:0}a:not(.jo-ignore):active,a:not(.jo-ignore).active,button:not(.jo-ignore):active,button:not(.jo-ignore).active,.jo-button:active,.jo-button.active,input:active,input.active,textarea:active,textarea.active{border-style:inset}a:not(.jo-ignore):disabled,a:not(.jo-ignore).disabled,button:not(.jo-ignore):disabled,button:not(.jo-ignore).disabled,.jo-button:disabled,.jo-button.disabled,input:disabled,input.disabled,textarea:disabled,textarea.disabled{cursor:not-allowed;border-style:solid;box-shadow:none;opacity:.5}a,button,.jo-button{cursor:pointer}.card{border:1px solid currentColor;border-radius:.5rem}.card .card-header{padding:1rem;border-bottom:1px solid currentColor}.card .card-body,.card .card-footer{padding:1rem}.card .card-table{overflow-x:auto}.card .card-body+.card-table,.card .card-table+.card-body,.card .card-body+.card-body,.card .card-table+.card-table,.card .card-table+.card-footer,.card .card-body+.card-footer{border-top:1px solid currentColor}.card table{width:100%;border-collapse:collapse}.card table>thead{text-align:left}.card table>thead th{border-bottom:1px solid currentColor}.card table>tfoot td{margin-top:1px;border-top:1px solid currentColor}.card table th,.card table td{padding:1rem}.card table tbody tr>td:last-child{text-align:right}.card table tbody tr:nth-child(odd) td{-webkit-backdrop-filter:brightness(85%);backdrop-filter:brightness(85%)}.card table tbody tr:last-child>td:first-child{border-bottom-left-radius:.5rem}.card table tbody tr:last-child>td:last-child{border-bottom-right-radius:.5rem}.card table tbody tr.active td{font-weight:700}.position-relative{position:relative}.d-flex{display:flex}.flex-row{flex-direction:row}.flex-column{flex-direction:column}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-center{align-items:center}.align-items-baseline{align-items:baseline}.align-items-stretch{align-items:stretch}.justify-content-start{justify-content:flex-start}.justify-content-end{justify-content:flex-end}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-around{justify-content:space-around}.justify-content-evenly{justify-content:space-evenly}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1}.flex-2{flex:2}.flex-3{flex:3}.flex-4{flex:4}.gap-1{gap:.25rem}.m-1{margin:.25rem}.p-1{padding:.25rem}.mx-1{margin-right:.25rem;margin-left:.25rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.px-1{padding-right:.25rem;padding-left:.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.ms-1{margin-right:.25rem}.me-1{margin-left:.25rem}.mt-1{margin-top:.25rem}.mb-1{margin-bottom:.25rem}.ps-1{padding-right:.25rem}.pe-1{padding-left:.25rem}.pt-1{padding-top:.25rem}.pb-1{padding-bottom:.25rem}.gap-2{gap:.5rem}.m-2{margin:.5rem}.p-2{padding:.5rem}.mx-2{margin-right:.5rem;margin-left:.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.px-2{padding-right:.5rem;padding-left:.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.ms-2{margin-right:.5rem}.me-2{margin-left:.5rem}.mt-2{margin-top:.5rem}.mb-2{margin-bottom:.5rem}.ps-2{padding-right:.5rem}.pe-2{padding-left:.5rem}.pt-2{padding-top:.5rem}.pb-2{padding-bottom:.5rem}.gap-3{gap:1rem}.m-3{margin:1rem}.p-3{padding:1rem}.mx-3{margin-right:1rem;margin-left:1rem}.my-3{margin-top:1rem;margin-bottom:1rem}.px-3{padding-right:1rem;padding-left:1rem}.py-3{padding-top:1rem;padding-bottom:1rem}.ms-3{margin-right:1rem}.me-3{margin-left:1rem}.mt-3{margin-top:1rem}.mb-3{margin-bottom:1rem}.ps-3{padding-right:1rem}.pe-3{padding-left:1rem}.pt-3{padding-top:1rem}.pb-3{padding-bottom:1rem}.gap-4{gap:1.5rem}.m-4{margin:1.5rem}.p-4{padding:1.5rem}.mx-4{margin-right:1.5rem;margin-left:1.5rem}.my-4{margin-top:1.5rem;margin-bottom:1.5rem}.px-4{padding-right:1.5rem;padding-left:1.5rem}.py-4{padding-top:1.5rem;padding-bottom:1.5rem}.ms-4{margin-right:1.5rem}.me-4{margin-left:1.5rem}.mt-4{margin-top:1.5rem}.mb-4{margin-bottom:1.5rem}.ps-4{padding-right:1.5rem}.pe-4{padding-left:1.5rem}.pt-4{padding-top:1.5rem}.pb-4{padding-bottom:1.5rem}.gap-5{gap:2rem}.m-5{margin:2rem}.p-5{padding:2rem}.mx-5{margin-right:2rem;margin-left:2rem}.my-5{margin-top:2rem;margin-bottom:2rem}.px-5{padding-right:2rem;padding-left:2rem}.py-5{padding-top:2rem;padding-bottom:2rem}.ms-5{margin-right:2rem}.me-5{margin-left:2rem}.mt-5{margin-top:2rem}.mb-5{margin-bottom:2rem}.ps-5{padding-right:2rem}.pe-5{padding-left:2rem}.pt-5{padding-top:2rem}.pb-5{padding-bottom:2rem}.border{border:1px solid currentColor}.br-start{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.br-end{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.white-space-nowrap{white-space:nowrap}.text-end{text-align:right}.text-start{text-align:left}.text-center{text-align:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}label{display:block;padding-bottom:.5rem;font-weight:700}label:empty{display:none}label.required:after{content:\"*\"}ul{list-style:none;margin:0;padding:0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.IconComponent, selector: "icon[type]", inputs: ["type", "fill", "fillRotate", "fillOpacity", "stroke", "strokeRotate", "spin"] }, { kind: "directive", type: i4.SizeDirective, selector: "[size]", inputs: ["size"] }] }); }
75
- }
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: SelectComponent, decorators: [{
77
- type: Component,
78
- args: [{ selector: 'jo-select', template: "<div class=\"d-flex justify-content-between\">\r\n <label\r\n id=\"select_{{id}}\"\r\n [class.required]=\"required\"\r\n >\r\n <ng-content></ng-content>\r\n </label>\r\n <div>\r\n <ng-content select=\"[rightAligned]\"></ng-content>\r\n </div>\r\n</div>\r\n\r\n<div class=\"position-relative\">\r\n <dialog #dropup>\r\n <ng-template [ngTemplateOutlet]=\"dropContent\"></ng-template>\r\n </dialog>\r\n</div>\r\n\r\n<div\r\n #dropGroup\r\n class=\"d-flex align-items-stretch\"\r\n role=\"group\"\r\n attr.aria-labelledby=\"select_{{id}}\"\r\n>\r\n <button\r\n class=\"flex-1 br-start text-start\"\r\n type=\"button\"\r\n [class.active]=\"_model.length > 0\"\r\n [class.invalid]=\"!ngControl.control?.invalid\"\r\n (click)=\"onClickGroup()\"\r\n (blur)=\"onTouched()\"\r\n >\r\n {{activeItemValues}}\r\n </button>\r\n <button\r\n class=\"d-flex br-end d-flex align-items-center justify-content-center\"\r\n [class.invalid]=\"!ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"onClickGroup()\"\r\n (blur)=\"onTouched()\"\r\n >\r\n <icon\r\n size=\"1rem\"\r\n type=\"chevron\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n [stroke]=\"['current']\"\r\n [class.up]=\"dropup.open\"\r\n [class.down]=\"dropdown.open\"\r\n ></icon>\r\n </button>\r\n</div>\r\n\r\n<dialog #dropdown>\r\n <ng-template [ngTemplateOutlet]=\"dropContent\"></ng-template>\r\n</dialog>\r\n\r\n<ng-template #dropContent>\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <div class=\"d-flex gap-2 align-items-stretch\">\r\n <input\r\n [(ngModel)]=\"searchTerm\"\r\n class=\"flex-1 br-start br-end\"\r\n />\r\n <button\r\n *ngIf=\"_isMultiple\"\r\n type=\"button\"\r\n class=\"br-start br-end\"\r\n (click)=\"onClickSelectAll()\"\r\n >\r\n {{isSelectedAll ? 'Deselect' : 'Select'}} All\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column\">\r\n <button\r\n *ngFor=\"let item of filteredItems\"\r\n class=\"d-flex flex-1 align-items-center text-start gap-2\"\r\n [disabled]=\"isDisabled\"\r\n [class.active]=\"_model.includes(item.key)\"\r\n (click)=\"onClick(item)\"\r\n >\r\n <div\r\n class=\"jo-button {{isMultiple ? 'br-20' : 'br-50'}}\"\r\n [class.active]=\"_model.includes(item.key)\"\r\n [class.disabled]=\"isDisabled\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n >\r\n <icon\r\n *ngIf=\"_model.includes(item.key)\"\r\n size=\"1rem\"\r\n [type]=\"isMultiple ? 'check' : 'dot'\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n </div>\r\n {{item.value}}\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [":host{position:relative;display:block}:host>.position-relative>dialog{bottom:0}.drop{max-height:200px;overflow-y:auto}.drop.down{top:100%}.drop.up{bottom:100%}div[role=group]>button:first-child{border-right:none;white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis}div[role=group]>button:last-child{border-left:none}dialog{padding:0;border:0;margin:0;background:transparent;width:100%;z-index:2;color:currentColor}dialog>.card{-webkit-backdrop-filter:blur(1.5rem);backdrop-filter:blur(1.5rem);max-height:calc(var(--dropHeightPx) * 1px);overflow-y:auto}dialog>.card>.flex-column>button{border-color:transparent;border-width:.075em}dialog>.card>.flex-column>button>.jo-button{position:relative;text-align:left}dialog>.card>.flex-column>button>.jo-button>icon{position:absolute;top:0;left:0}icon[type=chevron]{transform:rotate(90deg)}icon[type=chevron].up{transform:rotate(0)}icon[type=chevron].down{transform:rotate(180deg)}.br-20{border-radius:20%}.br-50{border-radius:50%}\n", "body{font-family:Arial;margin:0}h1,h2,h3,h4,h5,h6{margin:0}a:not(.jo-ignore),button:not(.jo-ignore),.jo-button,input,textarea{color:inherit;background:transparent;border-width:.15rem;border-style:outset;border-color:currentColor;padding:.5rem;margin:0;font-size:1rem;line-height:1rem;font-family:inherit;min-width:0}a:not(.jo-ignore):active,a:not(.jo-ignore).active,button:not(.jo-ignore):active,button:not(.jo-ignore).active,.jo-button:active,.jo-button.active,input:active,input.active,textarea:active,textarea.active{border-style:inset}a:not(.jo-ignore):disabled,a:not(.jo-ignore).disabled,button:not(.jo-ignore):disabled,button:not(.jo-ignore).disabled,.jo-button:disabled,.jo-button.disabled,input:disabled,input.disabled,textarea:disabled,textarea.disabled{cursor:not-allowed;border-style:solid;box-shadow:none;opacity:.5}a,button,.jo-button{cursor:pointer}.card{border:1px solid currentColor;border-radius:.5rem}.card .card-header{padding:1rem;border-bottom:1px solid currentColor}.card .card-body,.card .card-footer{padding:1rem}.card .card-table{overflow-x:auto}.card .card-body+.card-table,.card .card-table+.card-body,.card .card-body+.card-body,.card .card-table+.card-table,.card .card-table+.card-footer,.card .card-body+.card-footer{border-top:1px solid currentColor}.card table{width:100%;border-collapse:collapse}.card table>thead{text-align:left}.card table>thead th{border-bottom:1px solid currentColor}.card table>tfoot td{margin-top:1px;border-top:1px solid currentColor}.card table th,.card table td{padding:1rem}.card table tbody tr>td:last-child{text-align:right}.card table tbody tr:nth-child(odd) td{-webkit-backdrop-filter:brightness(85%);backdrop-filter:brightness(85%)}.card table tbody tr:last-child>td:first-child{border-bottom-left-radius:.5rem}.card table tbody tr:last-child>td:last-child{border-bottom-right-radius:.5rem}.card table tbody tr.active td{font-weight:700}.position-relative{position:relative}.d-flex{display:flex}.flex-row{flex-direction:row}.flex-column{flex-direction:column}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-center{align-items:center}.align-items-baseline{align-items:baseline}.align-items-stretch{align-items:stretch}.justify-content-start{justify-content:flex-start}.justify-content-end{justify-content:flex-end}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-around{justify-content:space-around}.justify-content-evenly{justify-content:space-evenly}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1}.flex-2{flex:2}.flex-3{flex:3}.flex-4{flex:4}.gap-1{gap:.25rem}.m-1{margin:.25rem}.p-1{padding:.25rem}.mx-1{margin-right:.25rem;margin-left:.25rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.px-1{padding-right:.25rem;padding-left:.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.ms-1{margin-right:.25rem}.me-1{margin-left:.25rem}.mt-1{margin-top:.25rem}.mb-1{margin-bottom:.25rem}.ps-1{padding-right:.25rem}.pe-1{padding-left:.25rem}.pt-1{padding-top:.25rem}.pb-1{padding-bottom:.25rem}.gap-2{gap:.5rem}.m-2{margin:.5rem}.p-2{padding:.5rem}.mx-2{margin-right:.5rem;margin-left:.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.px-2{padding-right:.5rem;padding-left:.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.ms-2{margin-right:.5rem}.me-2{margin-left:.5rem}.mt-2{margin-top:.5rem}.mb-2{margin-bottom:.5rem}.ps-2{padding-right:.5rem}.pe-2{padding-left:.5rem}.pt-2{padding-top:.5rem}.pb-2{padding-bottom:.5rem}.gap-3{gap:1rem}.m-3{margin:1rem}.p-3{padding:1rem}.mx-3{margin-right:1rem;margin-left:1rem}.my-3{margin-top:1rem;margin-bottom:1rem}.px-3{padding-right:1rem;padding-left:1rem}.py-3{padding-top:1rem;padding-bottom:1rem}.ms-3{margin-right:1rem}.me-3{margin-left:1rem}.mt-3{margin-top:1rem}.mb-3{margin-bottom:1rem}.ps-3{padding-right:1rem}.pe-3{padding-left:1rem}.pt-3{padding-top:1rem}.pb-3{padding-bottom:1rem}.gap-4{gap:1.5rem}.m-4{margin:1.5rem}.p-4{padding:1.5rem}.mx-4{margin-right:1.5rem;margin-left:1.5rem}.my-4{margin-top:1.5rem;margin-bottom:1.5rem}.px-4{padding-right:1.5rem;padding-left:1.5rem}.py-4{padding-top:1.5rem;padding-bottom:1.5rem}.ms-4{margin-right:1.5rem}.me-4{margin-left:1.5rem}.mt-4{margin-top:1.5rem}.mb-4{margin-bottom:1.5rem}.ps-4{padding-right:1.5rem}.pe-4{padding-left:1.5rem}.pt-4{padding-top:1.5rem}.pb-4{padding-bottom:1.5rem}.gap-5{gap:2rem}.m-5{margin:2rem}.p-5{padding:2rem}.mx-5{margin-right:2rem;margin-left:2rem}.my-5{margin-top:2rem;margin-bottom:2rem}.px-5{padding-right:2rem;padding-left:2rem}.py-5{padding-top:2rem;padding-bottom:2rem}.ms-5{margin-right:2rem}.me-5{margin-left:2rem}.mt-5{margin-top:2rem}.mb-5{margin-bottom:2rem}.ps-5{padding-right:2rem}.pe-5{padding-left:2rem}.pt-5{padding-top:2rem}.pb-5{padding-bottom:2rem}.border{border:1px solid currentColor}.br-start{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.br-end{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.white-space-nowrap{white-space:nowrap}.text-end{text-align:right}.text-start{text-align:left}.text-center{text-align:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}label{display:block;padding-bottom:.5rem;font-weight:700}label:empty{display:none}label.required:after{content:\"*\"}ul{list-style:none;margin:0;padding:0}\n"] }]
79
- }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
80
- type: Self
81
- }] }, { type: i0.ElementRef }], propDecorators: { dropGroup: [{
82
- type: ViewChild,
83
- args: ['dropGroup']
84
- }], dropup: [{
85
- type: ViewChild,
86
- args: ['dropup']
87
- }], dropdown: [{
88
- type: ViewChild,
89
- args: ['dropdown']
90
- }], dropHeightPx: [{
91
- type: Input
92
- }, {
93
- type: HostBinding,
94
- args: ['style.--dropHeightPx']
95
- }], onGlobalClick: [{
96
- type: HostListener,
97
- args: ['document:mousedown', ['$event']]
98
- }] } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYW9zLWNvbnRyb2wvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhb3MtY29udHJvbC9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7QUFXakQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsYUFBYTtJQVNoRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLO1lBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3BGLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFNRCxZQUMwQixTQUFvQixFQUNwQyxXQUF1QjtRQUUvQixLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFITyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BDLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBbEJqQyxp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WUFDN0IsQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQyxDQUFDOzhHQXJGVSxlQUFlO2tHQUFmLGVBQWUseWdCQ2I1QixtN0ZBcUdjOzsyRkR4RkQsZUFBZTtrQkFSM0IsU0FBUzsrQkFDRSxXQUFXOzswQkErQmxCLElBQUk7a0VBdkJpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0QsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNJLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFJckIsWUFBWTtzQkFGWCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLHNCQUFzQjtnQkFvQ25DLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIFNlbGYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XHJcbmltcG9ydCB7IEl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdqby1zZWxlY3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogW1xyXG4gICAgJy4vc2VsZWN0LmNvbXBvbmVudC5zY3NzJyxcclxuICAgICcuLi8uLi9zdHlsZXMuc2NzcycsXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgSXRlbURpcmVjdGl2ZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBAVmlld0NoaWxkKCdkcm9wR3JvdXAnKSBkcm9wR3JvdXAhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdkcm9wdXAnKSBkcm9wdXAhOiBFbGVtZW50UmVmPEhUTUxEaWFsb2dFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdkcm9wZG93bicpIGRyb3Bkb3duITogRWxlbWVudFJlZjxIVE1MRGlhbG9nRWxlbWVudD47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLWRyb3BIZWlnaHRQeCcpXHJcbiAgZHJvcEhlaWdodFB4ID0gMjAwO1xyXG5cclxuICBnZXQgc2VhcmNoVGVybSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFRlcm07XHJcbiAgfVxyXG4gIHNldCBzZWFyY2hUZXJtKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3NlYXJjaFRlcm0gPSB2YWx1ZTtcclxuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHZhbHVlXHJcbiAgICAgID8gdGhpcy5faXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS52YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpKVxyXG4gICAgICA6IHRoaXMuX2l0ZW1zO1xyXG4gIH1cclxuICBfc2VhcmNoVGVybSA9ICcnO1xyXG5cclxuICBpc0Ryb3Bkb3duQ2xvc2VUb0JvdHRvbSA9IGZhbHNlO1xyXG4gIGlkID0gYCR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpfWA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQFNlbGYoKSBwdWJsaWMgb3ZlcnJpZGUgbmdDb250cm9sOiBOZ0NvbnRyb2wsXHJcbiAgICBwcml2YXRlIGhvc3RFbGVtZW50OiBFbGVtZW50UmVmLFxyXG4gICkge1xyXG4gICAgc3VwZXIobmdDb250cm9sKTtcclxuICB9XHJcblxyXG4gIGdldCBhY3RpdmVJdGVtVmFsdWVzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbXNcclxuICAgICAgLmZpbHRlcihpdGVtID0+IHRoaXMuX21vZGVsLmluY2x1ZGVzKGl0ZW0ua2V5KSlcclxuICAgICAgLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpXHJcbiAgICAgIC5qb2luKCcsICcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzU2VsZWN0ZWRBbGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbXMuZXZlcnkoaXRlbSA9PiB0aGlzLl9tb2RlbC5pbmNsdWRlcyhpdGVtLmtleSkpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2Vkb3duJywgWyckZXZlbnQnXSlcclxuICBvbkdsb2JhbENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKVxyXG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tHcm91cCgpIHtcclxuICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xyXG4gICAgaWYgKHRoaXMuZHJvcEdyb3VwLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tICsgdGhpcy5kcm9wSGVpZ2h0UHggPiB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcclxuICAgICAgdGhpcy5kcm9wdXAubmF0aXZlRWxlbWVudC5zaG93KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duLm5hdGl2ZUVsZW1lbnQuc2hvdygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGljayhpdGVtOiBJdGVtKSB7XHJcbiAgICB0aGlzLl9tb2RlbCA9IHRoaXMuX21vZGVsLmZpbHRlcihrZXkgPT4gdGhpcy5faXRlbXMubWFwKGl0ZW0gPT4gaXRlbS5rZXkpLmluY2x1ZGVzKGtleSkpXHJcblxyXG4gICAgaWYgKHRoaXMuX21vZGVsLmluY2x1ZGVzKGl0ZW0ua2V5KSkge1xyXG4gICAgICBpZiAodGhpcy5yZXF1aXJlZCA9PT0gdHJ1ZSAmJiB0aGlzLl9tb2RlbC5sZW5ndGggPT09IDEpXHJcbiAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgdGhpcy5tb2RlbCA9IHRoaXMuX21vZGVsLmZpbHRlcihrZXkgPT4ga2V5ICE9PSBpdGVtLmtleSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuaXNNdWx0aXBsZSAmJiB0aGlzLl9tb2RlbC5sZW5ndGggPT09IDEpIHtcclxuICAgICAgdGhpcy5tb2RlbCA9IFtpdGVtLmtleV07XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm1vZGVsID0gWy4uLnRoaXMuX21vZGVsLCBpdGVtLmtleV07XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrU2VsZWN0QWxsKCkge1xyXG4gICAgdGhpcy5tb2RlbCA9IHRoaXMuaXNTZWxlY3RlZEFsbFxyXG4gICAgICA/IFtdXHJcbiAgICAgIDogdGhpcy5faXRlbXMubWFwKGl0ZW0gPT4gaXRlbS5rZXkpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VEcm9wZG93bigpIHtcclxuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xyXG4gICAgdGhpcy5kcm9wZG93bi5uYXRpdmVFbGVtZW50LmNsb3NlKCk7XHJcbiAgICB0aGlzLmRyb3B1cC5uYXRpdmVFbGVtZW50LmNsb3NlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICA8bGFiZWxcclxuICAgIGlkPVwic2VsZWN0X3t7aWR9fVwiXHJcbiAgICBbY2xhc3MucmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gID5cclxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICA8L2xhYmVsPlxyXG4gIDxkaXY+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcmlnaHRBbGlnbmVkXVwiPjwvbmctY29udGVudD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICA8ZGlhbG9nICNkcm9wdXA+XHJcbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJvcENvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxyXG4gIDwvZGlhbG9nPlxyXG48L2Rpdj5cclxuXHJcbjxkaXZcclxuICAjZHJvcEdyb3VwXHJcbiAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtc3RyZXRjaFwiXHJcbiAgcm9sZT1cImdyb3VwXCJcclxuICBhdHRyLmFyaWEtbGFiZWxsZWRieT1cInNlbGVjdF97e2lkfX1cIlxyXG4+XHJcbiAgPGJ1dHRvblxyXG4gICAgY2xhc3M9XCJmbGV4LTEgYnItc3RhcnQgdGV4dC1zdGFydFwiXHJcbiAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiX21vZGVsLmxlbmd0aCA+IDBcIlxyXG4gICAgW2NsYXNzLmludmFsaWRdPVwiIW5nQ29udHJvbC5jb250cm9sPy5pbnZhbGlkXCJcclxuICAgIChjbGljayk9XCJvbkNsaWNrR3JvdXAoKVwiXHJcbiAgICAoYmx1cik9XCJvblRvdWNoZWQoKVwiXHJcbiAgPlxyXG4gICAge3thY3RpdmVJdGVtVmFsdWVzfX1cclxuICA8L2J1dHRvbj5cclxuICA8YnV0dG9uXHJcbiAgICBjbGFzcz1cImQtZmxleCBici1lbmQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgIFtjbGFzcy5pbnZhbGlkXT1cIiFuZ0NvbnRyb2wuY29udHJvbD8uaW52YWxpZFwiXHJcbiAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAoY2xpY2spPVwib25DbGlja0dyb3VwKClcIlxyXG4gICAgKGJsdXIpPVwib25Ub3VjaGVkKClcIlxyXG4gID5cclxuICAgIDxpY29uXHJcbiAgICAgIHNpemU9XCIxcmVtXCJcclxuICAgICAgdHlwZT1cImNoZXZyb25cIlxyXG4gICAgICBbZmlsbF09XCJbbnVsbCwgJ2N1cnJlbnQnXVwiXHJcbiAgICAgIGZpbGxSb3RhdGU9XCI5MFwiXHJcbiAgICAgIFtzdHJva2VdPVwiWydjdXJyZW50J11cIlxyXG4gICAgICBbY2xhc3MudXBdPVwiZHJvcHVwLm9wZW5cIlxyXG4gICAgICBbY2xhc3MuZG93bl09XCJkcm9wZG93bi5vcGVuXCJcclxuICAgID48L2ljb24+XHJcbiAgPC9idXR0b24+XHJcbjwvZGl2PlxyXG5cclxuPGRpYWxvZyAjZHJvcGRvd24+XHJcbiAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRyb3BDb250ZW50XCI+PC9uZy10ZW1wbGF0ZT5cclxuPC9kaWFsb2c+XHJcblxyXG48bmctdGVtcGxhdGUgI2Ryb3BDb250ZW50PlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgYWxpZ24taXRlbXMtc3RyZXRjaFwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcclxuICAgICAgICAgIGNsYXNzPVwiZmxleC0xIGJyLXN0YXJ0IGJyLWVuZFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cIl9pc011bHRpcGxlXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgY2xhc3M9XCJici1zdGFydCBici1lbmRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tTZWxlY3RBbGwoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3tpc1NlbGVjdGVkQWxsID8gJ0Rlc2VsZWN0JyA6ICdTZWxlY3QnfX0gQWxsXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zXCJcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LTEgYWxpZ24taXRlbXMtY2VudGVyIHRleHQtc3RhcnQgZ2FwLTJcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcclxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIl9tb2RlbC5pbmNsdWRlcyhpdGVtLmtleSlcIlxyXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrKGl0ZW0pXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiam8tYnV0dG9uIHt7aXNNdWx0aXBsZSA/ICdici0yMCcgOiAnYnItNTAnfX1cIlxyXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJfbW9kZWwuaW5jbHVkZXMoaXRlbS5rZXkpXCJcclxuICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcclxuICAgICAgICAgIFtjbGFzcy5pbnZhbGlkXT1cIm5nQ29udHJvbC5jb250cm9sPy5pbnZhbGlkXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aWNvblxyXG4gICAgICAgICAgICAqbmdJZj1cIl9tb2RlbC5pbmNsdWRlcyhpdGVtLmtleSlcIlxyXG4gICAgICAgICAgICBzaXplPVwiMXJlbVwiXHJcbiAgICAgICAgICAgIFt0eXBlXT1cImlzTXVsdGlwbGUgPyAnY2hlY2snIDogJ2RvdCdcIlxyXG4gICAgICAgICAgICBbZmlsbF09XCJbbnVsbCwgJ2N1cnJlbnQnXVwiXHJcbiAgICAgICAgICAgIGZpbGxSb3RhdGU9XCI5MFwiXHJcbiAgICAgICAgICA+PC9pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIHt7aXRlbS52YWx1ZX19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
@@ -1,162 +0,0 @@
1
- import { Component, HostListener, Input, Output, Self, ViewChild, EventEmitter } from '@angular/core';
2
- import { Validators } from '@angular/forms';
3
- import { Subject } from 'rxjs';
4
- import { debounceTime } from 'rxjs/operators';
5
- import { ControlDirective } from '../../directives';
6
- import { isNumber } from '../../models';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/forms";
9
- import * as i2 from "@angular/common";
10
- export class TextComponent extends ControlDirective {
11
- get placeholder() {
12
- return this._placeholder;
13
- }
14
- set placeholder(v) {
15
- const value = v;
16
- if (typeof value !== 'string')
17
- throw new Error('[placeholder] expects: string');
18
- this._placeholder = value;
19
- }
20
- get minLength() {
21
- return this._minLength;
22
- }
23
- set minLength(value) {
24
- if (typeof value === 'string')
25
- value = parseInt(value, 10);
26
- if (value === undefined)
27
- value = null;
28
- if (!isNumber(value) || value < 0 || !Number.isInteger(value) || value === null)
29
- throw new Error('[minLength] expects: positive integer');
30
- this._minLength = value;
31
- this.validation.next();
32
- }
33
- get maxLength() {
34
- return this._maxLength;
35
- }
36
- set maxLength(value) {
37
- if (typeof value === 'string')
38
- value = parseInt(value, 10);
39
- if (value === undefined)
40
- value = null;
41
- if (!isNumber(value) || value < 0 || !Number.isInteger(value) || value === null)
42
- throw new Error('[maxLength] expects: positive integer');
43
- this._maxLength = value;
44
- this.validation.next();
45
- }
46
- set isGrow(value) {
47
- if (value === '')
48
- value = true;
49
- if (value == null)
50
- value = false;
51
- if (typeof value !== 'boolean')
52
- throw new Error('[isGrow] expects: boolean');
53
- this._isGrow = value;
54
- }
55
- get model() {
56
- return this._model;
57
- }
58
- set model(value) {
59
- if (value === '')
60
- value = null;
61
- this._model = value;
62
- this.onChange(this._model);
63
- setTimeout(() => this.setTextareaHeight());
64
- }
65
- constructor(ngControl, renderer) {
66
- super();
67
- this.ngControl = ngControl;
68
- this.renderer = renderer;
69
- this._placeholder = '';
70
- this._minLength = null;
71
- this._maxLength = null;
72
- this.isSpellCheck = false;
73
- this._isGrow = false;
74
- this.rows = 3;
75
- this.onBlur = new EventEmitter();
76
- this.onFocus = new EventEmitter();
77
- this._model = null;
78
- this.id = `_${Math.random().toString(36).substring(2, 11)}`;
79
- this.resizeSubject = new Subject();
80
- this.validation.subscribe(() => this.validate());
81
- ngControl.valueAccessor = this;
82
- this.resizeSubject
83
- .pipe(debounceTime(300))
84
- .subscribe(() => this._isGrow && this.setTextareaHeight());
85
- }
86
- ngOnDestroy() {
87
- super.ngOnDestroy();
88
- this.resizeSubject.complete();
89
- }
90
- onWindowResize() {
91
- this.resizeSubject.next();
92
- }
93
- setTextareaHeight() {
94
- if (!this.textareaElement || !this.textareaHiddenElement)
95
- return;
96
- const textarea = this.textareaElement.nativeElement;
97
- const textareaHidden = this.textareaHiddenElement.nativeElement;
98
- this.renderer.setStyle(textareaHidden, 'width', `calc(${textarea.scrollWidth}px - 1em)`);
99
- this.renderer.setStyle(textareaHidden, 'height', 'auto');
100
- this.renderer.setStyle(textarea, 'height', `${textareaHidden.scrollHeight}px`);
101
- }
102
- onChange(_model) { }
103
- registerOnChange(fn) {
104
- this.onChange = fn;
105
- }
106
- writeValue(v) {
107
- let value = v;
108
- if (value === '' || value === undefined)
109
- value = null;
110
- if (isNumber(value))
111
- value = value.toString();
112
- if (value === null || typeof value === 'string') {
113
- this._model = value;
114
- setTimeout(() => this.setTextareaHeight());
115
- }
116
- }
117
- validate() {
118
- const validators = [];
119
- if (this._minLength != null)
120
- validators.push(Validators.minLength(this._minLength));
121
- if (this._maxLength != null)
122
- validators.push(Validators.maxLength(this._maxLength));
123
- if (this.required === true)
124
- validators.push(Validators.required);
125
- this.ngControl.control?.setValidators(validators);
126
- this.ngControl.control?.updateValueAndValidity();
127
- }
128
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TextComponent, deps: [{ token: i1.NgControl, self: true }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
129
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: TextComponent, selector: "jo-text", inputs: { placeholder: "placeholder", minLength: "minLength", maxLength: "maxLength", isSpellCheck: "isSpellCheck", isGrow: "isGrow", rows: "rows" }, outputs: { onBlur: "onBlur", onFocus: "onFocus" }, host: { listeners: { "window:resize": "onWindowResize()" } }, viewQueries: [{ propertyName: "textareaElement", first: true, predicate: ["textarea"], descendants: true }, { propertyName: "textareaHiddenElement", first: true, predicate: ["textareaHidden"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<label\r\n [for]=\"id\"\r\n [class.required]=\"required\"\r\n>\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"d-flex\">\r\n <input\r\n *ngIf=\"!_isGrow\"\r\n type=\"text\"\r\n [(ngModel)]=\"model\"\r\n [class.br-end]=\"borderRadiusRight\"\r\n [class.br-start]=\"borderRadiusLeft\"\r\n class=\"flex-1\"\r\n [minlength]=\"_minLength\"\r\n [maxlength]=\"_maxLength\"\r\n [class.active]=\"_model !== null\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n [id]=\"id\"\r\n [spellcheck]=\"isSpellCheck\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onTouched(); onBlur.emit($event)\"\r\n (focus)=\"onFocus.emit($event)\"\r\n />\r\n <textarea\r\n *ngIf=\"_isGrow\"\r\n #textarea\r\n [(ngModel)]=\"model\"\r\n [class.br-end]=\"borderRadiusRight\"\r\n [class.br-start]=\"borderRadiusLeft\"\r\n class=\"flex-1\"\r\n [rows]=\"rows\"\r\n [minlength]=\"_minLength\"\r\n [maxlength]=\"_maxLength\"\r\n [class.active]=\"_model !== null\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n [id]=\"id\"\r\n [spellcheck]=\"isSpellCheck\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onTouched(); onBlur.emit($event)\"\r\n (focus)=\"onFocus.emit($event)\"\r\n ></textarea>\r\n</div>\r\n\r\n<div\r\n *ngIf=\"_isGrow\"\r\n class=\"d-flex\"\r\n>\r\n <textarea\r\n #textareaHidden\r\n [ngModel]=\"model\"\r\n class=\"hidden flex-1\"\r\n [rows]=\"rows\"\r\n ></textarea>\r\n</div>\r\n\r\n<!-- <ul *ngIf=\"ngControl.control?.errors\">\r\n <li *ngIf=\"ngControl.control?.errors?.['minlength']\">\r\n minimum length is {{minLength}}\r\n </li>\r\n <li *ngIf=\"ngControl.control?.errors?.['maxLength']\">\r\n maximum length is {{maxLength}}\r\n </li>\r\n</ul> -->", styles: [":host{display:block}textarea{font-family:inherit;cursor:text;overflow:hidden;resize:none;width:100%}textarea.hidden{padding:0;position:absolute;visibility:hidden;transition:none}input[type=text]{font-family:inherit;width:100%}\n", "body{font-family:Arial;margin:0}h1,h2,h3,h4,h5,h6{margin:0}a:not(.jo-ignore),button:not(.jo-ignore),.jo-button,input,textarea{color:inherit;background:transparent;border-width:.15rem;border-style:outset;border-color:currentColor;padding:.5rem;margin:0;font-size:1rem;line-height:1rem;font-family:inherit;min-width:0}a:not(.jo-ignore):active,a:not(.jo-ignore).active,button:not(.jo-ignore):active,button:not(.jo-ignore).active,.jo-button:active,.jo-button.active,input:active,input.active,textarea:active,textarea.active{border-style:inset}a:not(.jo-ignore):disabled,a:not(.jo-ignore).disabled,button:not(.jo-ignore):disabled,button:not(.jo-ignore).disabled,.jo-button:disabled,.jo-button.disabled,input:disabled,input.disabled,textarea:disabled,textarea.disabled{cursor:not-allowed;border-style:solid;box-shadow:none;opacity:.5}a,button,.jo-button{cursor:pointer}.card{border:1px solid currentColor;border-radius:.5rem}.card .card-header{padding:1rem;border-bottom:1px solid currentColor}.card .card-body,.card .card-footer{padding:1rem}.card .card-table{overflow-x:auto}.card .card-body+.card-table,.card .card-table+.card-body,.card .card-body+.card-body,.card .card-table+.card-table,.card .card-table+.card-footer,.card .card-body+.card-footer{border-top:1px solid currentColor}.card table{width:100%;border-collapse:collapse}.card table>thead{text-align:left}.card table>thead th{border-bottom:1px solid currentColor}.card table>tfoot td{margin-top:1px;border-top:1px solid currentColor}.card table th,.card table td{padding:1rem}.card table tbody tr>td:last-child{text-align:right}.card table tbody tr:nth-child(odd) td{-webkit-backdrop-filter:brightness(85%);backdrop-filter:brightness(85%)}.card table tbody tr:last-child>td:first-child{border-bottom-left-radius:.5rem}.card table tbody tr:last-child>td:last-child{border-bottom-right-radius:.5rem}.card table tbody tr.active td{font-weight:700}.position-relative{position:relative}.d-flex{display:flex}.flex-row{flex-direction:row}.flex-column{flex-direction:column}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-center{align-items:center}.align-items-baseline{align-items:baseline}.align-items-stretch{align-items:stretch}.justify-content-start{justify-content:flex-start}.justify-content-end{justify-content:flex-end}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-around{justify-content:space-around}.justify-content-evenly{justify-content:space-evenly}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1}.flex-2{flex:2}.flex-3{flex:3}.flex-4{flex:4}.gap-1{gap:.25rem}.m-1{margin:.25rem}.p-1{padding:.25rem}.mx-1{margin-right:.25rem;margin-left:.25rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.px-1{padding-right:.25rem;padding-left:.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.ms-1{margin-right:.25rem}.me-1{margin-left:.25rem}.mt-1{margin-top:.25rem}.mb-1{margin-bottom:.25rem}.ps-1{padding-right:.25rem}.pe-1{padding-left:.25rem}.pt-1{padding-top:.25rem}.pb-1{padding-bottom:.25rem}.gap-2{gap:.5rem}.m-2{margin:.5rem}.p-2{padding:.5rem}.mx-2{margin-right:.5rem;margin-left:.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.px-2{padding-right:.5rem;padding-left:.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.ms-2{margin-right:.5rem}.me-2{margin-left:.5rem}.mt-2{margin-top:.5rem}.mb-2{margin-bottom:.5rem}.ps-2{padding-right:.5rem}.pe-2{padding-left:.5rem}.pt-2{padding-top:.5rem}.pb-2{padding-bottom:.5rem}.gap-3{gap:1rem}.m-3{margin:1rem}.p-3{padding:1rem}.mx-3{margin-right:1rem;margin-left:1rem}.my-3{margin-top:1rem;margin-bottom:1rem}.px-3{padding-right:1rem;padding-left:1rem}.py-3{padding-top:1rem;padding-bottom:1rem}.ms-3{margin-right:1rem}.me-3{margin-left:1rem}.mt-3{margin-top:1rem}.mb-3{margin-bottom:1rem}.ps-3{padding-right:1rem}.pe-3{padding-left:1rem}.pt-3{padding-top:1rem}.pb-3{padding-bottom:1rem}.gap-4{gap:1.5rem}.m-4{margin:1.5rem}.p-4{padding:1.5rem}.mx-4{margin-right:1.5rem;margin-left:1.5rem}.my-4{margin-top:1.5rem;margin-bottom:1.5rem}.px-4{padding-right:1.5rem;padding-left:1.5rem}.py-4{padding-top:1.5rem;padding-bottom:1.5rem}.ms-4{margin-right:1.5rem}.me-4{margin-left:1.5rem}.mt-4{margin-top:1.5rem}.mb-4{margin-bottom:1.5rem}.ps-4{padding-right:1.5rem}.pe-4{padding-left:1.5rem}.pt-4{padding-top:1.5rem}.pb-4{padding-bottom:1.5rem}.gap-5{gap:2rem}.m-5{margin:2rem}.p-5{padding:2rem}.mx-5{margin-right:2rem;margin-left:2rem}.my-5{margin-top:2rem;margin-bottom:2rem}.px-5{padding-right:2rem;padding-left:2rem}.py-5{padding-top:2rem;padding-bottom:2rem}.ms-5{margin-right:2rem}.me-5{margin-left:2rem}.mt-5{margin-top:2rem}.mb-5{margin-bottom:2rem}.ps-5{padding-right:2rem}.pe-5{padding-left:2rem}.pt-5{padding-top:2rem}.pb-5{padding-bottom:2rem}.border{border:1px solid currentColor}.br-start{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.br-end{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.white-space-nowrap{white-space:nowrap}.text-end{text-align:right}.text-start{text-align:left}.text-center{text-align:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}label{display:block;padding-bottom:.5rem;font-weight:700}label:empty{display:none}label.required:after{content:\"*\"}ul{list-style:none;margin:0;padding:0}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
130
- }
131
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TextComponent, decorators: [{
132
- type: Component,
133
- args: [{ selector: 'jo-text', template: "<label\r\n [for]=\"id\"\r\n [class.required]=\"required\"\r\n>\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"d-flex\">\r\n <input\r\n *ngIf=\"!_isGrow\"\r\n type=\"text\"\r\n [(ngModel)]=\"model\"\r\n [class.br-end]=\"borderRadiusRight\"\r\n [class.br-start]=\"borderRadiusLeft\"\r\n class=\"flex-1\"\r\n [minlength]=\"_minLength\"\r\n [maxlength]=\"_maxLength\"\r\n [class.active]=\"_model !== null\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n [id]=\"id\"\r\n [spellcheck]=\"isSpellCheck\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onTouched(); onBlur.emit($event)\"\r\n (focus)=\"onFocus.emit($event)\"\r\n />\r\n <textarea\r\n *ngIf=\"_isGrow\"\r\n #textarea\r\n [(ngModel)]=\"model\"\r\n [class.br-end]=\"borderRadiusRight\"\r\n [class.br-start]=\"borderRadiusLeft\"\r\n class=\"flex-1\"\r\n [rows]=\"rows\"\r\n [minlength]=\"_minLength\"\r\n [maxlength]=\"_maxLength\"\r\n [class.active]=\"_model !== null\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n [id]=\"id\"\r\n [spellcheck]=\"isSpellCheck\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onTouched(); onBlur.emit($event)\"\r\n (focus)=\"onFocus.emit($event)\"\r\n ></textarea>\r\n</div>\r\n\r\n<div\r\n *ngIf=\"_isGrow\"\r\n class=\"d-flex\"\r\n>\r\n <textarea\r\n #textareaHidden\r\n [ngModel]=\"model\"\r\n class=\"hidden flex-1\"\r\n [rows]=\"rows\"\r\n ></textarea>\r\n</div>\r\n\r\n<!-- <ul *ngIf=\"ngControl.control?.errors\">\r\n <li *ngIf=\"ngControl.control?.errors?.['minlength']\">\r\n minimum length is {{minLength}}\r\n </li>\r\n <li *ngIf=\"ngControl.control?.errors?.['maxLength']\">\r\n maximum length is {{maxLength}}\r\n </li>\r\n</ul> -->", styles: [":host{display:block}textarea{font-family:inherit;cursor:text;overflow:hidden;resize:none;width:100%}textarea.hidden{padding:0;position:absolute;visibility:hidden;transition:none}input[type=text]{font-family:inherit;width:100%}\n", "body{font-family:Arial;margin:0}h1,h2,h3,h4,h5,h6{margin:0}a:not(.jo-ignore),button:not(.jo-ignore),.jo-button,input,textarea{color:inherit;background:transparent;border-width:.15rem;border-style:outset;border-color:currentColor;padding:.5rem;margin:0;font-size:1rem;line-height:1rem;font-family:inherit;min-width:0}a:not(.jo-ignore):active,a:not(.jo-ignore).active,button:not(.jo-ignore):active,button:not(.jo-ignore).active,.jo-button:active,.jo-button.active,input:active,input.active,textarea:active,textarea.active{border-style:inset}a:not(.jo-ignore):disabled,a:not(.jo-ignore).disabled,button:not(.jo-ignore):disabled,button:not(.jo-ignore).disabled,.jo-button:disabled,.jo-button.disabled,input:disabled,input.disabled,textarea:disabled,textarea.disabled{cursor:not-allowed;border-style:solid;box-shadow:none;opacity:.5}a,button,.jo-button{cursor:pointer}.card{border:1px solid currentColor;border-radius:.5rem}.card .card-header{padding:1rem;border-bottom:1px solid currentColor}.card .card-body,.card .card-footer{padding:1rem}.card .card-table{overflow-x:auto}.card .card-body+.card-table,.card .card-table+.card-body,.card .card-body+.card-body,.card .card-table+.card-table,.card .card-table+.card-footer,.card .card-body+.card-footer{border-top:1px solid currentColor}.card table{width:100%;border-collapse:collapse}.card table>thead{text-align:left}.card table>thead th{border-bottom:1px solid currentColor}.card table>tfoot td{margin-top:1px;border-top:1px solid currentColor}.card table th,.card table td{padding:1rem}.card table tbody tr>td:last-child{text-align:right}.card table tbody tr:nth-child(odd) td{-webkit-backdrop-filter:brightness(85%);backdrop-filter:brightness(85%)}.card table tbody tr:last-child>td:first-child{border-bottom-left-radius:.5rem}.card table tbody tr:last-child>td:last-child{border-bottom-right-radius:.5rem}.card table tbody tr.active td{font-weight:700}.position-relative{position:relative}.d-flex{display:flex}.flex-row{flex-direction:row}.flex-column{flex-direction:column}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-center{align-items:center}.align-items-baseline{align-items:baseline}.align-items-stretch{align-items:stretch}.justify-content-start{justify-content:flex-start}.justify-content-end{justify-content:flex-end}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-around{justify-content:space-around}.justify-content-evenly{justify-content:space-evenly}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1}.flex-2{flex:2}.flex-3{flex:3}.flex-4{flex:4}.gap-1{gap:.25rem}.m-1{margin:.25rem}.p-1{padding:.25rem}.mx-1{margin-right:.25rem;margin-left:.25rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.px-1{padding-right:.25rem;padding-left:.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.ms-1{margin-right:.25rem}.me-1{margin-left:.25rem}.mt-1{margin-top:.25rem}.mb-1{margin-bottom:.25rem}.ps-1{padding-right:.25rem}.pe-1{padding-left:.25rem}.pt-1{padding-top:.25rem}.pb-1{padding-bottom:.25rem}.gap-2{gap:.5rem}.m-2{margin:.5rem}.p-2{padding:.5rem}.mx-2{margin-right:.5rem;margin-left:.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.px-2{padding-right:.5rem;padding-left:.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.ms-2{margin-right:.5rem}.me-2{margin-left:.5rem}.mt-2{margin-top:.5rem}.mb-2{margin-bottom:.5rem}.ps-2{padding-right:.5rem}.pe-2{padding-left:.5rem}.pt-2{padding-top:.5rem}.pb-2{padding-bottom:.5rem}.gap-3{gap:1rem}.m-3{margin:1rem}.p-3{padding:1rem}.mx-3{margin-right:1rem;margin-left:1rem}.my-3{margin-top:1rem;margin-bottom:1rem}.px-3{padding-right:1rem;padding-left:1rem}.py-3{padding-top:1rem;padding-bottom:1rem}.ms-3{margin-right:1rem}.me-3{margin-left:1rem}.mt-3{margin-top:1rem}.mb-3{margin-bottom:1rem}.ps-3{padding-right:1rem}.pe-3{padding-left:1rem}.pt-3{padding-top:1rem}.pb-3{padding-bottom:1rem}.gap-4{gap:1.5rem}.m-4{margin:1.5rem}.p-4{padding:1.5rem}.mx-4{margin-right:1.5rem;margin-left:1.5rem}.my-4{margin-top:1.5rem;margin-bottom:1.5rem}.px-4{padding-right:1.5rem;padding-left:1.5rem}.py-4{padding-top:1.5rem;padding-bottom:1.5rem}.ms-4{margin-right:1.5rem}.me-4{margin-left:1.5rem}.mt-4{margin-top:1.5rem}.mb-4{margin-bottom:1.5rem}.ps-4{padding-right:1.5rem}.pe-4{padding-left:1.5rem}.pt-4{padding-top:1.5rem}.pb-4{padding-bottom:1.5rem}.gap-5{gap:2rem}.m-5{margin:2rem}.p-5{padding:2rem}.mx-5{margin-right:2rem;margin-left:2rem}.my-5{margin-top:2rem;margin-bottom:2rem}.px-5{padding-right:2rem;padding-left:2rem}.py-5{padding-top:2rem;padding-bottom:2rem}.ms-5{margin-right:2rem}.me-5{margin-left:2rem}.mt-5{margin-top:2rem}.mb-5{margin-bottom:2rem}.ps-5{padding-right:2rem}.pe-5{padding-left:2rem}.pt-5{padding-top:2rem}.pb-5{padding-bottom:2rem}.border{border:1px solid currentColor}.br-start{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.br-end{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.white-space-nowrap{white-space:nowrap}.text-end{text-align:right}.text-start{text-align:left}.text-center{text-align:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}label{display:block;padding-bottom:.5rem;font-weight:700}label:empty{display:none}label.required:after{content:\"*\"}ul{list-style:none;margin:0;padding:0}\n"] }]
134
- }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
135
- type: Self
136
- }] }, { type: i0.Renderer2 }], propDecorators: { placeholder: [{
137
- type: Input
138
- }], minLength: [{
139
- type: Input
140
- }], maxLength: [{
141
- type: Input
142
- }], isSpellCheck: [{
143
- type: Input
144
- }], isGrow: [{
145
- type: Input
146
- }], rows: [{
147
- type: Input
148
- }], onBlur: [{
149
- type: Output
150
- }], onFocus: [{
151
- type: Output
152
- }], textareaElement: [{
153
- type: ViewChild,
154
- args: ['textarea']
155
- }], textareaHiddenElement: [{
156
- type: ViewChild,
157
- args: ['textareaHidden']
158
- }], onWindowResize: [{
159
- type: HostListener,
160
- args: ['window:resize']
161
- }] } });
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGFvcy1jb250cm9sL3NyYy9saWIvY29tcG9uZW50cy90ZXh0L3RleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhb3MtY29udHJvbC9zcmMvbGliL2NvbXBvbmVudHMvdGV4dC90ZXh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWEsSUFBSSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFnRCxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7O0FBVXhDLE1BQU0sT0FBTyxhQUFjLFNBQVEsZ0JBQWdCO0lBQ2pELElBQ0ksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUMsQ0FBUztRQUN2QixNQUFNLEtBQUssR0FBRyxDQUFZLENBQUM7UUFDM0IsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBR0QsSUFDSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENB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LFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztJQUNuRCxDQUFDOzhHQXBKVSxhQUFhO2tHQUFiLGFBQWEsb2lCQ2hCMUIsaTBEQWtFUzs7MkZEbERJLGFBQWE7a0JBUnpCLFNBQVM7K0JBQ0UsU0FBUzs7MEJBNkZoQixJQUFJO2lFQXBGSCxXQUFXO3NCQURkLEtBQUs7Z0JBYUYsU0FBUztzQkFEWixLQUFLO2dCQWlCRixTQUFTO3NCQURaLEtBQUs7Z0JBaUJOLFlBQVk7c0JBRFgsS0FBSztnQkFJRixNQUFNO3NCQURULEtBQUs7Z0JBWUcsSUFBSTtzQkFBWixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUVnQixlQUFlO3NCQUFyQyxTQUFTO3VCQUFDLFVBQVU7Z0JBQ1EscUJBQXFCO3NCQUFqRCxTQUFTO3VCQUFDLGdCQUFnQjtnQkFxQzNCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgUmVuZGVyZXIyLCBTZWxmLCBWaWV3Q2hpbGQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XHJcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnam8tdGV4dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogW1xyXG4gICAgJy4vdGV4dC5jb21wb25lbnQuc2NzcycsXHJcbiAgICAnLi4vLi4vc3R5bGVzLnNjc3MnLFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRDb21wb25lbnQgZXh0ZW5kcyBDb250cm9sRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgQElucHV0KClcclxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XHJcbiAgfVxyXG4gIHNldCBwbGFjZWhvbGRlcih2OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdiBhcyB1bmtub3duO1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignW3BsYWNlaG9sZGVyXSBleHBlY3RzOiBzdHJpbmcnKTtcclxuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XHJcbiAgfVxyXG4gIF9wbGFjZWhvbGRlciA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBtaW5MZW5ndGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWluTGVuZ3RoO1xyXG4gIH1cclxuICBzZXQgbWluTGVuZ3RoKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJylcclxuICAgICAgdmFsdWUgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xyXG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpXHJcbiAgICAgIHZhbHVlID0gbnVsbDtcclxuICAgIGlmICghaXNOdW1iZXIodmFsdWUpIHx8IHZhbHVlIDwgMCB8fCAhTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkgfHwgdmFsdWUgPT09IG51bGwpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignW21pbkxlbmd0aF0gZXhwZWN0czogcG9zaXRpdmUgaW50ZWdlcicpO1xyXG4gICAgdGhpcy5fbWluTGVuZ3RoID0gdmFsdWU7XHJcbiAgICB0aGlzLnZhbGlkYXRpb24ubmV4dCgpO1xyXG4gIH1cclxuICBfbWluTGVuZ3RoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgbWF4TGVuZ3RoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX21heExlbmd0aDtcclxuICB9XHJcbiAgc2V0IG1heExlbmd0aCh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpXHJcbiAgICAgIHZhbHVlID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcclxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICB2YWx1ZSA9IG51bGw7XHJcbiAgICBpZiAoIWlzTnVtYmVyKHZhbHVlKSB8fCB2YWx1ZSA8IDAgfHwgIU51bWJlci5pc0ludGVnZXIodmFsdWUpIHx8IHZhbHVlID09PSBudWxsKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ttYXhMZW5ndGhdIGV4cGVjdHM6IHBvc2l0aXZlIGludGVnZXInKTtcclxuICAgIHRoaXMuX21heExlbmd0aCA9IHZhbHVlO1xyXG4gICAgdGhpcy52YWxpZGF0aW9uLm5leHQoKTtcclxuICB9XHJcbiAgX21heExlbmd0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaXNTcGVsbENoZWNrID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGlzR3Jvdyh2YWx1ZTogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICBpZiAodmFsdWUgPT09ICcnKVxyXG4gICAgICB2YWx1ZSA9IHRydWU7XHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbClcclxuICAgICAgdmFsdWUgPSBmYWxzZTtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJylcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdbaXNHcm93XSBleHBlY3RzOiBib29sZWFuJyk7XHJcbiAgICB0aGlzLl9pc0dyb3cgPSB2YWx1ZTtcclxuICB9XHJcbiAgX2lzR3JvdyA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSByb3dzID0gMztcclxuXHJcbiAgQE91dHB1dCgpIG9uQmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgb25Gb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgndGV4dGFyZWEnKSB0ZXh0YXJlYUVsZW1lbnQ/OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3RleHRhcmVhSGlkZGVuJykgdGV4dGFyZWFIaWRkZW5FbGVtZW50PzogRWxlbWVudFJlZjtcclxuXHJcbiAgZ2V0IG1vZGVsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGVsO1xyXG4gIH1cclxuICBzZXQgbW9kZWwodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gJycpXHJcbiAgICAgIHZhbHVlID0gbnVsbDtcclxuXHJcbiAgICB0aGlzLl9tb2RlbCA9IHZhbHVlO1xyXG5cclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5fbW9kZWwpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldFRleHRhcmVhSGVpZ2h0KCkpO1xyXG4gIH1cclxuICBfbW9kZWw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBpZCA9IGBfJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgMTEpfWA7XHJcbiAgcmVzaXplU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy52YWxpZGF0aW9uLnN1YnNjcmliZSgoKSA9PiB0aGlzLnZhbGlkYXRlKCkpO1xyXG4gICAgbmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xyXG4gICAgdGhpcy5yZXNpemVTdWJqZWN0XHJcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgzMDApKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2lzR3JvdyAmJiB0aGlzLnNldFRleHRhcmVhSGVpZ2h0KCkpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gICAgdGhpcy5yZXNpemVTdWJqZWN0LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcclxuICBvbldpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzaXplU3ViamVjdC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBzZXRUZXh0YXJlYUhlaWdodCgpIHtcclxuICAgIGlmICghdGhpcy50ZXh0YXJlYUVsZW1lbnQgfHwgIXRoaXMudGV4dGFyZWFIaWRkZW5FbGVtZW50KVxyXG4gICAgICByZXR1cm47XHJcbiAgICBjb25zdCB0ZXh0YXJlYSA9IHRoaXMudGV4dGFyZWFFbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCB0ZXh0YXJlYUhpZGRlbiA9IHRoaXMudGV4dGFyZWFIaWRkZW5FbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRleHRhcmVhSGlkZGVuLCAnd2lkdGgnLCBgY2FsYygke3RleHRhcmVhLnNjcm9sbFdpZHRofXB4IC0gMWVtKWApO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0ZXh0YXJlYUhpZGRlbiwgJ2hlaWdodCcsICdhdXRvJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRleHRhcmVhLCAnaGVpZ2h0JywgYCR7dGV4dGFyZWFIaWRkZW4uc2Nyb2xsSGVpZ2h0fXB4YCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShfbW9kZWw6IHN0cmluZyB8IG51bGwpIHsgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodjogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgbGV0IHZhbHVlID0gdiBhcyB1bmtub3duO1xyXG4gICAgaWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICB2YWx1ZSA9IG51bGw7XHJcbiAgICBpZiAoaXNOdW1iZXIodmFsdWUpKVxyXG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICB0aGlzLl9tb2RlbCA9IHZhbHVlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0VGV4dGFyZWFIZWlnaHQoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRlKCkge1xyXG4gICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLl9taW5MZW5ndGggIT0gbnVsbClcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMuX21pbkxlbmd0aCkpO1xyXG5cclxuICAgIGlmICh0aGlzLl9tYXhMZW5ndGggIT0gbnVsbClcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMuX21heExlbmd0aCkpO1xyXG5cclxuICAgIGlmICh0aGlzLnJlcXVpcmVkID09PSB0cnVlKVxyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcblxyXG4gICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbD8uc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcbn1cclxuIiwiPGxhYmVsXHJcbiAgW2Zvcl09XCJpZFwiXHJcbiAgW2NsYXNzLnJlcXVpcmVkXT1cInJlcXVpcmVkXCJcclxuPlxyXG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuPC9sYWJlbD5cclxuXHJcbjxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICA8aW5wdXRcclxuICAgICpuZ0lmPVwiIV9pc0dyb3dcIlxyXG4gICAgdHlwZT1cInRleHRcIlxyXG4gICAgWyhuZ01vZGVsKV09XCJtb2RlbFwiXHJcbiAgICBbY2xhc3MuYnItZW5kXT1cImJvcmRlclJhZGl1c1JpZ2h0XCJcclxuICAgIFtjbGFzcy5ici1zdGFydF09XCJib3JkZXJSYWRpdXNMZWZ0XCJcclxuICAgIGNsYXNzPVwiZmxleC0xXCJcclxuICAgIFttaW5sZW5ndGhdPVwiX21pbkxlbmd0aFwiXHJcbiAgICBbbWF4bGVuZ3RoXT1cIl9tYXhMZW5ndGhcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJfbW9kZWwgIT09IG51bGxcIlxyXG4gICAgW2NsYXNzLmludmFsaWRdPVwibmdDb250cm9sLmNvbnRyb2w/LmludmFsaWRcIlxyXG4gICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgW2lkXT1cImlkXCJcclxuICAgIFtzcGVsbGNoZWNrXT1cImlzU3BlbGxDaGVja1wiXHJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgKGJsdXIpPVwib25Ub3VjaGVkKCk7IG9uQmx1ci5lbWl0KCRldmVudClcIlxyXG4gICAgKGZvY3VzKT1cIm9uRm9jdXMuZW1pdCgkZXZlbnQpXCJcclxuICAvPlxyXG4gIDx0ZXh0YXJlYVxyXG4gICAgKm5nSWY9XCJfaXNHcm93XCJcclxuICAgICN0ZXh0YXJlYVxyXG4gICAgWyhuZ01vZGVsKV09XCJtb2RlbFwiXHJcbiAgICBbY2xhc3MuYnItZW5kXT1cImJvcmRlclJhZGl1c1JpZ2h0XCJcclxuICAgIFtjbGFzcy5ici1zdGFydF09XCJib3JkZXJSYWRpdXNMZWZ0XCJcclxuICAgIGNsYXNzPVwiZmxleC0xXCJcclxuICAgIFtyb3dzXT1cInJvd3NcIlxyXG4gICAgW21pbmxlbmd0aF09XCJfbWluTGVuZ3RoXCJcclxuICAgIFttYXhsZW5ndGhdPVwiX21heExlbmd0aFwiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cIl9tb2RlbCAhPT0gbnVsbFwiXHJcbiAgICBbY2xhc3MuaW52YWxpZF09XCJuZ0NvbnRyb2wuY29udHJvbD8uaW52YWxpZFwiXHJcbiAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXHJcbiAgICBbaWRdPVwiaWRcIlxyXG4gICAgW3NwZWxsY2hlY2tdPVwiaXNTcGVsbENoZWNrXCJcclxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAoYmx1cik9XCJvblRvdWNoZWQoKTsgb25CbHVyLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoZm9jdXMpPVwib25Gb2N1cy5lbWl0KCRldmVudClcIlxyXG4gID48L3RleHRhcmVhPlxyXG48L2Rpdj5cclxuXHJcbjxkaXZcclxuICAqbmdJZj1cIl9pc0dyb3dcIlxyXG4gIGNsYXNzPVwiZC1mbGV4XCJcclxuPlxyXG4gIDx0ZXh0YXJlYVxyXG4gICAgI3RleHRhcmVhSGlkZGVuXHJcbiAgICBbbmdNb2RlbF09XCJtb2RlbFwiXHJcbiAgICBjbGFzcz1cImhpZGRlbiBmbGV4LTFcIlxyXG4gICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgPjwvdGV4dGFyZWE+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSA8dWwgKm5nSWY9XCJuZ0NvbnRyb2wuY29udHJvbD8uZXJyb3JzXCI+XHJcbiAgPGxpICpuZ0lmPVwibmdDb250cm9sLmNvbnRyb2w/LmVycm9ycz8uWydtaW5sZW5ndGgnXVwiPlxyXG4gICAgbWluaW11bSBsZW5ndGggaXMge3ttaW5MZW5ndGh9fVxyXG4gIDwvbGk+XHJcbiAgPGxpICpuZ0lmPVwibmdDb250cm9sLmNvbnRyb2w/LmVycm9ycz8uWydtYXhMZW5ndGgnXVwiPlxyXG4gICAgbWF4aW11bSBsZW5ndGggaXMge3ttYXhMZW5ndGh9fVxyXG4gIDwvbGk+XHJcbjwvdWw+IC0tPiJdfQ==
@@ -1,41 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class BorderRadiusDirective {
4
- get borderRadiusRight() {
5
- return this._borderRadiusRight;
6
- }
7
- set borderRadiusRight(value) {
8
- if (value === '')
9
- value = true;
10
- if (value == null)
11
- value = false;
12
- this._borderRadiusRight = value;
13
- }
14
- get borderRadiusLeft() {
15
- return this._borderRadiusLeft;
16
- }
17
- set borderRadiusLeft(value) {
18
- if (value === '')
19
- value = true;
20
- if (value == null)
21
- value = false;
22
- this._borderRadiusLeft = value;
23
- }
24
- constructor() {
25
- this._borderRadiusRight = true;
26
- this._borderRadiusLeft = true;
27
- }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BorderRadiusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
29
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: BorderRadiusDirective, selector: "[joBorderRadius]", inputs: { borderRadiusRight: "borderRadiusRight", borderRadiusLeft: "borderRadiusLeft" }, ngImport: i0 }); }
30
- }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BorderRadiusDirective, decorators: [{
32
- type: Directive,
33
- args: [{
34
- selector: '[joBorderRadius]'
35
- }]
36
- }], ctorParameters: () => [], propDecorators: { borderRadiusRight: [{
37
- type: Input
38
- }], borderRadiusLeft: [{
39
- type: Input
40
- }] } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9yZGVyLXJhZGl1cy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGFvcy1jb250cm9sL3NyYy9saWIvZGlyZWN0aXZlcy9ib3JkZXItcmFkaXVzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLakQsTUFBTSxPQUFPLHFCQUFxQjtJQUVoQyxJQUNJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBSSxpQkFBaUIsQ0FBQyxLQUFtQjtRQUN2QyxJQUFJLEtBQUssS0FBSyxFQUFFO1lBQ2QsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNmLElBQUksS0FBSyxJQUFJLElBQUk7WUFDZixLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUdELElBQ0ksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFDRCxJQUFJLGdCQUFnQixDQUFDLEtBQW1CO1FBQ3RDLElBQUksS0FBSyxLQUFLLEVBQUU7WUFDZCxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2YsSUFBSSxLQUFLLElBQUksSUFBSTtZQUNmLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDaEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBR0Q7UUFmQSx1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFhMUIsc0JBQWlCLEdBQUcsSUFBSSxDQUFDO0lBRVQsQ0FBQzs4R0E1Qk4scUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtpQkFDN0I7d0RBSUssaUJBQWlCO3NCQURwQixLQUFLO2dCQWNGLGdCQUFnQjtzQkFEbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2pvQm9yZGVyUmFkaXVzXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIEJvcmRlclJhZGl1c0RpcmVjdGl2ZSB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGJvcmRlclJhZGl1c1JpZ2h0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2JvcmRlclJhZGl1c1JpZ2h0O1xyXG4gIH1cclxuICBzZXQgYm9yZGVyUmFkaXVzUmlnaHQodmFsdWU6IGJvb2xlYW4gfCAnJykge1xyXG4gICAgaWYgKHZhbHVlID09PSAnJylcclxuICAgICAgdmFsdWUgPSB0cnVlO1xyXG4gICAgaWYgKHZhbHVlID09IG51bGwpXHJcbiAgICAgIHZhbHVlID0gZmFsc2U7XHJcbiAgICB0aGlzLl9ib3JkZXJSYWRpdXNSaWdodCA9IHZhbHVlO1xyXG4gIH1cclxuICBfYm9yZGVyUmFkaXVzUmlnaHQgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBib3JkZXJSYWRpdXNMZWZ0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2JvcmRlclJhZGl1c0xlZnQ7XHJcbiAgfVxyXG4gIHNldCBib3JkZXJSYWRpdXNMZWZ0KHZhbHVlOiBib29sZWFuIHwgJycpIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gJycpXHJcbiAgICAgIHZhbHVlID0gdHJ1ZTtcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKVxyXG4gICAgICB2YWx1ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5fYm9yZGVyUmFkaXVzTGVmdCA9IHZhbHVlO1xyXG4gIH1cclxuICBfYm9yZGVyUmFkaXVzTGVmdCA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG59XHJcbiJdfQ==
@@ -1,71 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import { filter, from, interval, map, Subject, take, takeUntil } from 'rxjs';
3
- import { BusyComponent } from '../components';
4
- import * as i0 from "@angular/core";
5
- export class BusyDirective {
6
- constructor(element, viewContainerRef, renderer) {
7
- this.element = element;
8
- this.viewContainerRef = viewContainerRef;
9
- this.renderer = renderer;
10
- this.host = this.element.nativeElement;
11
- this.endSubscription$ = new Subject();
12
- }
13
- ngOnChanges(changes) {
14
- if (changes['asyncEvents'].currentValue) {
15
- const valueArray = Array.isArray(changes['asyncEvents'].currentValue)
16
- ? changes['asyncEvents'].currentValue
17
- : [changes['asyncEvents'].currentValue];
18
- const subscriptionValueArray = valueArray
19
- .filter(item => Boolean(item))
20
- .map(item => {
21
- if (item instanceof Promise) {
22
- return from(item).subscribe();
23
- }
24
- return item;
25
- });
26
- if (subscriptionValueArray.length > 0) {
27
- if (this.busySubscription && !this.busySubscription.closed) {
28
- this.endSubscription$.next();
29
- }
30
- this.addSpinner(subscriptionValueArray);
31
- }
32
- }
33
- }
34
- ngOnDestroy() {
35
- this.endSubscription$.complete();
36
- }
37
- addSpinner(asyncEvents) {
38
- const componentRef = this.viewContainerRef.createComponent(BusyComponent);
39
- this.insertedNode = this.host.insertBefore(componentRef.location.nativeElement, this.host.firstChild);
40
- this.renderer.addClass(this.host, 'position-relative');
41
- this.renderer.addClass(this.host, 'overflow-hidden');
42
- this.busySubscription = interval()
43
- .pipe(map(() => asyncEvents.every(item => item.closed)), filter(everySubscriptionClosed => Boolean(everySubscriptionClosed)), take(1), takeUntil(this.endSubscription$))
44
- .subscribe(({
45
- complete: () => {
46
- this.removeSpinner();
47
- },
48
- error: () => {
49
- this.removeSpinner();
50
- },
51
- }));
52
- }
53
- removeSpinner() {
54
- if (this.insertedNode)
55
- this.host.removeChild(this.insertedNode);
56
- this.renderer.removeClass(this.host, 'position-relative');
57
- this.renderer.removeClass(this.host, 'overflow-hidden');
58
- }
59
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BusyDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
60
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: BusyDirective, selector: "[joBusy]", inputs: { asyncEvents: ["joBusy", "asyncEvents"] }, usesOnChanges: true, ngImport: i0 }); }
61
- }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BusyDirective, decorators: [{
63
- type: Directive,
64
- args: [{
65
- selector: '[joBusy]'
66
- }]
67
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }], propDecorators: { asyncEvents: [{
68
- type: Input,
69
- args: ['joBusy']
70
- }] } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzeS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGFvcy1jb250cm9sL3NyYy9saWIvZGlyZWN0aXZlcy9idXN5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRCLFNBQVMsRUFBYyxLQUFLLEVBQThDLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFnQixJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzlDLE1BQU0sT0FBTyxhQUFhO0lBUXhCLFlBQ1UsT0FBbUIsRUFDbkIsZ0JBQWtDLEVBQ2xDLFFBQW1CO1FBRm5CLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBUjdCLFNBQUksR0FBZ0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFFL0MscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQU9uQyxDQUFDO0lBRUwsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVksQ0FBQztnQkFDbkUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZO2dCQUNyQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFMUMsTUFBTSxzQkFBc0IsR0FBRyxVQUFVO2lCQUN0QyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQzdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDVixJQUFJLElBQUksWUFBWSxPQUFPLEVBQUUsQ0FBQztvQkFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2hDLENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztZQUVMLElBQUksc0JBQXNCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDM0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMvQixDQUFDO2dCQUNELElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFTyxVQUFVLENBQUMsV0FBMkI7UUFDNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxFQUFFO2FBQy9CLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUNqRCxNQUFNLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEVBQ25FLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQ2pDO2FBQ0EsU0FBUyxDQUFDLENBQUM7WUFDVixRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUNiLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsQ0FBQztTQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxJQUFJLENBQUMsWUFBWTtZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUMxRCxDQUFDOzhHQXJFVSxhQUFhO2tHQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBSHpCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFVBQVU7aUJBQ3JCO3NJQUVrQixXQUFXO3NCQUEzQixLQUFLO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlcywgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIGZyb20sIGludGVydmFsLCBtYXAsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJ1c3lDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2pvQnVzeV0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCdXN5RGlyZWN0aXZlIHtcclxuICBASW5wdXQoJ2pvQnVzeScpIGFzeW5jRXZlbnRzPzogU3Vic2NyaXB0aW9uIHwgU3Vic2NyaXB0aW9uW10gfCBQcm9taXNlPGFueT4gfCBQcm9taXNlPGFueT5bXTtcclxuXHJcbiAgaG9zdDogSFRNTEVsZW1lbnQgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICBpbnNlcnRlZE5vZGU/OiBOb2RlO1xyXG4gIGVuZFN1YnNjcmlwdGlvbiQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGJ1c3lTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydhc3luY0V2ZW50cyddLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICBjb25zdCB2YWx1ZUFycmF5ID0gQXJyYXkuaXNBcnJheShjaGFuZ2VzWydhc3luY0V2ZW50cyddLmN1cnJlbnRWYWx1ZSlcclxuICAgICAgICA/IGNoYW5nZXNbJ2FzeW5jRXZlbnRzJ10uY3VycmVudFZhbHVlXHJcbiAgICAgICAgOiBbY2hhbmdlc1snYXN5bmNFdmVudHMnXS5jdXJyZW50VmFsdWVdO1xyXG5cclxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uVmFsdWVBcnJheSA9IHZhbHVlQXJyYXlcclxuICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gQm9vbGVhbihpdGVtKSlcclxuICAgICAgICAubWFwKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmcm9tKGl0ZW0pLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAoc3Vic2NyaXB0aW9uVmFsdWVBcnJheS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYnVzeVN1YnNjcmlwdGlvbiAmJiAhdGhpcy5idXN5U3Vic2NyaXB0aW9uLmNsb3NlZCkge1xyXG4gICAgICAgICAgdGhpcy5lbmRTdWJzY3JpcHRpb24kLm5leHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hZGRTcGlubmVyKHN1YnNjcmlwdGlvblZhbHVlQXJyYXkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZW5kU3Vic2NyaXB0aW9uJC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRTcGlubmVyKGFzeW5jRXZlbnRzOiBTdWJzY3JpcHRpb25bXSk6IHZvaWQge1xyXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChCdXN5Q29tcG9uZW50KTtcclxuICAgIHRoaXMuaW5zZXJ0ZWROb2RlID0gdGhpcy5ob3N0Lmluc2VydEJlZm9yZShjb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCwgdGhpcy5ob3N0LmZpcnN0Q2hpbGQpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmhvc3QsICdwb3NpdGlvbi1yZWxhdGl2ZScpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmhvc3QsICdvdmVyZmxvdy1oaWRkZW4nKTtcclxuICAgIHRoaXMuYnVzeVN1YnNjcmlwdGlvbiA9IGludGVydmFsKClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKCgpID0+IGFzeW5jRXZlbnRzLmV2ZXJ5KGl0ZW0gPT4gaXRlbS5jbG9zZWQpKSxcclxuICAgICAgICBmaWx0ZXIoZXZlcnlTdWJzY3JpcHRpb25DbG9zZWQgPT4gQm9vbGVhbihldmVyeVN1YnNjcmlwdGlvbkNsb3NlZCkpLFxyXG4gICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZW5kU3Vic2NyaXB0aW9uJCksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoe1xyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVNwaW5uZXIoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVNwaW5uZXIoKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZVNwaW5uZXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbnNlcnRlZE5vZGUpXHJcbiAgICAgIHRoaXMuaG9zdC5yZW1vdmVDaGlsZCh0aGlzLmluc2VydGVkTm9kZSk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuaG9zdCwgJ3Bvc2l0aW9uLXJlbGF0aXZlJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuaG9zdCwgJ292ZXJmbG93LWhpZGRlbicpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,46 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import { BorderRadiusDirective } from './border-radius.directive';
4
- import * as i0 from "@angular/core";
5
- export class ControlDirective extends BorderRadiusDirective {
6
- get required() {
7
- return this._required;
8
- }
9
- set required(value) {
10
- if (value === '')
11
- value = true;
12
- if (value == null)
13
- value = false;
14
- if (typeof value !== 'boolean')
15
- throw new Error('required input must be: boolean');
16
- this._required = value;
17
- this.validation.next();
18
- }
19
- constructor() {
20
- super();
21
- this._required = false;
22
- this.isDisabled = false;
23
- this.validation = new Subject();
24
- }
25
- ngOnDestroy() {
26
- this.validation.complete();
27
- }
28
- onTouched() { }
29
- registerOnTouched(fn) {
30
- this.onTouched = fn;
31
- }
32
- setDisabledState(isDisabled) {
33
- this.isDisabled = isDisabled;
34
- }
35
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
36
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: ControlDirective, selector: "[joControl]", inputs: { required: "required" }, usesInheritance: true, ngImport: i0 }); }
37
- }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ControlDirective, decorators: [{
39
- type: Directive,
40
- args: [{
41
- selector: '[joControl]'
42
- }]
43
- }], ctorParameters: () => [], propDecorators: { required: [{
44
- type: Input
45
- }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGFvcy1jb250cm9sL3NyYy9saWIvZGlyZWN0aXZlcy9jb250cm9sLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUtsRSxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEscUJBQXFCO0lBQ3pELElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBbUI7UUFDOUIsSUFBSSxLQUFLLEtBQUssRUFBRTtZQUNkLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDZixJQUFJLEtBQUssSUFBSSxJQUFJO1lBQ2YsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNoQixJQUFJLE9BQU8sS0FBSyxLQUFLLFNBQVM7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQU1EO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFOVixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFJakMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxTQUFTLEtBQUssQ0FBQztJQUNmLGlCQUFpQixDQUFDLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7OEdBbkNVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUg1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO2lCQUN4Qjt3REFHSyxRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCb3JkZXJSYWRpdXNEaXJlY3RpdmUgfSBmcm9tICcuL2JvcmRlci1yYWRpdXMuZGlyZWN0aXZlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2pvQ29udHJvbF0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250cm9sRGlyZWN0aXZlIGV4dGVuZHMgQm9yZGVyUmFkaXVzRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBASW5wdXQoKVxyXG4gIGdldCByZXF1aXJlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcclxuICB9XHJcbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuIHwgJycpIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gJycpXHJcbiAgICAgIHZhbHVlID0gdHJ1ZTtcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKVxyXG4gICAgICB2YWx1ZSA9IGZhbHNlO1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlcXVpcmVkIGlucHV0IG11c3QgYmU6IGJvb2xlYW4nKTtcclxuICAgIHRoaXMuX3JlcXVpcmVkID0gdmFsdWU7XHJcbiAgICB0aGlzLnZhbGlkYXRpb24ubmV4dCgpO1xyXG4gIH1cclxuICBfcmVxdWlyZWQgPSBmYWxzZTtcclxuXHJcbiAgaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gIHZhbGlkYXRpb24gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsaWRhdGlvbi5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgb25Ub3VjaGVkKCkgeyB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,6 +0,0 @@
1
- export * from './border-radius.directive';
2
- export * from './busy.directive';
3
- export * from './control.directive';
4
- export * from './item.directive';
5
- export * from './size.directive';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGFvcy1jb250cm9sL3NyYy9saWIvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2JvcmRlci1yYWRpdXMuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9idXN5LmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2l0ZW0uZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zaXplLmRpcmVjdGl2ZSc7XHJcbiJdfQ==