@provoly/dashboard 0.15.11 → 0.15.13
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/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +3 -3
- package/esm2022/dataset/i18n/en.translations.mjs +2 -2
- package/esm2022/dataset/i18n/fr.translations.mjs +2 -2
- package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +3 -3
- package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +1 -1
- package/esm2022/lib/core/store/aggregation/frontend-aggregation/frontend-aggregation.service.mjs +1 -3
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +19 -18
- package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +47 -35
- package/fesm2022/provoly-dashboard-admin.mjs +2 -2
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +2 -2
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +64 -51
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +4 -6
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/model/widget-map-manifest.interface.d.ts +1 -0
- package/package.json +31 -31
- package/styles/components/_o-modal.scss +12 -0
- package/widgets/widget-map/utils/widget-map.utils.d.ts +2 -7
|
@@ -180,40 +180,51 @@ export const geometryForLayer = (layer) => {
|
|
|
180
180
|
return FieldType.POINT;
|
|
181
181
|
}
|
|
182
182
|
};
|
|
183
|
-
export const
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
.
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
183
|
+
export const assignLayersOrder = (_layers) => {
|
|
184
|
+
const layers = JSON.parse(JSON.stringify(_layers));
|
|
185
|
+
layers.sort((l1, l2) => (l2.background ? 0 : 1) - (l1.background ? 0 : 1));
|
|
186
|
+
// Assign sure things
|
|
187
|
+
layers.forEach((layer, index) => {
|
|
188
|
+
if (layer.background) {
|
|
189
|
+
layer.order = BACKGROUND_ORDER;
|
|
190
|
+
}
|
|
191
|
+
if (index === 0 && !layer.order) {
|
|
192
|
+
layer.order = 0;
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
layers.forEach((layer, index) => {
|
|
196
|
+
if (layer.order === undefined) {
|
|
197
|
+
let [distanceToFirstPreviousOrder, distanceToFirstNextOrder] = [
|
|
198
|
+
layers
|
|
199
|
+
.slice(0, index)
|
|
200
|
+
.reverse()
|
|
201
|
+
.findIndex((element) => element.order !== undefined) + 1,
|
|
202
|
+
layers.slice(index + 1).findIndex((element) => element.order !== undefined)
|
|
203
|
+
];
|
|
204
|
+
let [previousOrderIndex, nextOrderIndex] = [
|
|
205
|
+
distanceToFirstPreviousOrder > -1 ? index - distanceToFirstPreviousOrder : 0,
|
|
206
|
+
distanceToFirstNextOrder + index + 1
|
|
207
|
+
];
|
|
208
|
+
let [previousOrder, nextOrder] = [
|
|
209
|
+
distanceToFirstPreviousOrder > -1 ? layers[previousOrderIndex].order : 0,
|
|
210
|
+
distanceToFirstNextOrder > -1 ? layers[nextOrderIndex].order : -1
|
|
211
|
+
];
|
|
212
|
+
if (nextOrder > 0 && nextOrder < previousOrder) {
|
|
213
|
+
const newOrder = previousOrder + (nextOrderIndex - previousOrderIndex);
|
|
214
|
+
console.warn(`the order property of layer no ${index + 2} was preset but doesn't follow the order of the other layers`);
|
|
215
|
+
nextOrder = newOrder;
|
|
216
|
+
}
|
|
217
|
+
if (nextOrder > 0) {
|
|
218
|
+
let relativeIndex = index - previousOrderIndex;
|
|
219
|
+
layer.order =
|
|
220
|
+
previousOrder + ((nextOrder - previousOrder) / (nextOrderIndex - previousOrderIndex)) * relativeIndex;
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
layer.order = previousOrder + distanceToFirstPreviousOrder;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
return layers.sort((l1, l2) => (l1.order ?? 1) - (l2.order ?? 1));
|
|
217
228
|
};
|
|
218
229
|
export const DEFAULT_HEATMAP_RADIUS = 25;
|
|
219
230
|
export const DEFAULT_RADIUS_INTENSITY_FACTOR = 10000;
|
|
@@ -221,4 +232,5 @@ export const DEFAULT_ZOOM_MIN = 3;
|
|
|
221
232
|
export const DEFAULT_ZOOM_START = 10;
|
|
222
233
|
export const DEFAULT_ZOOM_MAX = 18;
|
|
223
234
|
export const DEFAULT_MAP_CENTER = [2.2827217347381525, 48.864706031557716];
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LW1hcC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LW1hcC91dGlscy93aWRnZXQtbWFwLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxTQUFTLEVBRVQsU0FBUyxFQU9WLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLE9BQU8sRUFBTyxNQUFNLElBQUksQ0FBQztBQUNsQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBUyxNQUFNLFNBQVMsQ0FBQztBQUVwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQVM5RSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUN2QyxLQUE0QixFQUM1QixTQUFvQixFQUNwQixrQkFBMkIsRUFDM0IsTUFBZSxFQUNmLEVBQUU7SUFDRixJQUNFLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQ3pHLEtBQUssQ0FBQyxJQUFJLENBQ1g7UUFDRCxDQUFDLENBQUMsU0FBUztRQUNYLENBQUMsQ0FBQyxrQkFBa0I7UUFDcEIsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDN0I7UUFDQSxNQUFNLGFBQWEsR0FBRyxLQUdTLENBQUM7UUFFaEMsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUN2QyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxD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QztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxLQUFLLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztBQUNyQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXR0cmlidXRlLFxuICBDbGFzcyxcbiAgRmllbGQsXG4gIEZpZWxkVHlwZSxcbiAgSXRlbSxcbiAgSXRlbVV0aWxzLFxuICBNYXBXaWRnZXRCdWJibGVMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldEhlYXRNYXBMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldExheWVyT3B0aW9ucyxcbiAgTWFwV2lkZ2V0TWFya2VyTGF5ZXJPcHRpb25zLFxuICBSZWxhdGlvbixcbiAgUmVzdWx0U2V0XG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBGZWF0dXJlLCBNYXAgfSBmcm9tICdvbCc7XG5pbXBvcnQgeyBDaXJjbGUsIExpbmVTdHJpbmcsIFBvaW50IH0gZnJvbSAnb2wvZ2VvbSc7XG5pbXBvcnQgeyBTdHlsZSB9IGZyb20gJ29sL3N0eWxlJztcbmltcG9ydCB7IFdpZGdldE1hcExheWVyU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudC93aWRnZXQtbWFwLWxheWVyLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBMYXRMb25DYW5kaWRhdGUgPSB7XG4gIG1pbjogbnVtYmVyO1xuICBtYXg6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY29uc3QgcG9wdWxhdGVMb2NhdGlvbkF0dHJpYnV0ZSA9IChcbiAgbGF5ZXI6IE1hcFdpZGdldExheWVyT3B0aW9ucyxcbiAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gIGNsYXNzZXNOb3RGaWx0ZXJlZDogQ2xhc3NbXSxcbiAgZmllbGRzOiBGaWVsZFtdXG4pID0+IHtcbiAgaWYgKFxuICAgIFsnaGVhdG1hcCcsICdtYXJrZXInLCAnYnViYmxlJywgJ3BvaW50JywgJ2xpbmUnLCAncG9seWdvbicsICdtdWx0aS1saW5lJywgJ211bHRpLXBvbHlnb24nLCAnYXV0byddLmluY2x1ZGVzKFxuICAgICAgbGF5ZXIudHlwZVxuICAgICkgJiZcbiAgICAhIXJlc3VsdFNldCAmJlxuICAgICEhY2xhc3Nlc05vdEZpbHRlcmVkICYmXG4gICAgY2xhc3Nlc05vdEZpbHRlcmVkLmxlbmd0aCA+IDBcbiAgKSB7XG4gICAgY29uc3Qgc3BlY2lmaWNMYXllciA9IGxheWVyIGFzXG4gICAgICB8IE1hcFdpZGdldEhlYXRNYXBMYXllck9wdGlvbnNcbiAgICAgIHwgTWFwV2lkZ2V0TWFya2VyTGF5ZXJPcHRpb25zXG4gICAgICB8IE1hcFdpZGdldEJ1YmJsZUxheWVyT3B0aW9ucztcblxuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc2VzTm90RmlsdGVyZWQuZmlsdGVyKFxuICAgICAgKGNsKSA9PiBzcGVjaWZpY0xheWVyLmNsYXNzZXM/LmluY2x1ZGVzKGNsLmlkKSB8fCAhc3BlY2lmaWNMYXllci5jbGFzc2VzIHx8IHNwZWNpZmljTGF5ZXIuY2xhc3Nlcy5sZW5ndGggPT09IDBcbiAgICApO1xuXG4gICAgaWYgKCFzcGVjaWZpY0xheWVyLmF0dHJpYnV0ZSkge1xuICAgICAgLy8gTm8gbG9jYXRpb24gYXR0cmlidXRlIGF2YWlsYWJsZSwgdGhlbiB0cnkgdG8gZ3Vlc3Mgb25lIHRoYXQgd2lsbCBiZSBva1xuXG4gICAgICBjb25zdCBnZW9tZXRyeSA9IGdlb21ldHJ5Rm9yTGF5ZXIobGF5ZXIpO1xuXG4gICAgICBsZXQgY2FuZGlkYXRlcyA9IFtdIGFzIHsgYXR0cjogQXR0cmlidXRlOyBmaWVsZDogRmllbGQgfCB1bmRlZmluZWQgfVtdO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHJlc3VsdFNldC5pdGVtcykubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBCYXNlZCBvbiBpdGVtcyB0aGF0IHdlIGhhdmUgdG8gZGlzcGxheVxuXG4gICAgICAgIGNhbmRpZGF0ZXMgPSBPYmplY3Qua2V5cyhyZXN1bHRTZXQuaXRlbXMpXG4gICAgICAgICAgLm1hcCgoa2V5KSA9PiAoeyBpdGVtczogcmVzdWx0U2V0Lml0ZW1zW2tleV0sIG9DbGFzczogY2xhc3Nlcy5maW5kKChjbCkgPT4gY2wuaWQgPT09IGtleSkgfSkpXG4gICAgICAgICAgLm1hcCgoeyBpdGVtcywgb0NsYXNzIH0pID0+XG4gICAgICAgICAgICAob0NsYXNzID8/IHsgYXR0cmlidXRlczogW10gfSkuYXR0cmlidXRlc1xuICAgICAgICAgICAgICAubWFwKChhdHRyKSA9PiAoeyBhdHRyLCBmaWVsZDogZmllbGRzLmZpbmQoKGYpID0+IGYuaWQgPT09IGF0dHIuZmllbGQpIH0pKVxuICAgICAgICAgICAgICAuZmlsdGVyKChhdHRyKSA9PiBhdHRyLmZpZWxkPy50eXBlID09PSBnZW9tZXRyeSlcbiAgICAgICAgICApXG4gICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gWy4uLnAsIC4uLmNdLCBbXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGFueSBpdGVtcyB0byBkaXNwbGF5LCBzbyBhbGxvdyBhbGwgY29ycmVzcG9uZGluZyBnZW9tZXRyeSBmaWVsZHNcbiAgICAgICAgY2FuZGlkYXRlcyA9IGNsYXNzZXNOb3RGaWx0ZXJlZFxuICAgICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzKVxuICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAubWFwKChhdHRyKSA9PiAoeyBhdHRyLCBmaWVsZDogZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5pZCA9PT0gYXR0ci5maWVsZCkgfSkpXG4gICAgICAgICAgLmZpbHRlcigoeyBhdHRyLCBmaWVsZCB9KSA9PiBmaWVsZD8udHlwZSA9PT0gZ2VvbWV0cnkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2FuZGlkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHNwZWNpZmljTGF5ZXIuYXR0cmlidXRlID0gY2FuZGlkYXRlc1swXS5hdHRyLm5hbWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcG9wdWxhdGVJbnRlbnNpdHlBdHRyaWJ1dGUgPSAoXG4gIGxheWVyOiBNYXBXaWRnZXRMYXllck9wdGlvbnMsXG4gIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICBjbGFzc2VzTm90RmlsdGVyZWQ6IENsYXNzW10sXG4gIGZpZWxkczogRmllbGRbXVxuKSA9PiB7XG4gIGlmIChcbiAgICBbJ2hlYXRtYXAnLCAnYnViYmxlJ10uaW5jbHVkZXMobGF5ZXIudHlwZSkgJiZcbiAgICAhIXJlc3VsdFNldCAmJlxuICAgICEhY2xhc3Nlc05vdEZpbHRlcmVkICYmXG4gICAgY2xhc3Nlc05vdEZpbHRlcmVkLmxlbmd0aCA+IDBcbiAgKSB7XG4gICAgY29uc3Qgc3BlY2lmaWNMYXllciA9IGxheWVyIGFzIE1hcFdpZGdldEhlYXRNYXBMYXllck9wdGlvbnMgfCBNYXBXaWRnZXRCdWJibGVMYXllck9wdGlvbnM7XG5cbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3Nlc05vdEZpbHRlcmVkLmZpbHRlcihcbiAgICAgIChjbCkgPT5cbiAgICAgICAgKHNwZWNpZmljTGF5ZXIuY2xhc3Nlcz8uaW5jbHVkZXMoY2wuaWQpIHx8ICFzcGVjaWZpY0xheWVyLmNsYXNzZXMgfHwgc3BlY2lmaWNMYXllci5jbGFzc2VzLmxlbmd0aCA9PT0gMCkgJiZcbiAgICAgICAgY2wuYXR0cmlidXRlcy5maW5kKChhdHRyKSA9PiBhdHRyLm5hbWUgPT09IChzcGVjaWZpY0xheWVyPy5hdHRyaWJ1dGUgPz8gW10pKVxuICAgICk7XG5cbiAgICBpZiAoIXNwZWNpZmljTGF5ZXIuaW50ZW5zaXR5QXR0cmlidXRlKSB7XG4gICAgICAvLyBObyBpbnRlbnNpdHkgYXR0cmlidXRlIGF2YWlsYWJsZSwgdGhlbiB0YWtlIHRoZSBtYXhpbXVtIGludGVuc2l0eSBtYXRjaGluZyBhdHRyaWJ1dGVcbiAgICAgIGNvbnN0IGNhbmRpZGF0ZXNEcnkgPSBPYmplY3Qua2V5cyhyZXN1bHRTZXQuaXRlbXMpXG4gICAgICAgIC5tYXAoKGtleSkgPT4gKHsgaXRlbXM6IHJlc3VsdFNldC5pdGVtc1trZXldLCBvQ2xhc3M6IGNsYXNzZXMuZmluZCgoY2wpID0+IGNsLmlkID09PSBrZXkpIH0pKVxuICAgICAgICAubWFwKCh7IGl0ZW1zLCBvQ2xhc3MgfSkgPT4ge1xuICAgICAgICAgIHJldHVybiAob0NsYXNzID8/IHsgYXR0cmlidXRlczogW10gfSkuYXR0cmlidXRlc1xuICAgICAgICAgICAgLm1hcCgoYXR0cikgPT4gKHsgYXR0ciwgZmllbGQ6IGZpZWxkcy5maW5kKChmKSA9PiBmLmlkID09PSBhdHRyLmZpZWxkKSB9KSlcbiAgICAgICAgICAgIC5maWx0ZXIoKGF0dHIpID0+IGF0dHIuZmllbGQ/LnR5cGUgPT09IEZpZWxkVHlwZS5ERUNJTUFMIHx8IGF0dHIuZmllbGQ/LnR5cGUgPT09IEZpZWxkVHlwZS5JTlRFR0VSKVxuICAgICAgICAgICAgLm1hcCgoYXR0cikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBhdHRyVmFsdWVzID0gSXRlbVV0aWxzLnBlcnRpbmVudFZhbHVlKGl0ZW1zLCBhdHRyLmF0dHIpO1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG1pbjogTWF0aC5taW4oLi4uYXR0clZhbHVlcyksXG4gICAgICAgICAgICAgICAgbWF4OiBNYXRoLm1heCguLi5hdHRyVmFsdWVzKSxcbiAgICAgICAgICAgICAgICBuYW1lOiBhdHRyLmF0dHIubmFtZVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi5jXSwgW10pXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLm1heCAtIGEubWF4KTtcblxuICAgICAgaWYgKGNhbmRpZGF0ZXNEcnkubGVuZ3RoID4gMCkge1xuICAgICAgICBzcGVjaWZpY0xheWVyLmludGVuc2l0eUF0dHJpYnV0ZSA9IGNhbmRpZGF0ZXNEcnlbMF0ubmFtZTtcbiAgICAgICAgc3BlY2lmaWNMYXllci5pbnRlbnNpdHlBc2MgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEZlYXR1cmVGcm9tSXRlbSA9IChcbiAgaXRlbTogSXRlbSxcbiAgdHlwZTogc3RyaW5nLFxuICBsb2NhdGlvbkF0dHJpYnV0ZTogQXR0cmlidXRlLFxuICBpY29uU3R5bGU/OiBTdHlsZSxcbiAgc2VsZWN0ZWRJY29uU3R5bGU/OiBTdHlsZVxuKSA9PiB7XG4gIHJldHVybiBuZXcgRmVhdHVyZSh7XG4gICAgLi4uaXRlbSxcbiAgICB0eXBlLFxuICAgIGdlb21ldHJ5OiBJdGVtVXRpbHMucmVhZEdlb21ldHJ5KGl0ZW0sICdwb2ludCcsIGxvY2F0aW9uQXR0cmlidXRlKSxcbiAgICBjbGFzc2ljU3R5bGU6IGljb25TdHlsZSA/PyBudWxsLFxuICAgIHNlbGVjdGVkU3R5bGU6IHNlbGVjdGVkSWNvblN0eWxlID8/IG51bGxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q2lyY2xlRmVhdHVyZUZyb21JdGVtID0gKFxuICBpdGVtOiBJdGVtLFxuICBsb2NhdGlvbkF0dHJpYnV0ZTogQXR0cmlidXRlLFxuICByYWRpdXM6IG51bWJlcixcbiAgaWNvblN0eWxlOiBTdHlsZSxcbiAgc2VsZWN0ZWRJY29uU3R5bGU6IFN0eWxlXG4pID0+IHtcbiAgcmV0dXJuIG5ldyBGZWF0dXJlKHtcbiAgICAuLi5pdGVtLFxuICAgIGdlb21ldHJ5OiBuZXcgQ2lyY2xlKChJdGVtVXRpbHMucmVhZEdlb21ldHJ5KGl0ZW0sICdwb2ludCcsIGxvY2F0aW9uQXR0cmlidXRlKSBhcyBQb2ludCkuZ2V0Q29vcmRpbmF0ZXMoKSwgcmFkaXVzKSxcbiAgICBjbGFzc2ljU3R5bGU6IGljb25TdHlsZSxcbiAgICBzZWxlY3RlZFN0eWxlOiBzZWxlY3RlZEljb25TdHlsZSxcbiAgICB0eXBlOiAnYnViYmxlJ1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMaW5rRmVhdHVyZSA9IChcbiAgcmVsYXRpb246IFJlbGF0aW9uLFxuICBmZWF0dXJlU291cmNlOiBGZWF0dXJlPFBvaW50PixcbiAgZmVhdHVyZURlc3RpbmF0aW9uOiBGZWF0dXJlPFBvaW50PlxuKSA9PiB7XG4gIHJldHVybiBuZXcgRmVhdHVyZSh7XG4gICAgLi4ucmVsYXRpb24sXG4gICAgZ2VvbWV0cnk6IG5ldyBMaW5lU3RyaW5nKFtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGZlYXR1cmVTb3VyY2UuZ2V0R2VvbWV0cnkoKT8uZ2V0Q29vcmRpbmF0ZXMoKSA/PyBmZWF0dXJlU291cmNlLmdldEdlb21ldHJ5KCk/LmdldENlbnRlcigpID8/IFswLCAwXSxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGZlYXR1cmVEZXN0aW5hdGlvbi5nZXRHZW9tZXRyeSgpPy5nZXRDb29yZGluYXRlcygpID8/IGZlYXR1cmVEZXN0aW5hdGlvbi5nZXRHZW9tZXRyeSgpPy5nZXRDZW50ZXIoKSA/PyBbMCwgMF1cbiAgICBdKSxcbiAgICBzb3VyY2U6IGZlYXR1cmVTb3VyY2UsXG4gICAgZGVzdGluYXRpb246IGZlYXR1cmVEZXN0aW5hdGlvbixcbiAgICB0eXBlOiAnbGluaydcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWFwQXNQbmcgPSAobWFwOiBNYXApID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIG1hcC5vbmNlKCdyZW5kZXJjb21wbGV0ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1hcENhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgY29uc3Qgc2l6ZSA9IG1hcC5nZXRTaXplKCkgfHwgWzEwMCwgMTAwXTtcbiAgICAgIG1hcENhbnZhcy53aWR0aCA9IHNpemVbMF07XG4gICAgICBtYXBDYW52YXMuaGVpZ2h0ID0gc2l6ZVsxXTtcbiAgICAgIGNvbnN0IG1hcENvbnRleHQgPSBtYXBDYW52YXMuZ2V0Q29udGV4dCgnMmQnKSB8fCAobnVsbCBhcyB1bmtub3duIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk7XG4gICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vbC1sYXllciBjYW52YXMsIGNhbnZhcy5vbC1sYXllcicpLCAoY2FudmFzKSA9PiB7XG4gICAgICAgIGlmIChjYW52YXMud2lkdGggPiAwKSB7XG4gICAgICAgICAgY29uc3Qgb3BhY2l0eSA9IGNhbnZhcy5wYXJlbnROb2RlLnN0eWxlLm9wYWNpdHkgfHwgY2FudmFzLnN0eWxlLm9wYWNpdHk7XG4gICAgICAgICAgbWFwQ29udGV4dC5nbG9iYWxBbHBoYSA9IG9wYWNpdHkgPT09ICcnID8gMSA6IE51bWJlcihvcGFjaXR5KTtcblxuICAgICAgICAgIGNvbnN0IGJhY2tncm91bmRDb2xvciA9IGNhbnZhcy5wYXJlbnROb2RlLnN0eWxlLmJhY2tncm91bmRDb2xvcjtcbiAgICAgICAgICBpZiAoYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICAgICAgICBtYXBDb250ZXh0LmZpbGxTdHlsZSA9IGJhY2tncm91bmRDb2xvcjtcbiAgICAgICAgICAgIG1hcENvbnRleHQuZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgbWF0cml4O1xuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IGNhbnZhcy5zdHlsZS50cmFuc2Zvcm07XG4gICAgICAgICAgaWYgKHRyYW5zZm9ybSkge1xuICAgICAgICAgICAgLy8gR2V0IHRoZSB0cmFuc2Zvcm0gcGFyYW1ldGVycyBmcm9tIHRoZSBzdHlsZSdzIHRyYW5zZm9ybSBtYXRyaXhcbiAgICAgICAgICAgIG1hdHJpeCA9IHRyYW5zZm9ybVxuICAgICAgICAgICAgICAubWF0Y2goL15tYXRyaXhcXCgoW14oXSopXFwpJC8pWzFdXG4gICAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgIC5tYXAoTnVtYmVyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWF0cml4ID0gW1xuICAgICAgICAgICAgICBwYXJzZUZsb2F0KGNhbnZhcy5zdHlsZS53aWR0aCkgLyBjYW52YXMud2lkdGgsXG4gICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgIHBhcnNlRmxvYXQoY2FudmFzLnN0eWxlLmhlaWdodCkgLyBjYW52YXMuaGVpZ2h0LFxuICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAwXG4gICAgICAgICAgICBdO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBBcHBseSB0aGUgdHJhbnNmb3JtIHRvIHRoZSBleHBvcnQgbWFwIGNvbnRleHRcbiAgICAgICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQucHJvdG90eXBlLnNldFRyYW5zZm9ybS5hcHBseShtYXBDb250ZXh0LCBtYXRyaXgpO1xuICAgICAgICAgIG1hcENvbnRleHQuZHJhd0ltYWdlKGNhbnZhcywgMCwgMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbWFwQ29udGV4dC5nbG9iYWxBbHBoYSA9IDE7XG4gICAgICByZXNvbHZlKG1hcENhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpKTtcbiAgICB9KTtcbiAgICBtYXAucmVuZGVyU3luYygpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBleHBvcnRNYXBBc0ltYWdlID0gKG1hcDogTWFwLCBmaWxlbmFtZTogc3RyaW5nKSA9PiB7XG4gIGdldE1hcEFzUG5nKG1hcCkudGhlbigoZGF0YSkgPT4ge1xuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgbGluay5kb3dubG9hZCA9IGZpbGVuYW1lO1xuICAgIGxpbmsuaHJlZiA9IGRhdGE7XG4gICAgbGluay5jbGljaygpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZW9tZXRyeUZvckxheWVyID0gKGxheWVyOiBNYXBXaWRnZXRMYXllck9wdGlvbnMpOiBzdHJpbmcgPT4ge1xuICBzd2l0Y2ggKGxheWVyLnR5cGUpIHtcbiAgICBjYXNlICdtYXJrZXInOlxuICAgIGNhc2UgJ2hlYXRtYXAnOlxuICAgIGNhc2UgJ2J1YmJsZSc6XG4gICAgY2FzZSAncG9pbnQnOlxuICAgICAgcmV0dXJuIEZpZWxkVHlwZS5QT0lOVDtcbiAgICBjYXNlICdsaW5lJzpcbiAgICAgIHJldHVybiBGaWVsZFR5cGUuTElORTtcbiAgICBjYXNlICdwb2x5Z29uJzpcbiAgICAgIHJldHVybiBGaWVsZFR5cGUuUE9MWUdPTjtcbiAgICBjYXNlICdtdWx0aS1saW5lJzpcbiAgICAgIHJldHVybiBGaWVsZFR5cGUuTVVMVElMSU5FO1xuICAgIGNhc2UgJ211bHRpLXBvbHlnb24nOlxuICAgICAgcmV0dXJuIEZpZWxkVHlwZS5NVUxUSVBPTFlHT047XG4gICAgY2FzZSAnYXV0byc6XG4gICAgICByZXR1cm4gZ2VvbWV0cnlGb3JMYXllcih7XG4gICAgICAgIHR5cGU6IFdpZGdldE1hcExheWVyU2VydmljZS50cmFuc2xhdGVGaWVsZFR5cGVUb0xheWVyVHlwZShsYXllci5zdWJUeXBlKVxuICAgICAgfSBhcyBNYXBXaWRnZXRMYXllck9wdGlvbnMpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gRmllbGRUeXBlLlBPSU5UO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGF5ZXJPcmRlciA9IChsYXllcjogTWFwV2lkZ2V0TGF5ZXJPcHRpb25zLCBpbmRleDogbnVtYmVyLCBhcnJheTogTWFwV2lkZ2V0TGF5ZXJPcHRpb25zW10pOiBudW1iZXIgPT4ge1xuICBpZiAobGF5ZXIub3JkZXIgJiYgYXJyYXlbaW5kZXggLSAxXSAmJiBhcnJheVtpbmRleCAtIDFdLm9yZGVyICYmIGxheWVyLm9yZGVyIDwgYXJyYXlbaW5kZXggLSAxXS5vcmRlciEpXG4gICAgcmV0dXJuIGFycmF5W2luZGV4IC0gMV0ub3JkZXIhICsgMTtcbiAgaWYgKGxheWVyLm9yZGVyKSByZXR1cm4gbGF5ZXIub3JkZXI7XG4gIGlmIChpbmRleCA9PT0gMCAmJiAhbGF5ZXIub3JkZXIpIHJldHVybiAwO1xuXG4gIGxldCBbZGlzdGFuY2VUb0ZpcnN0UHJldmlvdXNPcmRlciwgZGlzdGFuY2VUb0ZpcnN0TmV4dE9yZGVyXSA9IFtcbiAgICBhcnJheVxuICAgICAgLnNsaWNlKDAsIGluZGV4ICsgMSlcbiAgICAgIC5yZXZlcnNlKClcbiAgICAgIC5maW5kSW5kZXgoKGVsZW1lbnQpID0+ICEhZWxlbWVudC5vcmRlciksXG4gICAgYXJyYXkuc2xpY2UoaW5kZXggKyAxKS5maW5kSW5kZXgoKGVsZW1lbnQpID0+ICEhZWxlbWVudC5vcmRlcilcbiAgXTtcblxuICBsZXQgW3ByZXZpb3VzT3JkZXJJbmRleCwgbmV4dE9yZGVySW5kZXhdID0gW1xuICAgIGRpc3RhbmNlVG9GaXJzdFByZXZpb3VzT3JkZXIgPiAtMSA/IGluZGV4IC0gZGlzdGFuY2VUb0ZpcnN0UHJldmlvdXNPcmRlciA6IDAsXG4gICAgZGlzdGFuY2VUb0ZpcnN0TmV4dE9yZGVyICsgaW5kZXggKyAxXG4gIF07XG4gIGxldCBbcHJldmlvdXNPcmRlciwgbmV4dE9yZGVyXSA9IFtcbiAgICBkaXN0YW5jZVRvRmlyc3RQcmV2aW91c09yZGVyID4gLTEgPyBhcnJheVtwcmV2aW91c09yZGVySW5kZXhdLm9yZGVyISA6IDAsXG4gICAgZGlzdGFuY2VUb0ZpcnN0TmV4dE9yZGVyID4gLTEgPyBhcnJheVtuZXh0T3JkZXJJbmRleF0ub3JkZXIhIDogLTFcbiAgXTtcblxuICBpZiAobmV4dE9yZGVyID4gMCAmJiBuZXh0T3JkZXIgPCBwcmV2aW91c09yZGVyKSB7XG4gICAgY29uc3QgbmV3T3JkZXIgPSBwcmV2aW91c09yZGVyICsgKG5leHRPcmRlckluZGV4IC0gcHJldmlvdXNPcmRlckluZGV4KTtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBgdGhlIG9yZGVyIHByb3BlcnR5IG9mIGxheWVyIG5vICR7aW5kZXggKyAyfSB3YXMgcHJlc2V0IGJ1dCBkb2Vzbid0IGZvbGxvdyB0aGUgb3JkZXIgb2YgdGhlIG90aGVyIGxheWVyc2BcbiAgICApO1xuICAgIG5leHRPcmRlciA9IG5ld09yZGVyO1xuICB9XG5cbiAgaWYgKG5leHRPcmRlciA+IDApIHtcbiAgICBsZXQgcmVsYXRpdmVJbmRleCA9IGluZGV4IC0gcHJldmlvdXNPcmRlckluZGV4O1xuICAgIHJldHVybiBwcmV2aW91c09yZGVyICsgKChuZXh0T3JkZXIgLSBwcmV2aW91c09yZGVyKSAvIChuZXh0T3JkZXJJbmRleCAtIHByZXZpb3VzT3JkZXJJbmRleCkpICogcmVsYXRpdmVJbmRleDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcHJldmlvdXNPcmRlciArIGRpc3RhbmNlVG9GaXJzdFByZXZpb3VzT3JkZXI7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0hFQVRNQVBfUkFESVVTID0gMjU7XG5leHBvcnQgY29uc3QgREVGQVVMVF9SQURJVVNfSU5URU5TSVRZX0ZBQ1RPUiA9IDEwMDAwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfWk9PTV9NSU4gPSAzO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfWk9PTV9TVEFSVCA9IDEwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfWk9PTV9NQVggPSAxODtcbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9DRU5URVIgPSBbMi4yODI3MjE3MzQ3MzgxNTI1LCA0OC44NjQ3MDYwMzE1NTc3MTZdO1xuIl19
|
|
235
|
+
export const BACKGROUND_ORDER = 9999;
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LW1hcC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LW1hcC91dGlscy93aWRnZXQtbWFwLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxTQUFTLEVBRVQsU0FBUyxFQU9WLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLE9BQU8sRUFBTyxNQUFNLElBQUksQ0FBQztBQUNsQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBUyxNQUFNLFNBQVMsQ0FBQztBQUVwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUU5RSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUN2QyxLQUE0QixFQUM1QixTQUFvQixFQUNwQixrQkFBMkIsRUFDM0IsTUFBZSxFQUNmLEVBQUU7SUFDRixJQUNFLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQ3pHLEtBQUssQ0FBQyxJQUFJLENBQ1g7UUFDRCxDQUFDLENBQUMsU0FBUztRQUNYLENBQUMsQ0FBQyxrQkFBa0I7UUFDcEIsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDN0I7UUFDQSxNQUFNLGFBQWEsR0FBRyxLQUdTLENBQUM7UUFFaEMsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUN2QyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxD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O2dCQUNGLFNBQVMsR0FBRyxRQUFRLENBQUM7YUFDdEI7WUFFRCxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2pCLElBQUksYUFBYSxHQUFHLEtBQUssR0FBRyxrQkFBa0IsQ0FBQztnQkFDL0MsS0FBSyxDQUFDLEtBQUs7b0JBQ1QsYUFBYSxHQUFHLENBQUMsQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQzthQUN6RztpQkFBTTtnQkFDTCxLQUFLLENBQUMsS0FBSyxHQUFHLGFBQWEsR0FBRyw0QkFBNEIsQ0FBQzthQUM1RDtTQUNGO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLEtBQUssQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFDbEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUNuQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLENBQUM7QUFFM0UsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXR0cmlidXRlLFxuICBDbGFzcyxcbiAgRmllbGQsXG4gIEZpZWxkVHlwZSxcbiAgSXRlbSxcbiAgSXRlbVV0aWxzLFxuICBNYXBXaWRnZXRCdWJibGVMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldEhlYXRNYXBMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldExheWVyT3B0aW9ucyxcbiAgTWFwV2lkZ2V0TWFya2VyTGF5ZXJPcHRpb25zLFxuICBSZWxhdGlvbixcbiAgUmVzdWx0U2V0XG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBGZWF0dXJlLCBNYXAgfSBmcm9tICdvbCc7XG5pbXBvcnQgeyBDaXJjbGUsIExpbmVTdHJpbmcsIFBvaW50IH0gZnJvbSAnb2wvZ2VvbSc7XG5pbXBvcnQgeyBTdHlsZSB9IGZyb20gJ29sL3N0eWxlJztcbmltcG9ydCB7IFdpZGdldE1hcExheWVyU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudC93aWRnZXQtbWFwLWxheWVyLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgcG9wdWxhdGVMb2NhdGlvbkF0dHJpYnV0ZSA9IChcbiAgbGF5ZXI6IE1hcFdpZGdldExheWVyT3B0aW9ucyxcbiAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gIGNsYXNzZXNOb3RGaWx0ZXJlZDogQ2xhc3NbXSxcbiAgZmllbGRzOiBGaWVsZFtdXG4pID0+IHtcbiAgaWYgKFxuICAgIFsnaGVhdG1hcCcsICdtYXJrZXInLCAnYnViYmxlJywgJ3BvaW50JywgJ2xpbmUnLCAncG9seWdvbicsICdtdWx0aS1saW5lJywgJ211bHRpLXBvbHlnb24nLCAnYXV0byddLmluY2x1ZGVzKFxuICAgICAgbGF5ZXIudHlwZVxuICAgICkgJiZcbiAgICAhIXJlc3VsdFNldCAmJlxuICAgICEhY2xhc3Nlc05vdEZpbHRlcmVkICYmXG4gICAgY2xhc3Nlc05vdEZpbHRlcmVkLmxlbmd0aCA+IDBcbiAgKSB7XG4gICAgY29uc3Qgc3BlY2lmaWNMYXllciA9IGxheWVyIGFzXG4gICAgICB8IE1hcFdpZGdldEhlYXRNYXBMYXllck9wdGlvbnNcbiAgICAgIHwgTWFwV2lkZ2V0TWFya2VyTGF5ZXJPcHRpb25zXG4gICAgICB8IE1hcFdpZGdldEJ1YmJsZUxheWVyT3B0aW9ucztcblxuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc2VzTm90RmlsdGVyZWQuZmlsdGVyKFxuICAgICAgKGNsKSA9PiBzcGVjaWZpY0xheWVyLmNsYXNzZXM/LmluY2x1ZGVzKGNsLmlkKSB8fCAhc3BlY2lmaWNMYXllci5jbGFzc2VzIHx8IHNwZWNpZmljTGF5ZXIuY2xhc3Nlcy5sZW5ndGggPT09IDBcbiAgICApO1xuXG4gICAgaWYgKCFzcGVjaWZpY0xheWVyLmF0dHJpYnV0ZSkge1xuICAgICAgLy8gTm8gbG9jYXRpb24gYXR0cmlidXRlIGF2YWlsYWJsZSwgdGhlbiB0cnkgdG8gZ3Vlc3Mgb25lIHRoYXQgd2lsbCBiZSBva1xuXG4gICAgICBjb25zdCBnZW9tZXRyeSA9IGdlb21ldHJ5Rm9yTGF5ZXIobGF5ZXIpO1xuXG4gICAgICBsZXQgY2FuZGlkYXRlcyA9IFtdIGFzIHtcbiAgICAgICAgYXR0cjogQXR0cmlidXRlO1xuICAgICAgICBmaWVsZDogRmllbGQgfCB1bmRlZmluZWQ7XG4gICAgICB9W107XG4gICAgICBpZiAoT2JqZWN0LmtleXMocmVzdWx0U2V0Lml0ZW1zKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIEJhc2VkIG9uIGl0ZW1zIHRoYXQgd2UgaGF2ZSB0byBkaXNwbGF5XG5cbiAgICAgICAgY2FuZGlkYXRlcyA9IE9iamVjdC5rZXlzKHJlc3VsdFNldC5pdGVtcylcbiAgICAgICAgICAubWFwKChrZXkpID0+ICh7IGl0ZW1zOiByZXN1bHRTZXQuaXRlbXNba2V5XSwgb0NsYXNzOiBjbGFzc2VzLmZpbmQoKGNsKSA9PiBjbC5pZCA9PT0ga2V5KSB9KSlcbiAgICAgICAgICAubWFwKCh7IGl0ZW1zLCBvQ2xhc3MgfSkgPT5cbiAgICAgICAgICAgIChvQ2xhc3MgPz8geyBhdHRyaWJ1dGVzOiBbXSB9KS5hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgIC5tYXAoKGF0dHIpID0+ICh7IGF0dHIsIGZpZWxkOiBmaWVsZHMuZmluZCgoZikgPT4gZi5pZCA9PT0gYXR0ci5maWVsZCkgfSkpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGF0dHIpID0+IGF0dHIuZmllbGQ/LnR5cGUgPT09IGdlb21ldHJ5KVxuICAgICAgICAgIClcbiAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgLi4uY10sIFtdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYW55IGl0ZW1zIHRvIGRpc3BsYXksIHNvIGFsbG93IGFsbCBjb3JyZXNwb25kaW5nIGdlb21ldHJ5IGZpZWxkc1xuICAgICAgICBjYW5kaWRhdGVzID0gY2xhc3Nlc05vdEZpbHRlcmVkXG4gICAgICAgICAgLm1hcCgoY2xhenopID0+IGNsYXp6LmF0dHJpYnV0ZXMpXG4gICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgIC5tYXAoKGF0dHIpID0+ICh7IGF0dHIsIGZpZWxkOiBmaWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLmlkID09PSBhdHRyLmZpZWxkKSB9KSlcbiAgICAgICAgICAuZmlsdGVyKCh7IGF0dHIsIGZpZWxkIH0pID0+IGZpZWxkPy50eXBlID09PSBnZW9tZXRyeSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjYW5kaWRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgc3BlY2lmaWNMYXllci5hdHRyaWJ1dGUgPSBjYW5kaWRhdGVzWzBdLmF0dHIubmFtZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwb3B1bGF0ZUludGVuc2l0eUF0dHJpYnV0ZSA9IChcbiAgbGF5ZXI6IE1hcFdpZGdldExheWVyT3B0aW9ucyxcbiAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gIGNsYXNzZXNOb3RGaWx0ZXJlZDogQ2xhc3NbXSxcbiAgZmllbGRzOiBGaWVsZFtdXG4pID0+IHtcbiAgaWYgKFxuICAgIFsnaGVhdG1hcCcsICdidWJibGUnXS5pbmNsdWRlcyhsYXllci50eXBlKSAmJlxuICAgICEhcmVzdWx0U2V0ICYmXG4gICAgISFjbGFzc2VzTm90RmlsdGVyZWQgJiZcbiAgICBjbGFzc2VzTm90RmlsdGVyZWQubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBzcGVjaWZpY0xheWVyID0gbGF5ZXIgYXMgTWFwV2lkZ2V0SGVhdE1hcExheWVyT3B0aW9ucyB8IE1hcFdpZGdldEJ1YmJsZUxheWVyT3B0aW9ucztcblxuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc2VzTm90RmlsdGVyZWQuZmlsdGVyKFxuICAgICAgKGNsKSA9PlxuICAgICAgICAoc3BlY2lmaWNMYXllci5jbGFzc2VzPy5pbmNsdWRlcyhjbC5pZCkgfHwgIXNwZWNpZmljTGF5ZXIuY2xhc3NlcyB8fCBzcGVjaWZpY0xheWVyLmNsYXNzZXMubGVuZ3RoID09PSAwKSAmJlxuICAgICAgICBjbC5hdHRyaWJ1dGVzLmZpbmQoKGF0dHIpID0+IGF0dHIubmFtZSA9PT0gKHNwZWNpZmljTGF5ZXI/LmF0dHJpYnV0ZSA/PyBbXSkpXG4gICAgKTtcblxuICAgIGlmICghc3BlY2lmaWNMYXllci5pbnRlbnNpdHlBdHRyaWJ1dGUpIHtcbiAgICAgIC8vIE5vIGludGVuc2l0eSBhdHRyaWJ1dGUgYXZhaWxhYmxlLCB0aGVuIHRha2UgdGhlIG1heGltdW0gaW50ZW5zaXR5IG1hdGNoaW5nIGF0dHJpYnV0ZVxuICAgICAgY29uc3QgY2FuZGlkYXRlc0RyeSA9IE9iamVjdC5rZXlzKHJlc3VsdFNldC5pdGVtcylcbiAgICAgICAgLm1hcCgoa2V5KSA9PiAoeyBpdGVtczogcmVzdWx0U2V0Lml0ZW1zW2tleV0sIG9DbGFzczogY2xhc3Nlcy5maW5kKChjbCkgPT4gY2wuaWQgPT09IGtleSkgfSkpXG4gICAgICAgIC5tYXAoKHsgaXRlbXMsIG9DbGFzcyB9KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChvQ2xhc3MgPz8geyBhdHRyaWJ1dGVzOiBbXSB9KS5hdHRyaWJ1dGVzXG4gICAgICAgICAgICAubWFwKChhdHRyKSA9PiAoeyBhdHRyLCBmaWVsZDogZmllbGRzLmZpbmQoKGYpID0+IGYuaWQgPT09IGF0dHIuZmllbGQpIH0pKVxuICAgICAgICAgICAgLmZpbHRlcigoYXR0cikgPT4gYXR0ci5maWVsZD8udHlwZSA9PT0gRmllbGRUeXBlLkRFQ0lNQUwgfHwgYXR0ci5maWVsZD8udHlwZSA9PT0gRmllbGRUeXBlLklOVEVHRVIpXG4gICAgICAgICAgICAubWFwKChhdHRyKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGF0dHJWYWx1ZXMgPSBJdGVtVXRpbHMucGVydGluZW50VmFsdWUoaXRlbXMsIGF0dHIuYXR0cik7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbWluOiBNYXRoLm1pbiguLi5hdHRyVmFsdWVzKSxcbiAgICAgICAgICAgICAgICBtYXg6IE1hdGgubWF4KC4uLmF0dHJWYWx1ZXMpLFxuICAgICAgICAgICAgICAgIG5hbWU6IGF0dHIuYXR0ci5uYW1lXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gWy4uLnAsIC4uLmNdLCBbXSlcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubWF4IC0gYS5tYXgpO1xuXG4gICAgICBpZiAoY2FuZGlkYXRlc0RyeS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHNwZWNpZmljTGF5ZXIuaW50ZW5zaXR5QXR0cmlidXRlID0gY2FuZGlkYXRlc0RyeVswXS5uYW1lO1xuICAgICAgICBzcGVjaWZpY0xheWVyLmludGVuc2l0eUFzYyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmVhdHVyZUZyb21JdGVtID0gKFxuICBpdGVtOiBJdGVtLFxuICB0eXBlOiBzdHJpbmcsXG4gIGxvY2F0aW9uQXR0cmlidXRlOiBBdHRyaWJ1dGUsXG4gIGljb25TdHlsZT86IFN0eWxlLFxuICBzZWxlY3RlZEljb25TdHlsZT86IFN0eWxlXG4pID0+IHtcbiAgcmV0dXJuIG5ldyBGZWF0dXJlKHtcbiAgICAuLi5pdGVtLFxuICAgIHR5cGUsXG4gICAgZ2VvbWV0cnk6IEl0ZW1VdGlscy5yZWFkR2VvbWV0cnkoaXRlbSwgJ3BvaW50JywgbG9jYXRpb25BdHRyaWJ1dGUpLFxuICAgIGNsYXNzaWNTdHlsZTogaWNvblN0eWxlID8/IG51bGwsXG4gICAgc2VsZWN0ZWRTdHlsZTogc2VsZWN0ZWRJY29uU3R5bGUgPz8gbnVsbFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDaXJjbGVGZWF0dXJlRnJvbUl0ZW0gPSAoXG4gIGl0ZW06IEl0ZW0sXG4gIGxvY2F0aW9uQXR0cmlidXRlOiBBdHRyaWJ1dGUsXG4gIHJhZGl1czogbnVtYmVyLFxuICBpY29uU3R5bGU6IFN0eWxlLFxuICBzZWxlY3RlZEljb25TdHlsZTogU3R5bGVcbikgPT4ge1xuICByZXR1cm4gbmV3IEZlYXR1cmUoe1xuICAgIC4uLml0ZW0sXG4gICAgZ2VvbWV0cnk6IG5ldyBDaXJjbGUoKEl0ZW1VdGlscy5yZWFkR2VvbWV0cnkoaXRlbSwgJ3BvaW50JywgbG9jYXRpb25BdHRyaWJ1dGUpIGFzIFBvaW50KS5nZXRDb29yZGluYXRlcygpLCByYWRpdXMpLFxuICAgIGNsYXNzaWNTdHlsZTogaWNvblN0eWxlLFxuICAgIHNlbGVjdGVkU3R5bGU6IHNlbGVjdGVkSWNvblN0eWxlLFxuICAgIHR5cGU6ICdidWJibGUnXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExpbmtGZWF0dXJlID0gKFxuICByZWxhdGlvbjogUmVsYXRpb24sXG4gIGZlYXR1cmVTb3VyY2U6IEZlYXR1cmU8UG9pbnQ+LFxuICBmZWF0dXJlRGVzdGluYXRpb246IEZlYXR1cmU8UG9pbnQ+XG4pID0+IHtcbiAgcmV0dXJuIG5ldyBGZWF0dXJlKHtcbiAgICAuLi5yZWxhdGlvbixcbiAgICBnZW9tZXRyeTogbmV3IExpbmVTdHJpbmcoW1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZmVhdHVyZVNvdXJjZS5nZXRHZW9tZXRyeSgpPy5nZXRDb29yZGluYXRlcygpID8/IGZlYXR1cmVTb3VyY2UuZ2V0R2VvbWV0cnkoKT8uZ2V0Q2VudGVyKCkgPz8gWzAsIDBdLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZmVhdHVyZURlc3RpbmF0aW9uLmdldEdlb21ldHJ5KCk/LmdldENvb3JkaW5hdGVzKCkgPz8gZmVhdHVyZURlc3RpbmF0aW9uLmdldEdlb21ldHJ5KCk/LmdldENlbnRlcigpID8/IFswLCAwXVxuICAgIF0pLFxuICAgIHNvdXJjZTogZmVhdHVyZVNvdXJjZSxcbiAgICBkZXN0aW5hdGlvbjogZmVhdHVyZURlc3RpbmF0aW9uLFxuICAgIHR5cGU6ICdsaW5rJ1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNYXBBc1BuZyA9IChtYXA6IE1hcCkgPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgbWFwLm9uY2UoJ3JlbmRlcmNvbXBsZXRlJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbWFwQ2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICBjb25zdCBzaXplID0gbWFwLmdldFNpemUoKSB8fCBbMTAwLCAxMDBdO1xuICAgICAgbWFwQ2FudmFzLndpZHRoID0gc2l6ZVswXTtcbiAgICAgIG1hcENhbnZhcy5oZWlnaHQgPSBzaXplWzFdO1xuICAgICAgY29uc3QgbWFwQ29udGV4dCA9IG1hcENhbnZhcy5nZXRDb250ZXh0KCcyZCcpIHx8IChudWxsIGFzIHVua25vd24gYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKTtcbiAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm9sLWxheWVyIGNhbnZhcywgY2FudmFzLm9sLWxheWVyJyksIChjYW52YXMpID0+IHtcbiAgICAgICAgaWYgKGNhbnZhcy53aWR0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBvcGFjaXR5ID0gY2FudmFzLnBhcmVudE5vZGUuc3R5bGUub3BhY2l0eSB8fCBjYW52YXMuc3R5bGUub3BhY2l0eTtcbiAgICAgICAgICBtYXBDb250ZXh0Lmdsb2JhbEFscGhhID0gb3BhY2l0eSA9PT0gJycgPyAxIDogTnVtYmVyKG9wYWNpdHkpO1xuXG4gICAgICAgICAgY29uc3QgYmFja2dyb3VuZENvbG9yID0gY2FudmFzLnBhcmVudE5vZGUuc3R5bGUuYmFja2dyb3VuZENvbG9yO1xuICAgICAgICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgICAgICAgIG1hcENvbnRleHQuZmlsbFN0eWxlID0gYmFja2dyb3VuZENvbG9yO1xuICAgICAgICAgICAgbWFwQ29udGV4dC5maWxsUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBtYXRyaXg7XG4gICAgICAgICAgY29uc3QgdHJhbnNmb3JtID0gY2FudmFzLnN0eWxlLnRyYW5zZm9ybTtcbiAgICAgICAgICBpZiAodHJhbnNmb3JtKSB7XG4gICAgICAgICAgICAvLyBHZXQgdGhlIHRyYW5zZm9ybSBwYXJhbWV0ZXJzIGZyb20gdGhlIHN0eWxlJ3MgdHJhbnNmb3JtIG1hdHJpeFxuICAgICAgICAgICAgbWF0cml4ID0gdHJhbnNmb3JtXG4gICAgICAgICAgICAgIC5tYXRjaCgvXm1hdHJpeFxcKChbXihdKilcXCkkLylbMV1cbiAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgLm1hcChOdW1iZXIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXRyaXggPSBbXG4gICAgICAgICAgICAgIHBhcnNlRmxvYXQoY2FudmFzLnN0eWxlLndpZHRoKSAvIGNhbnZhcy53aWR0aCxcbiAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgcGFyc2VGbG9hdChjYW52YXMuc3R5bGUuaGVpZ2h0KSAvIGNhbnZhcy5oZWlnaHQsXG4gICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgIDBcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFwcGx5IHRoZSB0cmFuc2Zvcm0gdG8gdGhlIGV4cG9ydCBtYXAgY29udGV4dFxuICAgICAgICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5wcm90b3R5cGUuc2V0VHJhbnNmb3JtLmFwcGx5KG1hcENvbnRleHQsIG1hdHJpeCk7XG4gICAgICAgICAgbWFwQ29udGV4dC5kcmF3SW1hZ2UoY2FudmFzLCAwLCAwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBtYXBDb250ZXh0Lmdsb2JhbEFscGhhID0gMTtcbiAgICAgIHJlc29sdmUobWFwQ2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJykpO1xuICAgIH0pO1xuICAgIG1hcC5yZW5kZXJTeW5jKCk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGV4cG9ydE1hcEFzSW1hZ2UgPSAobWFwOiBNYXAsIGZpbGVuYW1lOiBzdHJpbmcpID0+IHtcbiAgZ2V0TWFwQXNQbmcobWFwKS50aGVuKChkYXRhKSA9PiB7XG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBsaW5rLmRvd25sb2FkID0gZmlsZW5hbWU7XG4gICAgbGluay5ocmVmID0gZGF0YTtcbiAgICBsaW5rLmNsaWNrKCk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdlb21ldHJ5Rm9yTGF5ZXIgPSAobGF5ZXI6IE1hcFdpZGdldExheWVyT3B0aW9ucyk6IHN0cmluZyA9PiB7XG4gIHN3aXRjaCAobGF5ZXIudHlwZSkge1xuICAgIGNhc2UgJ21hcmtlcic6XG4gICAgY2FzZSAnaGVhdG1hcCc6XG4gICAgY2FzZSAnYnViYmxlJzpcbiAgICBjYXNlICdwb2ludCc6XG4gICAgICByZXR1cm4gRmllbGRUeXBlLlBPSU5UO1xuICAgIGNhc2UgJ2xpbmUnOlxuICAgICAgcmV0dXJuIEZpZWxkVHlwZS5MSU5FO1xuICAgIGNhc2UgJ3BvbHlnb24nOlxuICAgICAgcmV0dXJuIEZpZWxkVHlwZS5QT0xZR09OO1xuICAgIGNhc2UgJ211bHRpLWxpbmUnOlxuICAgICAgcmV0dXJuIEZpZWxkVHlwZS5NVUxUSUxJTkU7XG4gICAgY2FzZSAnbXVsdGktcG9seWdvbic6XG4gICAgICByZXR1cm4gRmllbGRUeXBlLk1VTFRJUE9MWUdPTjtcbiAgICBjYXNlICdhdXRvJzpcbiAgICAgIHJldHVybiBnZW9tZXRyeUZvckxheWVyKHtcbiAgICAgICAgdHlwZTogV2lkZ2V0TWFwTGF5ZXJTZXJ2aWNlLnRyYW5zbGF0ZUZpZWxkVHlwZVRvTGF5ZXJUeXBlKGxheWVyLnN1YlR5cGUpXG4gICAgICB9IGFzIE1hcFdpZGdldExheWVyT3B0aW9ucyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBGaWVsZFR5cGUuUE9JTlQ7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhc3NpZ25MYXllcnNPcmRlciA9IChfbGF5ZXJzOiBNYXBXaWRnZXRMYXllck9wdGlvbnNbXSkgPT4ge1xuICBjb25zdCBsYXllcnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KF9sYXllcnMpKSBhcyBNYXBXaWRnZXRMYXllck9wdGlvbnNbXTtcblxuICBsYXllcnMuc29ydCgobDEsIGwyKSA9PiAobDIuYmFja2dyb3VuZCA/IDAgOiAxKSAtIChsMS5iYWNrZ3JvdW5kID8gMCA6IDEpKTtcblxuICAvLyBBc3NpZ24gc3VyZSB0aGluZ3NcbiAgbGF5ZXJzLmZvckVhY2goKGxheWVyLCBpbmRleCkgPT4ge1xuICAgIGlmIChsYXllci5iYWNrZ3JvdW5kKSB7XG4gICAgICBsYXllci5vcmRlciA9IEJBQ0tHUk9VTkRfT1JERVI7XG4gICAgfVxuICAgIGlmIChpbmRleCA9PT0gMCAmJiAhbGF5ZXIub3JkZXIpIHtcbiAgICAgIGxheWVyLm9yZGVyID0gMDtcbiAgICB9XG4gIH0pO1xuXG4gIGxheWVycy5mb3JFYWNoKChsYXllciwgaW5kZXgpID0+IHtcbiAgICBpZiAobGF5ZXIub3JkZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IFtkaXN0YW5jZVRvRmlyc3RQcmV2aW91c09yZGVyLCBkaXN0YW5jZVRvRmlyc3ROZXh0T3JkZXJdID0gW1xuICAgICAgICBsYXllcnNcbiAgICAgICAgICAuc2xpY2UoMCwgaW5kZXgpXG4gICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgIC5maW5kSW5kZXgoKGVsZW1lbnQpID0+IGVsZW1lbnQub3JkZXIgIT09IHVuZGVmaW5lZCkgKyAxLFxuICAgICAgICBsYXllcnMuc2xpY2UoaW5kZXggKyAxKS5maW5kSW5kZXgoKGVsZW1lbnQpID0+IGVsZW1lbnQub3JkZXIgIT09IHVuZGVmaW5lZClcbiAgICAgIF07XG5cbiAgICAgIGxldCBbcHJldmlvdXNPcmRlckluZGV4LCBuZXh0T3JkZXJJbmRleF0gPSBbXG4gICAgICAgIGRpc3RhbmNlVG9GaXJzdFByZXZpb3VzT3JkZXIgPiAtMSA/IGluZGV4IC0gZGlzdGFuY2VUb0ZpcnN0UHJldmlvdXNPcmRlciA6IDAsXG4gICAgICAgIGRpc3RhbmNlVG9GaXJzdE5leHRPcmRlciArIGluZGV4ICsgMVxuICAgICAgXTtcbiAgICAgIGxldCBbcHJldmlvdXNPcmRlciwgbmV4dE9yZGVyXSA9IFtcbiAgICAgICAgZGlzdGFuY2VUb0ZpcnN0UHJldmlvdXNPcmRlciA+IC0xID8gbGF5ZXJzW3ByZXZpb3VzT3JkZXJJbmRleF0ub3JkZXIhIDogMCxcbiAgICAgICAgZGlzdGFuY2VUb0ZpcnN0TmV4dE9yZGVyID4gLTEgPyBsYXllcnNbbmV4dE9yZGVySW5kZXhdLm9yZGVyISA6IC0xXG4gICAgICBdO1xuXG4gICAgICBpZiAobmV4dE9yZGVyID4gMCAmJiBuZXh0T3JkZXIgPCBwcmV2aW91c09yZGVyKSB7XG4gICAgICAgIGNvbnN0IG5ld09yZGVyID0gcHJldmlvdXNPcmRlciArIChuZXh0T3JkZXJJbmRleCAtIHByZXZpb3VzT3JkZXJJbmRleCk7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgdGhlIG9yZGVyIHByb3BlcnR5IG9mIGxheWVyIG5vICR7aW5kZXggKyAyfSB3YXMgcHJlc2V0IGJ1dCBkb2Vzbid0IGZvbGxvdyB0aGUgb3JkZXIgb2YgdGhlIG90aGVyIGxheWVyc2BcbiAgICAgICAgKTtcbiAgICAgICAgbmV4dE9yZGVyID0gbmV3T3JkZXI7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXh0T3JkZXIgPiAwKSB7XG4gICAgICAgIGxldCByZWxhdGl2ZUluZGV4ID0gaW5kZXggLSBwcmV2aW91c09yZGVySW5kZXg7XG4gICAgICAgIGxheWVyLm9yZGVyID1cbiAgICAgICAgICBwcmV2aW91c09yZGVyICsgKChuZXh0T3JkZXIgLSBwcmV2aW91c09yZGVyKSAvIChuZXh0T3JkZXJJbmRleCAtIHByZXZpb3VzT3JkZXJJbmRleCkpICogcmVsYXRpdmVJbmRleDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxheWVyLm9yZGVyID0gcHJldmlvdXNPcmRlciArIGRpc3RhbmNlVG9GaXJzdFByZXZpb3VzT3JkZXI7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbGF5ZXJzLnNvcnQoKGwxLCBsMikgPT4gKGwxLm9yZGVyID8/IDEpIC0gKGwyLm9yZGVyISA/PyAxKSk7XG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9IRUFUTUFQX1JBRElVUyA9IDI1O1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkFESVVTX0lOVEVOU0lUWV9GQUNUT1IgPSAxMDAwMDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1pPT01fTUlOID0gMztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1pPT01fU1RBUlQgPSAxMDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1pPT01fTUFYID0gMTg7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVBfQ0VOVEVSID0gWzIuMjgyNzIxNzM0NzM4MTUyNSwgNDguODY0NzA2MDMxNTU3NzE2XTtcblxuZXhwb3J0IGNvbnN0IEJBQ0tHUk9VTkRfT1JERVIgPSA5OTk5O1xuIl19
|
|
@@ -1542,11 +1542,11 @@ class AdminAttributesFormComponent {
|
|
|
1542
1542
|
this.closeCategory();
|
|
1543
1543
|
}
|
|
1544
1544
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AdminAttributesFormComponent, deps: [{ token: i1.Store }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3$1.UntypedFormBuilder }, { token: i5.Overlay }, { token: i0.ViewContainerRef }, { token: i4.PryI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1545
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AdminAttributesFormComponent, selector: "pry-admin-attributes-form", inputs: { selectedClass: "selectedClass", interClass: "interClass", selectedAttribute: "selectedAttribute" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<form class=\"o-form\" [formGroup]=\"attrForm\" (ngSubmit)=\"addAttribute()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_name\">{{ '@pry.admin.classes.attributes.name' | i18n }}</label>\n <input id=\"attr_name\" type=\"text\" class=\"a-form-field\" formControlName=\"name\" required />\n <label class=\"a-label a-label--help -error\" *ngIf=\"nameAlreadyExists$ | async\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n <div *ngIf=\"attrForm.get('name')?.invalid\">\n <div *ngIf=\"attrForm.get('name')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.minLength' | i18n : { len: 2 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('maxlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.maxLength' | i18n : { len: 100 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('whitespace') && !attrForm.get('name')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.noWhitespace' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"type\">{{ '@pry.admin.classes.attributes.field' | i18n }}</label>\n <div class=\"title-container\">\n <pry-select\n id=\"type\"\n class=\"a-pry-select\"\n formControlName=\"field\"\n [items]=\"fields$ | async\"\n [itemsAsOption]=\"true\"\n [autocomplete]=\"true\"\n
|
|
1545
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AdminAttributesFormComponent, selector: "pry-admin-attributes-form", inputs: { selectedClass: "selectedClass", interClass: "interClass", selectedAttribute: "selectedAttribute" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<form class=\"o-form\" [formGroup]=\"attrForm\" (ngSubmit)=\"addAttribute()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_name\">{{ '@pry.admin.classes.attributes.name' | i18n }}</label>\n <input id=\"attr_name\" type=\"text\" class=\"a-form-field\" formControlName=\"name\" required />\n <label class=\"a-label a-label--help -error\" *ngIf=\"nameAlreadyExists$ | async\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n <div *ngIf=\"attrForm.get('name')?.invalid\">\n <div *ngIf=\"attrForm.get('name')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.minLength' | i18n : { len: 2 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('maxlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.maxLength' | i18n : { len: 100 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('whitespace') && !attrForm.get('name')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.noWhitespace' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"type\">{{ '@pry.admin.classes.attributes.field' | i18n }}</label>\n <div class=\"title-container\">\n <pry-select\n id=\"type\"\n class=\"a-pry-select\"\n formControlName=\"field\"\n [items]=\"fields$ | async\"\n [itemsAsOption]=\"true\"\n [autocomplete]=\"true\"\n bindLabel=\"name\"\n bindValue=\"id\"\n [isForm]=\"true\"\n required=\"true\"\n [templateLabel]=\"templateOption\"\n [templateOption]=\"templateOption\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"aligned-option\">\n <p>{{ item.name }}</p>\n <div class=\"chips\" *ngIf=\"item.crs\">{{ item.crs }}</div>\n </div>\n </ng-template>\n <ng-container *ngIf=\"selectedFieldTypeDescription$ | async as description\">\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip title-tooltip\">\n <p class=\"a-p -date\">{{ description }}</p>\n </div>\n </ng-container>\n </div>\n <div *ngIf=\"attrForm.get('field')?.invalid\">\n <div *ngIf=\"attrForm.get('field')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"category\">{{ '@pry.admin.classes.attributes.category' | i18n }}</label>\n <pry-select\n id=\"category\"\n class=\"form-control\"\n formControlName=\"category\"\n [labelTranslate]=\"true\"\n [items]=\"categories$ | async\"\n (click)=\"showCategory()\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n [readonly]=\"true\"\n ></pry-select>\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n *pryAccess=\"{ module: 'admin', page: 'classes', action: 'add_attribute' }\"\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [disabled]=\"attrForm.invalid || nameAlreadyExists\"\n [innerHTML]=\"(selectedAttribute ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n</form>\n\n<ng-template #template>\n <div class=\"o-modal o-modal--selector\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.admin.classes.category.select' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeCategory()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <form (ngSubmit)=\"addCategory()\">\n <div class=\"m-form-label-field selector\">\n <label class=\"a-label\" for=\"name-search\">{{ '@pry.admin.classes.category.searchOrCreate' | i18n }}</label>\n <input\n type=\"text\"\n class=\"a-form-field\"\n (input)=\"search($event)\"\n [(ngModel)]=\"catToAdd.name\"\n name=\"name\"\n id=\"name-search\"\n />\n </div>\n\n <table class=\"a-table\">\n <caption>\n {{\n '@pry.admin.classes.category.name' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th scole=\"col\">{{ '@pry.admin.classes.category.name' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let cat of categories$ | async\">\n <td>\n <button type=\"button\" class=\"a-btn a-btn--ghost select-it\" (click)=\"setCategory(cat)\">\n <span class=\"u-visually-hidden\">{{ '@pry.admin.classes.category.selectIt' | i18n }}</span>\n {{ cat.name }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n <ng-container *ngIf=\"(categories$ | async)?.length === 0\">\n <p class=\"a-p a-p--create\">\n <strong>{{ catToAdd.name }} </strong>\n <span [innerHTML]=\"'@pry.admin.classes.category.add' | i18n\"></span>\n </p>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n [innerHTML]=\"'@pry.admin.classes.category.create' | i18n\"\n ></button>\n </ng-container>\n </form>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
|
|
1546
1546
|
}
|
|
1547
1547
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AdminAttributesFormComponent, decorators: [{
|
|
1548
1548
|
type: Component,
|
|
1549
|
-
args: [{ selector: 'pry-admin-attributes-form', template: "<form class=\"o-form\" [formGroup]=\"attrForm\" (ngSubmit)=\"addAttribute()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_name\">{{ '@pry.admin.classes.attributes.name' | i18n }}</label>\n <input id=\"attr_name\" type=\"text\" class=\"a-form-field\" formControlName=\"name\" required />\n <label class=\"a-label a-label--help -error\" *ngIf=\"nameAlreadyExists$ | async\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n <div *ngIf=\"attrForm.get('name')?.invalid\">\n <div *ngIf=\"attrForm.get('name')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.minLength' | i18n : { len: 2 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('maxlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.maxLength' | i18n : { len: 100 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('whitespace') && !attrForm.get('name')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.noWhitespace' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"type\">{{ '@pry.admin.classes.attributes.field' | i18n }}</label>\n <div class=\"title-container\">\n <pry-select\n id=\"type\"\n class=\"a-pry-select\"\n formControlName=\"field\"\n [items]=\"fields$ | async\"\n [itemsAsOption]=\"true\"\n [autocomplete]=\"true\"\n
|
|
1549
|
+
args: [{ selector: 'pry-admin-attributes-form', template: "<form class=\"o-form\" [formGroup]=\"attrForm\" (ngSubmit)=\"addAttribute()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_name\">{{ '@pry.admin.classes.attributes.name' | i18n }}</label>\n <input id=\"attr_name\" type=\"text\" class=\"a-form-field\" formControlName=\"name\" required />\n <label class=\"a-label a-label--help -error\" *ngIf=\"nameAlreadyExists$ | async\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n <div *ngIf=\"attrForm.get('name')?.invalid\">\n <div *ngIf=\"attrForm.get('name')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.minLength' | i18n : { len: 2 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('maxlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.maxLength' | i18n : { len: 100 }\n }}</label>\n </div>\n <div *ngIf=\"attrForm.get('name')?.hasError('whitespace') && !attrForm.get('name')?.hasError('minlength')\">\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.noWhitespace' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"type\">{{ '@pry.admin.classes.attributes.field' | i18n }}</label>\n <div class=\"title-container\">\n <pry-select\n id=\"type\"\n class=\"a-pry-select\"\n formControlName=\"field\"\n [items]=\"fields$ | async\"\n [itemsAsOption]=\"true\"\n [autocomplete]=\"true\"\n bindLabel=\"name\"\n bindValue=\"id\"\n [isForm]=\"true\"\n required=\"true\"\n [templateLabel]=\"templateOption\"\n [templateOption]=\"templateOption\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"aligned-option\">\n <p>{{ item.name }}</p>\n <div class=\"chips\" *ngIf=\"item.crs\">{{ item.crs }}</div>\n </div>\n </ng-template>\n <ng-container *ngIf=\"selectedFieldTypeDescription$ | async as description\">\n <div class=\"info-icon description-container description\">\n <span class=\"info-text\">i</span>\n </div>\n <div class=\"description-tooltip title-tooltip\">\n <p class=\"a-p -date\">{{ description }}</p>\n </div>\n </ng-container>\n </div>\n <div *ngIf=\"attrForm.get('field')?.invalid\">\n <div *ngIf=\"attrForm.get('field')?.hasError('required')\">\n <label class=\"a-label a-label--help -error\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"category\">{{ '@pry.admin.classes.attributes.category' | i18n }}</label>\n <pry-select\n id=\"category\"\n class=\"form-control\"\n formControlName=\"category\"\n [labelTranslate]=\"true\"\n [items]=\"categories$ | async\"\n (click)=\"showCategory()\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n [readonly]=\"true\"\n ></pry-select>\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n *pryAccess=\"{ module: 'admin', page: 'classes', action: 'add_attribute' }\"\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [disabled]=\"attrForm.invalid || nameAlreadyExists\"\n [innerHTML]=\"(selectedAttribute ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n</form>\n\n<ng-template #template>\n <div class=\"o-modal o-modal--selector\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.admin.classes.category.select' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeCategory()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <form (ngSubmit)=\"addCategory()\">\n <div class=\"m-form-label-field selector\">\n <label class=\"a-label\" for=\"name-search\">{{ '@pry.admin.classes.category.searchOrCreate' | i18n }}</label>\n <input\n type=\"text\"\n class=\"a-form-field\"\n (input)=\"search($event)\"\n [(ngModel)]=\"catToAdd.name\"\n name=\"name\"\n id=\"name-search\"\n />\n </div>\n\n <table class=\"a-table\">\n <caption>\n {{\n '@pry.admin.classes.category.name' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th scole=\"col\">{{ '@pry.admin.classes.category.name' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let cat of categories$ | async\">\n <td>\n <button type=\"button\" class=\"a-btn a-btn--ghost select-it\" (click)=\"setCategory(cat)\">\n <span class=\"u-visually-hidden\">{{ '@pry.admin.classes.category.selectIt' | i18n }}</span>\n {{ cat.name }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n <ng-container *ngIf=\"(categories$ | async)?.length === 0\">\n <p class=\"a-p a-p--create\">\n <strong>{{ catToAdd.name }} </strong>\n <span [innerHTML]=\"'@pry.admin.classes.category.add' | i18n\"></span>\n </p>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n [innerHTML]=\"'@pry.admin.classes.category.create' | i18n\"\n ></button>\n </ng-container>\n </form>\n </div>\n</ng-template>\n" }]
|
|
1550
1550
|
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3$1.UntypedFormBuilder }, { type: i5.Overlay }, { type: i0.ViewContainerRef }, { type: i4.PryI18nService }]; }, propDecorators: { selectedClass: [{
|
|
1551
1551
|
type: Input
|
|
1552
1552
|
}], interClass: [{
|