@net7/boilerplate-arianna 5.6.2 → 5.6.3
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/esm2022/lib/layouts/search-layout/search-layout.ds.mjs +47 -4
- package/esm2022/lib/search/aw-facet-inputs/aw-facet-input.mjs +15 -8
- package/esm2022/lib/search/entity-links.helper.mjs +17 -4
- package/fesm2022/net7-boilerplate-arianna.mjs +76 -13
- package/fesm2022/net7-boilerplate-arianna.mjs.map +1 -1
- package/lib/layouts/search-layout/search-layout.ds.d.ts +15 -0
- package/lib/search/aw-facet-inputs/aw-facet-input.d.ts +4 -3
- package/package.json +1 -1
- package/src/lib/styles/arianna/layouts/_search-layout.scss +23 -3
|
@@ -86,7 +86,9 @@ export class AwSearchLayoutDS extends LayoutDataSource {
|
|
|
86
86
|
if (this.search.model(this.layoutId)) {
|
|
87
87
|
this.search.remove(this.layoutId);
|
|
88
88
|
}
|
|
89
|
-
|
|
89
|
+
const facetsConfig = cloneDeep(this.facetsConfig);
|
|
90
|
+
this._applyValidationOverrides(facetsConfig);
|
|
91
|
+
this.search.add(this.layoutId, facetsConfig);
|
|
90
92
|
this.searchModel = this.search.model(this.layoutId);
|
|
91
93
|
// query params control
|
|
92
94
|
if (AwSearchModel.queryParams) {
|
|
@@ -164,7 +166,14 @@ export class AwSearchLayoutDS extends LayoutDataSource {
|
|
|
164
166
|
return this.communication.request$('search', {
|
|
165
167
|
params,
|
|
166
168
|
onError: (error) => console.error(error),
|
|
167
|
-
}).pipe(tap((
|
|
169
|
+
}).pipe(tap((response) => {
|
|
170
|
+
// Bail out gracefully if the backend rejects the query and resolves
|
|
171
|
+
// to null (e.g. an Elasticsearch query_string parse error) rather than
|
|
172
|
+
// throwing on the destructured response.
|
|
173
|
+
if (!response) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
const { totalCount, results } = response;
|
|
168
177
|
this.totalCount = totalCount;
|
|
169
178
|
let resultsTitleIndex = 0;
|
|
170
179
|
// results title
|
|
@@ -195,7 +204,14 @@ export class AwSearchLayoutDS extends LayoutDataSource {
|
|
|
195
204
|
return this.communication.request$('facets', {
|
|
196
205
|
params,
|
|
197
206
|
onError: (error) => console.error(error),
|
|
198
|
-
}).pipe(tap((
|
|
207
|
+
}).pipe(tap((response) => {
|
|
208
|
+
// The facets request can resolve to null when the backend rejects the
|
|
209
|
+
// query (e.g. an Elasticsearch query_string parse error). Bail out
|
|
210
|
+
// gracefully instead of throwing on the destructured `facets`.
|
|
211
|
+
const facets = response?.facets;
|
|
212
|
+
if (!facets) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
199
215
|
// entity links pagination control
|
|
200
216
|
entityLinksHelper.onFacetsResponse(this.searchModel, facets);
|
|
201
217
|
// facets labels
|
|
@@ -235,6 +251,33 @@ export class AwSearchLayoutDS extends LayoutDataSource {
|
|
|
235
251
|
this.searchModel.setPageConfigOffset(newOffset);
|
|
236
252
|
return of(true);
|
|
237
253
|
}
|
|
254
|
+
/**
|
|
255
|
+
* Lets the consumer app customize per-facet input validation from its
|
|
256
|
+
* layout configuration, keyed by `facetId`, without forking the default
|
|
257
|
+
* facets config. Each override replaces that input's `validation` and may
|
|
258
|
+
* provide a `validator(value) => boolean` function and/or a `pattern`
|
|
259
|
+
* (RegExp or string), plus a `message`. Setting an override to a falsy
|
|
260
|
+
* value disables validation for that facet.
|
|
261
|
+
*
|
|
262
|
+
* Example (app config under the layout's config id):
|
|
263
|
+
* facetsValidation: {
|
|
264
|
+
* 'date-from': { pattern: /.../, message: '…' },
|
|
265
|
+
* 'date-to': { validator: (v) => isRealDate(v), message: '…' },
|
|
266
|
+
* }
|
|
267
|
+
*/
|
|
268
|
+
_applyValidationOverrides(facetsConfig) {
|
|
269
|
+
const overrides = this.configuration.get(this.configId)?.facetsValidation;
|
|
270
|
+
if (!overrides || !facetsConfig?.fields) {
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
facetsConfig.fields.forEach((field) => {
|
|
274
|
+
(field.inputs || []).forEach((input) => {
|
|
275
|
+
if (input.facetId && Object.prototype.hasOwnProperty.call(overrides, input.facetId)) {
|
|
276
|
+
input.validation = overrides[input.facetId];
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
}
|
|
238
281
|
_addFacetsLabels(facets) {
|
|
239
282
|
facets
|
|
240
283
|
.filter((f) => Array.isArray(f.data))
|
|
@@ -303,4 +346,4 @@ export class AwSearchLayoutDS extends LayoutDataSource {
|
|
|
303
346
|
}));
|
|
304
347
|
}
|
|
305
348
|
}
|
|
306
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWxheW91dC5kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL243LWJvaWxlcnBsYXRlLWFyaWFubmEvc3JjL2xpYi9sYXlvdXRzL3NlYXJjaC1sYXlvdXQvc2VhcmNoLWxheW91dC5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM5QyxPQUFPLEVBQ0wsR0FBRyxFQUFFLFNBQVMsRUFDZixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTyxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUM5RCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxpQkFBaUIsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGdCQUFnQjtJQUF0RDs7UUFDUyxhQUFRLEdBQUcsa0JBQWtCLENBQUM7UUFFOUIsYUFBUSxHQUFHLGVBQWUsQ0FBQztRQUUzQixlQUFVLEdBQUcsU0FBUyxDQUFDO1FBRXZCLG9CQUFlLEdBQUcsU0FBUyxDQUFDO1FBRTVCLGlCQUFZLEdBQVEsWUFBWSxDQUFDO1FBRWpDLG1CQUFjLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTNCLGVBQVUsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQWtCN0MsdUJBQWtCLEdBQUcsSUFB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ZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IExheW91dERhdGFTb3VyY2UgfSBmcm9tICdAbmV0Ny9jb3JlJztcbmltcG9ydCB7XG4gIHRhcCwgdGFrZVVudGlsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIE9ic2VydmFibGUsIG9mLCBmcm9tRXZlbnQsIFN1YmplY3QsIEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW5cbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBoZWxwZXJzIH0gZnJvbSAnQG5ldDcvYm9pbGVycGxhdGUtY29tbW9uJztcbmltcG9ydCBmYWNldHNDb25maWcgZnJvbSAnLi9zZWFyY2gtZmFjZXRzLmNvbmZpZyc7XG5pbXBvcnQgeyBBd1NlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZWFyY2gvYXctc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXdTZWFyY2hNb2RlbCB9IGZyb20gJy4uLy4uL3NlYXJjaC9hdy1zZWFyY2gubW9kZWwnO1xuaW1wb3J0IGVudGl0eUxpbmtzSGVscGVyIGZyb20gJy4uLy4uL3NlYXJjaC9lbnRpdHktbGlua3MuaGVscGVyJztcbmltcG9ydCB7IGdldEhlYWRUaXRsZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvdGl0bGUuaGVscGVyJztcblxuZXhwb3J0IGNsYXNzIEF3U2VhcmNoTGF5b3V0RFMgZXh0ZW5kcyBMYXlvdXREYXRhU291cmNlIHtcbiAgcHVibGljIGxheW91dElkID0gJ2F3LXNlYXJjaC1sYXlvdXQnO1xuXG4gIHB1YmxpYyBjb25maWdJZCA9ICdzZWFyY2gtbGF5b3V0JztcblxuICBwdWJsaWMgY3VycmVudE5hdiA9ICdyaWNlcmNhJztcblxuICBwdWJsaWMgcGFnZU5hbWVEZWZhdWx0ID0gJ1JpY2VyY2EnO1xuXG4gIHB1YmxpYyBmYWNldHNDb25maWc6IGFueSA9IGZhY2V0c0NvbmZpZztcblxuICBwdWJsaWMgcGFnaW5hdGlvbkxpc3QgPSBbMTAsIDI1LCA1MF07XG5cbiAgcHJvdGVjdGVkIGRlc3Ryb3llZCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByb3RlY3RlZCBjb21tdW5pY2F0aW9uOiBhbnk7XG5cbiAgcHJvdGVjdGVkIGNvbmZpZ3VyYXRpb246IGFueTtcblxuICBwcm90ZWN0ZWQgbWFpblN0YXRlOiBhbnk7XG5cbiAgcHJvdGVjdGVkIHNlYXJjaDogQXdTZWFyY2hTZXJ2aWNlO1xuXG4gIHByb3RlY3RlZCBzZWFyY2hNb2RlbDogQXdTZWFyY2hNb2RlbDtcblxuICBwcm90ZWN0ZWQgcHJldHRpZnlMYWJlbHM6IGFueTtcblxuICBwcm90ZWN0ZWQgY29uZmlnS2V5czogYW55O1xuXG4gIHB1YmxpYyBmYWxsYmFjazogc3RyaW5nO1xuXG4gIHB1YmxpYyByZXNldEJ1dHRvbkVuYWJsZWQgPSB0cnVlO1xuXG4gIHB1YmxpYyBwYWdlVGl0bGU6IHN0cmluZztcblxuICBwdWJsaWMgcmVzdWx0c1RpdGxlOiBzdHJpbmc7XG5cbiAgcHVibGljIHRvdGFsQ291bnQ6IG51bWJlcjtcblxuICAvKiogUGFnaW5hdGlvbiB2YWx1ZSAodXJsIHBhcmFtZXRlcikgKi9cbiAgcHVibGljIGN1cnJlbnRQYWdlOiBhbnkgPSAxO1xuXG4gIC8qKiBMaW5rZWQgb2JqZWN0cyBwYWdlIHNpemUgKi9cbiAgcHVibGljIHBhZ2VTaXplID0gMTA7XG5cbiAgcHVibGljIHNpZGViYXJJc1N0aWNreSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBpc0ZpcnN0TG9hZGluZyA9IHRydWU7XG5cbiAgcHVibGljIHJlc3VsdHNMb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqIFRydWUgd2hlbiB0aGUgdXNlciBoYXMgaW5wdXQgYSB0ZXh0IHN0cmluZyAqL1xuICBwdWJsaWMgaXNTZWFyY2hpbmdUZXh0ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgLyoqIEN1cnJlbnQgb3JkZXIgbWV0aG9kICovXG4gIHB1YmxpYyBvcmRlckJ5ID0gJ2xhYmVsX3NvcnQnO1xuXG4gIC8qKiBDdXJyZW50IG9yZGVyIGRpcmVjdGlvbiAqL1xuICBwdWJsaWMgb3JkZXJEaXJlY3Rpb24gPSAnQVNDJztcblxuICBwdWJsaWMgb3B0aW9uczogYW55O1xuXG4gIHB1YmxpYyBvcmRlckJ5TGFiZWwgPSAnT3JkaW5hIHBlcic7XG5cbiAgLyoqIE9wdGlvbnMgdXNlZCB0byByZW5kZXIgdGhlIEhUTUxTZWxlY3QgKi9cbiAgcHVibGljIG9yZGVyQnlPcHRpb25zOiBhbnkgPSBbXG4gICAge1xuICAgICAgdmFsdWU6ICdfc2NvcmVfREVTQycsXG4gICAgICBsYWJlbDogJ09yZGluZSBwZXIgcGVydGluZW56YScsXG4gICAgICB0eXBlOiAnc2NvcmUnLFxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlXG4gICAgfSwge1xuICAgICAgdmFsdWU6ICdsYWJlbF9zb3J0X0FTQycsXG4gICAgICBsYWJlbDogJ09yZGluZSBhbGZhYmV0aWNvIChB4oaSWiknLFxuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgc2VsZWN0ZWQ6IHRydWUgLy8gTWlycm9ycyB0aGUgZGVmYXVsdCBzb3J0aW5nIG1ldGhvZCBpbiBgc2VhcmNoLWZhY2V0cy5jb25maWcudHNgXG4gICAgfSwge1xuICAgICAgdmFsdWU6ICdsYWJlbF9zb3J0X0RFU0MnLFxuICAgICAgbGFiZWw6ICdPcmRpbmUgYWxmYWJldGljbyAoWuKGkkEpJyxcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIHNlbGVjdGVkOiBmYWxzZVxuICAgIH1cbiAgXTtcblxuICBvbkluaXQoe1xuICAgIGNvbmZpZ3VyYXRpb24sIG1haW5TdGF0ZSwgb3B0aW9ucywgY29tbXVuaWNhdGlvbiwgc2VhcmNoLFxuICB9KSB7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcbiAgICB0aGlzLm1haW5TdGF0ZSA9IG1haW5TdGF0ZTtcbiAgICB0aGlzLmNvbW11bmljYXRpb24gPSBjb21tdW5pY2F0aW9uO1xuICAgIHRoaXMuc2VhcmNoID0gc2VhcmNoO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5wcmV0dGlmeUxhYmVscyA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXQoJ2xhYmVscycpO1xuICAgIHRoaXMuY29uZmlnS2V5cyA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXQoJ2NvbmZpZy1rZXlzJyk7XG4gICAgdGhpcy5mYWxsYmFjayA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXQodGhpcy5jb25maWdJZCkuZmFsbGJhY2s7XG4gICAgdGhpcy5wYWdlVGl0bGUgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KHRoaXMuY29uZmlnSWQpLnRpdGxlO1xuXG4gICAgLy8gcmVtb3ZlIGZpcnN0XG4gICAgLy8gc3RhdGVsZXNzIHNlYXJjaFxuICAgIGlmICh0aGlzLnNlYXJjaC5tb2RlbCh0aGlzLmxheW91dElkKSkge1xuICAgICAgdGhpcy5zZWFyY2gucmVtb3ZlKHRoaXMubGF5b3V0SWQpO1xuICAgIH1cbiAgICB0aGlzLnNlYXJjaC5hZGQodGhpcy5sYXlvdXRJZCwgY2xvbmVEZWVwKHRoaXMuZmFjZXRzQ29uZmlnKSk7XG4gICAgdGhpcy5zZWFyY2hNb2RlbCA9IHRoaXMuc2VhcmNoLm1vZGVsKHRoaXMubGF5b3V0SWQpO1xuXG4gICAgLy8gcXVlcnkgcGFyYW1zIGNvbnRyb2xcbiAgICBpZiAoQXdTZWFyY2hNb2RlbC5xdWVyeVBhcmFtcykge1xuICAgICAgdGhpcy5zZWFyY2hNb2RlbC51cGRhdGVGaWx0ZXJzRnJvbVF1ZXJ5UGFyYW1zKEF3U2VhcmNoTW9kZWwucXVlcnlQYXJhbXMpO1xuICAgICAgQXdTZWFyY2hNb2RlbC5xdWVyeVBhcmFtcyA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuX3NpZGViYXJTdGlja3lDb250cm9sKCk7XG4gICAgdGhpcy5tYWluU3RhdGUudXBkYXRlQ3VzdG9tKCdjdXJyZW50TmF2JywgdGhpcy5jdXJyZW50TmF2KTtcblxuICAgIC8vIHNldCBoZWFkIHRpdGxlXG4gICAgdGhpcy5zZXRIZWFkVGl0bGUoKTtcbiAgfVxuXG4gIG9uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgIEF3U2VhcmNoTW9kZWwucXVlcnlQYXJhbXMgPSBudWxsO1xuICB9XG5cbiAgb25TZWFyY2hSZXNwb25zZSgpIHtcbiAgICB0aGlzLnJlc2V0QnV0dG9uRW5hYmxlZCA9IHRydWU7XG4gICAgaWYgKHRoaXMuaXNGaXJzdExvYWRpbmcpIHtcbiAgICAgIHRoaXMuaXNGaXJzdExvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMub25lKCdmYWNldHMtd3JhcHBlcicpLnVwZGF0ZSh7IHNlYXJjaE1vZGVsOiB0aGlzLnNlYXJjaE1vZGVsIH0pO1xuICAgICAgdGhpcy5zZWFyY2hNb2RlbC51cGRhdGVJbnB1dHNGcm9tRmlsdGVycygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGNoYW5nZXMgb2YgdGhlIEhUTUxTZWxlY3Qgb3JkZXIgY29udHJvbFxuICAgKiBAcGFyYW0gcGF5bG9hZCBfc2NvcmVfREVTQywgbGFiZWxfc29ydF9BU0MsIGxhYmVsX3NvcnRfREVTQ1xuICAgKi9cbiAgb25PcmRlckJ5Q2hhbmdlKHBheWxvYWQ6IHN0cmluZykge1xuICAgIGNvbnN0IG9yZGVyQnkgPSBwYXlsb2FkLnN1YnN0cmluZygwLCBwYXlsb2FkLmxhc3RJbmRleE9mKCdfJykpO1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9IHBheWxvYWQuc3Vic3RyaW5nKHBheWxvYWQubGFzdEluZGV4T2YoJ18nKSArIDEpO1xuICAgIGxldCB0eXBlID0gJyc7XG4gICAgLy8gc2V0IHNlbGVjdGVkXG4gICAgdGhpcy5vcmRlckJ5T3B0aW9ucy5mb3JFYWNoKChvcHRpb24pID0+IHtcbiAgICAgIGlmIChvcHRpb24udmFsdWUgPT09IHBheWxvYWQpIHtcbiAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdHlwZSA9IG9wdGlvbi50eXBlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5vcmRlckJ5ID0gb3JkZXJCeTtcbiAgICB0aGlzLm9yZGVyRGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgIHRoaXMuc2VhcmNoTW9kZWwuc2V0U2VhcmNoQ29uZmlnT3JkZXJCeShvcmRlckJ5KTtcbiAgICB0aGlzLnNlYXJjaE1vZGVsLnNldFNlYXJjaENvbmZpZ0RpcmVjdGlvbihkaXJlY3Rpb24pO1xuICAgIHRoaXMuc2VhcmNoTW9kZWwuc2V0U2VhcmNoQ29uZmlnVHlwZSh0eXBlKTtcbiAgfVxuXG4gIG9uUGFnZVNpemVDaGFuZ2Uoc2l6ZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHRoaXMucGFnZVNpemUgPSBzaXplO1xuICAgIHJldHVybiB0aGlzLl91cGRhdGVTZWFyY2hQYWdlKHRoaXMuY3VycmVudFBhZ2UpO1xuICB9XG5cbiAgb25QYWdpbmF0aW9uQ2hhbmdlKHBheWxvYWQpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBwYWdlID0gcGF5bG9hZC5yZXBsYWNlKCdwYWdlLScsICcnKTtcbiAgICByZXR1cm4gdGhpcy5fdXBkYXRlU2VhcmNoUGFnZShwYWdlKTtcbiAgfVxuXG4gIG9uUGFnaW5hdGlvbkdvVG9DaGFuZ2UocGF5bG9hZCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHBhZ2UgPSBwYXlsb2FkLnJlcGxhY2UoJ2dvdG8tJywgJycpO1xuICAgIHJldHVybiB0aGlzLl91cGRhdGVTZWFyY2hQYWdlKHBhZ2UpO1xuICB9XG5cbiAgZHJhd1BhZ2luYXRpb24gPSAoKSA9PiB7XG4gICAgY29uc3QgeyBocmVmLCBxdWVyeVBhcmFtcyB9ID0gdGhpcy5fZ2V0UGFnaW5hdGlvblBhcmFtcygpO1xuICAgIHRoaXMub25lKCduNy1zbWFydC1wYWdpbmF0aW9uJykudXBkYXRlT3B0aW9ucyh7XG4gICAgICBtb2RlOiAnaHJlZicsXG4gICAgICBocmVmLFxuICAgICAgcXVlcnlQYXJhbXMsXG4gICAgfSk7XG4gICAgdGhpcy5vbmUoJ243LXNtYXJ0LXBhZ2luYXRpb24nKS51cGRhdGUoe1xuICAgICAgdG90YWxQYWdlczogTWF0aC5jZWlsKHRoaXMudG90YWxDb3VudCAvIHRoaXMucGFnZVNpemUpLFxuICAgICAgY3VycmVudFBhZ2U6IHRoaXMuY3VycmVudFBhZ2UsXG4gICAgICBwYWdlTGltaXQ6IDUsXG4gICAgICBzaXplczoge1xuICAgICAgICBsYWJlbDogJ051bWVybyBkaSByaXN1bHRhdGknLFxuICAgICAgICBsaXN0OiB0aGlzLnBhZ2luYXRpb25MaXN0LFxuICAgICAgICBhY3RpdmU6IHRoaXMucGFnZVNpemUsXG4gICAgICB9LFxuICAgIH0pO1xuICB9O1xuXG4gIHJlc2V0UGFnaW5hdGlvbigpIHtcbiAgICB0aGlzLl91cGRhdGVTZWFyY2hQYWdlKDEpO1xuICB9XG5cbiAgb25SZXN1bHRzTGltaXRDaGFuZ2UocGF5bG9hZCkge1xuICAgIHRoaXMuc2V0TGltaXQocGF5bG9hZCk7XG5cbiAgICAvLyByZXNldCBwYWdlICYgb2Zmc2V0XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5zZWFyY2hNb2RlbC5zZXRQYWdlQ29uZmlnT2Zmc2V0KDApO1xuICB9XG5cbiAgc2V0TGltaXQocGF5bG9hZCkge1xuICAgIHRoaXMucGFnZVNpemUgPSBwYXlsb2FkO1xuICAgIHRoaXMuc2VhcmNoTW9kZWwuc2V0UGFnZUNvbmZpZ0xpbWl0KHBheWxvYWQpO1xuICAgIHRoaXMuc2VhcmNoTW9kZWwuc2V0UGFnZUNvbmZpZ09mZnNldCgodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5wYWdlU2l6ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2VhcmNoTW9kZWxJZCA9ICgpID0+IHRoaXMubGF5b3V0SWQ7XG5cbiAgcHJpdmF0ZSBnZXRSZXN1bHRzUmVxJChwYXJhbXMpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmNvbW11bmljYXRpb24ucmVxdWVzdCQoJ3NlYXJjaCcsIHtcbiAgICAgIHBhcmFtcyxcbiAgICAgIG9uRXJyb3I6IChlcnJvcikgPT4gY29uc29sZS5lcnJvcihlcnJvciksXG4gICAgfSkucGlwZShcbiAgICAgIHRhcCgoeyB0b3RhbENvdW50LCByZXN1bHRzIH0pID0+IHtcbiAgICAgICAgdGhpcy50b3RhbENvdW50ID0gdG90YWxDb3VudDtcbiAgICAgICAgbGV0IHJlc3VsdHNUaXRsZUluZGV4ID0gMDtcbiAgICAgICAgLy8gcmVzdWx0cyB0aXRsZVxuICAgICAgICBpZiAodGhpcy50b3RhbENvdW50ID4gMSkge1xuICAgICAgICAgIHJlc3VsdHNUaXRsZUluZGV4ID0gMjtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnRvdGFsQ291bnQgPT09IDEpIHtcbiAgICAgICAgICByZXN1bHRzVGl0bGVJbmRleCA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXN1bHRzVGl0bGUgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KHRoaXMuY29uZmlnSWQpLnJlc3VsdHNbXG4gICAgICAgICAgcmVzdWx0c1RpdGxlSW5kZXhcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5zZWFyY2hNb2RlbC51cGRhdGVUb3RhbENvdW50KHRvdGFsQ291bnQpO1xuXG4gICAgICAgIHRoaXMub25lKCdhdy1saW5rZWQtb2JqZWN0cycpLnVwZGF0ZU9wdGlvbnMoe1xuICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29uZmlnSWQgPT09ICdnYWxsZXJ5LWxheW91dCcgPyAnZ2FsbGVyeScgOiAnc2VhcmNoJyxcbiAgICAgICAgICBjb25maWc6IHRoaXMuY29uZmlndXJhdGlvbixcbiAgICAgICAgICBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlLFxuICAgICAgICAgIHBhZ2luYXRpb246IHRydWUsXG4gICAgICAgICAgcGFnaW5hdGlvblBhcmFtczogdGhpcy5fZ2V0UGFnaW5hdGlvblBhcmFtcygpLFxuICAgICAgICAgIGR5bmFtaWNQYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICB0b3RhbDogdG90YWxDb3VudCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNpemU6IHRoaXMucGFnZVNpemUsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRyYXdQYWdpbmF0aW9uKCk7XG4gICAgICAgIHRoaXMub25lKCdhdy1saW5rZWQtb2JqZWN0cycpLnVwZGF0ZSh7IGl0ZW1zOiB0aGlzLl9ub3JtYWxpemVJdGVtcyhyZXN1bHRzLml0ZW1zKSB9KTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEZhY2V0c1JlcSQocGFyYW1zKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tbXVuaWNhdGlvbi5yZXF1ZXN0JCgnZmFjZXRzJywge1xuICAgICAgcGFyYW1zLFxuICAgICAgb25FcnJvcjogKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKGVycm9yKSxcbiAgICB9KS5waXBlKFxuICAgICAgdGFwKCh7IGZhY2V0cyB9KSA9PiB7XG4gICAgICAgIC8vIGVudGl0eSBsaW5rcyBwYWdpbmF0aW9uIGNvbnRyb2xcbiAgICAgICAgZW50aXR5TGlua3NIZWxwZXIub25GYWNldHNSZXNwb25zZSh0aGlzLnNlYXJjaE1vZGVsLCBmYWNldHMpO1xuICAgICAgICAvLyBmYWNldHMgbGFiZWxzXG4gICAgICAgIHRoaXMuX2FkZEZhY2V0c0xhYmVscyhmYWNldHMpO1xuICAgICAgICAvLyBmYWNldHMgb3B0aW9uc1xuICAgICAgICB0aGlzLl9hZGRGYWNldHNPcHRpb25zKGZhY2V0cyk7XG4gICAgICAgIHRoaXMuc2VhcmNoTW9kZWwudXBkYXRlRmFjZXRzKGZhY2V0cyk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGRvU2VhcmNoUmVxdWVzdCQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCByZXF1ZXN0UGFyYW1zID0gdGhpcy5zZWFyY2hNb2RlbC5nZXRSZXF1ZXN0UGFyYW1zKCk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgc2VhcmNoUGFyYW1ldGVyczoge1xuICAgICAgICB0b3RhbENvdW50OiAwLCAvLyBmYWtlIHBhcmFtIGZvciBhcG9sbG9cbiAgICAgICAgZ2FsbGVyeTogISEodGhpcy5jb25maWdJZCA9PT0gJ2dhbGxlcnktbGF5b3V0JyksXG4gICAgICAgIC4uLnJlcXVlc3RQYXJhbXMsXG4gICAgICB9LFxuICAgIH07XG4gICAgLy8gdXBkYXRlIG9mZnNldFxuICAgIGVudGl0eUxpbmtzSGVscGVyLnJlc2V0T2Zmc2V0KCk7XG4gICAgZW50aXR5TGlua3NIZWxwZXIudXBkYXRlUGFyYW1zT2Zmc2V0KHBhcmFtcy5zZWFyY2hQYXJhbWV0ZXJzKTtcbiAgICAvLyBpbml0aWFsIGxvYWRlclxuICAgIGVudGl0eUxpbmtzSGVscGVyLmFkZEluaXRpYWxMb2FkZXIodGhpcyk7XG5cbiAgICBjb25zdCByZXN1bHRzUmVxJCA9IHRoaXMuZ2V0UmVzdWx0c1JlcSQocGFyYW1zKTtcbiAgICBjb25zdCBmYWNldHNSZXEkID0gdGhpcy5nZXRGYWNldHNSZXEkKHBhcmFtcyk7XG4gICAgcmV0dXJuIGZvcmtKb2luKHJlc3VsdHNSZXEkLCBmYWNldHNSZXEkKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNlYXJjaFBhZ2UocGFnZSkge1xuICAgIGlmICgrcGFnZSA9PT0gdGhpcy5jdXJyZW50UGFnZSkge1xuICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gK3BhZ2U7XG5cbiAgICBjb25zdCBzZWFyY2hDb25maWcgPSB0aGlzLnNlYXJjaE1vZGVsLmdldENvbmZpZygpO1xuICAgIGNvbnN0IHBhZ2VDb25maWcgPSBzZWFyY2hDb25maWcucGFnZTtcbiAgICBjb25zdCB7IGxpbWl0IH0gPSBwYWdlQ29uZmlnO1xuICAgIGNvbnN0IG5ld09mZnNldCA9ICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiBsaW1pdDtcblxuICAgIHRoaXMuc2VhcmNoTW9kZWwuc2V0UGFnZUNvbmZpZ09mZnNldChuZXdPZmZzZXQpO1xuXG4gICAgcmV0dXJuIG9mKHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkRmFjZXRzTGFiZWxzKGZhY2V0cykge1xuICAgIGZhY2V0c1xuICAgICAgLmZpbHRlcigoZikgPT4gQXJyYXkuaXNBcnJheShmLmRhdGEpKVxuICAgICAgLmZvckVhY2goKGYpID0+IHtcbiAgICAgICAgZi5kYXRhLmZvckVhY2goKGRhdGFJdGVtKSA9PiB7XG4gICAgICAgICAgY29uc3Qga2V5ID0gZGF0YUl0ZW0ubGFiZWw7XG4gICAgICAgICAgZGF0YUl0ZW0ubGFiZWwgPSAoXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ0tleXNba2V5XT8ubGFiZWxcbiAgICAgICAgICAgIHx8IGhlbHBlcnMucHJldHRpZnlTbmFrZUNhc2Uoa2V5LCB0aGlzLnByZXR0aWZ5TGFiZWxzW2tleV0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZEZhY2V0c09wdGlvbnMoZmFjZXRzKSB7XG4gICAgZmFjZXRzXG4gICAgICAuZmlsdGVyKChmKSA9PiBmLmlkID09PSAncXVlcnktbGlua3MnKVxuICAgICAgLmZvckVhY2goKGYpID0+IHtcbiAgICAgICAgZi5kYXRhLmZvckVhY2goKGRhdGFJdGVtKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWdLZXlzW2RhdGFJdGVtLnZhbHVlXTtcbiAgICAgICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgICAgICBkYXRhSXRlbS5vcHRpb25zID0ge1xuICAgICAgICAgICAgICBpY29uOiBjb25maWcuaWNvbixcbiAgICAgICAgICAgICAgY2xhc3NlczogYGNvbG9yLSR7Y29uZmlnWydjbGFzcy1uYW1lJ119YCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbm9ybWFsaXplSXRlbXMoaXRlbXMpIHtcbiAgICByZXR1cm4gaXRlbXMubWFwKChzaW5nbGVJdGVtKSA9PiAoeyBpdGVtOiB7IC4uLnNpbmdsZUl0ZW0gfSB9KSk7XG4gIH1cblxuICBwcml2YXRlIF9zaWRlYmFyU3RpY2t5Q29udHJvbCgpIHtcbiAgICAvLyBubyBzdGlja3kgZm9yIEludGVybmV0IEV4cGxvcmVyXG4gICAgaWYgKGhlbHBlcnMuYnJvd3NlcklzSUUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzb3VyY2UkID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Njcm9sbCcpO1xuXG4gICAgc291cmNlJC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCksXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3Qgd2luZG93T2Zmc2V0VG9wID0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgICAgY29uc3Qgc3RpY2t5UGFyZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc3RpY2t5LXBhcmVudCcpWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3Qgd3JhcHBlck9mZnNldFRvcCA9IHN0aWNreVBhcmVudCA/IHN0aWNreVBhcmVudC5vZmZzZXRUb3AgOiAwO1xuICAgICAgdGhpcy5zaWRlYmFySXNTdGlja3kgPSB3cmFwcGVyT2Zmc2V0VG9wIDw9IHdpbmRvd09mZnNldFRvcDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFBhZ2luYXRpb25QYXJhbXMoKSB7XG4gICAgY29uc3QgcmVxdWVzdFBhcmFtcyA9IHRoaXMuc2VhcmNoTW9kZWwuZ2V0UmVxdWVzdFBhcmFtcygpO1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gdGhpcy5zZWFyY2hNb2RlbC5maWx0ZXJzQXNRdWVyeVBhcmFtcyhyZXF1ZXN0UGFyYW1zLmZpbHRlcnMpO1xuXG4gICAgT2JqZWN0LmtleXMocXVlcnlQYXJhbXMpLmZvckVhY2goKGtleSkgPT4geyBxdWVyeVBhcmFtc1trZXldID0gcXVlcnlQYXJhbXNba2V5XSB8fCBudWxsOyB9KTtcblxuICAgIC8vIGFkaXRpb25hbCBwYXJhbXNcbiAgICBxdWVyeVBhcmFtcy5vcmRlcmJ5ID0gdGhpcy5vcmRlckJ5O1xuICAgIHF1ZXJ5UGFyYW1zLm9yZGVyZGlyZWN0aW9uID0gdGhpcy5vcmRlckRpcmVjdGlvbjtcbiAgICBxdWVyeVBhcmFtcy5wYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcbiAgICBxdWVyeVBhcmFtcy5saW1pdCA9IHRoaXMucGFnZVNpemU7XG5cbiAgICBsZXQgaHJlZiA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXQoJ3BhdGhzJykuc2VhcmNoQmFzZVBhdGg7XG4gICAgaWYgKHRoaXMuY29uZmlnSWQgPT09ICdnYWxsZXJ5LWxheW91dCcpIHtcbiAgICAgIGhyZWYgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KCdwYXRocycpLmdhbGxlcnlCYXNlUGF0aDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaHJlZixcbiAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNldEhlYWRUaXRsZSgpIHtcbiAgICB0aGlzLm1haW5TdGF0ZS51cGRhdGUoJ2hlYWRUaXRsZScsIGdldEhlYWRUaXRsZSh7XG4gICAgICBuYW1lOiB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KCdjdXN0b21lcicpLFxuICAgICAgcGFnZU5hbWU6IHRoaXMuY29uZmlndXJhdGlvbi5nZXQodGhpcy5jb25maWdJZCk/LnBhZ2VOYW1lLFxuICAgICAgcGFnZURlZmF1bHQ6IHRoaXMucGFnZU5hbWVEZWZhdWx0LFxuICAgIH0pKTtcbiAgfVxufVxuIl19
|
|
349
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWxheW91dC5kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL243LWJvaWxlcnBsYXRlLWFyaWFubmEvc3JjL2xpYi9sYXlvdXRzL3NlYXJjaC1sYXlvdXQvc2VhcmNoLWxheW91dC5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM5QyxPQUFPLEVBQ0wsR0FBRyxFQUFFLFNBQVMsRUFDZixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTyxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUM5RCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsYUFBYSxFQUFTLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxpQkFBaUIsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFhMUQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGdCQUFnQjtJQUF0RDs7UUFDUyxhQUFRLEdBQUcsa0JBQWtCLENBQUM7UUFFOUIsYUFBUSxHQUFHLGVBQWUsQ0FBQztRQUUzQixlQUFVLEdBQUcsU0FBUyxDQUFDO1FBRXZCLG9CQUFlLEdBQUcsU0FBUyxDQUFDO1FBRTVCLGlCQUFZLEdBQVEsWUFBWSxDQUFDO1FBRWpDLG1CQUFjLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTNCLGVBQVUsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQWtCN0MsdUJBQWtCLEdBQUcsSUFB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bG9kYXNoJztcbmltcG9ydCB7IExheW91dERhdGFTb3VyY2UgfSBmcm9tICdAbmV0Ny9jb3JlJztcbmltcG9ydCB7XG4gIHRhcCwgdGFrZVVudGlsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIE9ic2VydmFibGUsIG9mLCBmcm9tRXZlbnQsIFN1YmplY3QsIEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW5cbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBoZWxwZXJzIH0gZnJvbSAnQG5ldDcvYm9pbGVycGxhdGUtY29tbW9uJztcbmltcG9ydCBmYWNldHNDb25maWcgZnJvbSAnLi9zZWFyY2gtZmFjZXRzLmNvbmZpZyc7XG5pbXBvcnQgeyBBd1NlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZWFyY2gvYXctc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXdTZWFyY2hNb2RlbCwgRmFjZXQgfSBmcm9tICcuLi8uLi9zZWFyY2gvYXctc2VhcmNoLm1vZGVsJztcbmltcG9ydCBlbnRpdHlMaW5rc0hlbHBlciBmcm9tICcuLi8uLi9zZWFyY2gvZW50aXR5LWxpbmtzLmhlbHBlcic7XG5pbXBvcnQgeyBnZXRIZWFkVGl0bGUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL3RpdGxlLmhlbHBlcic7XG5cbi8qKiBTaGFwZSBvZiB0aGUgYHNlYXJjaGAgcmVxdWVzdCByZXNwb25zZSBjb25zdW1lZCBieSB0aGUgc2VhcmNoIGxheW91dCAqL1xuaW50ZXJmYWNlIFNlYXJjaFJlc3VsdHNSZXNwb25zZSB7XG4gIHRvdGFsQ291bnQ6IG51bWJlcjtcbiAgcmVzdWx0czogeyBpdGVtczogYW55W10gfTtcbn1cblxuLyoqIFNoYXBlIG9mIHRoZSBgZmFjZXRzYCByZXF1ZXN0IHJlc3BvbnNlIGNvbnN1bWVkIGJ5IHRoZSBzZWFyY2ggbGF5b3V0ICovXG5pbnRlcmZhY2UgRmFjZXRzUmVzcG9uc2Uge1xuICBmYWNldHM6IEZhY2V0W107XG59XG5cbmV4cG9ydCBjbGFzcyBBd1NlYXJjaExheW91dERTIGV4dGVuZHMgTGF5b3V0RGF0YVNvdXJjZSB7XG4gIHB1YmxpYyBsYXlvdXRJZCA9ICdhdy1zZWFyY2gtbGF5b3V0JztcblxuICBwdWJsaWMgY29uZmlnSWQgPSAnc2VhcmNoLWxheW91dCc7XG5cbiAgcHVibGljIGN1cnJlbnROYXYgPSAncmljZXJjYSc7XG5cbiAgcHVibGljIHBhZ2VOYW1lRGVmYXVsdCA9ICdSaWNlcmNhJztcblxuICBwdWJsaWMgZmFjZXRzQ29uZmlnOiBhbnkgPSBmYWNldHNDb25maWc7XG5cbiAgcHVibGljIHBhZ2luYXRpb25MaXN0ID0gWzEwLCAyNSwgNTBdO1xuXG4gIHByb3RlY3RlZCBkZXN0cm95ZWQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcm90ZWN0ZWQgY29tbXVuaWNhdGlvbjogYW55O1xuXG4gIHByb3RlY3RlZCBjb25maWd1cmF0aW9uOiBhbnk7XG5cbiAgcHJvdGVjdGVkIG1haW5TdGF0ZTogYW55O1xuXG4gIHByb3RlY3RlZCBzZWFyY2g6IEF3U2VhcmNoU2VydmljZTtcblxuICBwcm90ZWN0ZWQgc2VhcmNoTW9kZWw6IEF3U2VhcmNoTW9kZWw7XG5cbiAgcHJvdGVjdGVkIHByZXR0aWZ5TGFiZWxzOiBhbnk7XG5cbiAgcHJvdGVjdGVkIGNvbmZpZ0tleXM6IGFueTtcblxuICBwdWJsaWMgZmFsbGJhY2s6IHN0cmluZztcblxuICBwdWJsaWMgcmVzZXRCdXR0b25FbmFibGVkID0gdHJ1ZTtcblxuICBwdWJsaWMgcGFnZVRpdGxlOiBzdHJpbmc7XG5cbiAgcHVibGljIHJlc3VsdHNUaXRsZTogc3RyaW5nO1xuXG4gIHB1YmxpYyB0b3RhbENvdW50OiBudW1iZXI7XG5cbiAgLyoqIFBhZ2luYXRpb24gdmFsdWUgKHVybCBwYXJhbWV0ZXIpICovXG4gIHB1YmxpYyBjdXJyZW50UGFnZTogYW55ID0gMTtcblxuICAvKiogTGlua2VkIG9iamVjdHMgcGFnZSBzaXplICovXG4gIHB1YmxpYyBwYWdlU2l6ZSA9IDEwO1xuXG4gIHB1YmxpYyBzaWRlYmFySXNTdGlja3kgPSBmYWxzZTtcblxuICBwdWJsaWMgaXNGaXJzdExvYWRpbmcgPSB0cnVlO1xuXG4gIHB1YmxpYyByZXN1bHRzTG9hZGluZyA9IGZhbHNlO1xuXG4gIC8qKiBUcnVlIHdoZW4gdGhlIHVzZXIgaGFzIGlucHV0IGEgdGV4dCBzdHJpbmcgKi9cbiAgcHVibGljIGlzU2VhcmNoaW5nVGV4dCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIC8qKiBDdXJyZW50IG9yZGVyIG1ldGhvZCAqL1xuICBwdWJsaWMgb3JkZXJCeSA9ICdsYWJlbF9zb3J0JztcblxuICAvKiogQ3VycmVudCBvcmRlciBkaXJlY3Rpb24gKi9cbiAgcHVibGljIG9yZGVyRGlyZWN0aW9uID0gJ0FTQyc7XG5cbiAgcHVibGljIG9wdGlvbnM6IGFueTtcblxuICBwdWJsaWMgb3JkZXJCeUxhYmVsID0gJ09yZGluYSBwZXInO1xuXG4gIC8qKiBPcHRpb25zIHVzZWQgdG8gcmVuZGVyIHRoZSBIVE1MU2VsZWN0ICovXG4gIHB1YmxpYyBvcmRlckJ5T3B0aW9uczogYW55ID0gW1xuICAgIHtcbiAgICAgIHZhbHVlOiAnX3Njb3JlX0RFU0MnLFxuICAgICAgbGFiZWw6ICdPcmRpbmUgcGVyIHBlcnRpbmVuemEnLFxuICAgICAgdHlwZTogJ3Njb3JlJyxcbiAgICAgIHNlbGVjdGVkOiBmYWxzZVxuICAgIH0sIHtcbiAgICAgIHZhbHVlOiAnbGFiZWxfc29ydF9BU0MnLFxuICAgICAgbGFiZWw6ICdPcmRpbmUgYWxmYWJldGljbyAoQeKGklopJyxcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIHNlbGVjdGVkOiB0cnVlIC8vIE1pcnJvcnMgdGhlIGRlZmF1bHQgc29ydGluZyBtZXRob2QgaW4gYHNlYXJjaC1mYWNldHMuY29uZmlnLnRzYFxuICAgIH0sIHtcbiAgICAgIHZhbHVlOiAnbGFiZWxfc29ydF9ERVNDJyxcbiAgICAgIGxhYmVsOiAnT3JkaW5lIGFsZmFiZXRpY28gKFrihpJBKScsXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICBzZWxlY3RlZDogZmFsc2VcbiAgICB9XG4gIF07XG5cbiAgb25Jbml0KHtcbiAgICBjb25maWd1cmF0aW9uLCBtYWluU3RhdGUsIG9wdGlvbnMsIGNvbW11bmljYXRpb24sIHNlYXJjaCxcbiAgfSkge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5tYWluU3RhdGUgPSBtYWluU3RhdGU7XG4gICAgdGhpcy5jb21tdW5pY2F0aW9uID0gY29tbXVuaWNhdGlvbjtcbiAgICB0aGlzLnNlYXJjaCA9IHNlYXJjaDtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMucHJldHRpZnlMYWJlbHMgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KCdsYWJlbHMnKTtcbiAgICB0aGlzLmNvbmZpZ0tleXMgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KCdjb25maWcta2V5cycpO1xuICAgIHRoaXMuZmFsbGJhY2sgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KHRoaXMuY29uZmlnSWQpLmZhbGxiYWNrO1xuICAgIHRoaXMucGFnZVRpdGxlID0gdGhpcy5jb25maWd1cmF0aW9uLmdldCh0aGlzLmNvbmZpZ0lkKS50aXRsZTtcblxuICAgIC8vIHJlbW92ZSBmaXJzdFxuICAgIC8vIHN0YXRlbGVzcyBzZWFyY2hcbiAgICBpZiAodGhpcy5zZWFyY2gubW9kZWwodGhpcy5sYXlvdXRJZCkpIHtcbiAgICAgIHRoaXMuc2VhcmNoLnJlbW92ZSh0aGlzLmxheW91dElkKTtcbiAgICB9XG4gICAgY29uc3QgZmFjZXRzQ29uZmlnID0gY2xvbmVEZWVwKHRoaXMuZmFjZXRzQ29uZmlnKTtcbiAgICB0aGlzLl9hcHBseVZhbGlkYXRpb25PdmVycmlkZXMoZmFjZXRzQ29uZmlnKTtcbiAgICB0aGlzLnNlYXJjaC5hZGQodGhpcy5sYXlvdXRJZCwgZmFjZXRzQ29uZmlnKTtcbiAgICB0aGlzLnNlYXJjaE1vZGVsID0gdGhpcy5zZWFyY2gubW9kZWwodGhpcy5sYXlvdXRJZCk7XG5cbiAgICAvLyBxdWVyeSBwYXJhbXMgY29udHJvbFxuICAgIGlmIChBd1NlYXJjaE1vZGVsLnF1ZXJ5UGFyYW1zKSB7XG4gICAgICB0aGlzLnNlYXJjaE1vZGVsLnVwZGF0ZUZpbHRlcnNGcm9tUXVlcnlQYXJhbXMoQXdTZWFyY2hNb2RlbC5xdWVyeVBhcmFtcyk7XG4gICAgICBBd1NlYXJjaE1vZGVsLnF1ZXJ5UGFyYW1zID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5fc2lkZWJhclN0aWNreUNvbnRyb2woKTtcbiAgICB0aGlzLm1haW5TdGF0ZS51cGRhdGVDdXN0b20oJ2N1cnJlbnROYXYnLCB0aGlzLmN1cnJlbnROYXYpO1xuXG4gICAgLy8gc2V0IGhlYWQgdGl0bGVcbiAgICB0aGlzLnNldEhlYWRUaXRsZSgpO1xuICB9XG5cbiAgb25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgQXdTZWFyY2hNb2RlbC5xdWVyeVBhcmFtcyA9IG51bGw7XG4gIH1cblxuICBvblNlYXJjaFJlc3BvbnNlKCkge1xuICAgIHRoaXMucmVzZXRCdXR0b25FbmFibGVkID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5pc0ZpcnN0TG9hZGluZykge1xuICAgICAgdGhpcy5pc0ZpcnN0TG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5vbmUoJ2ZhY2V0cy13cmFwcGVyJykudXBkYXRlKHsgc2VhcmNoTW9kZWw6IHRoaXMuc2VhcmNoTW9kZWwgfSk7XG4gICAgICB0aGlzLnNlYXJjaE1vZGVsLnVwZGF0ZUlucHV0c0Zyb21GaWx0ZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgY2hhbmdlcyBvZiB0aGUgSFRNTFNlbGVjdCBvcmRlciBjb250cm9sXG4gICAqIEBwYXJhbSBwYXlsb2FkIF9zY29yZV9ERVNDLCBsYWJlbF9zb3J0X0FTQywgbGFiZWxfc29ydF9ERVNDXG4gICAqL1xuICBvbk9yZGVyQnlDaGFuZ2UocGF5bG9hZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgb3JkZXJCeSA9IHBheWxvYWQuc3Vic3RyaW5nKDAsIHBheWxvYWQubGFzdEluZGV4T2YoJ18nKSk7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gcGF5bG9hZC5zdWJzdHJpbmcocGF5bG9hZC5sYXN0SW5kZXhPZignXycpICsgMSk7XG4gICAgbGV0IHR5cGUgPSAnJztcbiAgICAvLyBzZXQgc2VsZWN0ZWRcbiAgICB0aGlzLm9yZGVyQnlPcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4ge1xuICAgICAgaWYgKG9wdGlvbi52YWx1ZSA9PT0gcGF5bG9hZCkge1xuICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB0eXBlID0gb3B0aW9uLnR5cGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm9yZGVyQnkgPSBvcmRlckJ5O1xuICAgIHRoaXMub3JkZXJEaXJlY3Rpb24gPSBkaXJlY3Rpb247XG4gICAgdGhpcy5zZWFyY2hNb2RlbC5zZXRTZWFyY2hDb25maWdPcmRlckJ5KG9yZGVyQnkpO1xuICAgIHRoaXMuc2VhcmNoTW9kZWwuc2V0U2VhcmNoQ29uZmlnRGlyZWN0aW9uKGRpcmVjdGlvbik7XG4gICAgdGhpcy5zZWFyY2hNb2RlbC5zZXRTZWFyY2hDb25maWdUeXBlKHR5cGUpO1xuICB9XG5cbiAgb25QYWdlU2l6ZUNoYW5nZShzaXplKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IHNpemU7XG4gICAgcmV0dXJuIHRoaXMuX3VwZGF0ZVNlYXJjaFBhZ2UodGhpcy5jdXJyZW50UGFnZSk7XG4gIH1cblxuICBvblBhZ2luYXRpb25DaGFuZ2UocGF5bG9hZCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHBhZ2UgPSBwYXlsb2FkLnJlcGxhY2UoJ3BhZ2UtJywgJycpO1xuICAgIHJldHVybiB0aGlzLl91cGRhdGVTZWFyY2hQYWdlKHBhZ2UpO1xuICB9XG5cbiAgb25QYWdpbmF0aW9uR29Ub0NoYW5nZShwYXlsb2FkKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgcGFnZSA9IHBheWxvYWQucmVwbGFjZSgnZ290by0nLCAnJyk7XG4gICAgcmV0dXJuIHRoaXMuX3VwZGF0ZVNlYXJjaFBhZ2UocGFnZSk7XG4gIH1cblxuICBkcmF3UGFnaW5hdGlvbiA9ICgpID0+IHtcbiAgICBjb25zdCB7IGhyZWYsIHF1ZXJ5UGFyYW1zIH0gPSB0aGlzLl9nZXRQYWdpbmF0aW9uUGFyYW1zKCk7XG4gICAgdGhpcy5vbmUoJ243LXNtYXJ0LXBhZ2luYXRpb24nKS51cGRhdGVPcHRpb25zKHtcbiAgICAgIG1vZGU6ICdocmVmJyxcbiAgICAgIGhyZWYsXG4gICAgICBxdWVyeVBhcmFtcyxcbiAgICB9KTtcbiAgICB0aGlzLm9uZSgnbjctc21hcnQtcGFnaW5hdGlvbicpLnVwZGF0ZSh7XG4gICAgICB0b3RhbFBhZ2VzOiBNYXRoLmNlaWwodGhpcy50b3RhbENvdW50IC8gdGhpcy5wYWdlU2l6ZSksXG4gICAgICBjdXJyZW50UGFnZTogdGhpcy5jdXJyZW50UGFnZSxcbiAgICAgIHBhZ2VMaW1pdDogNSxcbiAgICAgIHNpemVzOiB7XG4gICAgICAgIGxhYmVsOiAnTnVtZXJvIGRpIHJpc3VsdGF0aScsXG4gICAgICAgIGxpc3Q6IHRoaXMucGFnaW5hdGlvbkxpc3QsXG4gICAgICAgIGFjdGl2ZTogdGhpcy5wYWdlU2l6ZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH07XG5cbiAgcmVzZXRQYWdpbmF0aW9uKCkge1xuICAgIHRoaXMuX3VwZGF0ZVNlYXJjaFBhZ2UoMSk7XG4gIH1cblxuICBvblJlc3VsdHNMaW1pdENoYW5nZShwYXlsb2FkKSB7XG4gICAgdGhpcy5zZXRMaW1pdChwYXlsb2FkKTtcblxuICAgIC8vIHJlc2V0IHBhZ2UgJiBvZmZzZXRcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLnNlYXJjaE1vZGVsLnNldFBhZ2VDb25maWdPZmZzZXQoMCk7XG4gIH1cblxuICBzZXRMaW1pdChwYXlsb2FkKSB7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IHBheWxvYWQ7XG4gICAgdGhpcy5zZWFyY2hNb2RlbC5zZXRQYWdlQ29uZmlnTGltaXQocGF5bG9hZCk7XG4gICAgdGhpcy5zZWFyY2hNb2RlbC5zZXRQYWdlQ29uZmlnT2Zmc2V0KCh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnBhZ2VTaXplKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTZWFyY2hNb2RlbElkID0gKCkgPT4gdGhpcy5sYXlvdXRJZDtcblxuICBwcml2YXRlIGdldFJlc3VsdHNSZXEkKHBhcmFtcyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuY29tbXVuaWNhdGlvbi5yZXF1ZXN0JCgnc2VhcmNoJywge1xuICAgICAgcGFyYW1zLFxuICAgICAgb25FcnJvcjogKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKGVycm9yKSxcbiAgICB9KS5waXBlKFxuICAgICAgdGFwKChyZXNwb25zZTogU2VhcmNoUmVzdWx0c1Jlc3BvbnNlIHwgbnVsbCkgPT4ge1xuICAgICAgICAvLyBCYWlsIG91dCBncmFjZWZ1bGx5IGlmIHRoZSBiYWNrZW5kIHJlamVjdHMgdGhlIHF1ZXJ5IGFuZCByZXNvbHZlc1xuICAgICAgICAvLyB0byBudWxsIChlLmcuIGFuIEVsYXN0aWNzZWFyY2ggcXVlcnlfc3RyaW5nIHBhcnNlIGVycm9yKSByYXRoZXIgdGhhblxuICAgICAgICAvLyB0aHJvd2luZyBvbiB0aGUgZGVzdHJ1Y3R1cmVkIHJlc3BvbnNlLlxuICAgICAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgdG90YWxDb3VudCwgcmVzdWx0cyB9ID0gcmVzcG9uc2U7XG4gICAgICAgIHRoaXMudG90YWxDb3VudCA9IHRvdGFsQ291bnQ7XG4gICAgICAgIGxldCByZXN1bHRzVGl0bGVJbmRleCA9IDA7XG4gICAgICAgIC8vIHJlc3VsdHMgdGl0bGVcbiAgICAgICAgaWYgKHRoaXMudG90YWxDb3VudCA+IDEpIHtcbiAgICAgICAgICByZXN1bHRzVGl0bGVJbmRleCA9IDI7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50b3RhbENvdW50ID09PSAxKSB7XG4gICAgICAgICAgcmVzdWx0c1RpdGxlSW5kZXggPSAxO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVzdWx0c1RpdGxlID0gdGhpcy5jb25maWd1cmF0aW9uLmdldCh0aGlzLmNvbmZpZ0lkKS5yZXN1bHRzW1xuICAgICAgICAgIHJlc3VsdHNUaXRsZUluZGV4XG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuc2VhcmNoTW9kZWwudXBkYXRlVG90YWxDb3VudCh0b3RhbENvdW50KTtcblxuICAgICAgICB0aGlzLm9uZSgnYXctbGlua2VkLW9iamVjdHMnKS51cGRhdGVPcHRpb25zKHtcbiAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbmZpZ0lkID09PSAnZ2FsbGVyeS1sYXlvdXQnID8gJ2dhbGxlcnknIDogJ3NlYXJjaCcsXG4gICAgICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZ3VyYXRpb24sXG4gICAgICAgICAgcGFnZTogdGhpcy5jdXJyZW50UGFnZSxcbiAgICAgICAgICBwYWdpbmF0aW9uOiB0cnVlLFxuICAgICAgICAgIHBhZ2luYXRpb25QYXJhbXM6IHRoaXMuX2dldFBhZ2luYXRpb25QYXJhbXMoKSxcbiAgICAgICAgICBkeW5hbWljUGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgdG90YWw6IHRvdGFsQ291bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzaXplOiB0aGlzLnBhZ2VTaXplLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kcmF3UGFnaW5hdGlvbigpO1xuICAgICAgICB0aGlzLm9uZSgnYXctbGlua2VkLW9iamVjdHMnKS51cGRhdGUoeyBpdGVtczogdGhpcy5fbm9ybWFsaXplSXRlbXMocmVzdWx0cy5pdGVtcykgfSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGYWNldHNSZXEkKHBhcmFtcykge1xuICAgIHJldHVybiB0aGlzLmNvbW11bmljYXRpb24ucmVxdWVzdCQoJ2ZhY2V0cycsIHtcbiAgICAgIHBhcmFtcyxcbiAgICAgIG9uRXJyb3I6IChlcnJvcikgPT4gY29uc29sZS5lcnJvcihlcnJvciksXG4gICAgfSkucGlwZShcbiAgICAgIHRhcCgocmVzcG9uc2U6IEZhY2V0c1Jlc3BvbnNlIHwgbnVsbCkgPT4ge1xuICAgICAgICAvLyBUaGUgZmFjZXRzIHJlcXVlc3QgY2FuIHJlc29sdmUgdG8gbnVsbCB3aGVuIHRoZSBiYWNrZW5kIHJlamVjdHMgdGhlXG4gICAgICAgIC8vIHF1ZXJ5IChlLmcuIGFuIEVsYXN0aWNzZWFyY2ggcXVlcnlfc3RyaW5nIHBhcnNlIGVycm9yKS4gQmFpbCBvdXRcbiAgICAgICAgLy8gZ3JhY2VmdWxseSBpbnN0ZWFkIG9mIHRocm93aW5nIG9uIHRoZSBkZXN0cnVjdHVyZWQgYGZhY2V0c2AuXG4gICAgICAgIGNvbnN0IGZhY2V0cyA9IHJlc3BvbnNlPy5mYWNldHM7XG4gICAgICAgIGlmICghZmFjZXRzKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVudGl0eSBsaW5rcyBwYWdpbmF0aW9uIGNvbnRyb2xcbiAgICAgICAgZW50aXR5TGlua3NIZWxwZXIub25GYWNldHNSZXNwb25zZSh0aGlzLnNlYXJjaE1vZGVsLCBmYWNldHMpO1xuICAgICAgICAvLyBmYWNldHMgbGFiZWxzXG4gICAgICAgIHRoaXMuX2FkZEZhY2V0c0xhYmVscyhmYWNldHMpO1xuICAgICAgICAvLyBmYWNldHMgb3B0aW9uc1xuICAgICAgICB0aGlzLl9hZGRGYWNldHNPcHRpb25zKGZhY2V0cyk7XG4gICAgICAgIHRoaXMuc2VhcmNoTW9kZWwudXBkYXRlRmFjZXRzKGZhY2V0cyk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGRvU2VhcmNoUmVxdWVzdCQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCByZXF1ZXN0UGFyYW1zID0gdGhpcy5zZWFyY2hNb2RlbC5nZXRSZXF1ZXN0UGFyYW1zKCk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgc2VhcmNoUGFyYW1ldGVyczoge1xuICAgICAgICB0b3RhbENvdW50OiAwLCAvLyBmYWtlIHBhcmFtIGZvciBhcG9sbG9cbiAgICAgICAgZ2FsbGVyeTogISEodGhpcy5jb25maWdJZCA9PT0gJ2dhbGxlcnktbGF5b3V0JyksXG4gICAgICAgIC4uLnJlcXVlc3RQYXJhbXMsXG4gICAgICB9LFxuICAgIH07XG4gICAgLy8gdXBkYXRlIG9mZnNldFxuICAgIGVudGl0eUxpbmtzSGVscGVyLnJlc2V0T2Zmc2V0KCk7XG4gICAgZW50aXR5TGlua3NIZWxwZXIudXBkYXRlUGFyYW1zT2Zmc2V0KHBhcmFtcy5zZWFyY2hQYXJhbWV0ZXJzKTtcbiAgICAvLyBpbml0aWFsIGxvYWRlclxuICAgIGVudGl0eUxpbmtzSGVscGVyLmFkZEluaXRpYWxMb2FkZXIodGhpcyk7XG5cbiAgICBjb25zdCByZXN1bHRzUmVxJCA9IHRoaXMuZ2V0UmVzdWx0c1JlcSQocGFyYW1zKTtcbiAgICBjb25zdCBmYWNldHNSZXEkID0gdGhpcy5nZXRGYWNldHNSZXEkKHBhcmFtcyk7XG4gICAgcmV0dXJuIGZvcmtKb2luKHJlc3VsdHNSZXEkLCBmYWNldHNSZXEkKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNlYXJjaFBhZ2UocGFnZSkge1xuICAgIGlmICgrcGFnZSA9PT0gdGhpcy5jdXJyZW50UGFnZSkge1xuICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gK3BhZ2U7XG5cbiAgICBjb25zdCBzZWFyY2hDb25maWcgPSB0aGlzLnNlYXJjaE1vZGVsLmdldENvbmZpZygpO1xuICAgIGNvbnN0IHBhZ2VDb25maWcgPSBzZWFyY2hDb25maWcucGFnZTtcbiAgICBjb25zdCB7IGxpbWl0IH0gPSBwYWdlQ29uZmlnO1xuICAgIGNvbnN0IG5ld09mZnNldCA9ICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiBsaW1pdDtcblxuICAgIHRoaXMuc2VhcmNoTW9kZWwuc2V0UGFnZUNvbmZpZ09mZnNldChuZXdPZmZzZXQpO1xuXG4gICAgcmV0dXJuIG9mKHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIExldHMgdGhlIGNvbnN1bWVyIGFwcCBjdXN0b21pemUgcGVyLWZhY2V0IGlucHV0IHZhbGlkYXRpb24gZnJvbSBpdHNcbiAgICogbGF5b3V0IGNvbmZpZ3VyYXRpb24sIGtleWVkIGJ5IGBmYWNldElkYCwgd2l0aG91dCBmb3JraW5nIHRoZSBkZWZhdWx0XG4gICAqIGZhY2V0cyBjb25maWcuIEVhY2ggb3ZlcnJpZGUgcmVwbGFjZXMgdGhhdCBpbnB1dCdzIGB2YWxpZGF0aW9uYCBhbmQgbWF5XG4gICAqIHByb3ZpZGUgYSBgdmFsaWRhdG9yKHZhbHVlKSA9PiBib29sZWFuYCBmdW5jdGlvbiBhbmQvb3IgYSBgcGF0dGVybmBcbiAgICogKFJlZ0V4cCBvciBzdHJpbmcpLCBwbHVzIGEgYG1lc3NhZ2VgLiBTZXR0aW5nIGFuIG92ZXJyaWRlIHRvIGEgZmFsc3lcbiAgICogdmFsdWUgZGlzYWJsZXMgdmFsaWRhdGlvbiBmb3IgdGhhdCBmYWNldC5cbiAgICpcbiAgICogRXhhbXBsZSAoYXBwIGNvbmZpZyB1bmRlciB0aGUgbGF5b3V0J3MgY29uZmlnIGlkKTpcbiAgICogICBmYWNldHNWYWxpZGF0aW9uOiB7XG4gICAqICAgICAnZGF0ZS1mcm9tJzogeyBwYXR0ZXJuOiAvLi4uLywgbWVzc2FnZTogJ+KApicgfSxcbiAgICogICAgICdkYXRlLXRvJzogeyB2YWxpZGF0b3I6ICh2KSA9PiBpc1JlYWxEYXRlKHYpLCBtZXNzYWdlOiAn4oCmJyB9LFxuICAgKiAgIH1cbiAgICovXG4gIHByaXZhdGUgX2FwcGx5VmFsaWRhdGlvbk92ZXJyaWRlcyhmYWNldHNDb25maWcpIHtcbiAgICBjb25zdCBvdmVycmlkZXMgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KHRoaXMuY29uZmlnSWQpPy5mYWNldHNWYWxpZGF0aW9uO1xuICAgIGlmICghb3ZlcnJpZGVzIHx8ICFmYWNldHNDb25maWc/LmZpZWxkcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmYWNldHNDb25maWcuZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAoZmllbGQuaW5wdXRzIHx8IFtdKS5mb3JFYWNoKChpbnB1dCkgPT4ge1xuICAgICAgICBpZiAoaW5wdXQuZmFjZXRJZCAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3ZlcnJpZGVzLCBpbnB1dC5mYWNldElkKSkge1xuICAgICAgICAgIGlucHV0LnZhbGlkYXRpb24gPSBvdmVycmlkZXNbaW5wdXQuZmFjZXRJZF07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkRmFjZXRzTGFiZWxzKGZhY2V0cykge1xuICAgIGZhY2V0c1xuICAgICAgLmZpbHRlcigoZikgPT4gQXJyYXkuaXNBcnJheShmLmRhdGEpKVxuICAgICAgLmZvckVhY2goKGYpID0+IHtcbiAgICAgICAgZi5kYXRhLmZvckVhY2goKGRhdGFJdGVtKSA9PiB7XG4gICAgICAgICAgY29uc3Qga2V5ID0gZGF0YUl0ZW0ubGFiZWw7XG4gICAgICAgICAgZGF0YUl0ZW0ubGFiZWwgPSAoXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ0tleXNba2V5XT8ubGFiZWxcbiAgICAgICAgICAgIHx8IGhlbHBlcnMucHJldHRpZnlTbmFrZUNhc2Uoa2V5LCB0aGlzLnByZXR0aWZ5TGFiZWxzW2tleV0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZEZhY2V0c09wdGlvbnMoZmFjZXRzKSB7XG4gICAgZmFjZXRzXG4gICAgICAuZmlsdGVyKChmKSA9PiBmLmlkID09PSAncXVlcnktbGlua3MnKVxuICAgICAgLmZvckVhY2goKGYpID0+IHtcbiAgICAgICAgZi5kYXRhLmZvckVhY2goKGRhdGFJdGVtKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWdLZXlzW2RhdGFJdGVtLnZhbHVlXTtcbiAgICAgICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgICAgICBkYXRhSXRlbS5vcHRpb25zID0ge1xuICAgICAgICAgICAgICBpY29uOiBjb25maWcuaWNvbixcbiAgICAgICAgICAgICAgY2xhc3NlczogYGNvbG9yLSR7Y29uZmlnWydjbGFzcy1uYW1lJ119YCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbm9ybWFsaXplSXRlbXMoaXRlbXMpIHtcbiAgICByZXR1cm4gaXRlbXMubWFwKChzaW5nbGVJdGVtKSA9PiAoeyBpdGVtOiB7IC4uLnNpbmdsZUl0ZW0gfSB9KSk7XG4gIH1cblxuICBwcml2YXRlIF9zaWRlYmFyU3RpY2t5Q29udHJvbCgpIHtcbiAgICAvLyBubyBzdGlja3kgZm9yIEludGVybmV0IEV4cGxvcmVyXG4gICAgaWYgKGhlbHBlcnMuYnJvd3NlcklzSUUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzb3VyY2UkID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Njcm9sbCcpO1xuXG4gICAgc291cmNlJC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCksXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3Qgd2luZG93T2Zmc2V0VG9wID0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgICAgY29uc3Qgc3RpY2t5UGFyZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc3RpY2t5LXBhcmVudCcpWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3Qgd3JhcHBlck9mZnNldFRvcCA9IHN0aWNreVBhcmVudCA/IHN0aWNreVBhcmVudC5vZmZzZXRUb3AgOiAwO1xuICAgICAgdGhpcy5zaWRlYmFySXNTdGlja3kgPSB3cmFwcGVyT2Zmc2V0VG9wIDw9IHdpbmRvd09mZnNldFRvcDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFBhZ2luYXRpb25QYXJhbXMoKSB7XG4gICAgY29uc3QgcmVxdWVzdFBhcmFtcyA9IHRoaXMuc2VhcmNoTW9kZWwuZ2V0UmVxdWVzdFBhcmFtcygpO1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gdGhpcy5zZWFyY2hNb2RlbC5maWx0ZXJzQXNRdWVyeVBhcmFtcyhyZXF1ZXN0UGFyYW1zLmZpbHRlcnMpO1xuXG4gICAgT2JqZWN0LmtleXMocXVlcnlQYXJhbXMpLmZvckVhY2goKGtleSkgPT4geyBxdWVyeVBhcmFtc1trZXldID0gcXVlcnlQYXJhbXNba2V5XSB8fCBudWxsOyB9KTtcblxuICAgIC8vIGFkaXRpb25hbCBwYXJhbXNcbiAgICBxdWVyeVBhcmFtcy5vcmRlcmJ5ID0gdGhpcy5vcmRlckJ5O1xuICAgIHF1ZXJ5UGFyYW1zLm9yZGVyZGlyZWN0aW9uID0gdGhpcy5vcmRlckRpcmVjdGlvbjtcbiAgICBxdWVyeVBhcmFtcy5wYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcbiAgICBxdWVyeVBhcmFtcy5saW1pdCA9IHRoaXMucGFnZVNpemU7XG5cbiAgICBsZXQgaHJlZiA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXQoJ3BhdGhzJykuc2VhcmNoQmFzZVBhdGg7XG4gICAgaWYgKHRoaXMuY29uZmlnSWQgPT09ICdnYWxsZXJ5LWxheW91dCcpIHtcbiAgICAgIGhyZWYgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KCdwYXRocycpLmdhbGxlcnlCYXNlUGF0aDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaHJlZixcbiAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNldEhlYWRUaXRsZSgpIHtcbiAgICB0aGlzLm1haW5TdGF0ZS51cGRhdGUoJ2hlYWRUaXRsZScsIGdldEhlYWRUaXRsZSh7XG4gICAgICBuYW1lOiB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KCdjdXN0b21lcicpLFxuICAgICAgcGFnZU5hbWU6IHRoaXMuY29uZmlndXJhdGlvbi5nZXQodGhpcy5jb25maWdJZCk/LnBhZ2VOYW1lLFxuICAgICAgcGFnZURlZmF1bHQ6IHRoaXMucGFnZU5hbWVEZWZhdWx0LFxuICAgIH0pKTtcbiAgfVxufVxuIl19
|
|
@@ -23,9 +23,10 @@ export class AwFacetInput {
|
|
|
23
23
|
AwFacetInput.index += 1;
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
|
-
* Pure validity check against the optional config-driven
|
|
27
|
-
*
|
|
28
|
-
* (
|
|
26
|
+
* Pure validity check against the optional config-driven `validation`.
|
|
27
|
+
* The consumer may supply either a `validator(value) => boolean` function
|
|
28
|
+
* (takes precedence) or a `pattern` (RegExp or string). Empty values are
|
|
29
|
+
* always valid (use `required` for emptiness). Does not mutate the output.
|
|
29
30
|
*/
|
|
30
31
|
isValid(value) {
|
|
31
32
|
const { validation } = this.config;
|
|
@@ -36,10 +37,16 @@ export class AwFacetInput {
|
|
|
36
37
|
if (str.length === 0) {
|
|
37
38
|
return true;
|
|
38
39
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
if (typeof validation.validator === 'function') {
|
|
41
|
+
return !!validation.validator(str);
|
|
42
|
+
}
|
|
43
|
+
if (validation.pattern) {
|
|
44
|
+
const pattern = validation.pattern instanceof RegExp
|
|
45
|
+
? validation.pattern
|
|
46
|
+
: new RegExp(validation.pattern);
|
|
47
|
+
return pattern.test(str);
|
|
48
|
+
}
|
|
49
|
+
return true;
|
|
43
50
|
}
|
|
44
51
|
/**
|
|
45
52
|
* Validates the value and reflects the error state on the output (error
|
|
@@ -60,4 +67,4 @@ export class AwFacetInput {
|
|
|
60
67
|
this.id = `facet-input-${this.getType()}-${AwFacetInput.index}`;
|
|
61
68
|
}
|
|
62
69
|
}
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXctZmFjZXQtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uNy1ib2lsZXJwbGF0ZS1hcmlhbm5hL3NyYy9saWIvc2VhcmNoL2F3LWZhY2V0LWlucHV0cy9hdy1mYWNldC1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLE9BQWdCLFlBQVk7YUFDekIsVUFBSyxHQUFHLENBQUMsQUFBSixDQUFLO0lBWWpCLFlBQVksTUFBTTtRQUZSLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFhbkIsV0FBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRWxELFVBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBRXRCLFlBQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRTFCLGNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRTlCLGVBQVUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUV2QyxrQkFBYSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBRTdDLG9CQUFlLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFFakQsZUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUM7UUFFbEUsY0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7UUFFMUQsZ0JBQVcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDO1FBRTlELFlBQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUVqQyxjQUFTLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQThDOUIsZUFBVSxHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQyxDQUFBO1FBRU0sWUFBTyxHQUFHLENBQUMsT0FBeUIsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFsRnRFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVkLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUE4QkQ7Ozs7O09BS0c7SUFDSSxPQUFPLENBQUMsS0FBTTtRQUNuQixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25ELElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxJQUFJLE9BQU8sVUFBVSxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUMvQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2QixNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxZQUFZLE1BQU07Z0JBQ2xELENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTztnQkFDcEIsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFFBQVEsQ0FBQyxLQUFNO1FBQ3BCLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUM3RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxLQUFLLEtBQUssT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBUXZCLE1BQU07UUFDWixJQUFJLENBQUMsRUFBRSxHQUFHLGVBQWUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW50ZXJmYWNlIEZhY2V0SW5wdXREYXRhIHtcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgY291bnRlcjogbnVtYmVyO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBvcHRpb25zPzogYW55O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXdGYWNldElucHV0IHtcbiAgc3RhdGljIGluZGV4ID0gMDtcblxuICBwcml2YXRlIGlkOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGNvbmZpZzogYW55O1xuXG4gIHByb3RlY3RlZCBvdXRwdXQ6IGFueTtcblxuICBwcm90ZWN0ZWQgZGF0YTogRmFjZXRJbnB1dERhdGFbXTtcblxuICBwcm90ZWN0ZWQgaXNFbXB0eSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuX3NldElkKCk7XG5cbiAgICBBd0ZhY2V0SW5wdXQuaW5kZXggKz0gMTtcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBzZXRBY3RpdmUoZmFjZXRWYWx1ZTogYW55KTogdm9pZDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgdHJhbnNmb3JtKCk6IGFueTtcblxuICBwdWJsaWMgdXBkYXRlID0gKCkgPT4geyB0aGlzLm91dHB1dCA9IHRoaXMudHJhbnNmb3JtKCk7IH1cblxuICBwdWJsaWMgZ2V0SWQgPSAoKSA9PiB0aGlzLmlkO1xuXG4gIHB1YmxpYyBnZXREYXRhID0gKCkgPT4gdGhpcy5kYXRhO1xuXG4gIHB1YmxpYyBnZXRDb25maWcgPSAoKSA9PiB0aGlzLmNvbmZpZztcblxuICBwdWJsaWMgZ2V0RmFjZXRJZCA9ICgpID0+IHRoaXMuY29uZmlnLmZhY2V0SWQ7XG5cbiAgcHVibGljIGdldElucHV0SW5kZXggPSAoKSA9PiB0aGlzLmNvbmZpZy5pbnB1dEluZGV4O1xuXG4gIHB1YmxpYyBnZXRTZWN0aW9uSW5kZXggPSAoKSA9PiB0aGlzLmNvbmZpZy5zZWN0aW9uSW5kZXg7XG5cbiAgcHVibGljIGdldENvbnRleHQgPSAoKSA9PiB0aGlzLmNvbmZpZy5maWx0ZXJDb25maWcuY29udGV4dCB8fCAnZXh0ZXJuYWwnO1xuXG4gIHB1YmxpYyBnZXRUYXJnZXQgPSAoKSA9PiB0aGlzLmNvbmZpZy5maWx0ZXJDb25maWcudGFyZ2V0IHx8IG51bGw7XG5cbiAgcHVibGljIGdldFNlYXJjaEluID0gKCkgPT4gdGhpcy5jb25maWcuZmlsdGVyQ29uZmlnLnNlYXJjaEluIHx8IG51bGw7XG5cbiAgcHVibGljIGdldFR5cGUgPSAoKSA9PiB0aGlzLmNvbmZpZy50eXBlO1xuXG4gIHB1YmxpYyBnZXRPdXRwdXQgPSAoKSA9PiB0aGlzLm91dHB1dDtcblxuICAvKipcbiAgICogUHVyZSB2YWxpZGl0eSBjaGVjayBhZ2FpbnN0IHRoZSBvcHRpb25hbCBjb25maWctZHJpdmVuIGB2YWxpZGF0aW9uYC5cbiAgICogVGhlIGNvbnN1bWVyIG1heSBzdXBwbHkgZWl0aGVyIGEgYHZhbGlkYXRvcih2YWx1ZSkgPT4gYm9vbGVhbmAgZnVuY3Rpb25cbiAgICogKHRha2VzIHByZWNlZGVuY2UpIG9yIGEgYHBhdHRlcm5gIChSZWdFeHAgb3Igc3RyaW5nKS4gRW1wdHkgdmFsdWVzIGFyZVxuICAgKiBhbHdheXMgdmFsaWQgKHVzZSBgcmVxdWlyZWRgIGZvciBlbXB0aW5lc3MpLiBEb2VzIG5vdCBtdXRhdGUgdGhlIG91dHB1dC5cbiAgICovXG4gIHB1YmxpYyBpc1ZhbGlkKHZhbHVlPyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHsgdmFsaWRhdGlvbiB9ID0gdGhpcy5jb25maWc7XG4gICAgaWYgKCF2YWxpZGF0aW9uKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3Qgc3RyID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogYCR7dmFsdWV9YC50cmltKCk7XG4gICAgaWYgKHN0ci5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbGlkYXRpb24udmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gISF2YWxpZGF0aW9uLnZhbGlkYXRvcihzdHIpO1xuICAgIH1cbiAgICBpZiAodmFsaWRhdGlvbi5wYXR0ZXJuKSB7XG4gICAgICBjb25zdCBwYXR0ZXJuID0gdmFsaWRhdGlvbi5wYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwXG4gICAgICAgID8gdmFsaWRhdGlvbi5wYXR0ZXJuXG4gICAgICAgIDogbmV3IFJlZ0V4cCh2YWxpZGF0aW9uLnBhdHRlcm4pO1xuICAgICAgcmV0dXJuIHBhdHRlcm4udGVzdChzdHIpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHZhbHVlIGFuZCByZWZsZWN0cyB0aGUgZXJyb3Igc3RhdGUgb24gdGhlIG91dHB1dCAoZXJyb3JcbiAgICogZmxhZyAvIG1lc3NhZ2UpIHNvIHRoZSBmYWNldCBjb21wb25lbnQgY2FuIHJlbmRlciBpdCBhY2Nlc3NpYmx5LlxuICAgKi9cbiAgcHVibGljIHZhbGlkYXRlKHZhbHVlPyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHsgdmFsaWRhdGlvbiB9ID0gdGhpcy5jb25maWc7XG4gICAgaWYgKCF2YWxpZGF0aW9uIHx8ICF0aGlzLm91dHB1dCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHZhbGlkID0gdGhpcy5pc1ZhbGlkKHZhbHVlKTtcbiAgICB0aGlzLm91dHB1dC5lcnJvciA9ICF2YWxpZDtcbiAgICB0aGlzLm91dHB1dC5lcnJvck1lc3NhZ2UgPSB2YWxpZCA/IG51bGwgOiB2YWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgcmV0dXJuIHZhbGlkO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCkgeyByZXR1cm4gbnVsbDsgfVxuXG4gIHB1YmxpYyBzZXRJc0VtcHR5ID0gKGVtcHR5OiBib29sZWFuKSA9PiB7XG4gICAgdGhpcy5pc0VtcHR5ID0gZW1wdHk7XG4gIH1cblxuICBwdWJsaWMgc2V0RGF0YSA9IChuZXdEYXRhOiBGYWNldElucHV0RGF0YVtdKSA9PiB7IHRoaXMuZGF0YSA9IG5ld0RhdGE7IH1cblxuICBwcml2YXRlIF9zZXRJZCgpIHtcbiAgICB0aGlzLmlkID0gYGZhY2V0LWlucHV0LSR7dGhpcy5nZXRUeXBlKCl9LSR7QXdGYWNldElucHV0LmluZGV4fWA7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -2,7 +2,17 @@ import { Subject, merge, fromEvent } from 'rxjs';
|
|
|
2
2
|
import { debounceTime, switchMap, mapTo } from 'rxjs/operators';
|
|
3
3
|
// import { isEmpty } from 'lodash';
|
|
4
4
|
const ENTITY_LINKS_CLASS = 'entity-links';
|
|
5
|
-
const
|
|
5
|
+
const ENTITY_LINKS_SELECTOR = '.n7-facet__section-input-links';
|
|
6
|
+
/**
|
|
7
|
+
* Returns the entity-links scroll container. It is the last links container
|
|
8
|
+
* rendered in the facets wrapper, so this stays correct regardless of how
|
|
9
|
+
* many other facet groups (e.g. the date range) follow it — unlike a
|
|
10
|
+
* `:last-child` group selector, which breaks when another group is appended.
|
|
11
|
+
*/
|
|
12
|
+
function getEntityLinksScrollEl() {
|
|
13
|
+
const els = document.querySelectorAll(ENTITY_LINKS_SELECTOR);
|
|
14
|
+
return els[els.length - 1] || null;
|
|
15
|
+
}
|
|
6
16
|
const loaderItem = {
|
|
7
17
|
counter: null,
|
|
8
18
|
label: 'Caricamento in corso...',
|
|
@@ -65,7 +75,7 @@ export default {
|
|
|
65
75
|
entityLinksInput.setIsEmpty(!totalCount);
|
|
66
76
|
// fix scroll
|
|
67
77
|
if (offset === 0) {
|
|
68
|
-
const scrollEl =
|
|
78
|
+
const scrollEl = getEntityLinksScrollEl();
|
|
69
79
|
if (scrollEl) {
|
|
70
80
|
scrollEl.scrollTop = 0;
|
|
71
81
|
}
|
|
@@ -82,7 +92,10 @@ export default {
|
|
|
82
92
|
};
|
|
83
93
|
});
|
|
84
94
|
setTimeout(() => {
|
|
85
|
-
const scrollEl =
|
|
95
|
+
const scrollEl = getEntityLinksScrollEl();
|
|
96
|
+
if (!scrollEl) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
86
99
|
const scroll$ = fromEvent(scrollEl, 'scroll');
|
|
87
100
|
scroll$.pipe(debounceTime(300)).subscribe(({ target }) => {
|
|
88
101
|
const { scrollTop, clientHeight, scrollHeight } = target;
|
|
@@ -123,4 +136,4 @@ export default {
|
|
|
123
136
|
facetsWrapperDS.updateInputLinks();
|
|
124
137
|
}
|
|
125
138
|
};
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWxpbmtzLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL243LWJvaWxlcnBsYXRlLWFyaWFubmEvc3JjL2xpYi9zZWFyY2gvZW50aXR5LWxpbmtzLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUNMLFlBQVksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUMvQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLG9DQUFvQztBQUVwQyxNQUFNLGtCQUFrQixHQUFHLGNBQWMsQ0FBQztBQUMxQyxNQUFNLDRCQUE0QixHQUFHLHFFQUFxRSxDQUFDO0FBRTNHLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLHlCQUF5QjtJQUNoQyxVQUFVLEVBQUUsRUFBRTtJQUNkLEtBQUssRUFBRSxhQUFhO0NBQ3JCLENBQUM7QUFFRixlQUFlO0lBQ2IsZUFBZSxFQUFFLEVBQVM7SUFDMUIsU0FBUyxFQUFFLElBQUksT0FBTyxFQUFFO0lBQ3hCLGVBQWUsQ0FBQyxVQUFVO1FBQ3hCLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sS0FBSyxDQUNWLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ3ZELElBQUksQ0FBQyxTQUFTLENBQ2YsQ0FBQyxJQUFJLENBQ0osWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN2QixNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDaEUsTUFBTSxlQUFlLEdBQUcs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b3J0IHsgU3ViamVjdCwgbWVyZ2UsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLCBzd2l0Y2hNYXAsIG1hcFRvXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbi8vIGltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBFTlRJVFlfTElOS1NfQ0xBU1MgPSAnZW50aXR5LWxpbmtzJztcbmNvbnN0IEVOVElUWV9MSU5LU19QQVJFTlRfU0VMRUNUT1IgPSAnLm43LWZhY2V0cy13cmFwcGVyX19ncm91cDpsYXN0LWNoaWxkIC5uNy1mYWNldF9fc2VjdGlvbi1pbnB1dC1saW5rcyc7XG5cbmNvbnN0IGxvYWRlckl0ZW0gPSB7XG4gIGNvdW50ZXI6IG51bGwsXG4gIGxhYmVsOiAnQ2FyaWNhbWVudG8gaW4gY29yc28uLi4nLFxuICBzZWFyY2hEYXRhOiBbXSxcbiAgdmFsdWU6ICdfX2xvYWRpbmdfXycsXG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHBhZ2luYXRpb25TdGF0ZToge30gYXMgYW55LFxuICBwYWdpbmF0ZSQ6IG5ldyBTdWJqZWN0KCksXG4gIGxpc3RlblRvQ2hhbmdlcyhkYXRhU291cmNlKSB7XG4gICAgY29uc3QgZmFjZXRzV3JhcHBlckVIID0gZGF0YVNvdXJjZS5nZXRXaWRnZXRFdmVudEhhbmRsZXIoJ2ZhY2V0cy13cmFwcGVyJyk7XG4gICAgcmV0dXJuIG1lcmdlKFxuICAgICAgZmFjZXRzV3JhcHBlckVILmludGVybmFsRmFjZXRzQ2hhbmdlJC5waXBlKG1hcFRvKG51bGwpKSxcbiAgICAgIHRoaXMucGFnaW5hdGUkLFxuICAgICkucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSg1MDApLFxuICAgICAgc3dpdGNoTWFwKChwYWdpbmF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RQYXJhbXMgPSBkYXRhU291cmNlLnNlYXJjaE1vZGVsLmdldFJlcXVlc3RQYXJhbXMoKTtcbiAgICAgICAgY29uc3QgaW50ZXJuYWxGaWx0ZXJzID0gZGF0YVNvdXJjZS5zZWFyY2hNb2RlbC5nZXRJbnRlcm5hbEZpbHRlcnMoKTtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uU3RhdGUub2Zmc2V0ID0gcGFnaW5hdGlvbiA/IHRoaXMucGFnaW5hdGlvblN0YXRlLm9mZnNldCA6IDA7XG4gICAgICAgIHRoaXMudXBkYXRlUGFyYW1zT2Zmc2V0KHJlcXVlc3RQYXJhbXMpO1xuICAgICAgICBjb25zdCBmaWx0ZXJzID0gWy4uLnJlcXVlc3RQYXJhbXMuZmlsdGVycywgLi4uaW50ZXJuYWxGaWx0ZXJzXTtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgIHNlYXJjaFBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIHRvdGFsQ291bnQ6IDEwMCxcbiAgICAgICAgICAgIGdhbGxlcnk6ICEhKGRhdGFTb3VyY2Uuc2VhcmNoTW9kZWwuZ2V0SWQoKSA9PT0gJ2F3LWdhbGxlcnktbGF5b3V0JyksXG4gICAgICAgICAgICAuLi5yZXF1ZXN0UGFyYW1zLFxuICAgICAgICAgICAgZmlsdGVyc1xuICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gaW5pdGlhbCBsb2FkZXJcbiAgICAgICAgaWYgKHRoaXMucGFnaW5hdGlvblN0YXRlLm9mZnNldCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuYWRkSW5pdGlhbExvYWRlcihkYXRhU291cmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRhU291cmNlLmdldEZhY2V0c1JlcSQocGFyYW1zKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSxcbiAgb25GYWNldHNSZXNwb25zZShzZWFyY2hNb2RlbCwgZmFjZXRzKSB7XG4gICAgLy8gcGFnaW5hdGlvbiBjb250cm9sXG4gICAgY29uc3QgZW50aXR5TGlua3NGYWNldCA9IGZhY2V0cy5maW5kKCh7IGlkIH0pID0+IGlkID09PSBFTlRJVFlfTElOS1NfQ0xBU1MpO1xuICAgIGNvbnN0IHsgdG90YWxDb3VudCB9ID0gZW50aXR5TGlua3NGYWNldDtcbiAgICBsZXQgeyBsaW1pdCwgb2Zmc2V0IH0gPSB0aGlzLnBhZ2luYXRpb25TdGF0ZTtcbiAgICBpZiAodHlwZW9mIGxpbWl0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgbGltaXQgPSAxMDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvZmZzZXQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBvZmZzZXQgPSAwO1xuICAgIH1cbiAgICB0aGlzLnBhZ2luYXRpb25TdGF0ZS50b3RhbENvdW50ID0gdG90YWxDb3VudDtcbiAgICBpZiAob2Zmc2V0ID4gMCkge1xuICAgICAgY29uc3QgZW50aXR5TGlua3NJbnB1dCA9IHNlYXJjaE1vZGVsLmdldElucHV0QnlGYWNldElkKEVOVElUWV9MSU5LU19DTEFTUyk7XG4gICAgICBjb25zdCBvbGREYXRhID0gZW50aXR5TGlua3NJbnB1dC5nZXREYXRhKCkgfHwgW107XG4gICAgICAvLyByZW1vdmUgZmFrZSBsb2FkaW5nIGVsZW1lbnRcbiAgICAgIGlmIChvbGREYXRhLmxlbmd0aCkge1xuICAgICAgICBvbGREYXRhLnBvcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgbmV3RGF0YSA9IG9sZERhdGEuY29uY2F0KGVudGl0eUxpbmtzRmFjZXQuZGF0YSk7XG4gICAgICBlbnRpdHlMaW5rc0ZhY2V0LmRhdGEgPSBuZXdEYXRhO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBhZ2luYXRpb25TdGF0ZS50b3RhbENvdW50ID4gKGxpbWl0ICsgb2Zmc2V0KSkge1xuICAgICAgZW50aXR5TGlua3NGYWNldC5kYXRhLnB1c2gobG9hZGVySXRlbSk7XG4gICAgfVxuXG4gICAgLy8gZW1wdHkgc3RhdGVcbiAgICBjb25zdCBlbnRpdHlMaW5rc0lucHV0ID0gc2VhcmNoTW9kZWwuZ2V0SW5wdXRCeUZhY2V0SWQoRU5USVRZX0xJTktTX0NMQVNTKTtcbiAgICBlbnRpdHlMaW5rc0lucHV0LnNldElzRW1wdHkoIXRvdGFsQ291bnQpO1xuXG4gICAgLy8gZml4IHNjcm9sbFxuICAgIGlmIChvZmZzZXQgPT09IDApIHtcbiAgICAgIGNvbnN0IHNjcm9sbEVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihFTlRJVFlfTElOS1NfUEFSRU5UX1NFTEVDVE9SKTtcbiAgICAgIGlmIChzY3JvbGxFbCkge1xuICAgICAgICBzY3JvbGxFbC5zY3JvbGxUb3AgPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHVwZGF0ZSBsb2FkaW5nIHN0YXRlXG4gICAgdGhpcy5wYWdpbmF0aW9uU3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICB9LFxuICBpbml0UGFnaW5hdGlvbihzZWFyY2hNb2RlbCkge1xuICAgIHNlYXJjaE1vZGVsLmdldEZpbHRlcnMoKS5maWx0ZXIoKGZpbHRlcikgPT4gKFxuICAgICAgZmlsdGVyLnBhZ2luYXRpb25cbiAgICApKS5mb3JFYWNoKCh7IHBhZ2luYXRpb24gfSkgPT4ge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uU3RhdGUgPSB7XG4gICAgICAgIC4uLnBhZ2luYXRpb24sXG4gICAgICAgIC4uLnRoaXMucGFnaW5hdGlvblN0YXRlLFxuICAgICAgICBsb2FkaW5nOiBmYWxzZVxuICAgICAgfTtcbiAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHNjcm9sbEVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihFTlRJVFlfTElOS1NfUEFSRU5UX1NFTEVDVE9SKTtcbiAgICAgIGNvbnN0IHNjcm9sbCQgPSBmcm9tRXZlbnQoc2Nyb2xsRWwsICdzY3JvbGwnKTtcbiAgICAgIHNjcm9sbCQucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDMwMClcbiAgICAgICkuc3Vic2NyaWJlKCh7IHRhcmdldCB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBjbGllbnRIZWlnaHQsIHNjcm9sbEhlaWdodCB9ID0gdGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgb2Zmc2V0LCBsaW1pdCwgdG90YWxDb3VudCwgbG9hZGluZ1xuICAgICAgICB9ID0gdGhpcy5wYWdpbmF0aW9uU3RhdGU7XG4gICAgICAgIGNvbnN0IG1hcmdpbiA9IDE1MDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gbWFyZ2luKVxuICAgICAgICAgICYmIChvZmZzZXQgKyBsaW1pdCA8IHRvdGFsQ291bnQpXG4gICAgICAgICAgJiYgbG9hZGluZyA9PT0gZmFsc2VcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5wYWdpbmF0aW9uU3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wYWdpbmF0aW9uU3RhdGUub2Zmc2V0ID0gb2Zmc2V0ICsgbGltaXQ7XG4gICAgICAgICAgdGhpcy5wYWdpbmF0ZSQubmV4dCh0aGlzLnBhZ2luYXRpb25TdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxuICAvKiBjbGVhckludGVybmFsRmlsdGVycyhzZWFyY2hNb2RlbCkge1xuICAgIGNvbnN0IHNlYXJjaEZpbHRlciA9IHNlYXJjaE1vZGVsLmdldEZpbHRlcnNCeUZhY2V0SWQoJ2VudGl0eS1zZWFyY2gnKVswXTtcbiAgICBjb25zdCB0eXBlc0ZpbHRlciA9IHNlYXJjaE1vZGVsLmdldEZpbHRlcnNCeUZhY2V0SWQoJ2VudGl0eS10eXBlcycpWzBdO1xuICAgIGlmICghaXNFbXB0eShzZWFyY2hGaWx0ZXIudmFsdWUpIHx8ICFpc0VtcHR5KHR5cGVzRmlsdGVyLnZhbHVlKSkge1xuICAgICAgc2VhcmNoRmlsdGVyLnZhbHVlID0gJyc7XG4gICAgICB0eXBlc0ZpbHRlci52YWx1ZSA9IFtdO1xuICAgICAgc2VhcmNoTW9kZWwudXBkYXRlSW5wdXRzRnJvbUZpbHRlcnMoKTtcbiAgICB9XG4gIH0sICovXG4gIHVwZGF0ZVBhcmFtc09mZnNldChwYXJhbXMpIHtcbiAgICBjb25zdCBlbnRpdHlMaW5rc0ZpbHRlciA9IHBhcmFtcy5maWx0ZXJzXG4gICAgICAuZmluZCgoeyBmYWNldElkIH0pID0+IGZhY2V0SWQgPT09IEVOVElUWV9MSU5LU19DTEFTUyk7XG5cbiAgICBpZiAoZW50aXR5TGlua3NGaWx0ZXIpIHtcbiAgICAgIGVudGl0eUxpbmtzRmlsdGVyLnBhZ2luYXRpb24ub2Zmc2V0ID0gdGhpcy5wYWdpbmF0aW9uU3RhdGUub2Zmc2V0O1xuICAgIH1cbiAgfSxcbiAgcmVzZXRPZmZzZXQoKSB7XG4gICAgdGhpcy5wYWdpbmF0aW9uU3RhdGUub2Zmc2V0ID0gMDtcbiAgfSxcbiAgYWRkSW5pdGlhbExvYWRlcihkYXRhU291cmNlKSB7XG4gICAgZGF0YVNvdXJjZS5zZWFyY2hNb2RlbC5zZXRJbnB1dERhdGEoRU5USVRZX0xJTktTX0NMQVNTLCBbbG9hZGVySXRlbV0pO1xuICAgIGNvbnN0IGZhY2V0c1dyYXBwZXJEUyA9IGRhdGFTb3VyY2UuZ2V0V2lkZ2V0RGF0YVNvdXJjZSgnZmFjZXRzLXdyYXBwZXInKTtcbiAgICBmYWNldHNXcmFwcGVyRFMudXBkYXRlSW5wdXRMaW5rcygpO1xuICB9XG59O1xuIl19
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWxpbmtzLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL243LWJvaWxlcnBsYXRlLWFyaWFubmEvc3JjL2xpYi9zZWFyY2gvZW50aXR5LWxpbmtzLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUNMLFlBQVksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUMvQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLG9DQUFvQztBQUVwQyxNQUFNLGtCQUFrQixHQUFHLGNBQWMsQ0FBQztBQUMxQyxNQUFNLHFCQUFxQixHQUFHLGdDQUFnQyxDQUFDO0FBRS9EOzs7OztHQUtHO0FBQ0gsU0FBUyxzQkFBc0I7SUFDN0IsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDN0QsT0FBUSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQWlCLElBQUksSUFBSSxDQUFDO0FBQ3RELENBQUM7QUFFRCxNQUFNLFVBQVUsR0FBRztJQUNqQixPQUFPLEVBQUUsSUFBSTtJQUNiLEtBQUssRUFBRSx5QkFBeUI7SUFDaEMsVUFBVSxFQUFFLEVBQUU7SUFDZCxLQUFLLEVBQUUsYUFBYTtDQUNyQixDQUFDO0FBRUYsZUFBZTtJQUNiLGVBQWUsRUFBRSxFQUFTO0lBQzFCLFNBQVMsRUFBRSxJQUFJLE9BQU8sRUFBRTtJQUN4QixlQUFlLENBQUMsVUFBVTtRQUN4QixNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMzRSxPQUFPLEtBQUssQ0FDVixlQUFlLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUN2RCxJ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LENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pFLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3JDLENBQUM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCwgbWVyZ2UsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLCBzd2l0Y2hNYXAsIG1hcFRvXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbi8vIGltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBFTlRJVFlfTElOS1NfQ0xBU1MgPSAnZW50aXR5LWxpbmtzJztcbmNvbnN0IEVOVElUWV9MSU5LU19TRUxFQ1RPUiA9ICcubjctZmFjZXRfX3NlY3Rpb24taW5wdXQtbGlua3MnO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGVudGl0eS1saW5rcyBzY3JvbGwgY29udGFpbmVyLiBJdCBpcyB0aGUgbGFzdCBsaW5rcyBjb250YWluZXJcbiAqIHJlbmRlcmVkIGluIHRoZSBmYWNldHMgd3JhcHBlciwgc28gdGhpcyBzdGF5cyBjb3JyZWN0IHJlZ2FyZGxlc3Mgb2YgaG93XG4gKiBtYW55IG90aGVyIGZhY2V0IGdyb3VwcyAoZS5nLiB0aGUgZGF0ZSByYW5nZSkgZm9sbG93IGl0IOKAlCB1bmxpa2UgYVxuICogYDpsYXN0LWNoaWxkYCBncm91cCBzZWxlY3Rvciwgd2hpY2ggYnJlYWtzIHdoZW4gYW5vdGhlciBncm91cCBpcyBhcHBlbmRlZC5cbiAqL1xuZnVuY3Rpb24gZ2V0RW50aXR5TGlua3NTY3JvbGxFbCgpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICBjb25zdCBlbHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKEVOVElUWV9MSU5LU19TRUxFQ1RPUik7XG4gIHJldHVybiAoZWxzW2Vscy5sZW5ndGggLSAxXSBhcyBIVE1MRWxlbWVudCkgfHwgbnVsbDtcbn1cblxuY29uc3QgbG9hZGVySXRlbSA9IHtcbiAgY291bnRlcjogbnVsbCxcbiAgbGFiZWw6ICdDYXJpY2FtZW50byBpbiBjb3Jzby4uLicsXG4gIHNlYXJjaERhdGE6IFtdLFxuICB2YWx1ZTogJ19fbG9hZGluZ19fJyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgcGFnaW5hdGlvblN0YXRlOiB7fSBhcyBhbnksXG4gIHBhZ2luYXRlJDogbmV3IFN1YmplY3QoKSxcbiAgbGlzdGVuVG9DaGFuZ2VzKGRhdGFTb3VyY2UpIHtcbiAgICBjb25zdCBmYWNldHNXcmFwcGVyRUggPSBkYXRhU291cmNlLmdldFdpZGdldEV2ZW50SGFuZGxlcignZmFjZXRzLXdyYXBwZXInKTtcbiAgICByZXR1cm4gbWVyZ2UoXG4gICAgICBmYWNldHNXcmFwcGVyRUguaW50ZXJuYWxGYWNldHNDaGFuZ2UkLnBpcGUobWFwVG8obnVsbCkpLFxuICAgICAgdGhpcy5wYWdpbmF0ZSQsXG4gICAgKS5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDUwMCksXG4gICAgICBzd2l0Y2hNYXAoKHBhZ2luYXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdFBhcmFtcyA9IGRhdGFTb3VyY2Uuc2VhcmNoTW9kZWwuZ2V0UmVxdWVzdFBhcmFtcygpO1xuICAgICAgICBjb25zdCBpbnRlcm5hbEZpbHRlcnMgPSBkYXRhU291cmNlLnNlYXJjaE1vZGVsLmdldEludGVybmFsRmlsdGVycygpO1xuICAgICAgICB0aGlzLnBhZ2luYXRpb25TdGF0ZS5vZmZzZXQgPSBwYWdpbmF0aW9uID8gdGhpcy5wYWdpbmF0aW9uU3RhdGUub2Zmc2V0IDogMDtcbiAgICAgICAgdGhpcy51cGRhdGVQYXJhbXNPZmZzZXQocmVxdWVzdFBhcmFtcyk7XG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbLi4ucmVxdWVzdFBhcmFtcy5maWx0ZXJzLCAuLi5pbnRlcm5hbEZpbHRlcnNdO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgc2VhcmNoUGFyYW1ldGVyczoge1xuICAgICAgICAgICAgdG90YWxDb3VudDogMTAwLFxuICAgICAgICAgICAgZ2FsbGVyeTogISEoZGF0YVNvdXJjZS5zZWFyY2hNb2RlbC5nZXRJZCgpID09PSAnYXctZ2FsbGVyeS1sYXlvdXQnKSxcbiAgICAgICAgICAgIC4uLnJlcXVlc3RQYXJhbXMsXG4gICAgICAgICAgICBmaWx0ZXJzXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBpbml0aWFsIGxvYWRlclxuICAgICAgICBpZiAodGhpcy5wYWdpbmF0aW9uU3RhdGUub2Zmc2V0ID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5hZGRJbml0aWFsTG9hZGVyKGRhdGFTb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGFTb3VyY2UuZ2V0RmFjZXRzUmVxJChwYXJhbXMpO1xuICAgICAgfSlcbiAgICApO1xuICB9LFxuICBvbkZhY2V0c1Jlc3BvbnNlKHNlYXJjaE1vZGVsLCBmYWNldHMpIHtcbiAgICAvLyBwYWdpbmF0aW9uIGNvbnRyb2xcbiAgICBjb25zdCBlbnRpdHlMaW5rc0ZhY2V0ID0gZmFjZXRzLmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IEVOVElUWV9MSU5LU19DTEFTUyk7XG4gICAgY29uc3QgeyB0b3RhbENvdW50IH0gPSBlbnRpdHlMaW5rc0ZhY2V0O1xuICAgIGxldCB7IGxpbWl0LCBvZmZzZXQgfSA9IHRoaXMucGFnaW5hdGlvblN0YXRlO1xuICAgIGlmICh0eXBlb2YgbGltaXQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsaW1pdCA9IDEwO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIG9mZnNldCA9IDA7XG4gICAgfVxuICAgIHRoaXMucGFnaW5hdGlvblN0YXRlLnRvdGFsQ291bnQgPSB0b3RhbENvdW50O1xuICAgIGlmIChvZmZzZXQgPiAwKSB7XG4gICAgICBjb25zdCBlbnRpdHlMaW5rc0lucHV0ID0gc2VhcmNoTW9kZWwuZ2V0SW5wdXRCeUZhY2V0SWQoRU5USVRZX0xJTktTX0NMQVNTKTtcbiAgICAgIGNvbnN0IG9sZERhdGEgPSBlbnRpdHlMaW5rc0lucHV0LmdldERhdGEoKSB8fCBbXTtcbiAgICAgIC8vIHJlbW92ZSBmYWtlIGxvYWRpbmcgZWxlbWVudFxuICAgICAgaWYgKG9sZERhdGEubGVuZ3RoKSB7XG4gICAgICAgIG9sZERhdGEucG9wKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBuZXdEYXRhID0gb2xkRGF0YS5jb25jYXQoZW50aXR5TGlua3NGYWNldC5kYXRhKTtcbiAgICAgIGVudGl0eUxpbmtzRmFjZXQuZGF0YSA9IG5ld0RhdGE7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGFnaW5hdGlvblN0YXRlLnRvdGFsQ291bnQgPiAobGltaXQgKyBvZmZzZXQpKSB7XG4gICAgICBlbnRpdHlMaW5rc0ZhY2V0LmRhdGEucHVzaChsb2FkZXJJdGVtKTtcbiAgICB9XG5cbiAgICAvLyBlbXB0eSBzdGF0ZVxuICAgIGNvbnN0IGVudGl0eUxpbmtzSW5wdXQgPSBzZWFyY2hNb2RlbC5nZXRJbnB1dEJ5RmFjZXRJZChFTlRJVFlfTElOS1NfQ0xBU1MpO1xuICAgIGVudGl0eUxpbmtzSW5wdXQuc2V0SXNFbXB0eSghdG90YWxDb3VudCk7XG5cbiAgICAvLyBmaXggc2Nyb2xsXG4gICAgaWYgKG9mZnNldCA9PT0gMCkge1xuICAgICAgY29uc3Qgc2Nyb2xsRWwgPSBnZXRFbnRpdHlMaW5rc1Njcm9sbEVsKCk7XG4gICAgICBpZiAoc2Nyb2xsRWwpIHtcbiAgICAgICAgc2Nyb2xsRWwuc2Nyb2xsVG9wID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB1cGRhdGUgbG9hZGluZyBzdGF0ZVxuICAgIHRoaXMucGFnaW5hdGlvblN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgfSxcbiAgaW5pdFBhZ2luYXRpb24oc2VhcmNoTW9kZWwpIHtcbiAgICBzZWFyY2hNb2RlbC5nZXRGaWx0ZXJzKCkuZmlsdGVyKChmaWx0ZXIpID0+IChcbiAgICAgIGZpbHRlci5wYWdpbmF0aW9uXG4gICAgKSkuZm9yRWFjaCgoeyBwYWdpbmF0aW9uIH0pID0+IHtcbiAgICAgIHRoaXMucGFnaW5hdGlvblN0YXRlID0ge1xuICAgICAgICAuLi5wYWdpbmF0aW9uLFxuICAgICAgICAuLi50aGlzLnBhZ2luYXRpb25TdGF0ZSxcbiAgICAgICAgbG9hZGluZzogZmFsc2VcbiAgICAgIH07XG4gICAgfSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBzY3JvbGxFbCA9IGdldEVudGl0eUxpbmtzU2Nyb2xsRWwoKTtcbiAgICAgIGlmICghc2Nyb2xsRWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2Nyb2xsJCA9IGZyb21FdmVudChzY3JvbGxFbCwgJ3Njcm9sbCcpO1xuICAgICAgc2Nyb2xsJC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKVxuICAgICAgKS5zdWJzY3JpYmUoKHsgdGFyZ2V0IH0pID0+IHtcbiAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIGNsaWVudEhlaWdodCwgc2Nyb2xsSGVpZ2h0IH0gPSB0YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBvZmZzZXQsIGxpbWl0LCB0b3RhbENvdW50LCBsb2FkaW5nXG4gICAgICAgIH0gPSB0aGlzLnBhZ2luYXRpb25TdGF0ZTtcbiAgICAgICAgY29uc3QgbWFyZ2luID0gMTUwO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKHNjcm9sbFRvcCArIGNsaWVudEhlaWdodCA+PSBzY3JvbGxIZWlnaHQgLSBtYXJnaW4pXG4gICAgICAgICAgJiYgKG9mZnNldCArIGxpbWl0IDwgdG90YWxDb3VudClcbiAgICAgICAgICAmJiBsb2FkaW5nID09PSBmYWxzZVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TdGF0ZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TdGF0ZS5vZmZzZXQgPSBvZmZzZXQgKyBsaW1pdDtcbiAgICAgICAgICB0aGlzLnBhZ2luYXRlJC5uZXh0KHRoaXMucGFnaW5hdGlvblN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG4gIC8qIGNsZWFySW50ZXJuYWxGaWx0ZXJzKHNlYXJjaE1vZGVsKSB7XG4gICAgY29uc3Qgc2VhcmNoRmlsdGVyID0gc2VhcmNoTW9kZWwuZ2V0RmlsdGVyc0J5RmFjZXRJZCgnZW50aXR5LXNlYXJjaCcpWzBdO1xuICAgIGNvbnN0IHR5cGVzRmlsdGVyID0gc2VhcmNoTW9kZWwuZ2V0RmlsdGVyc0J5RmFjZXRJZCgnZW50aXR5LXR5cGVzJylbMF07XG4gICAgaWYgKCFpc0VtcHR5KHNlYXJjaEZpbHRlci52YWx1ZSkgfHwgIWlzRW1wdHkodHlwZXNGaWx0ZXIudmFsdWUpKSB7XG4gICAgICBzZWFyY2hGaWx0ZXIudmFsdWUgPSAnJztcbiAgICAgIHR5cGVzRmlsdGVyLnZhbHVlID0gW107XG4gICAgICBzZWFyY2hNb2RlbC51cGRhdGVJbnB1dHNGcm9tRmlsdGVycygpO1xuICAgIH1cbiAgfSwgKi9cbiAgdXBkYXRlUGFyYW1zT2Zmc2V0KHBhcmFtcykge1xuICAgIGNvbnN0IGVudGl0eUxpbmtzRmlsdGVyID0gcGFyYW1zLmZpbHRlcnNcbiAgICAgIC5maW5kKCh7IGZhY2V0SWQgfSkgPT4gZmFjZXRJZCA9PT0gRU5USVRZX0xJTktTX0NMQVNTKTtcblxuICAgIGlmIChlbnRpdHlMaW5rc0ZpbHRlcikge1xuICAgICAgZW50aXR5TGlua3NGaWx0ZXIucGFnaW5hdGlvbi5vZmZzZXQgPSB0aGlzLnBhZ2luYXRpb25TdGF0ZS5vZmZzZXQ7XG4gICAgfVxuICB9LFxuICByZXNldE9mZnNldCgpIHtcbiAgICB0aGlzLnBhZ2luYXRpb25TdGF0ZS5vZmZzZXQgPSAwO1xuICB9LFxuICBhZGRJbml0aWFsTG9hZGVyKGRhdGFTb3VyY2UpIHtcbiAgICBkYXRhU291cmNlLnNlYXJjaE1vZGVsLnNldElucHV0RGF0YShFTlRJVFlfTElOS1NfQ0xBU1MsIFtsb2FkZXJJdGVtXSk7XG4gICAgY29uc3QgZmFjZXRzV3JhcHBlckRTID0gZGF0YVNvdXJjZS5nZXRXaWRnZXREYXRhU291cmNlKCdmYWNldHMtd3JhcHBlcicpO1xuICAgIGZhY2V0c1dyYXBwZXJEUy51cGRhdGVJbnB1dExpbmtzKCk7XG4gIH1cbn07XG4iXX0=
|
|
@@ -1745,7 +1745,17 @@ class AwSearchLayoutTabsDS extends DataSource {
|
|
|
1745
1745
|
|
|
1746
1746
|
// import { isEmpty } from 'lodash';
|
|
1747
1747
|
const ENTITY_LINKS_CLASS = 'entity-links';
|
|
1748
|
-
const
|
|
1748
|
+
const ENTITY_LINKS_SELECTOR = '.n7-facet__section-input-links';
|
|
1749
|
+
/**
|
|
1750
|
+
* Returns the entity-links scroll container. It is the last links container
|
|
1751
|
+
* rendered in the facets wrapper, so this stays correct regardless of how
|
|
1752
|
+
* many other facet groups (e.g. the date range) follow it — unlike a
|
|
1753
|
+
* `:last-child` group selector, which breaks when another group is appended.
|
|
1754
|
+
*/
|
|
1755
|
+
function getEntityLinksScrollEl() {
|
|
1756
|
+
const els = document.querySelectorAll(ENTITY_LINKS_SELECTOR);
|
|
1757
|
+
return els[els.length - 1] || null;
|
|
1758
|
+
}
|
|
1749
1759
|
const loaderItem = {
|
|
1750
1760
|
counter: null,
|
|
1751
1761
|
label: 'Caricamento in corso...',
|
|
@@ -1808,7 +1818,7 @@ var entityLinksHelper = {
|
|
|
1808
1818
|
entityLinksInput.setIsEmpty(!totalCount);
|
|
1809
1819
|
// fix scroll
|
|
1810
1820
|
if (offset === 0) {
|
|
1811
|
-
const scrollEl =
|
|
1821
|
+
const scrollEl = getEntityLinksScrollEl();
|
|
1812
1822
|
if (scrollEl) {
|
|
1813
1823
|
scrollEl.scrollTop = 0;
|
|
1814
1824
|
}
|
|
@@ -1825,7 +1835,10 @@ var entityLinksHelper = {
|
|
|
1825
1835
|
};
|
|
1826
1836
|
});
|
|
1827
1837
|
setTimeout(() => {
|
|
1828
|
-
const scrollEl =
|
|
1838
|
+
const scrollEl = getEntityLinksScrollEl();
|
|
1839
|
+
if (!scrollEl) {
|
|
1840
|
+
return;
|
|
1841
|
+
}
|
|
1829
1842
|
const scroll$ = fromEvent(scrollEl, 'scroll');
|
|
1830
1843
|
scroll$.pipe(debounceTime(300)).subscribe(({ target }) => {
|
|
1831
1844
|
const { scrollTop, clientHeight, scrollHeight } = target;
|
|
@@ -4473,9 +4486,10 @@ class AwFacetInput {
|
|
|
4473
4486
|
AwFacetInput.index += 1;
|
|
4474
4487
|
}
|
|
4475
4488
|
/**
|
|
4476
|
-
* Pure validity check against the optional config-driven
|
|
4477
|
-
*
|
|
4478
|
-
* (
|
|
4489
|
+
* Pure validity check against the optional config-driven `validation`.
|
|
4490
|
+
* The consumer may supply either a `validator(value) => boolean` function
|
|
4491
|
+
* (takes precedence) or a `pattern` (RegExp or string). Empty values are
|
|
4492
|
+
* always valid (use `required` for emptiness). Does not mutate the output.
|
|
4479
4493
|
*/
|
|
4480
4494
|
isValid(value) {
|
|
4481
4495
|
const { validation } = this.config;
|
|
@@ -4486,10 +4500,16 @@ class AwFacetInput {
|
|
|
4486
4500
|
if (str.length === 0) {
|
|
4487
4501
|
return true;
|
|
4488
4502
|
}
|
|
4489
|
-
|
|
4490
|
-
|
|
4491
|
-
|
|
4492
|
-
|
|
4503
|
+
if (typeof validation.validator === 'function') {
|
|
4504
|
+
return !!validation.validator(str);
|
|
4505
|
+
}
|
|
4506
|
+
if (validation.pattern) {
|
|
4507
|
+
const pattern = validation.pattern instanceof RegExp
|
|
4508
|
+
? validation.pattern
|
|
4509
|
+
: new RegExp(validation.pattern);
|
|
4510
|
+
return pattern.test(str);
|
|
4511
|
+
}
|
|
4512
|
+
return true;
|
|
4493
4513
|
}
|
|
4494
4514
|
/**
|
|
4495
4515
|
* Validates the value and reflects the error state on the output (error
|
|
@@ -5101,7 +5121,9 @@ class AwSearchLayoutDS extends LayoutDataSource {
|
|
|
5101
5121
|
if (this.search.model(this.layoutId)) {
|
|
5102
5122
|
this.search.remove(this.layoutId);
|
|
5103
5123
|
}
|
|
5104
|
-
|
|
5124
|
+
const facetsConfig = cloneDeep(this.facetsConfig);
|
|
5125
|
+
this._applyValidationOverrides(facetsConfig);
|
|
5126
|
+
this.search.add(this.layoutId, facetsConfig);
|
|
5105
5127
|
this.searchModel = this.search.model(this.layoutId);
|
|
5106
5128
|
// query params control
|
|
5107
5129
|
if (AwSearchModel.queryParams) {
|
|
@@ -5179,7 +5201,14 @@ class AwSearchLayoutDS extends LayoutDataSource {
|
|
|
5179
5201
|
return this.communication.request$('search', {
|
|
5180
5202
|
params,
|
|
5181
5203
|
onError: (error) => console.error(error),
|
|
5182
|
-
}).pipe(tap((
|
|
5204
|
+
}).pipe(tap((response) => {
|
|
5205
|
+
// Bail out gracefully if the backend rejects the query and resolves
|
|
5206
|
+
// to null (e.g. an Elasticsearch query_string parse error) rather than
|
|
5207
|
+
// throwing on the destructured response.
|
|
5208
|
+
if (!response) {
|
|
5209
|
+
return;
|
|
5210
|
+
}
|
|
5211
|
+
const { totalCount, results } = response;
|
|
5183
5212
|
this.totalCount = totalCount;
|
|
5184
5213
|
let resultsTitleIndex = 0;
|
|
5185
5214
|
// results title
|
|
@@ -5210,7 +5239,14 @@ class AwSearchLayoutDS extends LayoutDataSource {
|
|
|
5210
5239
|
return this.communication.request$('facets', {
|
|
5211
5240
|
params,
|
|
5212
5241
|
onError: (error) => console.error(error),
|
|
5213
|
-
}).pipe(tap((
|
|
5242
|
+
}).pipe(tap((response) => {
|
|
5243
|
+
// The facets request can resolve to null when the backend rejects the
|
|
5244
|
+
// query (e.g. an Elasticsearch query_string parse error). Bail out
|
|
5245
|
+
// gracefully instead of throwing on the destructured `facets`.
|
|
5246
|
+
const facets = response?.facets;
|
|
5247
|
+
if (!facets) {
|
|
5248
|
+
return;
|
|
5249
|
+
}
|
|
5214
5250
|
// entity links pagination control
|
|
5215
5251
|
entityLinksHelper.onFacetsResponse(this.searchModel, facets);
|
|
5216
5252
|
// facets labels
|
|
@@ -5250,6 +5286,33 @@ class AwSearchLayoutDS extends LayoutDataSource {
|
|
|
5250
5286
|
this.searchModel.setPageConfigOffset(newOffset);
|
|
5251
5287
|
return of(true);
|
|
5252
5288
|
}
|
|
5289
|
+
/**
|
|
5290
|
+
* Lets the consumer app customize per-facet input validation from its
|
|
5291
|
+
* layout configuration, keyed by `facetId`, without forking the default
|
|
5292
|
+
* facets config. Each override replaces that input's `validation` and may
|
|
5293
|
+
* provide a `validator(value) => boolean` function and/or a `pattern`
|
|
5294
|
+
* (RegExp or string), plus a `message`. Setting an override to a falsy
|
|
5295
|
+
* value disables validation for that facet.
|
|
5296
|
+
*
|
|
5297
|
+
* Example (app config under the layout's config id):
|
|
5298
|
+
* facetsValidation: {
|
|
5299
|
+
* 'date-from': { pattern: /.../, message: '…' },
|
|
5300
|
+
* 'date-to': { validator: (v) => isRealDate(v), message: '…' },
|
|
5301
|
+
* }
|
|
5302
|
+
*/
|
|
5303
|
+
_applyValidationOverrides(facetsConfig) {
|
|
5304
|
+
const overrides = this.configuration.get(this.configId)?.facetsValidation;
|
|
5305
|
+
if (!overrides || !facetsConfig?.fields) {
|
|
5306
|
+
return;
|
|
5307
|
+
}
|
|
5308
|
+
facetsConfig.fields.forEach((field) => {
|
|
5309
|
+
(field.inputs || []).forEach((input) => {
|
|
5310
|
+
if (input.facetId && Object.prototype.hasOwnProperty.call(overrides, input.facetId)) {
|
|
5311
|
+
input.validation = overrides[input.facetId];
|
|
5312
|
+
}
|
|
5313
|
+
});
|
|
5314
|
+
});
|
|
5315
|
+
}
|
|
5253
5316
|
_addFacetsLabels(facets) {
|
|
5254
5317
|
facets
|
|
5255
5318
|
.filter((f) => Array.isArray(f.data))
|