@apipass/inputs 0.2.16 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/ace-editor/component.d.ts +52 -52
  2. package/ace-editor/directive.d.ts +39 -39
  3. package/assets/css/colors.scss +34 -34
  4. package/assets/css/fonts.scss +24 -24
  5. package/assets/css/inputs.scss +245 -197
  6. package/assets/css/pt_sans.scss +143 -143
  7. package/assets/css/spacing.scss +28 -28
  8. package/assets/css/texts.scss +18 -18
  9. package/custom-select/custom-select-item.d.ts +5 -5
  10. package/custom-select/custom-select.component.d.ts +51 -51
  11. package/debounce-model-directive/debouceInput.directive.d.ts +14 -14
  12. package/{esm2015/ace-editor/component.js → esm2020/ace-editor/component.mjs} +199 -204
  13. package/{esm2015/ace-editor/directive.js → esm2020/ace-editor/directive.mjs} +150 -150
  14. package/{esm2015/apipass-inputs.js → esm2020/apipass-inputs.mjs} +4 -4
  15. package/{esm2015/custom-select/custom-select-item.js → esm2020/custom-select/custom-select-item.mjs} +7 -7
  16. package/esm2020/custom-select/custom-select.component.mjs +204 -0
  17. package/esm2020/debounce-model-directive/debouceInput.directive.mjs +31 -0
  18. package/esm2020/field/field.component.mjs +51 -0
  19. package/esm2020/input-avatar/input-avatar.component.mjs +92 -0
  20. package/esm2020/input-boolean/input-boolean.component.mjs +56 -0
  21. package/esm2020/input-file/input-file.component.mjs +82 -0
  22. package/esm2020/input-number/input-number.component.mjs +62 -0
  23. package/esm2020/input-password/input-password.component.mjs +96 -0
  24. package/esm2020/input-text/input-text.component.mjs +62 -0
  25. package/esm2020/inputs.module.mjs +149 -0
  26. package/{esm2015/public-api.js → esm2020/public-api.mjs} +17 -17
  27. package/{esm2015/select-box/mat-select-infinite-scroll.directive.js → esm2020/select-box/mat-select-infinite-scroll.directive.mjs} +86 -86
  28. package/esm2020/select-box/select-box.component.mjs +220 -0
  29. package/esm2020/select-enum/select-enum.component.mjs +48 -0
  30. package/esm2020/select-interpolation/select-interpolation.component.mjs +169 -0
  31. package/{esm2015/value-acessor-base.js → esm2020/value-acessor-base.mjs} +31 -31
  32. package/fesm2015/apipass-inputs.mjs +1704 -0
  33. package/fesm2015/apipass-inputs.mjs.map +1 -0
  34. package/fesm2020/apipass-inputs.mjs +1697 -0
  35. package/fesm2020/apipass-inputs.mjs.map +1 -0
  36. package/field/field.component.d.ts +15 -15
  37. package/{apipass-inputs.d.ts → index.d.ts} +5 -5
  38. package/input-avatar/input-avatar.component.d.ts +29 -29
  39. package/input-boolean/input-boolean.component.d.ts +15 -15
  40. package/input-file/input-file.component.d.ts +31 -31
  41. package/input-number/input-number.component.d.ts +17 -17
  42. package/input-password/input-password.component.d.ts +29 -29
  43. package/input-text/input-text.component.d.ts +17 -17
  44. package/inputs.module.d.ts +36 -36
  45. package/package.json +38 -29
  46. package/public-api.d.ts +16 -16
  47. package/select-box/mat-select-infinite-scroll.directive.d.ts +26 -26
  48. package/select-box/select-box.component.d.ts +57 -57
  49. package/select-enum/select-enum.component.d.ts +12 -12
  50. package/select-interpolation/select-interpolation.component.d.ts +44 -44
  51. package/value-acessor-base.d.ts +13 -13
  52. package/assets/css/buttons.scss +0 -118
  53. package/bundles/apipass-inputs.umd.js +0 -3060
  54. package/bundles/apipass-inputs.umd.js.map +0 -1
  55. package/bundles/apipass-inputs.umd.min.js +0 -16
  56. package/bundles/apipass-inputs.umd.min.js.map +0 -1
  57. package/esm2015/custom-select/custom-select.component.js +0 -310
  58. package/esm2015/debounce-model-directive/debouceInput.directive.js +0 -31
  59. package/esm2015/field/field.component.js +0 -92
  60. package/esm2015/input-avatar/input-avatar.component.js +0 -167
  61. package/esm2015/input-boolean/input-boolean.component.js +0 -77
  62. package/esm2015/input-file/input-file.component.js +0 -133
  63. package/esm2015/input-number/input-number.component.js +0 -118
  64. package/esm2015/input-password/input-password.component.js +0 -159
  65. package/esm2015/input-text/input-text.component.js +0 -118
  66. package/esm2015/inputs.module.js +0 -155
  67. package/esm2015/select-box/select-box.component.js +0 -367
  68. package/esm2015/select-enum/select-enum.component.js +0 -95
  69. package/esm2015/select-interpolation/select-interpolation.component.js +0 -248
  70. package/fesm2015/apipass-inputs.js +0 -2434
  71. package/fesm2015/apipass-inputs.js.map +0 -1
@@ -1,150 +1,150 @@
1
- /* tslint:disable */
2
- import { Directive, ElementRef, EventEmitter, Input, NgZone, Output } from '@angular/core';
3
- import 'brace';
4
- import 'brace/theme/monokai';
5
- import * as i0 from "@angular/core";
6
- export class AceEditorDirective {
7
- constructor(elementRef, zone) {
8
- this.zone = zone;
9
- this.textChanged = new EventEmitter();
10
- this.textChange = new EventEmitter();
11
- this._options = {};
12
- this._readOnly = false;
13
- this._theme = 'monokai';
14
- this._mode = 'html';
15
- this._autoUpdateContent = true;
16
- this._durationBeforeCallback = 0;
17
- this._text = '';
18
- const el = elementRef.nativeElement;
19
- this.zone.runOutsideAngular(() => {
20
- this.editor = ace['edit'](el);
21
- });
22
- this.editor.$blockScrolling = Infinity;
23
- }
24
- ngOnInit() {
25
- this.init();
26
- this.initEvents();
27
- }
28
- ngOnDestroy() {
29
- this.editor.destroy();
30
- }
31
- init() {
32
- this.editor.setOptions(this._options || {});
33
- this.editor.setTheme(`ace/theme/${this._theme}`);
34
- this.setMode(this._mode);
35
- this.editor.setReadOnly(this._readOnly);
36
- }
37
- initEvents() {
38
- this.editor.on('change', () => this.updateText());
39
- this.editor.on('paste', () => this.updateText());
40
- }
41
- updateText() {
42
- const newVal = this.editor.getValue();
43
- if (newVal === this.oldText) {
44
- return;
45
- }
46
- if (!this._durationBeforeCallback) {
47
- this._text = newVal;
48
- this.zone.run(() => {
49
- this.textChange.emit(newVal);
50
- this.textChanged.emit(newVal);
51
- });
52
- }
53
- else {
54
- if (this.timeoutSaving != null) {
55
- clearTimeout(this.timeoutSaving);
56
- }
57
- this.timeoutSaving = setTimeout(() => {
58
- this._text = newVal;
59
- this.zone.run(() => {
60
- this.textChange.emit(newVal);
61
- this.textChanged.emit(newVal);
62
- });
63
- this.timeoutSaving = null;
64
- }, this._durationBeforeCallback);
65
- }
66
- this.oldText = newVal;
67
- }
68
- set options(options) {
69
- this._options = options;
70
- this.editor.setOptions(options || {});
71
- }
72
- set readOnly(readOnly) {
73
- this._readOnly = readOnly;
74
- this.editor.setReadOnly(readOnly);
75
- }
76
- set theme(theme) {
77
- this._theme = theme;
78
- this.editor.setTheme(`ace/theme/${theme}`);
79
- }
80
- set mode(mode) {
81
- this.setMode(mode);
82
- }
83
- setMode(mode) {
84
- this._mode = mode;
85
- if (typeof this._mode === 'object') {
86
- this.editor.getSession().setMode(this._mode);
87
- }
88
- else {
89
- this.editor.getSession().setMode(`ace/mode/${this._mode}`);
90
- }
91
- }
92
- // @ts-ignore
93
- get text() {
94
- return this._text;
95
- }
96
- set text(text) {
97
- this.setText(text);
98
- }
99
- setText(text) {
100
- if (this._text !== text) {
101
- if (text === null || text === undefined) {
102
- text = '';
103
- }
104
- if (this._autoUpdateContent) {
105
- this._text = text;
106
- this.editor.setValue(text);
107
- this.editor.clearSelection();
108
- }
109
- }
110
- }
111
- set autoUpdateContent(status) {
112
- this._autoUpdateContent = status;
113
- }
114
- set durationBeforeCallback(num) {
115
- this.setDurationBeforeCallback(num);
116
- }
117
- setDurationBeforeCallback(num) {
118
- this._durationBeforeCallback = num;
119
- }
120
- get aceEditor() {
121
- return this.editor;
122
- }
123
- }
124
- AceEditorDirective.ɵfac = function AceEditorDirective_Factory(t) { return new (t || AceEditorDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone)); };
125
- AceEditorDirective.ɵdir = i0.ɵɵdefineDirective({ type: AceEditorDirective, selectors: [["", "ace-editor", ""]], inputs: { options: "options", readOnly: "readOnly", theme: "theme", mode: "mode", text: "text", autoUpdateContent: "autoUpdateContent", durationBeforeCallback: "durationBeforeCallback" }, outputs: { textChanged: "textChanged", textChange: "textChange" } });
126
- /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(AceEditorDirective, [{
127
- type: Directive,
128
- args: [{
129
- selector: '[ace-editor]'
130
- }]
131
- }], function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, { textChanged: [{
132
- type: Output
133
- }], textChange: [{
134
- type: Output
135
- }], options: [{
136
- type: Input
137
- }], readOnly: [{
138
- type: Input
139
- }], theme: [{
140
- type: Input
141
- }], mode: [{
142
- type: Input
143
- }], text: [{
144
- type: Input
145
- }], autoUpdateContent: [{
146
- type: Input
147
- }], durationBeforeCallback: [{
148
- type: Input
149
- }] }); })();
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9hY2UtZWRpdG9yL2RpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFFcEIsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLE9BQU8sQ0FBQztBQUNmLE9BQU8scUJBQXFCLENBQUM7O0FBTzdCLE1BQU0sT0FBTyxrQkFBa0I7SUFjN0IsWUFBWSxVQUFzQixFQUFVLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO1FBYjlDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsV0FBTSxHQUFHLFNBQVMsQ0FBQztRQUNuQixVQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ2YsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLDRCQUF1QixHQUFHLENBQUMsQ0FBQztRQUM1QixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBTVQsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNa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QUFHLE1BQU0sQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBYSxzQkFBc0IsQ0FBQyxHQUFXO1FBQzdDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQseUJBQXlCLENBQUMsR0FBVztRQUNuQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsR0FBRyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQzs7b0ZBeklVLGtCQUFrQjt1REFBbEIsa0JBQWtCO2tEQUFsQixrQkFBa0I7Y0FIOUIsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxjQUFjO2FBQ3pCO2tGQUVXLFdBQVc7a0JBQXBCLE1BQU07WUFDRyxVQUFVO2tCQUFuQixNQUFNO1lBcUVNLE9BQU87a0JBQW5CLEtBQUs7WUFLTyxRQUFRO2tCQUFwQixLQUFLO1lBS08sS0FBSztrQkFBakIsS0FBSztZQUtPLElBQUk7a0JBQWhCLEtBQUs7WUFlRixJQUFJO2tCQURQLEtBQUs7WUF1Qk8saUJBQWlCO2tCQUE3QixLQUFLO1lBSU8sc0JBQXNCO2tCQUFsQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGUgKi9cblxuaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgJ2JyYWNlJztcbmltcG9ydCAnYnJhY2UvdGhlbWUvbW9ub2thaSc7XG5cbmRlY2xhcmUgdmFyIGFjZTogYW55O1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNlLWVkaXRvcl0nXG59KVxuZXhwb3J0IGNsYXNzIEFjZUVkaXRvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQE91dHB1dCgpIHRleHRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgdGV4dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgX29wdGlvbnM6IGFueSA9IHt9O1xuICBfcmVhZE9ubHkgPSBmYWxzZTtcbiAgX3RoZW1lID0gJ21vbm9rYWknO1xuICBfbW9kZSA9ICdodG1sJztcbiAgX2F1dG9VcGRhdGVDb250ZW50ID0gdHJ1ZTtcbiAgX2R1cmF0aW9uQmVmb3JlQ2FsbGJhY2sgPSAwO1xuICBfdGV4dCA9ICcnO1xuICBlZGl0b3I6IGFueTtcbiAgb2xkVGV4dDogYW55O1xuICB0aW1lb3V0U2F2aW5nOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHtcbiAgICBjb25zdCBlbCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5lZGl0b3IgPSBhY2VbJ2VkaXQnXShlbCk7XG4gICAgfSk7XG4gICAgdGhpcy5lZGl0b3IuJGJsb2NrU2Nyb2xsaW5nID0gSW5maW5pdHk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXQoKTtcbiAgICB0aGlzLmluaXRFdmVudHMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdG9yLmRlc3Ryb3koKTtcbiAgfVxuXG4gIGluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0b3Iuc2V0T3B0aW9ucyh0aGlzLl9vcHRpb25zIHx8IHt9KTtcbiAgICB0aGlzLmVkaXRvci5zZXRUaGVtZShgYWNlL3RoZW1lLyR7dGhpcy5fdGhlbWV9YCk7XG4gICAgdGhpcy5zZXRNb2RlKHRoaXMuX21vZGUpO1xuICAgIHRoaXMuZWRpdG9yLnNldFJlYWRPbmx5KHRoaXMuX3JlYWRPbmx5KTtcbiAgfVxuXG4gIGluaXRFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0b3Iub24oJ2NoYW5nZScsICgpID0+IHRoaXMudXBkYXRlVGV4dCgpKTtcbiAgICB0aGlzLmVkaXRvci5vbigncGFzdGUnLCAoKSA9PiB0aGlzLnVwZGF0ZVRleHQoKSk7XG4gIH1cblxuICB1cGRhdGVUZXh0KCk6IHZvaWQge1xuICAgIGNvbnN0IG5ld1ZhbCA9IHRoaXMuZWRpdG9yLmdldFZhbHVlKCk7XG4gICAgaWYgKG5ld1ZhbCA9PT0gdGhpcy5vbGRUZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5fZHVyYXRpb25CZWZvcmVDYWxsYmFjaykge1xuICAgICAgdGhpcy5fdGV4dCA9IG5ld1ZhbDtcbiAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnRleHRDaGFuZ2UuZW1pdChuZXdWYWwpO1xuICAgICAgICB0aGlzLnRleHRDaGFuZ2VkLmVtaXQobmV3VmFsKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy50aW1lb3V0U2F2aW5nICE9IG51bGwpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFNhdmluZyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudGltZW91dFNhdmluZyA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLl90ZXh0ID0gbmV3VmFsO1xuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnRleHRDaGFuZ2UuZW1pdChuZXdWYWwpO1xuICAgICAgICAgIHRoaXMudGV4dENoYW5nZWQuZW1pdChuZXdWYWwpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50aW1lb3V0U2F2aW5nID0gbnVsbDtcbiAgICAgIH0sIHRoaXMuX2R1cmF0aW9uQmVmb3JlQ2FsbGJhY2spO1xuICAgIH1cbiAgICB0aGlzLm9sZFRleHQgPSBuZXdWYWw7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgb3B0aW9ucyhvcHRpb25zOiBhbnkpIHtcbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLmVkaXRvci5zZXRPcHRpb25zKG9wdGlvbnMgfHwge30pO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHJlYWRPbmx5KHJlYWRPbmx5OiBhbnkpIHtcbiAgICB0aGlzLl9yZWFkT25seSA9IHJlYWRPbmx5O1xuICAgIHRoaXMuZWRpdG9yLnNldFJlYWRPbmx5KHJlYWRPbmx5KTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCB0aGVtZSh0aGVtZTogYW55KSB7XG4gICAgdGhpcy5fdGhlbWUgPSB0aGVtZTtcbiAgICB0aGlzLmVkaXRvci5zZXRUaGVtZShgYWNlL3RoZW1lLyR7dGhlbWV9YCk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgbW9kZShtb2RlOiBhbnkpIHtcbiAgICB0aGlzLnNldE1vZGUobW9kZSk7XG4gIH1cblxuICBzZXRNb2RlKG1vZGU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX21vZGUgPSBtb2RlO1xuICAgIGlmICh0eXBlb2YgdGhpcy5fbW9kZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHRoaXMuZWRpdG9yLmdldFNlc3Npb24oKS5zZXRNb2RlKHRoaXMuX21vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVkaXRvci5nZXRTZXNzaW9uKCkuc2V0TW9kZShgYWNlL21vZGUvJHt0aGlzLl9tb2RlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgQElucHV0KClcbiAgZ2V0IHRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RleHQ7XG4gIH1cblxuICBzZXQgdGV4dCh0ZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldFRleHQodGV4dCk7XG4gIH1cblxuICBzZXRUZXh0KHRleHQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90ZXh0ICE9PSB0ZXh0KSB7XG4gICAgICBpZiAodGV4dCA9PT0gbnVsbCB8fCB0ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGV4dCA9ICcnO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fYXV0b1VwZGF0ZUNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5fdGV4dCA9IHRleHQ7XG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFZhbHVlKHRleHQpO1xuICAgICAgICB0aGlzLmVkaXRvci5jbGVhclNlbGVjdGlvbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBhdXRvVXBkYXRlQ29udGVudChzdGF0dXM6IGFueSkge1xuICAgIHRoaXMuX2F1dG9VcGRhdGVDb250ZW50ID0gc3RhdHVzO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGR1cmF0aW9uQmVmb3JlQ2FsbGJhY2sobnVtOiBudW1iZXIpIHtcbiAgICB0aGlzLnNldER1cmF0aW9uQmVmb3JlQ2FsbGJhY2sobnVtKTtcbiAgfVxuXG4gIHNldER1cmF0aW9uQmVmb3JlQ2FsbGJhY2sobnVtOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9kdXJhdGlvbkJlZm9yZUNhbGxiYWNrID0gbnVtO1xuICB9XG5cbiAgZ2V0IGFjZUVkaXRvcigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmVkaXRvcjtcbiAgfVxufVxuIl19
1
+ /* tslint:disable */
2
+ import { Directive, ElementRef, EventEmitter, Input, NgZone, Output } from '@angular/core';
3
+ import 'brace';
4
+ import 'brace/theme/monokai';
5
+ import * as i0 from "@angular/core";
6
+ export class AceEditorDirective {
7
+ constructor(elementRef, zone) {
8
+ this.zone = zone;
9
+ this.textChanged = new EventEmitter();
10
+ this.textChange = new EventEmitter();
11
+ this._options = {};
12
+ this._readOnly = false;
13
+ this._theme = 'monokai';
14
+ this._mode = 'html';
15
+ this._autoUpdateContent = true;
16
+ this._durationBeforeCallback = 0;
17
+ this._text = '';
18
+ const el = elementRef.nativeElement;
19
+ this.zone.runOutsideAngular(() => {
20
+ this.editor = ace['edit'](el);
21
+ });
22
+ this.editor.$blockScrolling = Infinity;
23
+ }
24
+ ngOnInit() {
25
+ this.init();
26
+ this.initEvents();
27
+ }
28
+ ngOnDestroy() {
29
+ this.editor.destroy();
30
+ }
31
+ init() {
32
+ this.editor.setOptions(this._options || {});
33
+ this.editor.setTheme(`ace/theme/${this._theme}`);
34
+ this.setMode(this._mode);
35
+ this.editor.setReadOnly(this._readOnly);
36
+ }
37
+ initEvents() {
38
+ this.editor.on('change', () => this.updateText());
39
+ this.editor.on('paste', () => this.updateText());
40
+ }
41
+ updateText() {
42
+ const newVal = this.editor.getValue();
43
+ if (newVal === this.oldText) {
44
+ return;
45
+ }
46
+ if (!this._durationBeforeCallback) {
47
+ this._text = newVal;
48
+ this.zone.run(() => {
49
+ this.textChange.emit(newVal);
50
+ this.textChanged.emit(newVal);
51
+ });
52
+ }
53
+ else {
54
+ if (this.timeoutSaving != null) {
55
+ clearTimeout(this.timeoutSaving);
56
+ }
57
+ this.timeoutSaving = setTimeout(() => {
58
+ this._text = newVal;
59
+ this.zone.run(() => {
60
+ this.textChange.emit(newVal);
61
+ this.textChanged.emit(newVal);
62
+ });
63
+ this.timeoutSaving = null;
64
+ }, this._durationBeforeCallback);
65
+ }
66
+ this.oldText = newVal;
67
+ }
68
+ set options(options) {
69
+ this._options = options;
70
+ this.editor.setOptions(options || {});
71
+ }
72
+ set readOnly(readOnly) {
73
+ this._readOnly = readOnly;
74
+ this.editor.setReadOnly(readOnly);
75
+ }
76
+ set theme(theme) {
77
+ this._theme = theme;
78
+ this.editor.setTheme(`ace/theme/${theme}`);
79
+ }
80
+ set mode(mode) {
81
+ this.setMode(mode);
82
+ }
83
+ setMode(mode) {
84
+ this._mode = mode;
85
+ if (typeof this._mode === 'object') {
86
+ this.editor.getSession().setMode(this._mode);
87
+ }
88
+ else {
89
+ this.editor.getSession().setMode(`ace/mode/${this._mode}`);
90
+ }
91
+ }
92
+ // @ts-ignore
93
+ get text() {
94
+ return this._text;
95
+ }
96
+ set text(text) {
97
+ this.setText(text);
98
+ }
99
+ setText(text) {
100
+ if (this._text !== text) {
101
+ if (text === null || text === undefined) {
102
+ text = '';
103
+ }
104
+ if (this._autoUpdateContent) {
105
+ this._text = text;
106
+ this.editor.setValue(text);
107
+ this.editor.clearSelection();
108
+ }
109
+ }
110
+ }
111
+ set autoUpdateContent(status) {
112
+ this._autoUpdateContent = status;
113
+ }
114
+ set durationBeforeCallback(num) {
115
+ this.setDurationBeforeCallback(num);
116
+ }
117
+ setDurationBeforeCallback(num) {
118
+ this._durationBeforeCallback = num;
119
+ }
120
+ get aceEditor() {
121
+ return this.editor;
122
+ }
123
+ }
124
+ AceEditorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: AceEditorDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
125
+ AceEditorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.3", type: AceEditorDirective, selector: "[ace-editor]", inputs: { options: "options", readOnly: "readOnly", theme: "theme", mode: "mode", text: "text", autoUpdateContent: "autoUpdateContent", durationBeforeCallback: "durationBeforeCallback" }, outputs: { textChanged: "textChanged", textChange: "textChange" }, ngImport: i0 });
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: AceEditorDirective, decorators: [{
127
+ type: Directive,
128
+ args: [{
129
+ selector: '[ace-editor]'
130
+ }]
131
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { textChanged: [{
132
+ type: Output
133
+ }], textChange: [{
134
+ type: Output
135
+ }], options: [{
136
+ type: Input
137
+ }], readOnly: [{
138
+ type: Input
139
+ }], theme: [{
140
+ type: Input
141
+ }], mode: [{
142
+ type: Input
143
+ }], text: [{
144
+ type: Input
145
+ }], autoUpdateContent: [{
146
+ type: Input
147
+ }], durationBeforeCallback: [{
148
+ type: Input
149
+ }] } });
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9hY2UtZWRpdG9yL2RpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFFcEIsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLE9BQU8sQ0FBQztBQUNmLE9BQU8scUJBQXFCLENBQUM7O0FBTzdCLE1BQU0sT0FBTyxrQkFBa0I7SUFjN0IsWUFBWSxVQUFzQixFQUFVLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO1FBYjlDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsV0FBTSxHQUFHLFNBQVMsQ0FBQztRQUNuQixVQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ2YsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLDRCQUF1QixHQUFHLENBQUMsQ0FBQztRQUM1QixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBTVQsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNa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QUFHLE1BQU0sQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBYSxzQkFBc0IsQ0FBQyxHQUFXO1FBQzdDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQseUJBQXlCLENBQUMsR0FBVztRQUNuQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsR0FBRyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQzs7K0dBeklVLGtCQUFrQjttR0FBbEIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBSDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7aUJBQ3pCO3NIQUVXLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFxRU0sT0FBTztzQkFBbkIsS0FBSztnQkFLTyxRQUFRO3NCQUFwQixLQUFLO2dCQUtPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBS08sSUFBSTtzQkFBaEIsS0FBSztnQkFlRixJQUFJO3NCQURQLEtBQUs7Z0JBdUJPLGlCQUFpQjtzQkFBN0IsS0FBSztnQkFJTyxzQkFBc0I7c0JBQWxDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xyXG5cclxuaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAnYnJhY2UnO1xyXG5pbXBvcnQgJ2JyYWNlL3RoZW1lL21vbm9rYWknO1xyXG5cclxuZGVjbGFyZSB2YXIgYWNlOiBhbnk7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thY2UtZWRpdG9yXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFjZUVkaXRvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAT3V0cHV0KCkgdGV4dENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHRleHRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgX29wdGlvbnM6IGFueSA9IHt9O1xyXG4gIF9yZWFkT25seSA9IGZhbHNlO1xyXG4gIF90aGVtZSA9ICdtb25va2FpJztcclxuICBfbW9kZSA9ICdodG1sJztcclxuICBfYXV0b1VwZGF0ZUNvbnRlbnQgPSB0cnVlO1xyXG4gIF9kdXJhdGlvbkJlZm9yZUNhbGxiYWNrID0gMDtcclxuICBfdGV4dCA9ICcnO1xyXG4gIGVkaXRvcjogYW55O1xyXG4gIG9sZFRleHQ6IGFueTtcclxuICB0aW1lb3V0U2F2aW5nOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgem9uZTogTmdab25lKSB7XHJcbiAgICBjb25zdCBlbCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgIHRoaXMuZWRpdG9yID0gYWNlWydlZGl0J10oZWwpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmVkaXRvci4kYmxvY2tTY3JvbGxpbmcgPSBJbmZpbml0eTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgICB0aGlzLmluaXRFdmVudHMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0b3IuZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdG9yLnNldE9wdGlvbnModGhpcy5fb3B0aW9ucyB8fCB7fSk7XHJcbiAgICB0aGlzLmVkaXRvci5zZXRUaGVtZShgYWNlL3RoZW1lLyR7dGhpcy5fdGhlbWV9YCk7XHJcbiAgICB0aGlzLnNldE1vZGUodGhpcy5fbW9kZSk7XHJcbiAgICB0aGlzLmVkaXRvci5zZXRSZWFkT25seSh0aGlzLl9yZWFkT25seSk7XHJcbiAgfVxyXG5cclxuICBpbml0RXZlbnRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0b3Iub24oJ2NoYW5nZScsICgpID0+IHRoaXMudXBkYXRlVGV4dCgpKTtcclxuICAgIHRoaXMuZWRpdG9yLm9uKCdwYXN0ZScsICgpID0+IHRoaXMudXBkYXRlVGV4dCgpKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVRleHQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXdWYWwgPSB0aGlzLmVkaXRvci5nZXRWYWx1ZSgpO1xyXG4gICAgaWYgKG5ld1ZhbCA9PT0gdGhpcy5vbGRUZXh0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5fZHVyYXRpb25CZWZvcmVDYWxsYmFjaykge1xyXG4gICAgICB0aGlzLl90ZXh0ID0gbmV3VmFsO1xyXG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLnRleHRDaGFuZ2UuZW1pdChuZXdWYWwpO1xyXG4gICAgICAgIHRoaXMudGV4dENoYW5nZWQuZW1pdChuZXdWYWwpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnRpbWVvdXRTYXZpbmcgIT0gbnVsbCkge1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRTYXZpbmcpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnRpbWVvdXRTYXZpbmcgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLl90ZXh0ID0gbmV3VmFsO1xyXG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50ZXh0Q2hhbmdlLmVtaXQobmV3VmFsKTtcclxuICAgICAgICAgIHRoaXMudGV4dENoYW5nZWQuZW1pdChuZXdWYWwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudGltZW91dFNhdmluZyA9IG51bGw7XHJcbiAgICAgIH0sIHRoaXMuX2R1cmF0aW9uQmVmb3JlQ2FsbGJhY2spO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vbGRUZXh0ID0gbmV3VmFsO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IG9wdGlvbnMob3B0aW9uczogYW55KSB7XHJcbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcclxuICAgIHRoaXMuZWRpdG9yLnNldE9wdGlvbnMob3B0aW9ucyB8fCB7fSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgcmVhZE9ubHkocmVhZE9ubHk6IGFueSkge1xyXG4gICAgdGhpcy5fcmVhZE9ubHkgPSByZWFkT25seTtcclxuICAgIHRoaXMuZWRpdG9yLnNldFJlYWRPbmx5KHJlYWRPbmx5KTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCB0aGVtZSh0aGVtZTogYW55KSB7XHJcbiAgICB0aGlzLl90aGVtZSA9IHRoZW1lO1xyXG4gICAgdGhpcy5lZGl0b3Iuc2V0VGhlbWUoYGFjZS90aGVtZS8ke3RoZW1lfWApO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IG1vZGUobW9kZTogYW55KSB7XHJcbiAgICB0aGlzLnNldE1vZGUobW9kZSk7XHJcbiAgfVxyXG5cclxuICBzZXRNb2RlKG1vZGU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fbW9kZSA9IG1vZGU7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMuX21vZGUgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yLmdldFNlc3Npb24oKS5zZXRNb2RlKHRoaXMuX21vZGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0b3IuZ2V0U2Vzc2lvbigpLnNldE1vZGUoYGFjZS9tb2RlLyR7dGhpcy5fbW9kZX1gKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBASW5wdXQoKVxyXG4gIGdldCB0ZXh0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RleHQ7XHJcbiAgfVxyXG5cclxuICBzZXQgdGV4dCh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2V0VGV4dCh0ZXh0KTtcclxuICB9XHJcblxyXG4gIHNldFRleHQodGV4dDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fdGV4dCAhPT0gdGV4dCkge1xyXG4gICAgICBpZiAodGV4dCA9PT0gbnVsbCB8fCB0ZXh0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0ZXh0ID0gJyc7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLl9hdXRvVXBkYXRlQ29udGVudCkge1xyXG4gICAgICAgIHRoaXMuX3RleHQgPSB0ZXh0O1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFZhbHVlKHRleHQpO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLmNsZWFyU2VsZWN0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBhdXRvVXBkYXRlQ29udGVudChzdGF0dXM6IGFueSkge1xyXG4gICAgdGhpcy5fYXV0b1VwZGF0ZUNvbnRlbnQgPSBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgZHVyYXRpb25CZWZvcmVDYWxsYmFjayhudW06IG51bWJlcikge1xyXG4gICAgdGhpcy5zZXREdXJhdGlvbkJlZm9yZUNhbGxiYWNrKG51bSk7XHJcbiAgfVxyXG5cclxuICBzZXREdXJhdGlvbkJlZm9yZUNhbGxiYWNrKG51bTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kdXJhdGlvbkJlZm9yZUNhbGxiYWNrID0gbnVtO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjZUVkaXRvcigpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpcGFzcy1pbnB1dHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9pbnB1dHMvc3JjL2FwaXBhc3MtaW5wdXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -1,7 +1,7 @@
1
- export class CustomSelectItem {
2
- constructor(id, text) {
3
- this.id = id;
4
- this.text = text;
5
- }
6
- }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNlbGVjdC1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9jdXN0b20tc2VsZWN0L2N1c3RvbS1zZWxlY3QtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCLFlBQVksRUFBNkIsRUFBRSxJQUFZO1FBQ3JELElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEN1c3RvbVNlbGVjdEl0ZW0ge1xuICBwdWJsaWMgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIHB1YmxpYyB0ZXh0OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwsIHRleHQ6IHN0cmluZykge1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLnRleHQgPSB0ZXh0O1xuICB9XG59XG4iXX0=
1
+ export class CustomSelectItem {
2
+ constructor(id, text) {
3
+ this.id = id;
4
+ this.text = text;
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNlbGVjdC1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9jdXN0b20tc2VsZWN0L2N1c3RvbS1zZWxlY3QtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCLFlBQVksRUFBNkIsRUFBRSxJQUFZO1FBQ3JELElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEN1c3RvbVNlbGVjdEl0ZW0ge1xyXG4gIHB1YmxpYyBpZDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbDtcclxuICBwdWJsaWMgdGV4dDogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihpZDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCwgdGV4dDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmlkID0gaWQ7XHJcbiAgICB0aGlzLnRleHQgPSB0ZXh0O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,204 @@
1
+ import { Component, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Input, Output, ViewChild } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { CustomSelectItem } from './custom-select-item';
4
+ import { ScrollStrategyOptions } from '@angular/cdk/overlay';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/cdk/overlay";
7
+ import * as i2 from "@angular/common";
8
+ import * as i3 from "@angular/forms";
9
+ import * as i4 from "@angular/material/form-field";
10
+ import * as i5 from "@angular/material/input";
11
+ import * as i6 from "ngx-drag-drop";
12
+ import * as i7 from "@apipass/pipes";
13
+ export class CustomSelectComponent {
14
+ constructor(sso) {
15
+ this.sso = sso;
16
+ this.disabled = false;
17
+ this.items = [];
18
+ this.allowTyping = false;
19
+ this.allowRemove = false;
20
+ this.allowAddItem = true;
21
+ this.addItemLabel = 'Add New Item';
22
+ this.placeHolder = 'Select';
23
+ this.findPlaceHolder = 'Find item';
24
+ this.searchText = '';
25
+ this.onSelect = new EventEmitter();
26
+ this.onUnSelect = new EventEmitter();
27
+ this.onAddItem = new EventEmitter();
28
+ this.opened = false;
29
+ this.edited = false;
30
+ this.tabindex = '0';
31
+ this.onTouchedCallback = () => {
32
+ };
33
+ this.onChangeCallback = () => {
34
+ };
35
+ this.scrollStrategy = this.sso.block();
36
+ }
37
+ onBlur(target) {
38
+ if (this.allowTyping) {
39
+ if (this.value) {
40
+ if (this.edited) {
41
+ this.writeValue(this.value);
42
+ this.selectedItem = new CustomSelectItem(this.value, this.value);
43
+ this.onSelect.next(this.selectedItem);
44
+ }
45
+ }
46
+ else {
47
+ this.writeValue(undefined);
48
+ this.onSelect.next(undefined);
49
+ }
50
+ }
51
+ if (target && target.relatedTarget && target.relatedTarget.classList.contains('search-input-item')) {
52
+ return;
53
+ }
54
+ this.setTriggerRect();
55
+ this.opened = false;
56
+ }
57
+ ngAfterViewInit() {
58
+ setTimeout(() => {
59
+ this.setTriggerRect();
60
+ }, 300);
61
+ }
62
+ setTriggerRect() {
63
+ setTimeout(() => {
64
+ this._triggerRect = this.trigger?.nativeElement.getBoundingClientRect();
65
+ });
66
+ }
67
+ selectItem(item) {
68
+ this.opened = false;
69
+ this.selectedItem = item;
70
+ this.edited = false;
71
+ this.selectedModelValue = item.text;
72
+ this.value = item.text;
73
+ this.searchText = '';
74
+ this.onSelect.next(item);
75
+ }
76
+ addItem() {
77
+ this.opened = false;
78
+ this.searchText = '';
79
+ this.onAddItem.next();
80
+ }
81
+ keyPress() {
82
+ this.setTriggerRect();
83
+ if (this.allowTyping) {
84
+ this.opened = false;
85
+ this.edited = true;
86
+ this.selectedModelValue = this.value;
87
+ this.searchText = '';
88
+ }
89
+ else {
90
+ this.edited = false;
91
+ return false;
92
+ }
93
+ }
94
+ clicked() {
95
+ this.setTriggerRect();
96
+ this.opened = true;
97
+ this.searchText = '';
98
+ }
99
+ get value() {
100
+ return this.innerValue;
101
+ }
102
+ set value(value) {
103
+ this.innerValue = value;
104
+ this.onChangeCallback(value);
105
+ this.onSelect.next(value);
106
+ }
107
+ writeValue(value) {
108
+ if (value !== this.innerValue) {
109
+ if (!this.selectedItem || !this.selectedItem.text || !value) {
110
+ this.selectedItem = new CustomSelectItem(null, value);
111
+ }
112
+ this.innerValue = value;
113
+ this.selectedModelValue = value;
114
+ }
115
+ }
116
+ registerOnChange(fn) {
117
+ this.onChangeCallback = fn;
118
+ }
119
+ registerOnTouched(fn) {
120
+ this.onTouchedCallback = fn;
121
+ }
122
+ setDisabledState(isDisabled) {
123
+ this.disabled = isDisabled;
124
+ }
125
+ arrowClick(event) {
126
+ event.stopPropagation();
127
+ this.setTriggerRect();
128
+ if (this.opened) {
129
+ this.opened = false;
130
+ }
131
+ else {
132
+ this.opened = true;
133
+ this.searchText = '';
134
+ this.input?.nativeElement.focus();
135
+ }
136
+ }
137
+ removeClick(event) {
138
+ event.stopPropagation();
139
+ this.opened = false;
140
+ this.searchText = '';
141
+ this.innerValue = null;
142
+ this.onUnSelect.next();
143
+ }
144
+ onDrop($event) {
145
+ this.searchText = '';
146
+ if (!this.value) {
147
+ this.value = '';
148
+ }
149
+ this.value += `{{${$event.data}}}`;
150
+ this.edited = true;
151
+ this.onBlur(undefined);
152
+ }
153
+ }
154
+ CustomSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CustomSelectComponent, deps: [{ token: i1.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Component });
155
+ CustomSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: CustomSelectComponent, selector: "custom-select", inputs: { disabled: "disabled", items: "items", allowTyping: "allowTyping", allowRemove: "allowRemove", allowAddItem: "allowAddItem", addItemLabel: "addItemLabel", placeHolder: "placeHolder", findPlaceHolder: "findPlaceHolder", searchText: "searchText" }, outputs: { onSelect: "onSelect", onUnSelect: "onUnSelect", onAddItem: "onAddItem" }, host: { listeners: { "blur": "onBlur($event.target)" }, properties: { "attr.tabindex": "this.tabindex" } }, providers: [{
156
+ provide: NG_VALUE_ACCESSOR,
157
+ useExisting: forwardRef(() => CustomSelectComponent),
158
+ multi: true
159
+ }], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"custom-select-input\" #trigger>\r\n <mat-form-field cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"custom-select-component\" [ngClass]=\"{'select-open' : opened}\" appearance=\"fill\" autocomplete=\"off\">\r\n <input matInput #input\r\n [placeholder]=\"placeHolder\"\r\n (focus)=\"opened = true\"\r\n (blur)=\"onBlur($event)\"\r\n [(ngModel)]=\"value\"\r\n [ngModelOptions]=\"{standalone: true}\"\r\n [disabled]=\"disabled\"\r\n (keyup)=keyPress()\r\n (click)=\"clicked()\"\r\n dndDropzone\r\n (dndDrop)=\"onDrop($event)\"\r\n autocomplete=\"off\"\r\n />\r\n <span *ngIf=\"allowRemove\" title=\"Remover\" class=\"remove-icon\" (click)=\"removeClick($event)\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n <span class=\"open-icon\" (click)=\"arrowClick($event)\">\r\n <i class=\"fas\" [ngClass]=\"{'fa-caret-down' : !opened, 'fa-caret-up' : opened}\"></i>\r\n </span>\r\n </mat-form-field>\r\n</div>\r\n<div class=\"custom-select-component\">\r\n\r\n <ng-template cdkConnectedOverlay\r\n [cdkConnectedOverlayPanelClass]=\"'custom-select-overlay-panel'\"\r\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayOpen]=\"opened\"\r\n [cdkConnectedOverlayMinWidth]=\"_triggerRect?.width!\">\r\n <ul class=\"ul-ac\">\r\n <li class=\"li-search search-input-item\">\r\n <mat-form-field class=\"apipass-input-text search-input-item\" appearance=\"fill\">\r\n <input matInput class=\"search-input-item\"\r\n [placeholder]=\"findPlaceHolder\"\r\n [(ngModel)]=\"searchText\"\r\n (blur)=\"onBlur($event)\"\r\n aria-autocomplete=\"none\"\r\n autocomplete=\"off\"\r\n />\r\n </mat-form-field>\r\n </li>\r\n\r\n <li class=\"clickable\" *ngFor=\"let i of items | selectFilter:searchText:'text'\"\r\n (click)=\"selectItem(i)\"\r\n (mousedown)=\"selectItem(i)\">\r\n {{i.text}}\r\n </li>\r\n\r\n <li *ngIf=\"allowAddItem\" class=\"li-add\" (mousedown)=\"addItem()\" (click)=\"addItem()\">\r\n <span class=\"fa fa-plus-circle\"></span>\r\n <span>{{addItemLabel}}</span>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n</div>\r\n", styles: ["::ng-deep .custom-select-overlay-panel,.custom-select-input,.custom-select-component{cursor:pointer}::ng-deep .custom-select-overlay-panel input,.custom-select-input input,.custom-select-component input{background:#FFF!important;height:37px}::ng-deep .custom-select-overlay-panel .ul-ac,.custom-select-input .ul-ac,.custom-select-component .ul-ac{max-height:16rem;overflow:auto;background:#fff;border:1px solid #ccc;box-sizing:border-box;list-style:none;padding:0;width:100%;position:relative;margin-top:-1px}::ng-deep .custom-select-overlay-panel .ul-ac li,.custom-select-input .ul-ac li,.custom-select-component .ul-ac li{text-align:left;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:10px;font-size:12px}::ng-deep .custom-select-overlay-panel .ul-ac li:hover,.custom-select-input .ul-ac li:hover,.custom-select-component .ul-ac li:hover{background:#bbbcbc}::ng-deep .custom-select-overlay-panel .ul-ac li .mat-form-field-flex,.custom-select-input .ul-ac li .mat-form-field-flex,.custom-select-component .ul-ac li .mat-form-field-flex{height:37px!important}::ng-deep .custom-select-overlay-panel .ul-ac li .mat-form-field-flex input,.custom-select-input .ul-ac li .mat-form-field-flex input,.custom-select-component .ul-ac li .mat-form-field-flex input{height:auto}::ng-deep .custom-select-overlay-panel .ul-ac .li-add,.custom-select-input .ul-ac .li-add,.custom-select-component .ul-ac .li-add{border-top:1px solid lightgray}::ng-deep .custom-select-overlay-panel .ul-ac .li-add .fa,.custom-select-input .ul-ac .li-add .fa,.custom-select-component .ul-ac .li-add .fa{padding-right:5px;color:#ff8f17}::ng-deep .custom-select-overlay-panel .selected,.custom-select-input .selected,.custom-select-component .selected{background-color:#898a8a!important}::ng-deep .custom-select-overlay-panel .selected .fa,.custom-select-input .selected .fa,.custom-select-component .selected .fa{color:#fff!important}::ng-deep .custom-select-overlay-panel .remove-icon i,.custom-select-input .remove-icon i,.custom-select-component .remove-icon i{color:red;margin-right:10px}::ng-deep .custom-select-overlay-panel .open-icon,.custom-select-input .open-icon,.custom-select-component .open-icon{cursor:pointer}::ng-deep .custom-select-overlay-panel .open-icon i,.custom-select-input .open-icon i,.custom-select-component .open-icon i{color:#0000008a}::ng-deep .custom-select-overlay-panel .li-search,.custom-select-input .li-search,.custom-select-component .li-search{cursor:default!important;border-bottom:1px solid #CCC!important}::ng-deep .custom-select-overlay-panel .li-search:hover,.custom-select-input .li-search:hover,.custom-select-component .li-search:hover{background:#FFF!important}::ng-deep .custom-select-overlay-panel .select-open .mat-form-field-flex,.custom-select-input .select-open .mat-form-field-flex,.custom-select-component .select-open .mat-form-field-flex{border-radius:6px 6px 0 0!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i6.DndDropzoneDirective, selector: "[dndDropzone]", inputs: ["dndDropzone", "dndEffectAllowed", "dndAllowExternal", "dndHorizontal", "dndDragoverClass", "dndDropzoneDisabledClass", "dndDisableIf", "dndDisableDropIf"], outputs: ["dndDragover", "dndDrop"] }, { kind: "directive", type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "pipe", type: i7.SelectFilterPipe, name: "selectFilter" }] });
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: CustomSelectComponent, decorators: [{
161
+ type: Component,
162
+ args: [{ selector: 'custom-select', providers: [{
163
+ provide: NG_VALUE_ACCESSOR,
164
+ useExisting: forwardRef(() => CustomSelectComponent),
165
+ multi: true
166
+ }], template: "<div class=\"custom-select-input\" #trigger>\r\n <mat-form-field cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"custom-select-component\" [ngClass]=\"{'select-open' : opened}\" appearance=\"fill\" autocomplete=\"off\">\r\n <input matInput #input\r\n [placeholder]=\"placeHolder\"\r\n (focus)=\"opened = true\"\r\n (blur)=\"onBlur($event)\"\r\n [(ngModel)]=\"value\"\r\n [ngModelOptions]=\"{standalone: true}\"\r\n [disabled]=\"disabled\"\r\n (keyup)=keyPress()\r\n (click)=\"clicked()\"\r\n dndDropzone\r\n (dndDrop)=\"onDrop($event)\"\r\n autocomplete=\"off\"\r\n />\r\n <span *ngIf=\"allowRemove\" title=\"Remover\" class=\"remove-icon\" (click)=\"removeClick($event)\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n <span class=\"open-icon\" (click)=\"arrowClick($event)\">\r\n <i class=\"fas\" [ngClass]=\"{'fa-caret-down' : !opened, 'fa-caret-up' : opened}\"></i>\r\n </span>\r\n </mat-form-field>\r\n</div>\r\n<div class=\"custom-select-component\">\r\n\r\n <ng-template cdkConnectedOverlay\r\n [cdkConnectedOverlayPanelClass]=\"'custom-select-overlay-panel'\"\r\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayOpen]=\"opened\"\r\n [cdkConnectedOverlayMinWidth]=\"_triggerRect?.width!\">\r\n <ul class=\"ul-ac\">\r\n <li class=\"li-search search-input-item\">\r\n <mat-form-field class=\"apipass-input-text search-input-item\" appearance=\"fill\">\r\n <input matInput class=\"search-input-item\"\r\n [placeholder]=\"findPlaceHolder\"\r\n [(ngModel)]=\"searchText\"\r\n (blur)=\"onBlur($event)\"\r\n aria-autocomplete=\"none\"\r\n autocomplete=\"off\"\r\n />\r\n </mat-form-field>\r\n </li>\r\n\r\n <li class=\"clickable\" *ngFor=\"let i of items | selectFilter:searchText:'text'\"\r\n (click)=\"selectItem(i)\"\r\n (mousedown)=\"selectItem(i)\">\r\n {{i.text}}\r\n </li>\r\n\r\n <li *ngIf=\"allowAddItem\" class=\"li-add\" (mousedown)=\"addItem()\" (click)=\"addItem()\">\r\n <span class=\"fa fa-plus-circle\"></span>\r\n <span>{{addItemLabel}}</span>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n</div>\r\n", styles: ["::ng-deep .custom-select-overlay-panel,.custom-select-input,.custom-select-component{cursor:pointer}::ng-deep .custom-select-overlay-panel input,.custom-select-input input,.custom-select-component input{background:#FFF!important;height:37px}::ng-deep .custom-select-overlay-panel .ul-ac,.custom-select-input .ul-ac,.custom-select-component .ul-ac{max-height:16rem;overflow:auto;background:#fff;border:1px solid #ccc;box-sizing:border-box;list-style:none;padding:0;width:100%;position:relative;margin-top:-1px}::ng-deep .custom-select-overlay-panel .ul-ac li,.custom-select-input .ul-ac li,.custom-select-component .ul-ac li{text-align:left;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:10px;font-size:12px}::ng-deep .custom-select-overlay-panel .ul-ac li:hover,.custom-select-input .ul-ac li:hover,.custom-select-component .ul-ac li:hover{background:#bbbcbc}::ng-deep .custom-select-overlay-panel .ul-ac li .mat-form-field-flex,.custom-select-input .ul-ac li .mat-form-field-flex,.custom-select-component .ul-ac li .mat-form-field-flex{height:37px!important}::ng-deep .custom-select-overlay-panel .ul-ac li .mat-form-field-flex input,.custom-select-input .ul-ac li .mat-form-field-flex input,.custom-select-component .ul-ac li .mat-form-field-flex input{height:auto}::ng-deep .custom-select-overlay-panel .ul-ac .li-add,.custom-select-input .ul-ac .li-add,.custom-select-component .ul-ac .li-add{border-top:1px solid lightgray}::ng-deep .custom-select-overlay-panel .ul-ac .li-add .fa,.custom-select-input .ul-ac .li-add .fa,.custom-select-component .ul-ac .li-add .fa{padding-right:5px;color:#ff8f17}::ng-deep .custom-select-overlay-panel .selected,.custom-select-input .selected,.custom-select-component .selected{background-color:#898a8a!important}::ng-deep .custom-select-overlay-panel .selected .fa,.custom-select-input .selected .fa,.custom-select-component .selected .fa{color:#fff!important}::ng-deep .custom-select-overlay-panel .remove-icon i,.custom-select-input .remove-icon i,.custom-select-component .remove-icon i{color:red;margin-right:10px}::ng-deep .custom-select-overlay-panel .open-icon,.custom-select-input .open-icon,.custom-select-component .open-icon{cursor:pointer}::ng-deep .custom-select-overlay-panel .open-icon i,.custom-select-input .open-icon i,.custom-select-component .open-icon i{color:#0000008a}::ng-deep .custom-select-overlay-panel .li-search,.custom-select-input .li-search,.custom-select-component .li-search{cursor:default!important;border-bottom:1px solid #CCC!important}::ng-deep .custom-select-overlay-panel .li-search:hover,.custom-select-input .li-search:hover,.custom-select-component .li-search:hover{background:#FFF!important}::ng-deep .custom-select-overlay-panel .select-open .mat-form-field-flex,.custom-select-input .select-open .mat-form-field-flex,.custom-select-component .select-open .mat-form-field-flex{border-radius:6px 6px 0 0!important}\n"] }]
167
+ }], ctorParameters: function () { return [{ type: i1.ScrollStrategyOptions }]; }, propDecorators: { disabled: [{
168
+ type: Input
169
+ }], items: [{
170
+ type: Input
171
+ }], allowTyping: [{
172
+ type: Input
173
+ }], allowRemove: [{
174
+ type: Input
175
+ }], allowAddItem: [{
176
+ type: Input
177
+ }], addItemLabel: [{
178
+ type: Input
179
+ }], placeHolder: [{
180
+ type: Input
181
+ }], findPlaceHolder: [{
182
+ type: Input
183
+ }], searchText: [{
184
+ type: Input
185
+ }], onSelect: [{
186
+ type: Output
187
+ }], onUnSelect: [{
188
+ type: Output
189
+ }], onAddItem: [{
190
+ type: Output
191
+ }], trigger: [{
192
+ type: ViewChild,
193
+ args: ['trigger']
194
+ }], input: [{
195
+ type: ViewChild,
196
+ args: ['input', { read: ElementRef }]
197
+ }], tabindex: [{
198
+ type: HostBinding,
199
+ args: ['attr.tabindex']
200
+ }], onBlur: [{
201
+ type: HostListener,
202
+ args: ['blur', ['$event.target']]
203
+ }] } });
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnB1dHMvc3JjL2N1c3RvbS1zZWxlY3QvY3VzdG9tLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnB1dHMvc3JjL2N1c3RvbS1zZWxlY3QvY3VzdG9tLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2xKLE9BQU8sRUFBdUIsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQWlCLHFCQUFxQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7OztBQWEzRSxNQUFNLE9BQU8scUJBQXFCO0lBa0RoQyxZQUE2QixHQUEwQjtRQUExQixRQUFHLEdBQUgsR0FBRyxDQUF1QjtRQTdDOUMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNWLFVBQUssR0FBdUIsRUFBRSxDQUFDO1FBQ3RDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGlCQUFZLEdBQUcsY0FBYyxDQUFDO1FBQzlCLGdCQUFXLEdBQUcsUUFBUSxDQUFDO1FBQ3ZCLG9CQUFlLEdBQUcsV0FBVyxDQUFDO1FBQzlCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFZixhQUFRLEdBQW1DLElBQUksWUFBWSxFQUFFLENBQUM7UUFDOUQsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFD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Q0FBQztZQUNWLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztZQUNwRCxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsMExBdUIwQixVQUFVLDZCQ3BDeEMsbzhFQXlEQTsyRkR6Q2EscUJBQXFCO2tCQVhqQyxTQUFTOytCQUNFLGVBQWUsYUFHZCxDQUFDOzRCQUNWLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHNCQUFzQixDQUFDOzRCQUNwRCxLQUFLLEVBQUUsSUFBSTt5QkFDWixDQUFDOzRHQVFPLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUVlLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDc0IsS0FBSztzQkFBOUMsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQVNWLFFBQVE7c0JBQXJDLFdBQVc7dUJBQUMsZUFBZTtnQkFDYSxNQUFNO3NCQUE5QyxZQUFZO3VCQUFDLE1BQU0sRUFBRSxDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7Q3VzdG9tU2VsZWN0SXRlbX0gZnJvbSAnLi9jdXN0b20tc2VsZWN0LWl0ZW0nO1xyXG5pbXBvcnQge1Njcm9sbFN0cmF0ZWd5LCBTY3JvbGxTdHJhdGVneU9wdGlvbnN9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY3VzdG9tLXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICdjdXN0b20tc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnY3VzdG9tLXNlbGVjdC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ3VzdG9tU2VsZWN0Q29tcG9uZW50KSxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfV1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21TZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIHNjcm9sbFN0cmF0ZWd5OiBTY3JvbGxTdHJhdGVneTtcclxuICBfdHJpZ2dlclJlY3Q6IENsaWVudFJlY3QgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGl0ZW1zOiBDdXN0b21TZWxlY3RJdGVtW10gPSBbXTtcclxuICBASW5wdXQoKSBhbGxvd1R5cGluZyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFsbG93UmVtb3ZlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYWxsb3dBZGRJdGVtID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhZGRJdGVtTGFiZWwgPSAnQWRkIE5ldyBJdGVtJztcclxuICBASW5wdXQoKSBwbGFjZUhvbGRlciA9ICdTZWxlY3QnO1xyXG4gIEBJbnB1dCgpIGZpbmRQbGFjZUhvbGRlciA9ICdGaW5kIGl0ZW0nO1xyXG4gIEBJbnB1dCgpIHNlYXJjaFRleHQgPSAnJztcclxuXHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tU2VsZWN0SXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uVW5TZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkFkZEl0ZW06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAVmlld0NoaWxkKCd0cmlnZ2VyJykgdHJpZ2dlcjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcclxuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBpbnB1dDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHVibGljIG9wZW5lZCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW06IEN1c3RvbVNlbGVjdEl0ZW0gfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBpbm5lclZhbHVlOiBhbnk7XHJcbiAgcHJpdmF0ZSBzZWxlY3RlZE1vZGVsVmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJpdmF0ZSBlZGl0ZWQgPSBmYWxzZTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JykgdGFiaW5kZXggPSAnMCc7XHJcbiAgQEhvc3RMaXN0ZW5lcignYmx1cicsIFsnJGV2ZW50LnRhcmdldCddKSBvbkJsdXIodGFyZ2V0OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmFsbG93VHlwaW5nKSB7XHJcbiAgICAgIGlmICh0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdGVkKSB7XHJcbiAgICAgICAgICB0aGlzLndyaXRlVmFsdWUodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IG5ldyBDdXN0b21TZWxlY3RJdGVtKHRoaXMudmFsdWUsIHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5vblNlbGVjdC5uZXh0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgdGhpcy5vblNlbGVjdC5uZXh0KHVuZGVmaW5lZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LnJlbGF0ZWRUYXJnZXQgJiYgdGFyZ2V0LnJlbGF0ZWRUYXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdzZWFyY2gtaW5wdXQtaXRlbScpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0VHJpZ2dlclJlY3QoKTtcclxuICAgIHRoaXMub3BlbmVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHNzbzogU2Nyb2xsU3RyYXRlZ3lPcHRpb25zKSB7XHJcbiAgICB0aGlzLnNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5zc28uYmxvY2soKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNldFRyaWdnZXJSZWN0KCk7XHJcbiAgICB9LCAzMDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRUcmlnZ2VyUmVjdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLl90cmlnZ2VyUmVjdCA9IHRoaXMudHJpZ2dlcj8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdEl0ZW0oaXRlbTogQ3VzdG9tU2VsZWN0SXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy5vcGVuZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcclxuICAgIHRoaXMuZWRpdGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkTW9kZWxWYWx1ZSA9IGl0ZW0udGV4dDtcclxuICAgIHRoaXMudmFsdWUgPSBpdGVtLnRleHQ7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgIHRoaXMub25TZWxlY3QubmV4dChpdGVtKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRJdGVtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vcGVuZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgdGhpcy5vbkFkZEl0ZW0ubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGtleVByZXNzKCk6IGFueSB7XHJcbiAgICB0aGlzLnNldFRyaWdnZXJSZWN0KCk7XHJcbiAgICBpZiAodGhpcy5hbGxvd1R5cGluZykge1xyXG4gICAgICB0aGlzLm9wZW5lZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVkaXRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbFZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVkaXRlZCA9IGZhbHNlO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xpY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0VHJpZ2dlclJlY3QoKTtcclxuICAgIHRoaXMub3BlbmVkID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9ICgpID0+IHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9ICgpID0+IHtcclxuICB9XHJcblxyXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5uZXJWYWx1ZTtcclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh2YWx1ZSk7XHJcbiAgICB0aGlzLm9uU2VsZWN0Lm5leHQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuaW5uZXJWYWx1ZSkge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtIHx8ICF0aGlzLnNlbGVjdGVkSXRlbS50ZXh0IHx8ICF2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gbmV3IEN1c3RvbVNlbGVjdEl0ZW0obnVsbCwgdmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHZhbHVlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTW9kZWxWYWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXJyb3dDbGljayhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuc2V0VHJpZ2dlclJlY3QoKTtcclxuICAgIGlmICh0aGlzLm9wZW5lZCkge1xyXG4gICAgICB0aGlzLm9wZW5lZCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vcGVuZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZUNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5vcGVuZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgdGhpcy5pbm5lclZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMub25VblNlbGVjdC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Ecm9wKCRldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgIGlmICghdGhpcy52YWx1ZSkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLnZhbHVlICs9IGB7eyR7JGV2ZW50LmRhdGF9fX1gO1xyXG4gICAgdGhpcy5lZGl0ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5vbkJsdXIodW5kZWZpbmVkKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjdXN0b20tc2VsZWN0LWlucHV0XCIgI3RyaWdnZXI+XHJcbiAgPG1hdC1mb3JtLWZpZWxkIGNka092ZXJsYXlPcmlnaW4gI29yaWdpbj1cImNka092ZXJsYXlPcmlnaW5cIiBjbGFzcz1cImN1c3RvbS1zZWxlY3QtY29tcG9uZW50XCIgW25nQ2xhc3NdPVwieydzZWxlY3Qtb3BlbicgOiBvcGVuZWR9XCIgYXBwZWFyYW5jZT1cImZpbGxcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgIDxpbnB1dCBtYXRJbnB1dCAjaW5wdXRcclxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgIChmb2N1cyk9XCJvcGVuZWQgPSB0cnVlXCJcclxuICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAoa2V5dXApPWtleVByZXNzKClcclxuICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tlZCgpXCJcclxuICAgICAgICAgICBkbmREcm9wem9uZVxyXG4gICAgICAgICAgIChkbmREcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcclxuICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgLz5cclxuICAgIDxzcGFuICpuZ0lmPVwiYWxsb3dSZW1vdmVcIiB0aXRsZT1cIlJlbW92ZXJcIiBjbGFzcz1cInJlbW92ZS1pY29uXCIgKGNsaWNrKT1cInJlbW92ZUNsaWNrKCRldmVudClcIj5cclxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxzcGFuIGNsYXNzPVwib3Blbi1pY29uXCIgKGNsaWNrKT1cImFycm93Q2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFzXCIgW25nQ2xhc3NdPVwieydmYS1jYXJldC1kb3duJyA6ICFvcGVuZWQsICdmYS1jYXJldC11cCcgOiBvcGVuZWR9XCI+PC9pPlxyXG4gICAgPC9zcGFuPlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwiY3VzdG9tLXNlbGVjdC1jb21wb25lbnRcIj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlIGNka0Nvbm5lY3RlZE92ZXJsYXlcclxuICAgICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQYW5lbENsYXNzXT1cIidjdXN0b20tc2VsZWN0LW92ZXJsYXktcGFuZWwnXCJcclxuICAgICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneV09XCJzY3JvbGxTdHJhdGVneVwiXHJcbiAgICAgICAgICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cIm9yaWdpblwiXHJcbiAgICAgICAgICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJvcGVuZWRcIlxyXG4gICAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU1pbldpZHRoXT1cIl90cmlnZ2VyUmVjdD8ud2lkdGghXCI+XHJcbiAgICA8dWwgY2xhc3M9XCJ1bC1hY1wiPlxyXG4gICAgICA8bGkgY2xhc3M9XCJsaS1zZWFyY2ggc2VhcmNoLWlucHV0LWl0ZW1cIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhcGlwYXNzLWlucHV0LXRleHQgc2VhcmNoLWlucHV0LWl0ZW1cIiBhcHBlYXJhbmNlPVwiZmlsbFwiPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IGNsYXNzPVwic2VhcmNoLWlucHV0LWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaW5kUGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9saT5cclxuXHJcbiAgICAgIDxsaSBjbGFzcz1cImNsaWNrYWJsZVwiICpuZ0Zvcj1cImxldCBpIG9mIGl0ZW1zIHwgc2VsZWN0RmlsdGVyOnNlYXJjaFRleHQ6J3RleHQnXCJcclxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RJdGVtKGkpXCJcclxuICAgICAgICAgIChtb3VzZWRvd24pPVwic2VsZWN0SXRlbShpKVwiPlxyXG4gICAgICAgIHt7aS50ZXh0fX1cclxuICAgICAgPC9saT5cclxuXHJcbiAgICAgIDxsaSAqbmdJZj1cImFsbG93QWRkSXRlbVwiIGNsYXNzPVwibGktYWRkXCIgKG1vdXNlZG93bik9XCJhZGRJdGVtKClcIiAoY2xpY2spPVwiYWRkSXRlbSgpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmYSBmYS1wbHVzLWNpcmNsZVwiPjwvc3Bhbj5cclxuICAgICAgICA8c3Bhbj57e2FkZEl0ZW1MYWJlbH19PC9zcGFuPlxyXG4gICAgICA8L2xpPlxyXG4gICAgPC91bD5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuIl19