angular-toolbox 0.9.4 → 0.9.5

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/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  <i>A library that provides useful tools for Angular apps development.</i>
7
7
  </p>
8
8
 
9
- [![Angular Toolbox version](https://img.shields.io/badge/Angular%20Toolbox-beta:.0.9.4-%231E90FF.svg)]()
9
+ [![Angular Toolbox version](https://img.shields.io/badge/Angular%20Toolbox-beta:.0.9.5-%231E90FF.svg)]()
10
10
 
11
11
  ## License
12
12
 
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @license
3
+ * Copyright Pascal ECHEMANN. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
7
+ */
8
+ /**
9
+ * The `ArrayListEventType` class the type of events on an `ArrayListEvent` object.
10
+ */
11
+ export var ArrayListEventType;
12
+ (function (ArrayListEventType) {
13
+ /**
14
+ * The type of event associated with the `ArrayList.addAll` action.
15
+ */
16
+ ArrayListEventType["ADD_ALL"] = "addAll";
17
+ /**
18
+ * The type of event associated with the `ArrayList.addItem`, or `ArrayList.addItemAt` actions.
19
+ */
20
+ ArrayListEventType["ADD"] = "add";
21
+ /**
22
+ * The type of event associated with the `ArrayList.removeAll` action.
23
+ */
24
+ ArrayListEventType["REMOVE_ALL"] = "removeAll";
25
+ /**
26
+ * The type of event associated with the `ArrayList.remove`, or `ArrayList.removeAt` actions.
27
+ */
28
+ ArrayListEventType["REMOVE"] = "remove";
29
+ })(ArrayListEventType || (ArrayListEventType = {}));
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktbGlzdC1ldmVudC10eXBlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9jb2xsZWN0aW9uL2FycmF5LWxpc3QtZXZlbnQtdHlwZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksa0JBcUJYO0FBckJELFdBQVksa0JBQWtCO0lBRTFCOztPQUVHO0lBQ0gsd0NBQWtCLENBQUE7SUFFbEI7O09BRUc7SUFDSCxpQ0FBVyxDQUFBO0lBRVg7O09BRUc7SUFDSCw4Q0FBd0IsQ0FBQTtJQUV4Qjs7T0FFRztJQUNILHVDQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFyQlcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQXFCN0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IFBhc2NhbCBFQ0hFTUFOTi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICpcclxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcclxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Bhc2NhbGVjaGVtYW5uLmNvbS9hbmd1bGFyLXRvb2xib3gvcmVzb3VyY2VzL2xpY2Vuc2VcclxuICovXHJcblxyXG4vKipcclxuICogVGhlIGBBcnJheUxpc3RFdmVudFR5cGVgIGNsYXNzIHRoZSB0eXBlIG9mIGV2ZW50cyBvbiBhbiBgQXJyYXlMaXN0RXZlbnRgIG9iamVjdC5cclxuICovXHJcbmV4cG9ydCBlbnVtIEFycmF5TGlzdEV2ZW50VHlwZSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdHlwZSBvZiBldmVudCBhc3NvY2lhdGVkIHdpdGggdGhlIGBBcnJheUxpc3QuYWRkQWxsYCBhY3Rpb24uIFxyXG4gICAgICovXHJcbiAgICBBRERfQUxMID0gXCJhZGRBbGxcIixcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSB0eXBlIG9mIGV2ZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgYEFycmF5TGlzdC5hZGRJdGVtYCwgb3IgYEFycmF5TGlzdC5hZGRJdGVtQXRgIGFjdGlvbnMuIFxyXG4gICAgICovXHJcbiAgICBBREQgPSBcImFkZFwiLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHR5cGUgb2YgZXZlbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBgQXJyYXlMaXN0LnJlbW92ZUFsbGAgYWN0aW9uLiBcclxuICAgICAqL1xyXG4gICAgUkVNT1ZFX0FMTCA9IFwicmVtb3ZlQWxsXCIsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdHlwZSBvZiBldmVudCBhc3NvY2lhdGVkIHdpdGggdGhlIGBBcnJheUxpc3QucmVtb3ZlYCwgb3IgYEFycmF5TGlzdC5yZW1vdmVBdGAgYWN0aW9ucy4gXHJcbiAgICAgKi9cclxuICAgIFJFTU9WRSA9IFwicmVtb3ZlXCJcclxufSJdfQ==
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @license
3
+ * Copyright Pascal ECHEMANN. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
7
+ */
8
+ /**
9
+ * The `ArrayListEvent` class represents an event that is dispatched when the associated collection changes.
10
+ */
11
+ export class ArrayListEvent {
12
+ /**
13
+ * Represents events dispatched by the `ArrayList` class.
14
+ *
15
+ * @param type The type of the event.
16
+ * @param list The reference to the `ArrayList` instance that dispatches this event.
17
+ */
18
+ constructor(type, list) {
19
+ this.type = type;
20
+ this.list = list;
21
+ }
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktbGlzdC5ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL2NvbGxlY3Rpb24vYXJyYXktbGlzdC5ldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFLSDs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBWXZCOzs7OztPQUtHO0lBQ0gsWUFBWSxJQUF3QixFQUFFLElBQWtCO1FBQ3BELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgUGFzY2FsIEVDSEVNQU5OLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKlxyXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxyXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcGFzY2FsZWNoZW1hbm4uY29tL2FuZ3VsYXItdG9vbGJveC9yZXNvdXJjZXMvbGljZW5zZVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEFycmF5TGlzdCB9IGZyb20gXCIuL2FycmF5LWxpc3RcIjtcclxuaW1wb3J0IHsgQXJyYXlMaXN0RXZlbnRUeXBlIH0gZnJvbSBcIi4vYXJyYXktbGlzdC1ldmVudC10eXBlLmVudW1cIjtcclxuXHJcbi8qKlxyXG4gKiBUaGUgYEFycmF5TGlzdEV2ZW50YCBjbGFzcyByZXByZXNlbnRzIGFuIGV2ZW50IHRoYXQgaXMgZGlzcGF0Y2hlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGNvbGxlY3Rpb24gY2hhbmdlcy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBBcnJheUxpc3RFdmVudDxUPiB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdHlwZSBvZiB0aGlzIGV2ZW50LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogQXJyYXlMaXN0RXZlbnRUeXBlO1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFRoZSByZWZlcmVuY2UgdG8gdGhlIGBBcnJheUxpc3RgIGluc3RhbmNlIHRoYXQgZGlzcGF0Y2hlcyB0aGlzIGV2ZW50LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdDogQXJyYXlMaXN0PFQ+O1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFJlcHJlc2VudHMgZXZlbnRzIGRpc3BhdGNoZWQgYnkgdGhlIGBBcnJheUxpc3RgIGNsYXNzLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gdHlwZSBUaGUgdHlwZSBvZiB0aGUgZXZlbnQuXHJcbiAgICAgKiBAcGFyYW0gbGlzdCBUaGUgcmVmZXJlbmNlIHRvIHRoZSBgQXJyYXlMaXN0YCBpbnN0YW5jZSB0aGF0IGRpc3BhdGNoZXMgdGhpcyBldmVudC5cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IodHlwZTogQXJyYXlMaXN0RXZlbnRUeXBlLCBsaXN0OiBBcnJheUxpc3Q8VD4pIHtcclxuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xyXG4gICAgICAgIHRoaXMubGlzdCA9IGxpc3Q7XHJcbiAgICB9XHJcbn0iXX0=
@@ -0,0 +1,158 @@
1
+ /**
2
+ * @license
3
+ * Copyright Pascal ECHEMANN. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
7
+ */
8
+ import { EventEmitter } from "@angular/core";
9
+ import { IdentifiableComponent } from "../core";
10
+ import { ArrayListEvent } from "./array-list.event";
11
+ import { ArrayListEventType } from "./array-list-event-type.enum";
12
+ /**
13
+ * The `ArrayList` class uses a backing `Array` as the source of the data collection. Items in the backing
14
+ * `Array` can be accessed and manipulated using the methods and properties of the `ArrayList` instance.
15
+ * Operations on an `ArrayList` instance modify the data source.
16
+ *
17
+ * You typically use the `ArrayList` class as base class for services that persist data in the User Interface.
18
+ */
19
+ export class ArrayList extends IdentifiableComponent {
20
+ /**
21
+ * Gets the number of items in the list.
22
+ */
23
+ get length() {
24
+ return this.__list__.length;
25
+ }
26
+ /**
27
+ * @private
28
+ */
29
+ constructor(classRef = undefined) {
30
+ super(classRef || "ArrayList");
31
+ /**
32
+ * Dispatches events each time this `ArrayList` is modified.
33
+ */
34
+ this.change = new EventEmitter();
35
+ /**
36
+ * @private
37
+ * The array used as a source for the `ArrayList`.
38
+ */
39
+ this.__list__ = [];
40
+ }
41
+ /**
42
+ * Adds a list of items to the current `ArrayList` instance, placing them at the end of the
43
+ * list in the order they are passed.
44
+ *
45
+ * @param addList The list of items to add to this current `ArrayList` instance.
46
+ *
47
+ * @return A reference to this `ArrayList` instance.
48
+ */
49
+ addAll(addList) {
50
+ this.__list__.push(...addList);
51
+ this.dispatchEvent(ArrayListEventType.ADD_ALL);
52
+ return this;
53
+ }
54
+ /**
55
+ * Adds the specified item to the end of the list.
56
+ *
57
+ * @param item The item to add.
58
+ *
59
+ * @return A reference to this `ArrayList` instance.
60
+ */
61
+ addItem(item) {
62
+ this.__list__.push(item);
63
+ this.dispatchEvent(ArrayListEventType.ADD);
64
+ return this;
65
+ }
66
+ /**
67
+ * Adds the item at the specified index.
68
+ *
69
+ * @param item The item to place at the index.
70
+ * @param index The index at which to place the item.
71
+ *
72
+ * @return A reference to this `ArrayList` instance.
73
+ */
74
+ addItemAt(item, index) {
75
+ if (index < 0)
76
+ throw new RangeError("index must be greater that 0");
77
+ const len = this.__list__.length;
78
+ if (index > len)
79
+ throw new RangeError(`index exceeds the number of list elements. Index must not exceed ${len}.`);
80
+ this.__list__.splice(index, 0, item);
81
+ this.dispatchEvent(ArrayListEventType.ADD);
82
+ return this;
83
+ }
84
+ /**
85
+ * Gets the item at the specified index.
86
+ *
87
+ * @param index The index in the list from which to retrieve the item.
88
+ *
89
+ * @returns The item at that index, `undefined` if there is none.
90
+ */
91
+ getItemAt(index) {
92
+ return this.__list__[index];
93
+ }
94
+ /**
95
+ * Returns the index of the item if it is in the list.
96
+ *
97
+ * @param item The item to find.
98
+ *
99
+ * @returns The index of the item, `-1` if the item is not in the list.
100
+ */
101
+ getItemIndex(item) {
102
+ return this.__list__.findIndex(elm => elm === item);
103
+ }
104
+ /**
105
+ * Removes all items from the list.
106
+ *
107
+ * @return A reference to this `ArrayList` instance.
108
+ */
109
+ removeAll() {
110
+ this.__list__.length = 0;
111
+ this.dispatchEvent(ArrayListEventType.REMOVE_ALL);
112
+ return this;
113
+ }
114
+ /**
115
+ * Removes the specified item from this list.
116
+ *
117
+ * @param item Reference to the item that should be removed.
118
+ *
119
+ * @returns `true` whether if the item was removed; `false` otherwise.
120
+ */
121
+ removeItem(item) {
122
+ const idx = this.getItemIndex(item);
123
+ if (idx === -1)
124
+ return false;
125
+ this.__list__.splice(idx, 1);
126
+ this.dispatchEvent(ArrayListEventType.REMOVE);
127
+ return true;
128
+ }
129
+ /**
130
+ * Removes the item at the specified index and returns it.
131
+ * Any items that were after this index are now one index earlier.
132
+ *
133
+ * @param index The index from which to remove the item.
134
+
135
+ * @returns The item that was removed.
136
+ */
137
+ removeItemAt(index) {
138
+ const result = this.__list__.splice(index, 1)[0];
139
+ this.dispatchEvent(ArrayListEventType.REMOVE);
140
+ return result;
141
+ }
142
+ /**
143
+ * Returns an array that is populated in the same order as this `ArrayList` instance.
144
+ *
145
+ * @returns An array that is populated in the same order as this `ArrayList` instance.
146
+ */
147
+ toArray() {
148
+ return this.__list__.slice(0);
149
+ }
150
+ /**
151
+ * @private
152
+ */
153
+ dispatchEvent(type) {
154
+ const event = new ArrayListEvent(type, this);
155
+ this.change.emit(event);
156
+ }
157
+ }
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL2NvbGxlY3Rpb24vYXJyYXktbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbEU7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLFNBQWEsU0FBUSxxQkFBcUI7SUFPbkQ7O09BRUc7SUFDSCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFRRDs7T0FFRztJQUNILFlBQVksV0FBK0IsU0FBUztRQUNoRCxLQUFLLENBQUMsUUFBUSxJQUFJLFdBQVcsQ0FBQyxDQUFDO1FBdEJuQzs7V0FFRztRQUNhLFdBQU0sR0FBb0MsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFTaEc7OztXQUdHO1FBQ08sYUFBUSxHQUFhLEVBQUUsQ0FBQztJQU9sQyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLE1BQU0sQ0FBQyxPQUFpQjtRQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE9BQU8sQ0FBQyxJQUFPO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxTQUFTLENBQUMsSUFBTyxFQUFFLEtBQWE7UUFDbkMsSUFBSSxLQUFLLEdBQUcsQ0FBQztZQUFFLE1BQU0sSUFBSSxVQUFVLENBQUUsOEJBQThCLENBQUMsQ0FBQztRQUNyRSxNQUFNLEdBQUcsR0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUN6QyxJQUFJLEtBQUssR0FBRyxHQUFHO1lBQUUsTUFBTSxJQUFJLFVBQVUsQ0FBRSxvRUFBb0UsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNuSCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFNBQVMsQ0FBQyxLQUFhO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksWUFBWSxDQUFDLElBQU87UUFDdkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVM7UUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksVUFBVSxDQUFDLElBQU87UUFDckIsTUFBTSxHQUFHLEdBQVcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLFlBQVksQ0FBQyxLQUFhO1FBQzdCLE1BQU0sTUFBTSxHQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksT0FBTztRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYSxDQUFDLElBQXdCO1FBQzFDLE1BQU0sS0FBSyxHQUFzQixJQUFJLGNBQWMsQ0FBSSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXHJcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSWRlbnRpZmlhYmxlQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvcmVcIjtcclxuaW1wb3J0IHsgQXJyYXlMaXN0RXZlbnQgfSBmcm9tIFwiLi9hcnJheS1saXN0LmV2ZW50XCI7XHJcbmltcG9ydCB7IEFycmF5TGlzdEV2ZW50VHlwZSB9IGZyb20gXCIuL2FycmF5LWxpc3QtZXZlbnQtdHlwZS5lbnVtXCI7XHJcblxyXG4vKipcclxuICogVGhlIGBBcnJheUxpc3RgIGNsYXNzIHVzZXMgYSBiYWNraW5nIGBBcnJheWAgYXMgdGhlIHNvdXJjZSBvZiB0aGUgZGF0YSBjb2xsZWN0aW9uLiBJdGVtcyBpbiB0aGUgYmFja2luZ1xyXG4gKiBgQXJyYXlgIGNhbiBiZSBhY2Nlc3NlZCBhbmQgbWFuaXB1bGF0ZWQgdXNpbmcgdGhlIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgb2YgdGhlIGBBcnJheUxpc3RgIGluc3RhbmNlLlxyXG4gKiBPcGVyYXRpb25zIG9uIGFuIGBBcnJheUxpc3RgIGluc3RhbmNlIG1vZGlmeSB0aGUgZGF0YSBzb3VyY2UuXHJcbiAqIFxyXG4gKiBZb3UgdHlwaWNhbGx5IHVzZSB0aGUgYEFycmF5TGlzdGAgY2xhc3MgYXMgYmFzZSBjbGFzcyBmb3Igc2VydmljZXMgdGhhdCBwZXJzaXN0IGRhdGEgaW4gdGhlIFVzZXIgSW50ZXJmYWNlLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEFycmF5TGlzdDxUPiBleHRlbmRzIElkZW50aWZpYWJsZUNvbXBvbmVudCB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEaXNwYXRjaGVzIGV2ZW50cyBlYWNoIHRpbWUgdGhpcyBgQXJyYXlMaXN0YCBpcyBtb2RpZmllZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGNoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5TGlzdEV2ZW50PFQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXlMaXN0RXZlbnQ8VD4+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGxpc3QuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX19saXN0X18ubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIFRoZSBhcnJheSB1c2VkIGFzIGEgc291cmNlIGZvciB0aGUgYEFycmF5TGlzdGAuXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfX2xpc3RfXzogQXJyYXk8VD4gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGNsYXNzUmVmOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBzdXBlcihjbGFzc1JlZiB8fCBcIkFycmF5TGlzdFwiKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgbGlzdCBvZiBpdGVtcyB0byB0aGUgY3VycmVudCBgQXJyYXlMaXN0YCBpbnN0YW5jZSwgcGxhY2luZyB0aGVtIGF0IHRoZSBlbmQgb2YgdGhlXHJcbiAgICAgKiBsaXN0IGluIHRoZSBvcmRlciB0aGV5IGFyZSBwYXNzZWQuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBhZGRMaXN0IFRoZSBsaXN0IG9mIGl0ZW1zIHRvIGFkZCB0byB0aGlzIGN1cnJlbnQgYEFycmF5TGlzdGAgaW5zdGFuY2UuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm4gQSByZWZlcmVuY2UgdG8gdGhpcyBgQXJyYXlMaXN0YCBpbnN0YW5jZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZEFsbChhZGRMaXN0OiBBcnJheTxUPik6IEFycmF5TGlzdDxUPiB7XHJcbiAgICAgICAgdGhpcy5fX2xpc3RfXy5wdXNoKC4uLmFkZExpc3QpO1xyXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChBcnJheUxpc3RFdmVudFR5cGUuQUREX0FMTCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIHRoZSBzcGVjaWZpZWQgaXRlbSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB0byBhZGQuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm4gQSByZWZlcmVuY2UgdG8gdGhpcyBgQXJyYXlMaXN0YCBpbnN0YW5jZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZEl0ZW0oaXRlbTogVCk6IEFycmF5TGlzdDxUPiB7XHJcbiAgICAgICAgdGhpcy5fX2xpc3RfXy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChBcnJheUxpc3RFdmVudFR5cGUuQUREKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgdGhlIGl0ZW0gYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB0byBwbGFjZSBhdCB0aGUgaW5kZXguXHJcbiAgICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IGF0IHdoaWNoIHRvIHBsYWNlIHRoZSBpdGVtLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJuIEEgcmVmZXJlbmNlIHRvIHRoaXMgYEFycmF5TGlzdGAgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRJdGVtQXQoaXRlbTogVCwgaW5kZXg6IG51bWJlcik6IEFycmF5TGlzdDxUPiB7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IgKFwiaW5kZXggbXVzdCBiZSBncmVhdGVyIHRoYXQgMFwiKTtcclxuICAgICAgICBjb25zdCBsZW46IG51bWJlciA9IHRoaXMuX19saXN0X18ubGVuZ3RoO1xyXG4gICAgICAgIGlmIChpbmRleCA+IGxlbikgdGhyb3cgbmV3IFJhbmdlRXJyb3IgKGBpbmRleCBleGNlZWRzIHRoZSBudW1iZXIgb2YgbGlzdCBlbGVtZW50cy4gSW5kZXggbXVzdCBub3QgZXhjZWVkICR7bGVufS5gKTtcclxuICAgICAgICB0aGlzLl9fbGlzdF9fLnNwbGljZShpbmRleCwgMCwgaXRlbSk7XHJcbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KEFycmF5TGlzdEV2ZW50VHlwZS5BREQpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgaXRlbSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggaW4gdGhlIGxpc3QgZnJvbSB3aGljaCB0byByZXRyaWV2ZSB0aGUgaXRlbS5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMgVGhlIGl0ZW0gYXQgdGhhdCBpbmRleCwgYHVuZGVmaW5lZGAgaWYgdGhlcmUgaXMgbm9uZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEl0ZW1BdChpbmRleDogbnVtYmVyKTogVCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX19saXN0X19baW5kZXhdO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gaWYgaXQgaXMgaW4gdGhlIGxpc3QuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBpdGVtIFRoZSBpdGVtIHRvIGZpbmQuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIFRoZSBpbmRleCBvZiB0aGUgaXRlbSwgYC0xYCBpZiB0aGUgaXRlbSBpcyBub3QgaW4gdGhlIGxpc3QuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRJdGVtSW5kZXgoaXRlbTogVCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX19saXN0X18uZmluZEluZGV4KGVsbSA9PiBlbG0gPT09IGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSB0aGUgbGlzdC5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybiBBIHJlZmVyZW5jZSB0byB0aGlzIGBBcnJheUxpc3RgIGluc3RhbmNlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVtb3ZlQWxsKCk6IEFycmF5TGlzdDxUPiB7XHJcbiAgICAgICAgdGhpcy5fX2xpc3RfXy5sZW5ndGggPSAwO1xyXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChBcnJheUxpc3RFdmVudFR5cGUuUkVNT1ZFX0FMTCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmVzIHRoZSBzcGVjaWZpZWQgaXRlbSBmcm9tIHRoaXMgbGlzdC5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGl0ZW0gUmVmZXJlbmNlIHRvIHRoZSBpdGVtIHRoYXQgc2hvdWxkIGJlIHJlbW92ZWQuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgIGB0cnVlYCB3aGV0aGVyIGlmIHRoZSBpdGVtIHdhcyByZW1vdmVkOyBgZmFsc2VgIG90aGVyd2lzZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlbW92ZUl0ZW0oaXRlbTogVCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGlkeDogbnVtYmVyID0gdGhpcy5nZXRJdGVtSW5kZXgoaXRlbSk7XHJcbiAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHJldHVybiBmYWxzZTtcclxuICAgICAgICB0aGlzLl9fbGlzdF9fLnNwbGljZShpZHgsIDEpO1xyXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChBcnJheUxpc3RFdmVudFR5cGUuUkVNT1ZFKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgdGhlIGl0ZW0gYXQgdGhlIHNwZWNpZmllZCBpbmRleCBhbmQgcmV0dXJucyBpdC5cclxuICAgICAqIEFueSBpdGVtcyB0aGF0IHdlcmUgYWZ0ZXIgdGhpcyBpbmRleCBhcmUgbm93IG9uZSBpbmRleCBlYXJsaWVyLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IGZyb20gd2hpY2ggdG8gcmVtb3ZlIHRoZSBpdGVtLlxyXG5cclxuICAgICAqIEByZXR1cm5zIFRoZSBpdGVtIHRoYXQgd2FzIHJlbW92ZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZW1vdmVJdGVtQXQoaW5kZXg6IG51bWJlcik6IFQgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdDogVCA9IHRoaXMuX19saXN0X18uc3BsaWNlKGluZGV4LCAxKVswXTtcclxuICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoQXJyYXlMaXN0RXZlbnRUeXBlLlJFTU9WRSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgYW4gYXJyYXkgdGhhdCBpcyBwb3B1bGF0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhpcyBgQXJyYXlMaXN0YCBpbnN0YW5jZS5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgdGhhdCBpcyBwb3B1bGF0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhpcyBgQXJyYXlMaXN0YCBpbnN0YW5jZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHRvQXJyYXkoKTogQXJyYXk8VD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9fbGlzdF9fLnNsaWNlKDApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBkaXNwYXRjaEV2ZW50KHR5cGU6IEFycmF5TGlzdEV2ZW50VHlwZSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50OiBBcnJheUxpc3RFdmVudDxUPiA9IG5ldyBBcnJheUxpc3RFdmVudDxUPih0eXBlLCB0aGlzKTtcclxuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KGV2ZW50KTtcclxuICAgIH1cclxufSJdfQ==
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ * Copyright Pascal ECHEMANN. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
7
+ */
8
+ export * from './array-list';
9
+ export * from './array-list.event';
10
+ export * from './array-list-event-type.enum';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9jb2xsZWN0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgUGFzY2FsIEVDSEVNQU5OLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKlxyXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxyXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcGFzY2FsZWNoZW1hbm4uY29tL2FuZ3VsYXItdG9vbGJveC9yZXNvdXJjZXMvbGljZW5zZVxyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vYXJyYXktbGlzdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXJyYXktbGlzdC5ldmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXJyYXktbGlzdC1ldmVudC10eXBlLmVudW0nOyJdfQ==
@@ -1,5 +1,5 @@
1
1
  export * from './subscription/subscription.service';
2
2
  export * from './ui';
3
- export * from './version/version.service';
3
+ export * from './version';
4
4
  export * from './mock/http/http-mock.service';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9tb2RlbC9zZXJ2aWNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxNQUFNLENBQUM7QUFDckIsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zdWJzY3JpcHRpb24vc3Vic2NyaXB0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3VpJztcclxuZXhwb3J0ICogZnJvbSAnLi92ZXJzaW9uL3ZlcnNpb24uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9jay9odHRwL2h0dHAtbW9jay5zZXJ2aWNlJzsiXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9tb2RlbC9zZXJ2aWNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxNQUFNLENBQUM7QUFDckIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYywrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3Vic2NyaXB0aW9uL3N1YnNjcmlwdGlvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi91aSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdmVyc2lvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9jay9odHRwL2h0dHAtbW9jay5zZXJ2aWNlJzsiXX0=
@@ -15,8 +15,8 @@ import * as i0 from "@angular/core";
15
15
  const LAYERS_VERSION_CONFIG = {
16
16
  major: 0,
17
17
  minor: 9,
18
- patch: 4,
19
- buildTimestamp: 1720937502057,
18
+ patch: 5,
19
+ buildTimestamp: 1721047710956,
20
20
  metadata: "beta"
21
21
  };
22
22
  /**
@@ -35,4 +35,4 @@ export class AngularToolboxVersionService extends AbstractVersionManager {
35
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AngularToolboxVersionService, decorators: [{
36
36
  type: Injectable
37
37
  }], ctorParameters: () => [] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10b29sYm94LXZlcnNpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL21vZGVsL3NlcnZpY2UvdmVyc2lvbi9hbmd1bGFyLXRvb2xib3gtdmVyc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUd2RDs7O0dBR0c7QUFDSCxNQUFNLHFCQUFxQixHQUFrQjtJQUMzQyxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLENBQUM7SUFDUixjQUFjLEVBQUUsYUFBYTtJQUM3QixRQUFRLEVBQUUsTUFBTTtDQUNqQixDQUFDO0FBRUY7O0dBRUc7QUFFSCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsc0JBQXNCO0lBRXRFOztPQUVHO0lBQ0g7UUFDRSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUMvQixDQUFDOzhHQVBVLDRCQUE0QjtrSEFBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQUR4QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IFBhc2NhbCBFQ0hFTUFOTi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpblxuICogdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Bhc2NhbGVjaGVtYW5uLmNvbS9hbmd1bGFyLXRvb2xib3gvcmVzb3VyY2VzL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFZlcnNpb25NYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBWZXJzaW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vYnVzaW5lc3MnO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBBbmd1bGFyIFRvb2xib3ggbGlicmFyeS5cbiAqL1xuY29uc3QgTEFZRVJTX1ZFUlNJT05fQ09ORklHOiBWZXJzaW9uQ29uZmlnID0ge1xuICBtYWpvcjogMCxcbiAgbWlub3I6IDksXG4gIHBhdGNoOiA0LFxuICBidWlsZFRpbWVzdGFtcDogMTcyMDkzNzUwMjA1NyxcbiAgbWV0YWRhdGE6IFwiYmV0YVwiXG59O1xuXG4vKipcbiAqIFRoZSBwdWJsaWMgc2VydmljZSB0aGF0IGV4cG9zZXMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgQW5ndWxhciBUb29sYm94IGxpYnJhcnkuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBbmd1bGFyVG9vbGJveFZlcnNpb25TZXJ2aWNlIGV4dGVuZHMgQWJzdHJhY3RWZXJzaW9uTWFuYWdlciB7XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihMQVlFUlNfVkVSU0lPTl9DT05GSUcpO1xuICB9XG59XG4iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10b29sYm94LXZlcnNpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL21vZGVsL3NlcnZpY2UvdmVyc2lvbi9hbmd1bGFyLXRvb2xib3gtdmVyc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUd2RDs7O0dBR0c7QUFDSCxNQUFNLHFCQUFxQixHQUFrQjtJQUMzQyxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLENBQUM7SUFDUixjQUFjLEVBQUUsYUFBYTtJQUM3QixRQUFRLEVBQUUsTUFBTTtDQUNqQixDQUFDO0FBRUY7O0dBRUc7QUFFSCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsc0JBQXNCO0lBRXRFOztPQUVHO0lBQ0g7UUFDRSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUMvQixDQUFDOzhHQVBVLDRCQUE0QjtrSEFBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQUR4QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IFBhc2NhbCBFQ0hFTUFOTi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpblxuICogdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Bhc2NhbGVjaGVtYW5uLmNvbS9hbmd1bGFyLXRvb2xib3gvcmVzb3VyY2VzL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFZlcnNpb25NYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBWZXJzaW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vYnVzaW5lc3MnO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBBbmd1bGFyIFRvb2xib3ggbGlicmFyeS5cbiAqL1xuY29uc3QgTEFZRVJTX1ZFUlNJT05fQ09ORklHOiBWZXJzaW9uQ29uZmlnID0ge1xuICBtYWpvcjogMCxcbiAgbWlub3I6IDksXG4gIHBhdGNoOiA1LFxuICBidWlsZFRpbWVzdGFtcDogMTcyMTA0NzcxMDk1NixcbiAgbWV0YWRhdGE6IFwiYmV0YVwiXG59O1xuXG4vKipcbiAqIFRoZSBwdWJsaWMgc2VydmljZSB0aGF0IGV4cG9zZXMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgQW5ndWxhciBUb29sYm94IGxpYnJhcnkuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBbmd1bGFyVG9vbGJveFZlcnNpb25TZXJ2aWNlIGV4dGVuZHMgQWJzdHJhY3RWZXJzaW9uTWFuYWdlciB7XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihMQVlFUlNfVkVSU0lPTl9DT05GSUcpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './angular-toolbox-version.service';
2
+ export * from './version.service';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9tb2RlbC9zZXJ2aWNlL3ZlcnNpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbmd1bGFyLXRvb2xib3gtdmVyc2lvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi92ZXJzaW9uLnNlcnZpY2UnOyJdfQ==
@@ -9,6 +9,7 @@
9
9
  * Public API Surface of angular-toolbox
10
10
  */
11
11
  export * from './lib/angular-toolbox.module';
12
+ export * from './lib/collection';
12
13
  export * from './lib/component';
13
14
  export * from './lib/core';
14
15
  export * from './lib/directive';
@@ -16,4 +17,4 @@ export * from './lib/framework';
16
17
  export * from './lib/model';
17
18
  export * from './lib/pipe';
18
19
  export * from './lib/util';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7R0FFRztBQUVILGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgUGFzY2FsIEVDSEVNQU5OLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXG4gKiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcGFzY2FsZWNoZW1hbm4uY29tL2FuZ3VsYXItdG9vbGJveC9yZXNvdXJjZXMvbGljZW5zZVxuICovXG5cbi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYW5ndWxhci10b29sYm94XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYW5ndWxhci10b29sYm94Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZnJhbWV3b3JrJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbCc7XG4iXX0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7R0FFRztBQUVILGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW5cbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXG4gKi9cblxuLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBhbmd1bGFyLXRvb2xib3hcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hbmd1bGFyLXRvb2xib3gubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbGxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZyYW1ld29yayc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWwnO1xuIl19
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, NgModule, Component, EventEmitter, Directive, Output, Input, HostListener, Inject, inject, Pipe } from '@angular/core';
2
+ import { Injectable, NgModule, EventEmitter, Component, Directive, Output, Input, HostListener, Inject, inject, Pipe } from '@angular/core';
3
3
  import * as i1 from '@angular/router';
4
4
  import { RouterModule } from '@angular/router';
5
5
  import { DOCUMENT, XhrFactory } from '@angular/common';
@@ -543,8 +543,8 @@ class AbstractVersionManager {
543
543
  const LAYERS_VERSION_CONFIG = {
544
544
  major: 0,
545
545
  minor: 9,
546
- patch: 4,
547
- buildTimestamp: 1720937502057,
546
+ patch: 5,
547
+ buildTimestamp: 1721047710956,
548
548
  metadata: "beta"
549
549
  };
550
550
  /**
@@ -586,6 +586,221 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
586
586
  }]
587
587
  }] });
588
588
 
589
+ /**
590
+ * @license
591
+ * Copyright Pascal ECHEMANN. All Rights Reserved.
592
+ *
593
+ * Use of this source code is governed by an MIT-style license that can be
594
+ * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
595
+ */
596
+ /**
597
+ * The `ArrayListEvent` class represents an event that is dispatched when the associated collection changes.
598
+ */
599
+ class ArrayListEvent {
600
+ /**
601
+ * Represents events dispatched by the `ArrayList` class.
602
+ *
603
+ * @param type The type of the event.
604
+ * @param list The reference to the `ArrayList` instance that dispatches this event.
605
+ */
606
+ constructor(type, list) {
607
+ this.type = type;
608
+ this.list = list;
609
+ }
610
+ }
611
+
612
+ /**
613
+ * @license
614
+ * Copyright Pascal ECHEMANN. All Rights Reserved.
615
+ *
616
+ * Use of this source code is governed by an MIT-style license that can be
617
+ * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
618
+ */
619
+ /**
620
+ * The `ArrayListEventType` class the type of events on an `ArrayListEvent` object.
621
+ */
622
+ var ArrayListEventType;
623
+ (function (ArrayListEventType) {
624
+ /**
625
+ * The type of event associated with the `ArrayList.addAll` action.
626
+ */
627
+ ArrayListEventType["ADD_ALL"] = "addAll";
628
+ /**
629
+ * The type of event associated with the `ArrayList.addItem`, or `ArrayList.addItemAt` actions.
630
+ */
631
+ ArrayListEventType["ADD"] = "add";
632
+ /**
633
+ * The type of event associated with the `ArrayList.removeAll` action.
634
+ */
635
+ ArrayListEventType["REMOVE_ALL"] = "removeAll";
636
+ /**
637
+ * The type of event associated with the `ArrayList.remove`, or `ArrayList.removeAt` actions.
638
+ */
639
+ ArrayListEventType["REMOVE"] = "remove";
640
+ })(ArrayListEventType || (ArrayListEventType = {}));
641
+
642
+ /**
643
+ * @license
644
+ * Copyright Pascal ECHEMANN. All Rights Reserved.
645
+ *
646
+ * Use of this source code is governed by an MIT-style license that can be
647
+ * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
648
+ */
649
+ /**
650
+ * The `ArrayList` class uses a backing `Array` as the source of the data collection. Items in the backing
651
+ * `Array` can be accessed and manipulated using the methods and properties of the `ArrayList` instance.
652
+ * Operations on an `ArrayList` instance modify the data source.
653
+ *
654
+ * You typically use the `ArrayList` class as base class for services that persist data in the User Interface.
655
+ */
656
+ class ArrayList extends IdentifiableComponent {
657
+ /**
658
+ * Gets the number of items in the list.
659
+ */
660
+ get length() {
661
+ return this.__list__.length;
662
+ }
663
+ /**
664
+ * @private
665
+ */
666
+ constructor(classRef = undefined) {
667
+ super(classRef || "ArrayList");
668
+ /**
669
+ * Dispatches events each time this `ArrayList` is modified.
670
+ */
671
+ this.change = new EventEmitter();
672
+ /**
673
+ * @private
674
+ * The array used as a source for the `ArrayList`.
675
+ */
676
+ this.__list__ = [];
677
+ }
678
+ /**
679
+ * Adds a list of items to the current `ArrayList` instance, placing them at the end of the
680
+ * list in the order they are passed.
681
+ *
682
+ * @param addList The list of items to add to this current `ArrayList` instance.
683
+ *
684
+ * @return A reference to this `ArrayList` instance.
685
+ */
686
+ addAll(addList) {
687
+ this.__list__.push(...addList);
688
+ this.dispatchEvent(ArrayListEventType.ADD_ALL);
689
+ return this;
690
+ }
691
+ /**
692
+ * Adds the specified item to the end of the list.
693
+ *
694
+ * @param item The item to add.
695
+ *
696
+ * @return A reference to this `ArrayList` instance.
697
+ */
698
+ addItem(item) {
699
+ this.__list__.push(item);
700
+ this.dispatchEvent(ArrayListEventType.ADD);
701
+ return this;
702
+ }
703
+ /**
704
+ * Adds the item at the specified index.
705
+ *
706
+ * @param item The item to place at the index.
707
+ * @param index The index at which to place the item.
708
+ *
709
+ * @return A reference to this `ArrayList` instance.
710
+ */
711
+ addItemAt(item, index) {
712
+ if (index < 0)
713
+ throw new RangeError("index must be greater that 0");
714
+ const len = this.__list__.length;
715
+ if (index > len)
716
+ throw new RangeError(`index exceeds the number of list elements. Index must not exceed ${len}.`);
717
+ this.__list__.splice(index, 0, item);
718
+ this.dispatchEvent(ArrayListEventType.ADD);
719
+ return this;
720
+ }
721
+ /**
722
+ * Gets the item at the specified index.
723
+ *
724
+ * @param index The index in the list from which to retrieve the item.
725
+ *
726
+ * @returns The item at that index, `undefined` if there is none.
727
+ */
728
+ getItemAt(index) {
729
+ return this.__list__[index];
730
+ }
731
+ /**
732
+ * Returns the index of the item if it is in the list.
733
+ *
734
+ * @param item The item to find.
735
+ *
736
+ * @returns The index of the item, `-1` if the item is not in the list.
737
+ */
738
+ getItemIndex(item) {
739
+ return this.__list__.findIndex(elm => elm === item);
740
+ }
741
+ /**
742
+ * Removes all items from the list.
743
+ *
744
+ * @return A reference to this `ArrayList` instance.
745
+ */
746
+ removeAll() {
747
+ this.__list__.length = 0;
748
+ this.dispatchEvent(ArrayListEventType.REMOVE_ALL);
749
+ return this;
750
+ }
751
+ /**
752
+ * Removes the specified item from this list.
753
+ *
754
+ * @param item Reference to the item that should be removed.
755
+ *
756
+ * @returns `true` whether if the item was removed; `false` otherwise.
757
+ */
758
+ removeItem(item) {
759
+ const idx = this.getItemIndex(item);
760
+ if (idx === -1)
761
+ return false;
762
+ this.__list__.splice(idx, 1);
763
+ this.dispatchEvent(ArrayListEventType.REMOVE);
764
+ return true;
765
+ }
766
+ /**
767
+ * Removes the item at the specified index and returns it.
768
+ * Any items that were after this index are now one index earlier.
769
+ *
770
+ * @param index The index from which to remove the item.
771
+
772
+ * @returns The item that was removed.
773
+ */
774
+ removeItemAt(index) {
775
+ const result = this.__list__.splice(index, 1)[0];
776
+ this.dispatchEvent(ArrayListEventType.REMOVE);
777
+ return result;
778
+ }
779
+ /**
780
+ * Returns an array that is populated in the same order as this `ArrayList` instance.
781
+ *
782
+ * @returns An array that is populated in the same order as this `ArrayList` instance.
783
+ */
784
+ toArray() {
785
+ return this.__list__.slice(0);
786
+ }
787
+ /**
788
+ * @private
789
+ */
790
+ dispatchEvent(type) {
791
+ const event = new ArrayListEvent(type, this);
792
+ this.change.emit(event);
793
+ }
794
+ }
795
+
796
+ /**
797
+ * @license
798
+ * Copyright Pascal ECHEMANN. All Rights Reserved.
799
+ *
800
+ * Use of this source code is governed by an MIT-style license that can be
801
+ * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
802
+ */
803
+
589
804
  /**
590
805
  * @license
591
806
  * Copyright Pascal ECHEMANN. All Rights Reserved.
@@ -3841,5 +4056,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
3841
4056
  * Generated bundle index. Do not edit.
3842
4057
  */
3843
4058
 
3844
- export { APP_PRIDGE_REF, AbstractSubscriptionManager, AbstractVersionManager, AnchorLinklDirective, AngularToolboxLogoComponent, AngularToolboxModule, AppBridgeError, AppBrigeService, BIGINT, BOOLEAN, BUTTON_ROLE, ButtonRoleDirective, CSS_PROP, ContentRendererDirective, DARK_MODE_CONFIG, DarkModeService, EMPTY_STRING, FUNCTION, HTTP_MOCK_SERVICE, HttpHeadersMockBuilder, HttpMock, HttpMockService, HttpMockServiceError, HttpResponseMockBuilder, IdentifiableComponent, IntegrityError, LINK_ROLE, NUMBER, NavigateToUrlDirective, OBJECT, STORAGE_KEY, STRING, SYMBOL, SafeHtmlPipe, ScrollService, SubscriptionError, SubscriptionService, UNDEFINED, Uuid, VERSION_CONFIG, VersionService, httpHeadersMock, httpMockFactory, httpResponseMock };
4059
+ export { APP_PRIDGE_REF, AbstractSubscriptionManager, AbstractVersionManager, AnchorLinklDirective, AngularToolboxLogoComponent, AngularToolboxModule, AngularToolboxVersionService, AppBridgeError, AppBrigeService, ArrayList, ArrayListEvent, ArrayListEventType, BIGINT, BOOLEAN, BUTTON_ROLE, ButtonRoleDirective, CSS_PROP, ContentRendererDirective, DARK_MODE_CONFIG, DarkModeService, EMPTY_STRING, FUNCTION, HTTP_MOCK_SERVICE, HttpHeadersMockBuilder, HttpMock, HttpMockService, HttpMockServiceError, HttpResponseMockBuilder, IdentifiableComponent, IntegrityError, LINK_ROLE, NUMBER, NavigateToUrlDirective, OBJECT, STORAGE_KEY, STRING, SYMBOL, SafeHtmlPipe, ScrollService, SubscriptionError, SubscriptionService, UNDEFINED, Uuid, VERSION_CONFIG, VersionService, httpHeadersMock, httpMockFactory, httpResponseMock };
3845
4060
  //# sourceMappingURL=angular-toolbox.mjs.map