@umbraco-cms/backoffice 1.0.0-next.2d232d0c → 1.0.0-next.3b4f30db
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/custom-elements.json +16 -5
- package/observable-api.d.ts +40 -40
- package/package.json +1 -1
- package/vscode-html-custom-data.json +9 -4
package/custom-elements.json
CHANGED
|
@@ -1302,7 +1302,7 @@
|
|
|
1302
1302
|
{
|
|
1303
1303
|
"name": "levelMap",
|
|
1304
1304
|
"type": "Record<any, LevelMapStyles>",
|
|
1305
|
-
"default": "{\"Verbose\":{\"look\":\"secondary\"},\"Debug\":{\"look\":\"default\",\"style\":\"background-color: var(--umb-log-viewer-debug-color); color: var(--uui-color-surface)\"},\"Information\":{\"look\":\"primary\",\"color\":\"positive\"},\"Warning\":{\"look\":\"primary\",\"color\":\"warning\"},\"Error\":{\"look\":\"primary\",\"color\":\"danger\"},\"Fatal\":{\"look\":\"primary\"}}"
|
|
1305
|
+
"default": "{\"Verbose\":{\"look\":\"secondary\"},\"Debug\":{\"look\":\"default\",\"style\":\"background-color: var(--umb-log-viewer-debug-color); color: var(--uui-color-surface)\"},\"Information\":{\"look\":\"primary\",\"color\":\"positive\"},\"Warning\":{\"look\":\"primary\",\"color\":\"warning\"},\"Error\":{\"look\":\"primary\",\"color\":\"danger\"},\"Fatal\":{\"look\":\"primary\",\"style\":\"background-color: var(--umb-log-viewer-fatal-color); color: var(--uui-color-surface)\"}}"
|
|
1306
1306
|
}
|
|
1307
1307
|
]
|
|
1308
1308
|
},
|
|
@@ -1405,7 +1405,7 @@
|
|
|
1405
1405
|
{
|
|
1406
1406
|
"name": "setLogLevelDebounce",
|
|
1407
1407
|
"type": "DebouncedFunc<() => void>",
|
|
1408
|
-
"default": "\"
|
|
1408
|
+
"default": "\"debounce(this.#setLogLevel, 300)\""
|
|
1409
1409
|
}
|
|
1410
1410
|
]
|
|
1411
1411
|
},
|
|
@@ -1521,6 +1521,17 @@
|
|
|
1521
1521
|
}
|
|
1522
1522
|
]
|
|
1523
1523
|
},
|
|
1524
|
+
{
|
|
1525
|
+
"name": "umb-log-viewer-save-search-modal",
|
|
1526
|
+
"path": "./src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input-modal.element.ts",
|
|
1527
|
+
"properties": [
|
|
1528
|
+
{
|
|
1529
|
+
"name": "styles",
|
|
1530
|
+
"type": "CSSResult[]",
|
|
1531
|
+
"default": "[\"UUITextStyles\",null]"
|
|
1532
|
+
}
|
|
1533
|
+
]
|
|
1534
|
+
},
|
|
1524
1535
|
{
|
|
1525
1536
|
"name": "umb-log-viewer-search-input",
|
|
1526
1537
|
"path": "./src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts",
|
|
@@ -1876,7 +1887,7 @@
|
|
|
1876
1887
|
]
|
|
1877
1888
|
},
|
|
1878
1889
|
{
|
|
1879
|
-
"name": "
|
|
1890
|
+
"name": "umb-code-block",
|
|
1880
1891
|
"path": "./src/backoffice/shared/components/code-block/code-block.element.ts",
|
|
1881
1892
|
"description": "A simple styled box for showing code-based error messages.",
|
|
1882
1893
|
"properties": [
|
|
@@ -7756,7 +7767,7 @@
|
|
|
7756
7767
|
]
|
|
7757
7768
|
},
|
|
7758
7769
|
{
|
|
7759
|
-
"name": "story-modal-context-example",
|
|
7770
|
+
"name": "umb-story-modal-context-example",
|
|
7760
7771
|
"path": "./src/core/modal/stories/story-modal-service-example.element.ts",
|
|
7761
7772
|
"attributes": [
|
|
7762
7773
|
{
|
|
@@ -7803,7 +7814,7 @@
|
|
|
7803
7814
|
]
|
|
7804
7815
|
},
|
|
7805
7816
|
{
|
|
7806
|
-
"name": "story-notification-default-example",
|
|
7817
|
+
"name": "umb-story-notification-default-example",
|
|
7807
7818
|
"path": "./src/core/notification/stories/story-notification-default-example.element.ts"
|
|
7808
7819
|
},
|
|
7809
7820
|
{
|
package/observable-api.d.ts
CHANGED
|
@@ -18,55 +18,55 @@ declare class UmbObserverController<T = unknown> extends UmbObserver<T> implemen
|
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* @export
|
|
21
|
-
* @class
|
|
21
|
+
* @class UmbBasicState
|
|
22
22
|
* @extends {BehaviorSubject<T>}
|
|
23
23
|
* @description - A RxJS BehaviorSubject this Subject ensures the data is unique, not updating any Observes unless there is an actual change of the value.
|
|
24
24
|
*/
|
|
25
|
-
declare class
|
|
25
|
+
declare class UmbBasicState<T> extends BehaviorSubject<T> {
|
|
26
26
|
constructor(initialData: T);
|
|
27
27
|
next(newData: T): void;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
31
|
* @export
|
|
32
|
-
* @class
|
|
32
|
+
* @class UmbBooleanState
|
|
33
33
|
* @extends {BehaviorSubject<T>}
|
|
34
34
|
* @description - A RxJS BehaviorSubject this Subject ensures the data is unique, not updating any Observes unless there is an actual change of the value.
|
|
35
35
|
*/
|
|
36
|
-
declare class
|
|
36
|
+
declare class UmbBooleanState<T> extends UmbBasicState<T | boolean> {
|
|
37
37
|
constructor(initialData: T | boolean);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
41
|
* @export
|
|
42
|
-
* @class
|
|
42
|
+
* @class UmbNumberState
|
|
43
43
|
* @extends {BehaviorSubject<T>}
|
|
44
44
|
* @description - A RxJS BehaviorSubject this Subject ensures the data is unique, not updating any Observes unless there is an actual change of the value.
|
|
45
45
|
*/
|
|
46
|
-
declare class
|
|
46
|
+
declare class UmbNumberState<T> extends UmbBasicState<T | number> {
|
|
47
47
|
constructor(initialData: T | number);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
/**
|
|
51
51
|
* @export
|
|
52
|
-
* @class
|
|
53
|
-
* @extends {
|
|
52
|
+
* @class UmbStringState
|
|
53
|
+
* @extends {UmbBasicState<T>}
|
|
54
54
|
* @description - A RxJS BehaviorSubject this Subject ensures the data is unique, not updating any Observes unless there is an actual change of the value.
|
|
55
55
|
*/
|
|
56
|
-
declare class
|
|
56
|
+
declare class UmbStringState<T> extends UmbBasicState<T | string> {
|
|
57
57
|
constructor(initialData: T | string);
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
interface
|
|
61
|
-
equal(otherClass:
|
|
60
|
+
interface UmbClassStateData {
|
|
61
|
+
equal(otherClass: UmbClassStateData): boolean;
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
64
|
* @export
|
|
65
|
-
* @class
|
|
65
|
+
* @class UmbClassState
|
|
66
66
|
* @extends {BehaviorSubject<T>}
|
|
67
67
|
* @description - A RxJS BehaviorSubject which can hold class instance which has a equal method to compare in coming instances for changes.
|
|
68
68
|
*/
|
|
69
|
-
declare class
|
|
69
|
+
declare class UmbClassState<T extends UmbClassStateData | undefined | null> extends BehaviorSubject<T> {
|
|
70
70
|
constructor(initialData: T);
|
|
71
71
|
next(newData: T): void;
|
|
72
72
|
}
|
|
@@ -77,12 +77,12 @@ type MemoizationFunction<R> = (previousResult: R, currentResult: R) => boolean;
|
|
|
77
77
|
|
|
78
78
|
/**
|
|
79
79
|
* @export
|
|
80
|
-
* @class
|
|
80
|
+
* @class UmbDeepState
|
|
81
81
|
* @extends {BehaviorSubject<T>}
|
|
82
82
|
* @description - A RxJS BehaviorSubject which deepFreezes the data to ensure its not manipulated from any implementations.
|
|
83
83
|
* Additionally the Subject ensures the data is unique, not updating any Observes unless there is an actual change of the content.
|
|
84
84
|
*/
|
|
85
|
-
declare class
|
|
85
|
+
declare class UmbDeepState<T> extends BehaviorSubject<T> {
|
|
86
86
|
constructor(initialData: T);
|
|
87
87
|
getObservablePart<ReturnType>(mappingFunction: MappingFunction<T, ReturnType>, memoizationFunction?: MemoizationFunction<ReturnType>): rxjs.Observable<ReturnType>;
|
|
88
88
|
next(newData: T): void;
|
|
@@ -90,14 +90,14 @@ declare class DeepState<T> extends BehaviorSubject<T> {
|
|
|
90
90
|
|
|
91
91
|
/**
|
|
92
92
|
* @export
|
|
93
|
-
* @class
|
|
94
|
-
* @extends {
|
|
93
|
+
* @class UmbArrayState
|
|
94
|
+
* @extends {UmbDeepState<T>}
|
|
95
95
|
* @description - A RxJS BehaviorSubject which deepFreezes the object-data to ensure its not manipulated from any implementations.
|
|
96
96
|
* Additionally the Subject ensures the data is unique, not updating any Observes unless there is an actual change of the content.
|
|
97
97
|
*
|
|
98
98
|
* The ArrayState provides methods to append data when the data is an Object.
|
|
99
99
|
*/
|
|
100
|
-
declare class
|
|
100
|
+
declare class UmbArrayState<T> extends UmbDeepState<T[]> {
|
|
101
101
|
#private;
|
|
102
102
|
constructor(initialData: T[], getUniqueMethod?: (entry: T) => unknown);
|
|
103
103
|
/**
|
|
@@ -109,7 +109,7 @@ declare class ArrayState<T> extends DeepState<T[]> {
|
|
|
109
109
|
* { key: 1, value: 'foo'},
|
|
110
110
|
* { key: 2, value: 'bar'}
|
|
111
111
|
* ];
|
|
112
|
-
* const myState = new
|
|
112
|
+
* const myState = new UmbArrayState(data, (x) => x.key);
|
|
113
113
|
* myState.sortBy((a, b) => (a.sortOrder || 0) - (b.sortOrder || 0));
|
|
114
114
|
*/
|
|
115
115
|
sortBy(sortMethod?: (a: T, b: T) => number): this;
|
|
@@ -117,35 +117,35 @@ declare class ArrayState<T> extends DeepState<T[]> {
|
|
|
117
117
|
/**
|
|
118
118
|
* @method remove
|
|
119
119
|
* @param {unknown[]} uniques - The unique values to remove.
|
|
120
|
-
* @return {
|
|
120
|
+
* @return {UmbArrayState<T>} Reference to it self.
|
|
121
121
|
* @description - Remove some new data of this Subject.
|
|
122
122
|
* @example <caption>Example remove entry with id '1' and '2'</caption>
|
|
123
123
|
* const data = [
|
|
124
124
|
* { id: 1, value: 'foo'},
|
|
125
125
|
* { id: 2, value: 'bar'}
|
|
126
126
|
* ];
|
|
127
|
-
* const myState = new
|
|
127
|
+
* const myState = new UmbArrayState(data, (x) => x.id);
|
|
128
128
|
* myState.remove([1, 2]);
|
|
129
129
|
*/
|
|
130
130
|
remove(uniques: unknown[]): this;
|
|
131
131
|
/**
|
|
132
132
|
* @method removeOne
|
|
133
133
|
* @param {unknown} unique - The unique value to remove.
|
|
134
|
-
* @return {
|
|
134
|
+
* @return {UmbArrayState<T>} Reference to it self.
|
|
135
135
|
* @description - Remove some new data of this Subject.
|
|
136
136
|
* @example <caption>Example remove entry with id '1'</caption>
|
|
137
137
|
* const data = [
|
|
138
138
|
* { id: 1, value: 'foo'},
|
|
139
139
|
* { id: 2, value: 'bar'}
|
|
140
140
|
* ];
|
|
141
|
-
* const myState = new
|
|
141
|
+
* const myState = new UmbArrayState(data, (x) => x.id);
|
|
142
142
|
* myState.removeOne(1);
|
|
143
143
|
*/
|
|
144
144
|
removeOne(unique: unknown): this;
|
|
145
145
|
/**
|
|
146
146
|
* @method filter
|
|
147
147
|
* @param {unknown} filterMethod - The unique value to remove.
|
|
148
|
-
* @return {
|
|
148
|
+
* @return {UmbArrayState<T>} Reference to it self.
|
|
149
149
|
* @description - Remove some new data of this Subject.
|
|
150
150
|
* @example <caption>Example remove entry with key '1'</caption>
|
|
151
151
|
* const data = [
|
|
@@ -153,7 +153,7 @@ declare class ArrayState<T> extends DeepState<T[]> {
|
|
|
153
153
|
* { key: 2, value: 'bar'},
|
|
154
154
|
* { key: 3, value: 'poo'}
|
|
155
155
|
* ];
|
|
156
|
-
* const myState = new
|
|
156
|
+
* const myState = new UmbArrayState(data, (x) => x.key);
|
|
157
157
|
* myState.filter((entry) => entry.key !== 1);
|
|
158
158
|
*
|
|
159
159
|
* Result:
|
|
@@ -167,28 +167,28 @@ declare class ArrayState<T> extends DeepState<T[]> {
|
|
|
167
167
|
/**
|
|
168
168
|
* @method appendOne
|
|
169
169
|
* @param {T} entry - new data to be added in this Subject.
|
|
170
|
-
* @return {
|
|
170
|
+
* @return {UmbArrayState<T>} Reference to it self.
|
|
171
171
|
* @description - Append some new data to this Subject.
|
|
172
172
|
* @example <caption>Example append some data.</caption>
|
|
173
173
|
* const data = [
|
|
174
174
|
* { key: 1, value: 'foo'},
|
|
175
175
|
* { key: 2, value: 'bar'}
|
|
176
176
|
* ];
|
|
177
|
-
* const myState = new
|
|
177
|
+
* const myState = new UmbArrayState(data);
|
|
178
178
|
* myState.append({ key: 1, value: 'replaced-foo'});
|
|
179
179
|
*/
|
|
180
180
|
appendOne(entry: T): this;
|
|
181
181
|
/**
|
|
182
182
|
* @method append
|
|
183
183
|
* @param {T[]} entries - A array of new data to be added in this Subject.
|
|
184
|
-
* @return {
|
|
184
|
+
* @return {UmbArrayState<T>} Reference to it self.
|
|
185
185
|
* @description - Append some new data to this Subject, if it compares to existing data it will replace it.
|
|
186
186
|
* @example <caption>Example append some data.</caption>
|
|
187
187
|
* const data = [
|
|
188
188
|
* { key: 1, value: 'foo'},
|
|
189
189
|
* { key: 2, value: 'bar'}
|
|
190
190
|
* ];
|
|
191
|
-
* const myState = new
|
|
191
|
+
* const myState = new UmbArrayState(data);
|
|
192
192
|
* myState.append([
|
|
193
193
|
* { key: 1, value: 'replaced-foo'},
|
|
194
194
|
* { key: 3, value: 'another-bla'}
|
|
@@ -199,14 +199,14 @@ declare class ArrayState<T> extends DeepState<T[]> {
|
|
|
199
199
|
* @method updateOne
|
|
200
200
|
* @param {unknown} unique - Unique value to find entry to update.
|
|
201
201
|
* @param {Partial<T>} entry - new data to be added in this Subject.
|
|
202
|
-
* @return {
|
|
202
|
+
* @return {UmbArrayState<T>} Reference to it self.
|
|
203
203
|
* @description - Update a item with some new data, requires the ArrayState to be constructed with a getUnique method.
|
|
204
204
|
* @example <caption>Example append some data.</caption>
|
|
205
205
|
* const data = [
|
|
206
206
|
* { key: 1, value: 'foo'},
|
|
207
207
|
* { key: 2, value: 'bar'}
|
|
208
208
|
* ];
|
|
209
|
-
* const myState = new
|
|
209
|
+
* const myState = new UmbArrayState(data, (x) => x.key);
|
|
210
210
|
* myState.updateOne(2, {value: 'updated-bar'});
|
|
211
211
|
*/
|
|
212
212
|
updateOne(unique: unknown, entry: Partial<T>): this;
|
|
@@ -214,22 +214,22 @@ declare class ArrayState<T> extends DeepState<T[]> {
|
|
|
214
214
|
|
|
215
215
|
/**
|
|
216
216
|
* @export
|
|
217
|
-
* @class
|
|
218
|
-
* @extends {
|
|
217
|
+
* @class UmbObjectState
|
|
218
|
+
* @extends {UmbDeepState<T>}
|
|
219
219
|
* @description - A RxJS BehaviorSubject which deepFreezes the object-data to ensure its not manipulated from any implementations.
|
|
220
220
|
* Additionally the Subject ensures the data is unique, not updating any Observes unless there is an actual change of the content.
|
|
221
221
|
*
|
|
222
|
-
* The
|
|
222
|
+
* The UmbObjectState provides methods to append data when the data is an Object.
|
|
223
223
|
*/
|
|
224
|
-
declare class
|
|
224
|
+
declare class UmbObjectState<T> extends UmbDeepState<T> {
|
|
225
225
|
/**
|
|
226
226
|
* @method update
|
|
227
227
|
* @param {Partial<T>} partialData - A object containing some of the data to update in this Subject.
|
|
228
228
|
* @description - Append some new data to this Object.
|
|
229
|
-
* @return {
|
|
229
|
+
* @return {UmbObjectState<T>} Reference to it self.
|
|
230
230
|
* @example <caption>Example append some data.</caption>
|
|
231
231
|
* const data = {key: 'myKey', value: 'myInitialValue'};
|
|
232
|
-
* const myState = new
|
|
232
|
+
* const myState = new UmbObjectState(data);
|
|
233
233
|
* myState.update({value: 'myNewValue'});
|
|
234
234
|
*/
|
|
235
235
|
update(partialData: Partial<T>): this;
|
|
@@ -254,7 +254,7 @@ declare function createObservablePart<R, T>(source$: Observable<T>, mappingFunct
|
|
|
254
254
|
* @param {(mappable: T) => R} mappingFunction - Method to return the part for this Observable to return.
|
|
255
255
|
* @param {(previousResult: R, currentResult: R) => boolean} [memoizationFunction] - Method to Compare if the data has changed. Should return true when data is different.
|
|
256
256
|
* @description - Creates a RxJS Observable from RxJS Subject.
|
|
257
|
-
* @example <caption>Example append new entry for a ArrayState or a part of
|
|
257
|
+
* @example <caption>Example append new entry for a ArrayState or a part of UmbDeepState/UmbObjectState it which is an array. Where the key is unique and the item will be updated if matched with existing.</caption>
|
|
258
258
|
* const entry = {id: 'myKey', value: 'myValue'};
|
|
259
259
|
* const newDataSet = appendToFrozenArray(mySubject.getValue(), entry, x => x.id === id);
|
|
260
260
|
* mySubject.next(newDataSet);
|
|
@@ -268,11 +268,11 @@ declare function appendToFrozenArray<T>(data: T[], entry: T, getUniqueMethod?: (
|
|
|
268
268
|
* @param {(mappable: T) => R} mappingFunction - Method to return the part for this Observable to return.
|
|
269
269
|
* @param {(previousResult: R, currentResult: R) => boolean} [memoizationFunction] - Method to Compare if the data has changed. Should return true when data is different.
|
|
270
270
|
* @description - Creates a RxJS Observable from RxJS Subject.
|
|
271
|
-
* @example <caption>Example append new entry for a ArrayState or a part of
|
|
271
|
+
* @example <caption>Example append new entry for a ArrayState or a part of UmbDeepState/UmbObjectState it which is an array. Where the key is unique and the item will be updated if matched with existing.</caption>
|
|
272
272
|
* const partialEntry = {value: 'myValue'};
|
|
273
273
|
* const newDataSet = partialUpdateFrozenArray(mySubject.getValue(), partialEntry, x => x.key === 'myKey');
|
|
274
274
|
* mySubject.next(newDataSet);
|
|
275
275
|
*/
|
|
276
276
|
declare function partialUpdateFrozenArray<T>(data: T[], partialEntry: Partial<T>, findMethod: (entry: T) => boolean): T[];
|
|
277
277
|
|
|
278
|
-
export {
|
|
278
|
+
export { MappingFunction, UmbArrayState, UmbBasicState, UmbBooleanState, UmbClassState, UmbDeepState, UmbNumberState, UmbObjectState, UmbObserver, UmbObserverController, UmbStringState, appendToFrozenArray, createObservablePart, partialUpdateFrozenArray };
|
package/package.json
CHANGED
|
@@ -709,9 +709,14 @@
|
|
|
709
709
|
"description": "Properties:\n\n * `styles` {`CSSResult[]`} - \n\n * `_pollingPopover` - \n\n * `_polingExpandSymbol` - \n\n * `_poolingConfig` {`PoolingCOnfig`} - ",
|
|
710
710
|
"attributes": []
|
|
711
711
|
},
|
|
712
|
+
{
|
|
713
|
+
"name": "umb-log-viewer-save-search-modal",
|
|
714
|
+
"description": "Properties:\n\n * `styles` {`CSSResult[]`} - \n\n * `_input` - \n\n * `_hasValue` {`boolean`} - ",
|
|
715
|
+
"attributes": []
|
|
716
|
+
},
|
|
712
717
|
{
|
|
713
718
|
"name": "umb-log-viewer-search-input",
|
|
714
|
-
"description": "Properties:\n\n * `styles` {`CSSResult[]`} - \n\n * `_savedSearchesPopover` - \n\n * `_savedSearchesExpandSymbol` - \n\n * `_savedSearches` {`any[]`} - \n\n * `_inputQuery` {`string`} - ",
|
|
719
|
+
"description": "Properties:\n\n * `styles` {`CSSResult[]`} - \n\n * `_savedSearchesPopover` - \n\n * `_savedSearchesExpandSymbol` - \n\n * `_savedSearches` {`any[]`} - \n\n * `_inputQuery` {`string`} - \n\n * `_showLoader` {`boolean`} - \n\n * `inputQuery$` - \n\n * `_modalContext` - ",
|
|
715
720
|
"attributes": []
|
|
716
721
|
},
|
|
717
722
|
{
|
|
@@ -930,7 +935,7 @@
|
|
|
930
935
|
]
|
|
931
936
|
},
|
|
932
937
|
{
|
|
933
|
-
"name": "
|
|
938
|
+
"name": "umb-code-block",
|
|
934
939
|
"description": "A simple styled box for showing code-based error messages.\n\nSlots:\n\n * ` ` {} - the full message\n\nProperties:\n\n * `styles` {`CSSResult[]`} - ",
|
|
935
940
|
"attributes": []
|
|
936
941
|
},
|
|
@@ -3160,7 +3165,7 @@
|
|
|
3160
3165
|
"attributes": []
|
|
3161
3166
|
},
|
|
3162
3167
|
{
|
|
3163
|
-
"name": "story-modal-context-example",
|
|
3168
|
+
"name": "umb-story-modal-context-example",
|
|
3164
3169
|
"description": "Attributes:\n\n * `modalLayout` {`string`} - \n\nProperties:\n\n * `modalLayout` {`string`} - \n\n * `value` {`string`} - \n\n * `_modalContext` - ",
|
|
3165
3170
|
"attributes": [
|
|
3166
3171
|
{
|
|
@@ -3180,7 +3185,7 @@
|
|
|
3180
3185
|
]
|
|
3181
3186
|
},
|
|
3182
3187
|
{
|
|
3183
|
-
"name": "story-notification-default-example",
|
|
3188
|
+
"name": "umb-story-notification-default-example",
|
|
3184
3189
|
"description": "Properties:\n\n * `_notificationContext` - \n\n * `_handleNotification` - ",
|
|
3185
3190
|
"attributes": []
|
|
3186
3191
|
},
|