@elderbyte/ngx-starter 14.5.4 → 14.7.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.
- package/esm2020/lib/common/data/data-context/data-context-active-page.mjs +1 -1
- package/esm2020/lib/common/data/data-context/data-context-base.mjs +2 -2
- package/esm2020/lib/common/data/data-context/data-context-continuable-base.mjs +1 -1
- package/esm2020/lib/common/data/data-context/data-context.mjs +1 -1
- package/esm2020/lib/common/data/datasource/data-source-adapter.mjs +1 -1
- package/esm2020/lib/common/data/datasource/data-source-processor.mjs +1 -1
- package/esm2020/lib/common/data/datasource/data-source.mjs +1 -1
- package/esm2020/lib/common/data/datasource/fetcher/delegate-data-source.mjs +1 -1
- package/esm2020/lib/common/data/datasource/local/local-list-data-source.mjs +1 -1
- package/esm2020/lib/common/data/datasource/local/local-paged-data-source.mjs +1 -1
- package/esm2020/lib/common/data/datasource/rest/rest-client.mjs +2 -2
- package/esm2020/lib/common/data/filters/filter-context.mjs +141 -0
- package/esm2020/lib/common/data/filters/filter.mjs +109 -0
- package/esm2020/lib/common/data/http-params-builder.mjs +2 -2
- package/esm2020/lib/common/data/public_api.mjs +3 -3
- package/esm2020/lib/common/data/required-filter-evaluator.mjs +1 -1
- package/esm2020/lib/common/data/token-chunk-request.mjs +1 -1
- package/esm2020/lib/common/utils/filter-util.mjs +1 -1
- package/esm2020/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +1 -1
- package/esm2020/lib/components/csv/elder-csv-stream-exporter.mjs +1 -1
- package/esm2020/lib/components/data-view/base/data-view-options-provider-binding.mjs +5 -1
- package/esm2020/lib/components/data-view/base/elder-data-view-base.mjs +1 -5
- package/esm2020/lib/components/data-view/base/elder-data-view-options-provider.mjs +1 -1
- package/esm2020/lib/components/data-view/base/elder-data-view-options.mjs +4 -1
- package/esm2020/lib/components/forms/search/elder-search-context.directive.mjs +33 -19
- package/esm2020/lib/components/forms/search/elder-search-input.directive.mjs +6 -12
- package/esm2020/lib/components/http-support/elder-http-client.service.mjs +1 -1
- package/esm2020/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +19 -10
- package/esm2020/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +3 -4
- package/esm2020/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected.mjs +9 -0
- package/esm2020/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +40 -25
- package/esm2020/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +197 -0
- package/esm2020/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +9 -9
- package/esm2020/lib/components/input/autocomplete/elder-autocomplete.module.mjs +19 -8
- package/esm2020/lib/components/input/autocomplete/many/word-position-finder.mjs +58 -0
- package/esm2020/lib/components/measures/directives/elder-unit-select.directive.mjs +2 -2
- package/esm2020/lib/components/public_api.mjs +1 -2
- package/esm2020/lib/components/select/elder-select-base.mjs +2 -2
- package/esm2020/lib/components/select/popup/selection-model-popup.directive.mjs +1 -1
- package/esm2020/lib/components/select/single/elder-select/elder-select.component.mjs +7 -6
- package/fesm2015/elderbyte-ngx-starter.mjs +461 -280
- package/fesm2015/elderbyte-ngx-starter.mjs.map +1 -1
- package/fesm2020/elderbyte-ngx-starter.mjs +458 -280
- package/fesm2020/elderbyte-ngx-starter.mjs.map +1 -1
- package/lib/common/data/data-context/data-context-active-page.d.ts +1 -1
- package/lib/common/data/data-context/data-context-base.d.ts +2 -2
- package/lib/common/data/data-context/data-context-continuable-base.d.ts +1 -1
- package/lib/common/data/data-context/data-context.d.ts +2 -2
- package/lib/common/data/datasource/data-source-adapter.d.ts +1 -1
- package/lib/common/data/datasource/data-source-processor.d.ts +1 -1
- package/lib/common/data/datasource/data-source.d.ts +1 -1
- package/lib/common/data/datasource/fetcher/delegate-data-source.d.ts +1 -1
- package/lib/common/data/datasource/local/local-list-data-source.d.ts +1 -1
- package/lib/common/data/datasource/local/local-paged-data-source.d.ts +1 -1
- package/lib/common/data/datasource/rest/rest-client.d.ts +1 -1
- package/lib/common/data/{filter-context.d.ts → filters/filter-context.d.ts} +3 -1
- package/lib/common/data/{filter.d.ts → filters/filter.d.ts} +15 -3
- package/lib/common/data/http-params-builder.d.ts +1 -1
- package/lib/common/data/public_api.d.ts +2 -2
- package/lib/common/data/required-filter-evaluator.d.ts +2 -2
- package/lib/common/data/token-chunk-request.d.ts +1 -1
- package/lib/common/utils/filter-util.d.ts +1 -1
- package/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.d.ts +1 -1
- package/lib/components/csv/elder-csv-stream-exporter.d.ts +1 -1
- package/lib/components/data-view/base/elder-data-view-options.d.ts +2 -1
- package/lib/components/forms/search/elder-search-context.directive.d.ts +15 -12
- package/lib/components/forms/search/elder-search-input.directive.d.ts +6 -7
- package/lib/components/http-support/elder-http-client.service.d.ts +1 -1
- package/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.d.ts +4 -2
- package/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected.d.ts +8 -0
- package/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.d.ts +14 -14
- package/lib/components/{multi-autocomplete/elder-multi-autocomplete.component.d.ts → input/autocomplete/elder-autocomplete-many.directive.d.ts} +46 -27
- package/lib/components/input/autocomplete/elder-autocomplete.directive.d.ts +2 -2
- package/lib/components/input/autocomplete/elder-autocomplete.module.d.ts +11 -7
- package/lib/components/{multi-autocomplete/word-position.d.ts → input/autocomplete/many/word-position-finder.d.ts} +0 -0
- package/lib/components/public_api.d.ts +0 -1
- package/lib/components/select/elder-select-base.d.ts +1 -1
- package/lib/components/select/popup/selection-model-popup.directive.d.ts +1 -1
- package/lib/components/select/single/elder-select/elder-select.component.d.ts +2 -1
- package/package.json +1 -1
- package/esm2020/lib/common/data/filter-context.mjs +0 -129
- package/esm2020/lib/common/data/filter.mjs +0 -72
- package/esm2020/lib/components/multi-autocomplete/elder-multi-auto-complete.module.mjs +0 -30
- package/esm2020/lib/components/multi-autocomplete/elder-multi-autocomplete.component.mjs +0 -122
- package/esm2020/lib/components/multi-autocomplete/word-position.mjs +0 -38
- package/lib/components/multi-autocomplete/elder-multi-auto-complete.module.d.ts +0 -14
- package/src/lib/components/multi-autocomplete/elder-multi-autocomplete.component.scss +0 -0
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
2
|
import * as i1 from "./elder-autocomplete/elder-autocomplete.component";
|
|
3
3
|
import * as i2 from "./elder-autocomplete.directive";
|
|
4
|
-
import * as i3 from "
|
|
5
|
-
import * as i4 from "@angular/
|
|
6
|
-
import * as i5 from "
|
|
7
|
-
import * as i6 from "@angular/material/
|
|
8
|
-
import * as i7 from "@angular/
|
|
9
|
-
import * as i8 from "
|
|
4
|
+
import * as i3 from "./elder-autocomplete-many.directive";
|
|
5
|
+
import * as i4 from "@angular/common";
|
|
6
|
+
import * as i5 from "@angular/forms";
|
|
7
|
+
import * as i6 from "@angular/material/input";
|
|
8
|
+
import * as i7 from "@angular/material/autocomplete";
|
|
9
|
+
import * as i8 from "../../infinitescroll/elder-infinite-scroll.module";
|
|
10
|
+
import * as i9 from "@angular/material/icon";
|
|
11
|
+
import * as i10 from "@angular/flex-layout";
|
|
12
|
+
import * as i11 from "@angular/material/progress-bar";
|
|
10
13
|
export { ElderAutocompleteComponent } from './elder-autocomplete/elder-autocomplete.component';
|
|
14
|
+
export { ElderAutocompleteManyDirective } from './elder-autocomplete-many.directive';
|
|
11
15
|
export { ElderAutocompleteDirective } from './elder-autocomplete.directive';
|
|
12
16
|
export declare class ElderAutocompleteModule {
|
|
13
17
|
static ɵfac: i0.ɵɵFactoryDeclaration<ElderAutocompleteModule, never>;
|
|
14
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ElderAutocompleteModule, [typeof i1.ElderAutocompleteComponent, typeof i2.ElderAutocompleteDirective], [typeof
|
|
18
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ElderAutocompleteModule, [typeof i1.ElderAutocompleteComponent, typeof i2.ElderAutocompleteDirective, typeof i3.ElderAutocompleteManyDirective], [typeof i4.CommonModule, typeof i5.ReactiveFormsModule, typeof i6.MatInputModule, typeof i7.MatAutocompleteModule, typeof i8.ElderInfiniteScrollModule, typeof i9.MatIconModule, typeof i10.FlexModule, typeof i11.MatProgressBarModule], [typeof i1.ElderAutocompleteComponent, typeof i2.ElderAutocompleteDirective, typeof i3.ElderAutocompleteManyDirective]>;
|
|
15
19
|
static ɵinj: i0.ɵɵInjectorDeclaration<ElderAutocompleteModule>;
|
|
16
20
|
}
|
|
File without changes
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export * from './theme/public_api';
|
|
2
2
|
export * from './access-denied/elder-access-denied.module';
|
|
3
3
|
export * from './expand-toggle-button/elder-expand-toggle-button.module';
|
|
4
|
-
export * from './multi-autocomplete/elder-multi-auto-complete.module';
|
|
5
4
|
export * from './labels/elder-labels.module';
|
|
6
5
|
export * from './panels/elder-panel.module';
|
|
7
6
|
export * from './files/elder-file.module';
|
|
@@ -2,7 +2,7 @@ import { ElementRef, EventEmitter, InjectionToken, NgZone, TemplateRef } from '@
|
|
|
2
2
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
3
3
|
import { IDataContext } from '../../common/data/data-context/data-context';
|
|
4
4
|
import { IDataSource } from '../../common/data/datasource/data-source';
|
|
5
|
-
import { Filter } from '../../common/data/filter';
|
|
5
|
+
import { Filter } from '../../common/data/filters/filter';
|
|
6
6
|
import { Sort } from '../../common/data/sort';
|
|
7
7
|
import { SelectionModelPopupDirective } from './popup/selection-model-popup.directive';
|
|
8
8
|
import { DataContextStatus } from '../../common/data/data-context/data-context-status';
|
|
@@ -3,7 +3,7 @@ import { MatDialog } from '@angular/material/dialog';
|
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
4
|
import { KeyGetterFn, SelectionModel } from '../../../common/selection/selection-model';
|
|
5
5
|
import { Sort } from '../../../common/data/sort';
|
|
6
|
-
import { Filter } from '../../../common/data/filter';
|
|
6
|
+
import { Filter } from '../../../common/data/filters/filter';
|
|
7
7
|
import { ElderDataViewOptionsProvider } from '../../data-view/base/elder-data-view-options-provider';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export declare function createSelectionModel(): SelectionModel<any>;
|
|
@@ -8,6 +8,7 @@ import { IElderEntityValueAccessor } from '../../../../common/forms/elder-entity
|
|
|
8
8
|
import { NgControl } from '@angular/forms';
|
|
9
9
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
10
10
|
import { TranslateService } from '@ngx-translate/core';
|
|
11
|
+
import { ElderAutocompleteOptionSelected } from '../../../input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected';
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
12
13
|
declare class EntityContext<T> {
|
|
13
14
|
readonly value: T;
|
|
@@ -114,7 +115,7 @@ export declare class ElderSelectComponent<TEntity = any, TId = any, TValue = TEn
|
|
|
114
115
|
togglePanel(autoTrigger: MatAutocompleteTrigger): void;
|
|
115
116
|
openPanel(autoTrigger: MatAutocompleteTrigger): void;
|
|
116
117
|
onInputClicked(autoTrigger: MatAutocompleteTrigger): void;
|
|
117
|
-
onOptionSelected(
|
|
118
|
+
onOptionSelected(optionSelected: ElderAutocompleteOptionSelected<TEntity, TId>): void;
|
|
118
119
|
openSelectionPopup(event: Event): void;
|
|
119
120
|
clear(event?: Event): void;
|
|
120
121
|
forceReloadFirst(): void;
|
package/package.json
CHANGED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import { Filter } from './filter';
|
|
2
|
-
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
import { distinctUntilChanged } from 'rxjs/operators';
|
|
4
|
-
export class FilterContext {
|
|
5
|
-
constructor() {
|
|
6
|
-
/***************************************************************************
|
|
7
|
-
* *
|
|
8
|
-
* Fields *
|
|
9
|
-
* *
|
|
10
|
-
**************************************************************************/
|
|
11
|
-
this._filters = new BehaviorSubject([]);
|
|
12
|
-
}
|
|
13
|
-
/***************************************************************************
|
|
14
|
-
* *
|
|
15
|
-
* Static Utilities *
|
|
16
|
-
* *
|
|
17
|
-
**************************************************************************/
|
|
18
|
-
/**
|
|
19
|
-
* Update the given filters with new ones, merging the two.
|
|
20
|
-
* The updated filters take precedence.
|
|
21
|
-
* @param filters
|
|
22
|
-
* @param updatedFilters
|
|
23
|
-
*/
|
|
24
|
-
static updateFilters(filters, updatedFilters) {
|
|
25
|
-
const filterMap = new Map();
|
|
26
|
-
if (filters) {
|
|
27
|
-
filters.forEach(f => filterMap.set(f.key, f));
|
|
28
|
-
}
|
|
29
|
-
if (updatedFilters) {
|
|
30
|
-
updatedFilters.forEach(f => {
|
|
31
|
-
if (Filter.hasValue(f)) {
|
|
32
|
-
filterMap.set(f.key, f);
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
if (filterMap.has(f.key)) {
|
|
36
|
-
filterMap.delete(f.key);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
return Array.from(filterMap.values());
|
|
42
|
-
}
|
|
43
|
-
/***************************************************************************
|
|
44
|
-
* *
|
|
45
|
-
* Read API *
|
|
46
|
-
* *
|
|
47
|
-
**************************************************************************/
|
|
48
|
-
get filters() {
|
|
49
|
-
return this._filters.asObservable().pipe(distinctUntilChanged((a, b) => this.equals(a, b)));
|
|
50
|
-
}
|
|
51
|
-
get filtersSnapshot() {
|
|
52
|
-
return this._filters.getValue();
|
|
53
|
-
}
|
|
54
|
-
findFilterValue(key) {
|
|
55
|
-
const f = this.findFilter(key);
|
|
56
|
-
return f ? f.value : undefined;
|
|
57
|
-
}
|
|
58
|
-
findFilter(key) {
|
|
59
|
-
return this.filtersSnapshot
|
|
60
|
-
.filter(f => f.key === key)
|
|
61
|
-
.find(first => true);
|
|
62
|
-
}
|
|
63
|
-
/***************************************************************************
|
|
64
|
-
* *
|
|
65
|
-
* Public API *
|
|
66
|
-
* *
|
|
67
|
-
**************************************************************************/
|
|
68
|
-
removeFilter(key) {
|
|
69
|
-
const current = this.filtersSnapshot;
|
|
70
|
-
const newFilters = current.filter(f => f.key !== key);
|
|
71
|
-
if (current.length !== newFilters.length) {
|
|
72
|
-
this.replaceFilters(newFilters);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* This method updatees / adds the given filter, leaving
|
|
77
|
-
* existing ones untouched.
|
|
78
|
-
* @param updatedFilter
|
|
79
|
-
*/
|
|
80
|
-
updateFilter(updatedFilter) {
|
|
81
|
-
if (updatedFilter) {
|
|
82
|
-
this.updateFilters([updatedFilter]);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* This method updates / adds the given filters, leaving
|
|
87
|
-
* existing ones untouched.
|
|
88
|
-
* @param updatedFilters
|
|
89
|
-
*/
|
|
90
|
-
updateFilters(updatedFilters) {
|
|
91
|
-
if (updatedFilters && updatedFilters.length > 0) {
|
|
92
|
-
this.replaceFilters(FilterContext.updateFilters(this.filtersSnapshot, updatedFilters));
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Replace all existing filters with the given new ones.
|
|
97
|
-
* @param newFilters
|
|
98
|
-
*/
|
|
99
|
-
replaceFilters(newFilters) {
|
|
100
|
-
this._filters.next(newFilters || []);
|
|
101
|
-
}
|
|
102
|
-
clear() {
|
|
103
|
-
this.replaceFilters([]);
|
|
104
|
-
}
|
|
105
|
-
/***************************************************************************
|
|
106
|
-
* *
|
|
107
|
-
* Private methods *
|
|
108
|
-
* *
|
|
109
|
-
**************************************************************************/
|
|
110
|
-
equals(aFilters, bFilters) {
|
|
111
|
-
if (aFilters.length !== bFilters.length) {
|
|
112
|
-
return false;
|
|
113
|
-
}
|
|
114
|
-
if (aFilters.length === 0 && bFilters.length === 0) {
|
|
115
|
-
return true;
|
|
116
|
-
}
|
|
117
|
-
// The both filter arrays have the same length, so we must compare them by value
|
|
118
|
-
const bIndex = new Map();
|
|
119
|
-
bFilters.forEach(f => bIndex.set(f.key, f));
|
|
120
|
-
for (const fa of aFilters) {
|
|
121
|
-
const bFilter = bIndex.get(fa.key);
|
|
122
|
-
if (!Filter.equals(bFilter, fa)) {
|
|
123
|
-
return false;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
return true;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21tb24vZGF0YS9maWx0ZXItY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEQsTUFBTSxPQUFPLGFBQWE7SUFBMUI7UUFFRTs7OztvRkFJNEU7UUFFM0QsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO0lBeUloRSxDQUFDO0lBdklDOzs7O2dGQUk0RTtJQUU1RTs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBaUIsRUFBRSxjQUF3QjtRQUNyRSxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUU1QyxJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvQztRQUVELElBQUksY0FBYyxFQUFFO1lBQ2xCLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDdEIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUN6QjtxQkFBTTtvQkFDTCxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO3dCQUN4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QUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFNUMsS0FBSyxNQUFNLEVBQUUsSUFBSSxRQUFRLEVBQUU7WUFDekIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFO2dCQUMvQixPQUFPLEtBQUssQ0FBQzthQUNkO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RmlsdGVyfSBmcm9tICcuL2ZpbHRlcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJDb250ZXh0IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXJzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4oW10pO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBTdGF0aWMgVXRpbGl0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIGdpdmVuIGZpbHRlcnMgd2l0aCBuZXcgb25lcywgbWVyZ2luZyB0aGUgdHdvLlxuICAgKiBUaGUgdXBkYXRlZCBmaWx0ZXJzIHRha2UgcHJlY2VkZW5jZS5cbiAgICogQHBhcmFtIGZpbHRlcnNcbiAgICogQHBhcmFtIHVwZGF0ZWRGaWx0ZXJzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVwZGF0ZUZpbHRlcnMoZmlsdGVyczogRmlsdGVyW10sIHVwZGF0ZWRGaWx0ZXJzOiBGaWx0ZXJbXSk6IEZpbHRlcltdIHtcbiAgICBjb25zdCBmaWx0ZXJNYXAgPSBuZXcgTWFwPHN0cmluZywgRmlsdGVyPigpO1xuXG4gICAgaWYgKGZpbHRlcnMpIHtcbiAgICAgIGZpbHRlcnMuZm9yRWFjaChmID0+IGZpbHRlck1hcC5zZXQoZi5rZXksIGYpKTtcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlZEZpbHRlcnMpIHtcbiAgICAgIHVwZGF0ZWRGaWx0ZXJzLmZvckVhY2goZiA9PiB7XG4gICAgICAgIGlmIChGaWx0ZXIuaGFzVmFsdWUoZikpIHtcbiAgICAgICAgICBmaWx0ZXJNYXAuc2V0KGYua2V5LCBmKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZmlsdGVyTWFwLmhhcyhmLmtleSkpIHtcbiAgICAgICAgICAgIGZpbHRlck1hcC5kZWxldGUoZi5rZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEFycmF5LmZyb20oZmlsdGVyTWFwLnZhbHVlcygpKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBSZWFkIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBnZXQgZmlsdGVycygpOiBPYnNlcnZhYmxlPEZpbHRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcnMuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiB0aGlzLmVxdWFscyhhLCBiKSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJzU25hcHNob3QoKTogRmlsdGVyW10ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJzLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZmluZEZpbHRlclZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGYgPSB0aGlzLmZpbmRGaWx0ZXIoa2V5KTtcbiAgICByZXR1cm4gZiA/IGYudmFsdWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZmluZEZpbHRlcihrZXk6IHN0cmluZyk6IEZpbHRlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyc1NuYXBzaG90XG4gICAgICAuZmlsdGVyKGYgPT4gZi5rZXkgPT09IGtleSlcbiAgICAgIC5maW5kKGZpcnN0ID0+IHRydWUpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHJlbW92ZUZpbHRlcihrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmZpbHRlcnNTbmFwc2hvdDtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gY3VycmVudC5maWx0ZXIoZiA9PiBmLmtleSAhPT0ga2V5KTtcbiAgICBpZiAoY3VycmVudC5sZW5ndGggIT09IG5ld0ZpbHRlcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnJlcGxhY2VGaWx0ZXJzKG5ld0ZpbHRlcnMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCB1cGRhdGVlcyAvIGFkZHMgdGhlIGdpdmVuIGZpbHRlciwgbGVhdmluZ1xuICAgKiBleGlzdGluZyBvbmVzIHVudG91Y2hlZC5cbiAgICogQHBhcmFtIHVwZGF0ZWRGaWx0ZXJcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVGaWx0ZXIodXBkYXRlZEZpbHRlcj86IEZpbHRlcik6IHZvaWQge1xuICAgIGlmICh1cGRhdGVkRmlsdGVyKSB7XG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoW3VwZGF0ZWRGaWx0ZXJdKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgdXBkYXRlcyAvIGFkZHMgdGhlIGdpdmVuIGZpbHRlcnMsIGxlYXZpbmdcbiAgICogZXhpc3Rpbmcgb25lcyB1bnRvdWNoZWQuXG4gICAqIEBwYXJhbSB1cGRhdGVkRmlsdGVyc1xuICAgKi9cbiAgcHVibGljIHVwZGF0ZUZpbHRlcnModXBkYXRlZEZpbHRlcnM/OiBGaWx0ZXJbXSk6IHZvaWQge1xuICAgIGlmICh1cGRhdGVkRmlsdGVycyAmJiB1cGRhdGVkRmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJlcGxhY2VGaWx0ZXJzKFxuICAgICAgICBGaWx0ZXJDb250ZXh0LnVwZGF0ZUZpbHRlcnModGhpcy5maWx0ZXJzU25hcHNob3QsIHVwZGF0ZWRGaWx0ZXJzKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSBhbGwgZXhpc3RpbmcgZmlsdGVycyB3aXRoIHRoZSBnaXZlbiBuZXcgb25lcy5cbiAgICogQHBhcmFtIG5ld0ZpbHRlcnNcbiAgICovXG4gIHB1YmxpYyByZXBsYWNlRmlsdGVycyhuZXdGaWx0ZXJzPzogRmlsdGVyW10pIHtcbiAgICB0aGlzLl9maWx0ZXJzLm5leHQobmV3RmlsdGVycyB8fCBbXSk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5yZXBsYWNlRmlsdGVycyhbXSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGVxdWFscyhhRmlsdGVyczogRmlsdGVyW10sIGJGaWx0ZXJzOiBGaWx0ZXJbXSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKGFGaWx0ZXJzLmxlbmd0aCAhPT0gYkZpbHRlcnMubGVuZ3RoKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGlmIChhRmlsdGVycy5sZW5ndGggPT09IDAgJiYgYkZpbHRlcnMubGVuZ3RoID09PSAwKSB7IHJldHVybiB0cnVlOyB9XG5cbiAgICAvLyBUaGUgYm90aCBmaWx0ZXIgYXJyYXlzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLCBzbyB3ZSBtdXN0IGNvbXBhcmUgdGhlbSBieSB2YWx1ZVxuXG4gICAgY29uc3QgYkluZGV4ID0gbmV3IE1hcDxzdHJpbmcsIEZpbHRlcj4oKTtcbiAgICBiRmlsdGVycy5mb3JFYWNoKGYgPT4gYkluZGV4LnNldChmLmtleSwgZikpO1xuXG4gICAgZm9yIChjb25zdCBmYSBvZiBhRmlsdGVycykge1xuICAgICAgY29uc3QgYkZpbHRlciA9IGJJbmRleC5nZXQoZmEua2V5KTtcbiAgICAgIGlmICghRmlsdGVyLmVxdWFscyhiRmlsdGVyLCBmYSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { Objects } from '../objects';
|
|
2
|
-
import { CollectionUtil } from '../utils/collection-util';
|
|
3
|
-
export class Filter {
|
|
4
|
-
/***************************************************************************
|
|
5
|
-
* *
|
|
6
|
-
* Constructor *
|
|
7
|
-
* *
|
|
8
|
-
**************************************************************************/
|
|
9
|
-
constructor(key, value) {
|
|
10
|
-
if (!key) {
|
|
11
|
-
throw new Error('ArgumentNull: Filter.key can not be null!');
|
|
12
|
-
}
|
|
13
|
-
this.key = key;
|
|
14
|
-
this.value = value;
|
|
15
|
-
}
|
|
16
|
-
/***************************************************************************
|
|
17
|
-
* *
|
|
18
|
-
* Properties *
|
|
19
|
-
* *
|
|
20
|
-
**************************************************************************/
|
|
21
|
-
/**
|
|
22
|
-
* Checks if this filter has a value.
|
|
23
|
-
* This is the case when the value is non null and
|
|
24
|
-
* in case its an array, also non empty.
|
|
25
|
-
*/
|
|
26
|
-
static hasValue(self) {
|
|
27
|
-
if (!self) {
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
if (Objects.nonNull(self.value)) {
|
|
31
|
-
if (self.value instanceof Array) {
|
|
32
|
-
return self.value.length > 0;
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Checks this filter has the same value as the other given filter.
|
|
42
|
-
* @param self
|
|
43
|
-
* @param other
|
|
44
|
-
*/
|
|
45
|
-
static equals(self, other) {
|
|
46
|
-
if (self === other) {
|
|
47
|
-
return true;
|
|
48
|
-
} // Same obj reference
|
|
49
|
-
if (!self) {
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
if (!other) {
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
if (self.key !== other.key) {
|
|
56
|
-
return false;
|
|
57
|
-
}
|
|
58
|
-
if (self.value === other.value) {
|
|
59
|
-
return true;
|
|
60
|
-
} // Same key and same value reference
|
|
61
|
-
// In case the filter has a multi value array, we need to compare those by value
|
|
62
|
-
if (self.value instanceof Array || other.value instanceof Array) {
|
|
63
|
-
const valueArr = self.value instanceof Array ? self.value : [self.value];
|
|
64
|
-
const otherArr = other instanceof Array ? other : [other];
|
|
65
|
-
return CollectionUtil.equalSetDeep(new Set(valueArr), new Set(otherArr));
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
return false; // Otherwise, they are not equal
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tbW9uL2RhdGEvZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRXhELE1BQU0sT0FBTyxNQUFNO0lBb0JqQjs7OztnRkFJNEU7SUFFNUUsWUFDSSxHQUFXLEVBQ1gsS0FBK0I7UUFFakMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztTQUFFO1FBRTNFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUU1RTs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBRWpDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFBRSxPQUFPLEtBQUssQ0FBQztTQUFFO1FBRTVCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxJQUFJLENBQUMsS0FBSyxZQUFZLEtBQUssRUFBRTtnQkFDL0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNIO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFFOUMsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7U0FBRSxDQUFDLHFCQUFxQjtRQUUxRCxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQUUsT0FBTyxLQUFLLENBQUM7U0FBRTtRQUM1QixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQUUsT0FBTyxLQUFLLENBQUM7U0FBRTtRQUM3QixJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO1NBQUU7UUFDN0MsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztTQUFFLENBQUMsb0NBQW9DO1FBRXJGLGdGQUFnRjtRQUVoRixJQUFJLElBQUksQ0FBQyxLQUFLLFlBQVksS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLFlBQVksS0FBSyxFQUFFO1lBQy9ELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6RSxNQUFNLFFBQVEsR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUQsT0FBTyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7U0FDMUU7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDLENBQUMsZ0NBQWdDO1NBQy9DO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7T2JqZWN0c30gZnJvbSAnLi4vb2JqZWN0cyc7XG5pbXBvcnQge0NvbGxlY3Rpb25VdGlsfSBmcm9tICcuLi91dGlscy9jb2xsZWN0aW9uLXV0aWwnO1xuXG5leHBvcnQgY2xhc3MgRmlsdGVyIHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogVGhlIGZpbHRlciBrZXkuXG4gICAqIFVuaXF1ZSBpbnNpZGUgYSBGaWx0ZXJDb250ZXh0IG9yIEZpbHRlciByZXF1ZXN0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsdGVyIHZhbHVlIGFzIHN0cmluZy5cbiAgICogTXVsdGlwbGUgc3RyaW5nIHZhbHVlcyBhcmUgc3VwcG9ydGVkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGw7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBrZXk6IHN0cmluZyxcbiAgICAgIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwpIHtcblxuICAgIGlmICgha2V5KSB7IHRocm93IG5ldyBFcnJvcignQXJndW1lbnROdWxsOiBGaWx0ZXIua2V5IGNhbiBub3QgYmUgbnVsbCEnKTsgfVxuXG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGlzIGZpbHRlciBoYXMgYSB2YWx1ZS5cbiAgICogVGhpcyBpcyB0aGUgY2FzZSB3aGVuIHRoZSB2YWx1ZSBpcyBub24gbnVsbCBhbmRcbiAgICogaW4gY2FzZSBpdHMgYW4gYXJyYXksIGFsc28gbm9uIGVtcHR5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBoYXNWYWx1ZShzZWxmOiBGaWx0ZXIpOiBib29sZWFuIHtcblxuICAgIGlmICghc2VsZikgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgIGlmIChPYmplY3RzLm5vbk51bGwoc2VsZi52YWx1ZSkpIHtcbiAgICAgICBpZiAoc2VsZi52YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICByZXR1cm4gc2VsZi52YWx1ZS5sZW5ndGggPiAwO1xuICAgICAgIH0gZWxzZSB7XG4gICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgdGhpcyBmaWx0ZXIgaGFzIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBvdGhlciBnaXZlbiBmaWx0ZXIuXG4gICAqIEBwYXJhbSBzZWxmXG4gICAqIEBwYXJhbSBvdGhlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBlcXVhbHMoc2VsZjogRmlsdGVyLCBvdGhlcjogRmlsdGVyKTogYm9vbGVhbiB7XG5cbiAgICBpZiAoc2VsZiA9PT0gb3RoZXIpIHsgcmV0dXJuIHRydWU7IH0gLy8gU2FtZSBvYmogcmVmZXJlbmNlXG5cbiAgICBpZiAoIXNlbGYpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgaWYgKCFvdGhlcikgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBpZiAoc2VsZi5rZXkgIT09IG90aGVyLmtleSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBpZiAoc2VsZi52YWx1ZSA9PT0gb3RoZXIudmFsdWUpIHsgcmV0dXJuIHRydWU7IH0gLy8gU2FtZSBrZXkgYW5kIHNhbWUgdmFsdWUgcmVmZXJlbmNlXG5cbiAgICAvLyBJbiBjYXNlIHRoZSBmaWx0ZXIgaGFzIGEgbXVsdGkgdmFsdWUgYXJyYXksIHdlIG5lZWQgdG8gY29tcGFyZSB0aG9zZSBieSB2YWx1ZVxuXG4gICAgaWYgKHNlbGYudmFsdWUgaW5zdGFuY2VvZiBBcnJheSB8fCBvdGhlci52YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBjb25zdCB2YWx1ZUFyciA9IHNlbGYudmFsdWUgaW5zdGFuY2VvZiBBcnJheSA/IHNlbGYudmFsdWUgOiBbc2VsZi52YWx1ZV07XG4gICAgICBjb25zdCBvdGhlckFyciA9IG90aGVyIGluc3RhbmNlb2YgQXJyYXkgPyBvdGhlciA6IFtvdGhlcl07XG4gICAgICByZXR1cm4gQ29sbGVjdGlvblV0aWwuZXF1YWxTZXREZWVwKG5ldyBTZXQodmFsdWVBcnIpLCBuZXcgU2V0KG90aGVyQXJyKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTsgLy8gT3RoZXJ3aXNlLCB0aGV5IGFyZSBub3QgZXF1YWxcbiAgICB9XG4gIH1cbn1cblxuIl19
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { ElderMultiAutocompleteComponent } from './elder-multi-autocomplete.component';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { FlexLayoutModule } from '@angular/flex-layout';
|
|
5
|
-
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
6
|
-
import { MatInputModule } from '@angular/material/input';
|
|
7
|
-
import { ReactiveFormsModule } from '@angular/forms';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
export { ElderMultiAutocompleteComponent } from './elder-multi-autocomplete.component';
|
|
10
|
-
export * from './word-position';
|
|
11
|
-
export class ElderMultiAutoCompleteModule {
|
|
12
|
-
}
|
|
13
|
-
ElderMultiAutoCompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderMultiAutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
14
|
-
ElderMultiAutoCompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: ElderMultiAutoCompleteModule, declarations: [ElderMultiAutocompleteComponent], imports: [CommonModule, ReactiveFormsModule, MatInputModule, MatAutocompleteModule, FlexLayoutModule], exports: [ElderMultiAutocompleteComponent] });
|
|
15
|
-
ElderMultiAutoCompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderMultiAutoCompleteModule, imports: [CommonModule, ReactiveFormsModule, MatInputModule, MatAutocompleteModule, FlexLayoutModule] });
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderMultiAutoCompleteModule, decorators: [{
|
|
17
|
-
type: NgModule,
|
|
18
|
-
args: [{
|
|
19
|
-
imports: [
|
|
20
|
-
CommonModule, ReactiveFormsModule, MatInputModule, MatAutocompleteModule, FlexLayoutModule
|
|
21
|
-
],
|
|
22
|
-
declarations: [
|
|
23
|
-
ElderMultiAutocompleteComponent
|
|
24
|
-
],
|
|
25
|
-
exports: [
|
|
26
|
-
ElderMultiAutocompleteComponent
|
|
27
|
-
]
|
|
28
|
-
}]
|
|
29
|
-
}] });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItbXVsdGktYXV0by1jb21wbGV0ZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWF1dG9jb21wbGV0ZS9lbGRlci1tdWx0aS1hdXRvLWNvbXBsZXRlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBRW5ELE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JGLGNBQWMsaUJBQWlCLENBQUM7QUFjaEMsTUFBTSxPQUFPLDRCQUE0Qjs7eUhBQTVCLDRCQUE0QjswSEFBNUIsNEJBQTRCLGlCQU5qQywrQkFBK0IsYUFIL0IsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsYUFNMUYsK0JBQStCOzBIQUcxQiw0QkFBNEIsWUFUakMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0I7MkZBU3JGLDRCQUE0QjtrQkFYeEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0I7cUJBQzdGO29CQUNELFlBQVksRUFBRTt3QkFDViwrQkFBK0I7cUJBQ2xDO29CQUNELE9BQU8sRUFBRzt3QkFDTiwrQkFBK0I7cUJBQ2xDO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RWxkZXJNdWx0aUF1dG9jb21wbGV0ZUNvbXBvbmVudH0gZnJvbSAnLi9lbGRlci1tdWx0aS1hdXRvY29tcGxldGUuY29tcG9uZW50JztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtGbGV4TGF5b3V0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9mbGV4LWxheW91dCc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQge1JlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IHtFbGRlck11bHRpQXV0b2NvbXBsZXRlQ29tcG9uZW50fSBmcm9tICcuL2VsZGVyLW11bHRpLWF1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi93b3JkLXBvc2l0aW9uJztcblxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLCBGbGV4TGF5b3V0TW9kdWxlXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgRWxkZXJNdWx0aUF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgIF0sXG4gICAgZXhwb3J0cyA6IFtcbiAgICAgICAgRWxkZXJNdWx0aUF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJNdWx0aUF1dG9Db21wbGV0ZU1vZHVsZSB7XG5cbn1cbiJdfQ==
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { UntypedFormControl } from '@angular/forms';
|
|
3
|
-
import { WordPositionFinder } from './word-position';
|
|
4
|
-
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
5
|
-
import { EMPTY, of } from 'rxjs';
|
|
6
|
-
import { debounceTime, switchMap } from 'rxjs/operators';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/common";
|
|
9
|
-
import * as i2 from "@angular/forms";
|
|
10
|
-
import * as i3 from "@angular/material/form-field";
|
|
11
|
-
import * as i4 from "@angular/material/input";
|
|
12
|
-
import * as i5 from "@angular/material/autocomplete";
|
|
13
|
-
import * as i6 from "@angular/material/core";
|
|
14
|
-
import * as i7 from "@angular/flex-layout/flex";
|
|
15
|
-
export class ElderMultiAutocompleteComponent {
|
|
16
|
-
/***************************************************************************
|
|
17
|
-
* *
|
|
18
|
-
* Constructor *
|
|
19
|
-
* *
|
|
20
|
-
**************************************************************************/
|
|
21
|
-
constructor() {
|
|
22
|
-
/***************************************************************************
|
|
23
|
-
* *
|
|
24
|
-
* Fields *
|
|
25
|
-
* *
|
|
26
|
-
**************************************************************************/
|
|
27
|
-
this.logger = LoggerFactory.getLogger(this.constructor.name);
|
|
28
|
-
/**
|
|
29
|
-
* Occurs when the value has been changed and committed
|
|
30
|
-
*/
|
|
31
|
-
this.valueChanged = new EventEmitter();
|
|
32
|
-
this.formControl = new UntypedFormControl();
|
|
33
|
-
this.wordFinder = new WordPositionFinder();
|
|
34
|
-
}
|
|
35
|
-
/***************************************************************************
|
|
36
|
-
* *
|
|
37
|
-
* Life-Cycle *
|
|
38
|
-
* *
|
|
39
|
-
**************************************************************************/
|
|
40
|
-
ngOnInit() {
|
|
41
|
-
this.availableSuggestions = this.formControl.valueChanges.pipe(debounceTime(150), switchMap((value) => {
|
|
42
|
-
if (this.cursorPosition) {
|
|
43
|
-
const cursor = this.cursorPosition;
|
|
44
|
-
const word = this.extractWordFrom(value, cursor);
|
|
45
|
-
return this.getSuggestions(word);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
return EMPTY;
|
|
49
|
-
}
|
|
50
|
-
}));
|
|
51
|
-
this._sub = this.formControl.valueChanges.
|
|
52
|
-
subscribe(value => this.onValueChanged(value));
|
|
53
|
-
}
|
|
54
|
-
ngOnDestroy() {
|
|
55
|
-
this._sub.unsubscribe();
|
|
56
|
-
}
|
|
57
|
-
/***************************************************************************
|
|
58
|
-
* *
|
|
59
|
-
* Properties *
|
|
60
|
-
* *
|
|
61
|
-
**************************************************************************/
|
|
62
|
-
/***************************************************************************
|
|
63
|
-
* *
|
|
64
|
-
* Public API *
|
|
65
|
-
* *
|
|
66
|
-
**************************************************************************/
|
|
67
|
-
onValueChanged(value) {
|
|
68
|
-
this.logger.debug('value changed', value);
|
|
69
|
-
this.valueChanged.next(value);
|
|
70
|
-
}
|
|
71
|
-
insertSuggestion(suggestion) {
|
|
72
|
-
const full = this.formControl.value != null ? this.formControl.value : '';
|
|
73
|
-
if (this.cursorPosition) {
|
|
74
|
-
const cursor = this.cursorPosition;
|
|
75
|
-
const replacement = this.wordFinder.replaceWord(full, cursor, suggestion + ' ');
|
|
76
|
-
return replacement.newText;
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
this.logger.warn('Insert not possible as no cursor-position was available!');
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
/***************************************************************************
|
|
83
|
-
* *
|
|
84
|
-
* Private methods *
|
|
85
|
-
* *
|
|
86
|
-
**************************************************************************/
|
|
87
|
-
getSuggestions(input) {
|
|
88
|
-
if (this.suggestionProvider) {
|
|
89
|
-
return this.suggestionProvider.loadSuggestions(input);
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
return of([]);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
get cursorPosition() {
|
|
96
|
-
if (this.suggestionInput) {
|
|
97
|
-
return this.suggestionInput.nativeElement.selectionStart;
|
|
98
|
-
}
|
|
99
|
-
return null;
|
|
100
|
-
}
|
|
101
|
-
extractWordFrom(text, position) {
|
|
102
|
-
const word = this.wordFinder.findWord(text, position);
|
|
103
|
-
return word.value;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
ElderMultiAutocompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderMultiAutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
107
|
-
ElderMultiAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: ElderMultiAutocompleteComponent, selector: "elder-multi-autocomplete", inputs: { placeholder: "placeholder", suggestionProvider: "suggestionProvider" }, outputs: { valueChanged: "modify" }, viewQueries: [{ propertyName: "suggestionInput", first: true, predicate: ["suggestionInput"], descendants: true, static: true }], ngImport: i0, template: "\n<!--\n TODO This should probably be refactored to a directive\n-->\n\n<mat-form-field fxFlex\n\n>\n\n\n <input matInput\n #suggestionInput\n type=\"text\"\n [matAutocomplete]=\"auto\"\n [formControl]=\"formControl\"\n name=\"multiinput\" [placeholder]=\"placeholder\">\n\n <mat-autocomplete #auto=\"matAutocomplete\" >\n <mat-option *ngFor=\"let suggestion of availableSuggestions | async\" [value]=\"insertSuggestion(suggestion)\">\n {{ suggestion }}\n </mat-option>\n </mat-autocomplete>\n</mat-form-field>\n\n\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.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: "component", type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i7.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
|
|
108
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderMultiAutocompleteComponent, decorators: [{
|
|
109
|
-
type: Component,
|
|
110
|
-
args: [{ selector: 'elder-multi-autocomplete', template: "\n<!--\n TODO This should probably be refactored to a directive\n-->\n\n<mat-form-field fxFlex\n\n>\n\n\n <input matInput\n #suggestionInput\n type=\"text\"\n [matAutocomplete]=\"auto\"\n [formControl]=\"formControl\"\n name=\"multiinput\" [placeholder]=\"placeholder\">\n\n <mat-autocomplete #auto=\"matAutocomplete\" >\n <mat-option *ngFor=\"let suggestion of availableSuggestions | async\" [value]=\"insertSuggestion(suggestion)\">\n {{ suggestion }}\n </mat-option>\n </mat-autocomplete>\n</mat-form-field>\n\n\n\n\n" }]
|
|
111
|
-
}], ctorParameters: function () { return []; }, propDecorators: { placeholder: [{
|
|
112
|
-
type: Input
|
|
113
|
-
}], suggestionProvider: [{
|
|
114
|
-
type: Input
|
|
115
|
-
}], valueChanged: [{
|
|
116
|
-
type: Output,
|
|
117
|
-
args: ['modify']
|
|
118
|
-
}], suggestionInput: [{
|
|
119
|
-
type: ViewChild,
|
|
120
|
-
args: ['suggestionInput', { static: true }]
|
|
121
|
-
}] } });
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItbXVsdGktYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktYXV0b2NvbXBsZXRlL2VsZGVyLW11bHRpLWF1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWF1dG9jb21wbGV0ZS9lbGRlci1tdWx0aS1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsS0FBSyxFQUE0QixFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFDLFlBQVksRUFBVyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBU2hFLE1BQU0sT0FBTywrQkFBK0I7SUFpQ3hDOzs7O2dGQUk0RTtJQUU1RTtRQXJDQTs7OztvRkFJNEU7UUFFM0QsV0FBTSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQVd6RTs7V0FFRztRQUVJLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUsxQyxnQkFBVyxHQUF1QixJ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QStCO2tCQUwzQyxTQUFTOytCQUNJLDBCQUEwQjswRUFrQjdCLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQU9DLFlBQVk7c0JBRGxCLE1BQU07dUJBQUMsUUFBUTtnQkFJVCxlQUFlO3NCQURyQixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtVbnR5cGVkRm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7V29yZFBvc2l0aW9uRmluZGVyfSBmcm9tICcuL3dvcmQtcG9zaXRpb24nO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0VNUFRZLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBmbGF0TWFwLCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SVN1Z2dlc3Rpb25Qcm92aWRlcn0gZnJvbSAnLi4vLi4vY29tbW9uL3N1Z2dlc3Rpb24tcHJvdmlkZXInO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZWxkZXItbXVsdGktYXV0b2NvbXBsZXRlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWxkZXItbXVsdGktYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9lbGRlci1tdWx0aS1hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBFbGRlck11bHRpQXV0b2NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICAgIHByaXZhdGUgX3N1YjogU3Vic2NyaXB0aW9uO1xuXG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3VnZ2VzdGlvblByb3ZpZGVyOiBJU3VnZ2VzdGlvblByb3ZpZGVyPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBPY2N1cnMgd2hlbiB0aGUgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZCBhbmQgY29tbWl0dGVkXG4gICAgICovXG4gICAgQE91dHB1dCgnbW9kaWZ5JylcbiAgICBwdWJsaWMgdmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdzdWdnZXN0aW9uSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBzdWdnZXN0aW9uSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBwdWJsaWMgZm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcbiAgICBwdWJsaWMgYXZhaWxhYmxlU3VnZ2VzdGlvbnM6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuXG4gICAgcHJpdmF0ZSB3b3JkRmluZGVyOiBXb3JkUG9zaXRpb25GaW5kZXI7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMud29yZEZpbmRlciA9IG5ldyBXb3JkUG9zaXRpb25GaW5kZXIoKTtcbiAgICB9XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAqIExpZmUtQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmF2YWlsYWJsZVN1Z2dlc3Rpb25zID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSgxNTApLFxuICAgICAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZSkgPT4ge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3Vyc29yID0gdGhpcy5jdXJzb3JQb3NpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd29yZCA9IHRoaXMuZXh0cmFjdFdvcmRGcm9tKHZhbHVlLCAgY3Vyc29yKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3VnZ2VzdGlvbnMod29yZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3N1YiA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLlxuICAgICAgICBzdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5vblZhbHVlQ2hhbmdlZCh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXG4gICAgcHVibGljIG9uVmFsdWVDaGFuZ2VkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3ZhbHVlIGNoYW5nZWQnLCB2YWx1ZSk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2VkLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbnNlcnRTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IHN0cmluZykge1xuICAgICAgICBjb25zdCBmdWxsID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSAhPSBudWxsID8gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSA6ICcnO1xuICAgICAgICBpZiAodGhpcy5jdXJzb3JQb3NpdGlvbikge1xuICAgICAgICAgICAgY29uc3QgY3Vyc29yID0gdGhpcy5jdXJzb3JQb3NpdGlvbjtcbiAgICAgICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gdGhpcy53b3JkRmluZGVyLnJlcGxhY2VXb3JkKGZ1bGwsIGN1cnNvciwgc3VnZ2VzdGlvbiArICcgJyk7XG4gICAgICAgICAgICByZXR1cm4gcmVwbGFjZW1lbnQubmV3VGV4dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ0luc2VydCBub3QgcG9zc2libGUgYXMgbm8gY3Vyc29yLXBvc2l0aW9uIHdhcyBhdmFpbGFibGUhJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgcHJpdmF0ZSBnZXRTdWdnZXN0aW9ucyhpbnB1dDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xuXG4gICAgICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25Qcm92aWRlcikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3VnZ2VzdGlvblByb3ZpZGVyLmxvYWRTdWdnZXN0aW9ucyhpbnB1dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgY3Vyc29yUG9zaXRpb24oKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICBpZiAodGhpcy5zdWdnZXN0aW9uSW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VnZ2VzdGlvbklucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dHJhY3RXb3JkRnJvbSh0ZXh0OiBzdHJpbmcsIHBvc2l0aW9uOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB3b3JkID0gdGhpcy53b3JkRmluZGVyLmZpbmRXb3JkKHRleHQsIHBvc2l0aW9uKTtcbiAgICAgICAgcmV0dXJuIHdvcmQudmFsdWU7XG4gICAgfVxuXG59XG4iLCJcbjwhLS1cbiAgICAgICAgICAgICAgICBUT0RPIFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHJlZmFjdG9yZWQgdG8gYSBkaXJlY3RpdmVcbi0tPlxuXG48bWF0LWZvcm0tZmllbGQgZnhGbGV4XG5cbj5cblxuXG4gIDxpbnB1dCBtYXRJbnB1dFxuICAgICAgICAgI3N1Z2dlc3Rpb25JbnB1dFxuICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICBuYW1lPVwibXVsdGlpbnB1dFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiPlxuXG4gIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgPlxuICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBzdWdnZXN0aW9uIG9mIGF2YWlsYWJsZVN1Z2dlc3Rpb25zIHwgYXN5bmNcIiBbdmFsdWVdPVwiaW5zZXJ0U3VnZ2VzdGlvbihzdWdnZXN0aW9uKVwiPlxuICAgICAge3sgc3VnZ2VzdGlvbiB9fVxuICAgIDwvbWF0LW9wdGlvbj5cbiAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuPC9tYXQtZm9ybS1maWVsZD5cblxuXG5cblxuIl19
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
export class TextRange {
|
|
2
|
-
constructor(start, end, value) {
|
|
3
|
-
this.start = start;
|
|
4
|
-
this.end = end;
|
|
5
|
-
this.value = value;
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
export class ReplacementResult {
|
|
9
|
-
constructor(newText, replaced) {
|
|
10
|
-
this.newText = newText;
|
|
11
|
-
this.replaced = replaced;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
export class WordPositionFinder {
|
|
15
|
-
findWord(text, position) {
|
|
16
|
-
// Search for the word's beginning and end.
|
|
17
|
-
const left = text.slice(0, position).search(/\S+$/);
|
|
18
|
-
let right = text.slice(position).search(/\s/);
|
|
19
|
-
// The last word in the string is a special case.
|
|
20
|
-
if (right < 0) {
|
|
21
|
-
right = text.length;
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
right += position;
|
|
25
|
-
}
|
|
26
|
-
const word = text.substring(left, right);
|
|
27
|
-
return new TextRange(left, right, word);
|
|
28
|
-
}
|
|
29
|
-
replaceWord(text, position, replacement) {
|
|
30
|
-
const current = this.findWord(text, position);
|
|
31
|
-
const beforePos = current.start;
|
|
32
|
-
const before = text.substring(0, beforePos);
|
|
33
|
-
const after = text.substring(current.end, text.length);
|
|
34
|
-
const newText = before + replacement + after;
|
|
35
|
-
return new ReplacementResult(newText, new TextRange(beforePos, beforePos + replacement.length, replacement));
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yZC1wb3NpdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktYXV0b2NvbXBsZXRlL3dvcmQtcG9zaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFNBQVM7SUFDcEIsWUFDUyxLQUFhLEVBQ2IsR0FBVyxFQUNYLEtBQWE7UUFGYixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUNYLFVBQUssR0FBTCxLQUFLLENBQVE7SUFFdEIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixZQUNTLE9BQWUsRUFDZixRQUFtQjtRQURuQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUU1QixDQUFDO0NBQ0Y7QUFJRCxNQUFNLE9BQU8sa0JBQWtCO0lBRXRCLFFBQVEsQ0FBQyxJQUFZLEVBQUUsUUFBZ0I7UUFFNUMsMkNBQTJDO1FBQzNDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU5QyxpREFBaUQ7UUFDakQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ2IsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDckI7YUFBTTtZQUNMLEtBQUssSUFBSSxRQUFRLENBQUM7U0FDbkI7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6QyxPQUFPLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUdNLFdBQVcsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxXQUFtQjtRQUVwRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5QyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdkQsTUFBTSxPQUFPLEdBQUcsTUFBTSxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFFN0MsT0FBTyxJQUFJLGlCQUFpQixDQUMxQixPQUFPLEVBQ1AsSUFBSSxTQUFTLENBQ1gsU0FBUyxFQUNULFNBQVMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FDNUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmV4cG9ydCBjbGFzcyBUZXh0UmFuZ2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc3RhcnQ6IG51bWJlcixcbiAgICBwdWJsaWMgZW5kOiBudW1iZXIsXG4gICAgcHVibGljIHZhbHVlOiBzdHJpbmdcbiAgKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlcGxhY2VtZW50UmVzdWx0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5ld1RleHQ6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVwbGFjZWQ6IFRleHRSYW5nZVxuICApIHtcbiAgfVxufVxuXG5cblxuZXhwb3J0IGNsYXNzIFdvcmRQb3NpdGlvbkZpbmRlciB7XG5cbiAgcHVibGljIGZpbmRXb3JkKHRleHQ6IHN0cmluZywgcG9zaXRpb246IG51bWJlcik6IFRleHRSYW5nZSB7XG5cbiAgICAvLyBTZWFyY2ggZm9yIHRoZSB3b3JkJ3MgYmVnaW5uaW5nIGFuZCBlbmQuXG4gICAgY29uc3QgbGVmdCA9IHRleHQuc2xpY2UoMCwgcG9zaXRpb24pLnNlYXJjaCgvXFxTKyQvKTtcbiAgICBsZXQgcmlnaHQgPSB0ZXh0LnNsaWNlKHBvc2l0aW9uKS5zZWFyY2goL1xccy8pO1xuXG4gICAgLy8gVGhlIGxhc3Qgd29yZCBpbiB0aGUgc3RyaW5nIGlzIGEgc3BlY2lhbCBjYXNlLlxuICAgIGlmIChyaWdodCA8IDApIHtcbiAgICAgIHJpZ2h0ID0gdGV4dC5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJpZ2h0ICs9IHBvc2l0aW9uO1xuICAgIH1cbiAgICBjb25zdCB3b3JkID0gdGV4dC5zdWJzdHJpbmcobGVmdCwgcmlnaHQpO1xuICAgIHJldHVybiBuZXcgVGV4dFJhbmdlKGxlZnQsIHJpZ2h0LCB3b3JkKTtcbiAgfVxuXG5cbiAgcHVibGljIHJlcGxhY2VXb3JkKHRleHQ6IHN0cmluZywgcG9zaXRpb246IG51bWJlciwgcmVwbGFjZW1lbnQ6IHN0cmluZyk6IFJlcGxhY2VtZW50UmVzdWx0IHtcblxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmZpbmRXb3JkKHRleHQsIHBvc2l0aW9uKTtcbiAgICBjb25zdCBiZWZvcmVQb3MgPSBjdXJyZW50LnN0YXJ0O1xuICAgIGNvbnN0IGJlZm9yZSA9IHRleHQuc3Vic3RyaW5nKDAsIGJlZm9yZVBvcyk7XG4gICAgY29uc3QgYWZ0ZXIgPSB0ZXh0LnN1YnN0cmluZyhjdXJyZW50LmVuZCwgdGV4dC5sZW5ndGgpO1xuXG4gICAgY29uc3QgbmV3VGV4dCA9IGJlZm9yZSArIHJlcGxhY2VtZW50ICsgYWZ0ZXI7XG5cbiAgICByZXR1cm4gbmV3IFJlcGxhY2VtZW50UmVzdWx0KFxuICAgICAgbmV3VGV4dCxcbiAgICAgIG5ldyBUZXh0UmFuZ2UoXG4gICAgICAgIGJlZm9yZVBvcyxcbiAgICAgICAgYmVmb3JlUG9zICsgcmVwbGFjZW1lbnQubGVuZ3RoLCByZXBsYWNlbWVudFxuICAgICAgKVxuICAgICk7XG4gIH1cblxufVxuIl19
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as i0 from "@angular/core";
|
|
2
|
-
import * as i1 from "./elder-multi-autocomplete.component";
|
|
3
|
-
import * as i2 from "@angular/common";
|
|
4
|
-
import * as i3 from "@angular/forms";
|
|
5
|
-
import * as i4 from "@angular/material/input";
|
|
6
|
-
import * as i5 from "@angular/material/autocomplete";
|
|
7
|
-
import * as i6 from "@angular/flex-layout";
|
|
8
|
-
export { ElderMultiAutocompleteComponent } from './elder-multi-autocomplete.component';
|
|
9
|
-
export * from './word-position';
|
|
10
|
-
export declare class ElderMultiAutoCompleteModule {
|
|
11
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ElderMultiAutoCompleteModule, never>;
|
|
12
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ElderMultiAutoCompleteModule, [typeof i1.ElderMultiAutocompleteComponent], [typeof i2.CommonModule, typeof i3.ReactiveFormsModule, typeof i4.MatInputModule, typeof i5.MatAutocompleteModule, typeof i6.FlexLayoutModule], [typeof i1.ElderMultiAutocompleteComponent]>;
|
|
13
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<ElderMultiAutoCompleteModule>;
|
|
14
|
-
}
|
|
File without changes
|