@provoly/dashboard 0.22.2 → 0.22.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/assets/svgs/contract-left.svg +1 -0
- package/assets/svgs/expand-right.svg +1 -0
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +1 -1
- package/esm2022/filters/autocomplete/autocomplete.component.mjs +6 -4
- package/esm2022/lib/core/components/select/select-a11y.service.mjs +7 -5
- package/esm2022/lib/core/components/select/select.component.mjs +7 -7
- package/esm2022/lib/core/model/widget-aggregated-chart-manifest.interface.mjs +1 -1
- package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +5 -2
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +32 -6
- package/esm2022/lib/dashboard/components/solve-collisions.function.mjs +14 -23
- package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +36 -28
- package/esm2022/lib/dashboard/components/widgets/widget-filler/widget-filler.component.mjs +28 -3
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +2 -2
- package/esm2022/lib/dashboard/store/title.service.mjs +2 -2
- package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +3 -3
- package/esm2022/toolbox/components/share/share.component.mjs +2 -2
- package/esm2022/toolbox/components/toolbox.component.mjs +10 -5
- package/esm2022/toolbox/toolbox.model.mjs +23 -12
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +17 -7
- package/esm2022/widgets/widget-aggregated-chart/i18n/en.translations.mjs +2 -1
- package/esm2022/widgets/widget-aggregated-chart/i18n/fr.translations.mjs +2 -1
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +2 -2
- package/fesm2022/provoly-dashboard-dataset.mjs +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +5 -3
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +34 -18
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +18 -6
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +117 -64
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/filters/autocomplete/autocomplete.component.d.ts +2 -1
- package/lib/core/components/select/select-a11y.service.d.ts +1 -1
- package/lib/core/components/select/select.component.d.ts +1 -1
- package/lib/core/model/widget-aggregated-chart-manifest.interface.d.ts +1 -0
- package/lib/dashboard/components/dashboard.component.d.ts +4 -1
- package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +2 -2
- package/lib/dashboard/components/widgets/widget-filler/widget-filler.component.d.ts +1 -0
- package/package.json +43 -43
- package/styles/components/_o-dashboard.scss +25 -0
- package/styles/components/_o-modal.scss +6 -0
- package/toolbox/components/toolbox.component.d.ts +1 -1
- package/toolbox/toolbox.model.d.ts +1 -0
- package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +2 -0
- package/widgets/widget-aggregated-chart/i18n/en.translations.d.ts +1 -0
- package/widgets/widget-aggregated-chart/i18n/fr.translations.d.ts +1 -0
|
@@ -14,43 +14,33 @@ export const solvingCollisionOptions = {
|
|
|
14
14
|
minRows: 0
|
|
15
15
|
};
|
|
16
16
|
export function solveCollisions(candidateWidget, initialWidgetManifestList, dashboardManifest) {
|
|
17
|
-
let rows = dashboardManifest.grid?.rows ?? DEFAULT_ROWS_NUMBER;
|
|
18
17
|
const nextWidgetList = candidateWidget
|
|
19
18
|
? JSON.parse(JSON.stringify([
|
|
20
19
|
{
|
|
21
20
|
...candidateWidget,
|
|
22
|
-
layout: { ...(candidateWidget?.layout ?? { x: 1, y: 1, width: 1, height: 1 })
|
|
21
|
+
layout: { ...(candidateWidget?.layout ?? { x: 1, y: 1, width: 1, height: 1 }) }
|
|
23
22
|
},
|
|
24
23
|
...initialWidgetManifestList
|
|
25
24
|
]))
|
|
26
25
|
: [];
|
|
27
|
-
let nonBlocking = 10000;
|
|
28
26
|
// Force all layout values to be positive and cannot be outside the grid
|
|
29
|
-
const
|
|
27
|
+
const columns = dashboardManifest.grid?.columns ?? DEFAULT_COLUMNS_NUMBER;
|
|
30
28
|
nextWidgetList.forEach((w) => {
|
|
31
29
|
w.layout.height = w.layout.height <= 0 ? 1 : w.layout.height;
|
|
32
30
|
w.layout.width = w.layout.width <= 0 ? 1 : w.layout.width;
|
|
33
31
|
w.layout.x =
|
|
34
|
-
w.layout.x <= 0 ? 1 : w.layout.x + w.layout.width >
|
|
32
|
+
w.layout.x <= 0 ? 1 : w.layout.x + w.layout.width > columns ? columns - w.layout.width + 1 : w.layout.x;
|
|
35
33
|
w.layout.y = w.layout.y <= 0 ? 1 : w.layout.y;
|
|
36
34
|
});
|
|
37
|
-
let
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const [stayingWidget, ...movingWidgets] = [...widgets].sort(orderWidgetsAccordingToPlacement);
|
|
42
|
-
stayingWidget.layout.y = Math.min(...widgets.map((w) => w.layout.y));
|
|
43
|
-
movingWidgets.forEach((movingWidget) => (movingWidget.layout.y = stayingWidget.layout.y + stayingWidget.layout.height));
|
|
44
|
-
});
|
|
45
|
-
overlappingWidgets = WidgetPlacementUtils.getOverlaps(nextWidgetList);
|
|
46
|
-
nonBlocking--;
|
|
35
|
+
let rows = dashboardManifest.grid?.rows ?? DEFAULT_ROWS_NUMBER;
|
|
36
|
+
let overlappingWidgets = WidgetPlacementUtils.getOverlaps(initialWidgetManifestList);
|
|
37
|
+
if (overlappingWidgets.length > 0) {
|
|
38
|
+
console.warn('Widgets are already overlapping. We cannot have a correct solution for this.');
|
|
47
39
|
}
|
|
48
|
-
// Adding rows if needed
|
|
49
|
-
rows = Math.max(rows, ...nextWidgetList.map((widget) => widget.layout.y + widget.layout.height - 1));
|
|
50
|
-
nextWidgetList.forEach((widget) => delete widget.layout.weight);
|
|
51
40
|
const layout = dashboardManifest.grid?.layout ?? DashboardGridLayout.MANUAL;
|
|
41
|
+
let result = undefined;
|
|
52
42
|
if (!solvingCollisionOptions.invertedGravity || layout !== DashboardGridLayout.MANUAL) {
|
|
53
|
-
|
|
43
|
+
result = {
|
|
54
44
|
...dashboardManifest,
|
|
55
45
|
grid: { ...dashboardManifest.grid, rows },
|
|
56
46
|
widgets: nextWidgetList
|
|
@@ -75,14 +65,15 @@ export function solveCollisions(candidateWidget, initialWidgetManifestList, dash
|
|
|
75
65
|
}
|
|
76
66
|
});
|
|
77
67
|
}
|
|
78
|
-
|
|
68
|
+
result = {
|
|
79
69
|
...dashboardManifest,
|
|
80
70
|
grid: {
|
|
81
|
-
...dashboardManifest.grid
|
|
82
|
-
rows: Math.max(solvingCollisionOptions.minRows, ...nextWidgetList.map((w) => w.layout.y + w.layout.height - 1))
|
|
71
|
+
...dashboardManifest.grid
|
|
83
72
|
},
|
|
84
73
|
widgets: nextWidgetList
|
|
85
74
|
};
|
|
86
75
|
}
|
|
76
|
+
const newOverlaps = WidgetPlacementUtils.getOverlaps(result.widgets);
|
|
77
|
+
return newOverlaps.length > 0 ? dashboardManifest : result;
|
|
87
78
|
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sdmUtY29sbGlzaW9ucy5mdW5jdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9kYXNoYm9hcmQvY29tcG9uZW50cy9zb2x2ZS1jb2xsaXNpb25zLmZ1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBcUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUxRixNQUFNLFVBQVUsZ0NBQWdDLENBQzlDLENBQW1ELEVBQ25ELENBQW1EO0lBRW5ELE9BQU8sQ0FDTCxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLE9BQU87UUFDaEMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPO1FBQ2hDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTTtRQUMzQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU07UUFDM0MsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FDbEMsQ0FBQztBQUNKLENBQUM7QUFF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LENBQUMsQ0FBQyxDQUFDO2FBQ2hIO1lBQ0QsT0FBTyxFQUFFLGNBQWM7U0FDeEIsQ0FBQztLQUNIO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhc2hib2FyZEdyaWRMYXlvdXQsIERhc2hib2FyZE1hbmlmZXN0LCBXaWRnZXRNYW5pZmVzdCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvbWFuaWZlc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IFdpZGdldFBsYWNlbWVudFV0aWxzIH0gZnJvbSAnLi4vY29tcG9uZW50cy93aWRnZXRzL3dpZGdldC1wbGFjZW1lbnQvd2lkZ2V0LXBsYWNlbWVudC51dGlscyc7XG5pbXBvcnQgeyBERUZBVUxUX0NPTFVNTlNfTlVNQkVSLCBERUZBVUxUX1JPV1NfTlVNQkVSIH0gZnJvbSAnLi4vc3RvcmUvZGFzaGJvYXJkLmNvbnRhbnRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIG9yZGVyV2lkZ2V0c0FjY29yZGluZ1RvUGxhY2VtZW50KFxuICBhOiBXaWRnZXRNYW5pZmVzdCAmIHsgbGF5b3V0OiB7IHdlaWdodD86IG51bWJlciB9IH0sXG4gIGI6IFdpZGdldE1hbmlmZXN0ICYgeyBsYXlvdXQ6IHsgd2VpZ2h0PzogbnVtYmVyIH0gfVxuKTogbnVtYmVyIHtcbiAgcmV0dXJuIChcbiAgICAoYi5sYXlvdXQud2VpZ2h0ID8/IDApICogMTAwMDAwMCAtXG4gICAgKGEubGF5b3V0LndlaWdodCA/PyAwKSAqIDEwMDAwMDAgK1xuICAgIChiLmxheW91dC55ICsgYi5sYXlvdXQuaGVpZ2h0IC8gMikgKiAxMDAwMDAgLVxuICAgIChhLmxheW91dC55ICsgYS5sYXlvdXQuaGVpZ2h0IC8gMikgKiAxMDAwMDAgK1xuICAgIChiLmxheW91dC54ICsgYi5sYXlvdXQud2lkdGggLyAyKSAtXG4gICAgKGEubGF5b3V0LnggKyBhLmxheW91dC53aWR0aCAvIDIpXG4gICk7XG59XG5cbmV4cG9ydCBjb25zdCBzb2x2aW5nQ29sbGlzaW9uT3B0aW9ucyA9IHtcbiAgaW52ZXJ0ZWRHcmF2aXR5OiBmYWxzZSxcbiAgbWluUm93czogMFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNvbHZlQ29sbGlzaW9ucyhcbiAgY2FuZGlkYXRlV2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCxcbiAgaW5pdGlhbFdpZGdldE1hbmlmZXN0TGlzdDogV2lkZ2V0TWFuaWZlc3RbXSxcbiAgZGFzaGJvYXJkTWFuaWZlc3Q6IERhc2hib2FyZE1hbmlmZXN0XG4pOiBEYXNoYm9hcmRNYW5pZmVzdCB7XG4gIGxldCByb3dzID0gZGFzaGJvYXJkTWFuaWZlc3QuZ3JpZD8ucm93cyA/PyBERUZBVUxUX1JPV1NfTlVNQkVSO1xuICBjb25zdCBuZXh0V2lkZ2V0TGlzdDogV2lkZ2V0TWFuaWZlc3RbXSA9IGNhbmRpZGF0ZVdpZGdldFxuICAgID8gSlNPTi5wYXJzZShcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLmNhbmRpZGF0ZVdpZGdldCxcbiAgICAgICAgICAgIGxheW91dDogeyAuLi4oY2FuZGlkYXRlV2lkZ2V0Py5sYXlvdXQgPz8geyB4OiAxLCB5OiAxLCB3aWR0aDogMSwgaGVpZ2h0OiAxIH0pLCB3ZWlnaHQ6IDEwIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLmluaXRpYWxXaWRnZXRNYW5pZmVzdExpc3RcbiAgICAgICAgXSlcbiAgICAgIClcbiAgICA6IFtdO1xuICBsZXQgbm9uQmxvY2tpbmcgPSAxMDAwMDtcblxuICAvLyBGb3JjZSBhbGwgbGF5b3V0IHZhbHVlcyB0byBiZSBwb3NpdGl2ZSBhbmQgY2Fubm90IGJlIG91dHNpZGUgdGhlIGdyaWRcbiAgY29uc3QgYWN0dWFsQ29scyA9IGRhc2hib2FyZE1hbmlmZXN0LmdyaWQ/LmNvbHVtbnMgPz8gREVGQVVMVF9DT0xVTU5TX05VTUJFUjtcbiAgbmV4dFdpZGdldExpc3QuZm9yRWFjaCgodykgPT4ge1xuICAgIHcubGF5b3V0LmhlaWdodCA9IHcubGF5b3V0LmhlaWdodCA8PSAwID8gMSA6IHcubGF5b3V0LmhlaWdodDtcbiAgICB3LmxheW91dC53aWR0aCA9IHcubGF5b3V0LndpZHRoIDw9IDAgPyAxIDogdy5sYXlvdXQud2lkdGg7XG4gICAgdy5sYXlvdXQueCA9XG4gICAgICB3LmxheW91dC54IDw9IDAgPyAxIDogdy5sYXlvdXQueCArIHcubGF5b3V0LndpZHRoID4gYWN0dWFsQ29scyA/IGFjdHVhbENvbHMgLSB3LmxheW91dC53aWR0aCArIDEgOiB3LmxheW91dC54O1xuICAgIHcubGF5b3V0LnkgPSB3LmxheW91dC55IDw9IDAgPyAxIDogdy5sYXlvdXQueTtcbiAgfSk7XG5cbiAgbGV0IG92ZXJsYXBwaW5nV2lkZ2V0cyA9IFdpZGdldFBsYWNlbWVudFV0aWxzLmdldE92ZXJsYXBzKG5leHRXaWRnZXRMaXN0KTtcbiAgd2hpbGUgKG92ZXJsYXBwaW5nV2lkZ2V0cy5sZW5ndGggPiAwICYmIG5vbkJsb2NraW5nID4gMCkge1xuICAgIG92ZXJsYXBwaW5nV2lkZ2V0cy5mb3JFYWNoKCh3aWRnZXRzKSA9PiB7XG4gICAgICAvLyBLZWVwIHVwbW9zdCB3aWRnZXQgKGFuZCBsZWZ0bW9zdCB3aXRoIGxvd2VyIHByaW9yaXR5KVxuICAgICAgY29uc3QgW3N0YXlpbmdXaWRnZXQsIC4uLm1vdmluZ1dpZGdldHNdID0gWy4uLndpZGdldHNdLnNvcnQob3JkZXJXaWRnZXRzQWNjb3JkaW5nVG9QbGFjZW1lbnQpO1xuICAgICAgc3RheWluZ1dpZGdldC5sYXlvdXQueSA9IE1hdGgubWluKC4uLndpZGdldHMubWFwKCh3KSA9PiB3LmxheW91dC55KSk7XG4gICAgICBtb3ZpbmdXaWRnZXRzLmZvckVhY2goXG4gICAgICAgIChtb3ZpbmdXaWRnZXQpID0+IChtb3ZpbmdXaWRnZXQubGF5b3V0LnkgPSBzdGF5aW5nV2lkZ2V0LmxheW91dC55ICsgc3RheWluZ1dpZGdldC5sYXlvdXQuaGVpZ2h0KVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIG92ZXJsYXBwaW5nV2lkZ2V0cyA9IFdpZGdldFBsYWNlbWVudFV0aWxzLmdldE92ZXJsYXBzKG5leHRXaWRnZXRMaXN0KTtcbiAgICBub25CbG9ja2luZy0tO1xuICB9XG5cbiAgLy8gQWRkaW5nIHJvd3MgaWYgbmVlZGVkXG4gIHJvd3MgPSBNYXRoLm1heChyb3dzLCAuLi5uZXh0V2lkZ2V0TGlzdC5tYXAoKHdpZGdldCkgPT4gd2lkZ2V0LmxheW91dC55ICsgd2lkZ2V0LmxheW91dC5oZWlnaHQgLSAxKSk7XG5cbiAgbmV4dFdpZGdldExpc3QuZm9yRWFjaCgod2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCAmIHsgbGF5b3V0OiB7IHdlaWdodD86IG51bWJlciB9IH0pID0+IGRlbGV0ZSB3aWRnZXQubGF5b3V0LndlaWdodCk7XG5cbiAgY29uc3QgbGF5b3V0ID0gZGFzaGJvYXJkTWFuaWZlc3QuZ3JpZD8ubGF5b3V0ID8/IERhc2hib2FyZEdyaWRMYXlvdXQuTUFOVUFMO1xuXG4gIGlmICghc29sdmluZ0NvbGxpc2lvbk9wdGlvbnMuaW52ZXJ0ZWRHcmF2aXR5IHx8IGxheW91dCAhPT0gRGFzaGJvYXJkR3JpZExheW91dC5NQU5VQUwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGFzaGJvYXJkTWFuaWZlc3QsXG4gICAgICBncmlkOiB7IC4uLmRhc2hib2FyZE1hbmlmZXN0LmdyaWQsIHJvd3MgfSxcbiAgICAgIHdpZGdldHM6IG5leHRXaWRnZXRMaXN0XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICAvLyBSZW1vdmUgXCJob2xlc1wiIGFuZCBhZGFwdCBjb21wbGV0ZSBoZWlnaHRcbiAgICBuZXh0V2lkZ2V0TGlzdC5zb3J0KChhLCBiKSA9PiBhLmxheW91dC55IC0gYi5sYXlvdXQueSk7XG4gICAgbGV0IHNvbWV0aGluZ0dvZXNVcCA9IHRydWU7XG4gICAgd2hpbGUgKHNvbWV0aGluZ0dvZXNVcCkge1xuICAgICAgc29tZXRoaW5nR29lc1VwID0gZmFsc2U7XG4gICAgICBuZXh0V2lkZ2V0TGlzdC5mb3JFYWNoKCh3KSA9PiB7XG4gICAgICAgIGlmICh3LmxheW91dC55ID4gMSkge1xuICAgICAgICAgIGNvbnN0IG92ZXJsYXBzSWZNb3ZlZFVwID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMuZ2V0T3ZlcmxhcHMoW1xuICAgICAgICAgICAgLi4ubmV4dFdpZGdldExpc3QsXG4gICAgICAgICAgICB7IHR5cGU6ICdwbGFjZWhvbGRlcicsIGxheW91dDogeyAuLi53LmxheW91dCwgeTogTWF0aC5tYXgody5sYXlvdXQueSAtIDEsIDEpLCBoZWlnaHQ6IDEgfSB9XG4gICAgICAgICAgXSk7XG4gICAgICAgICAgaWYgKG92ZXJsYXBzSWZNb3ZlZFVwLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdy5sYXlvdXQueS0tO1xuICAgICAgICAgICAgc29tZXRoaW5nR29lc1VwID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5kYXNoYm9hcmRNYW5pZmVzdCxcbiAgICAgIGdyaWQ6IHtcbiAgICAgICAgLi4uZGFzaGJvYXJkTWFuaWZlc3QuZ3JpZCxcbiAgICAgICAgcm93czogTWF0aC5tYXgoc29sdmluZ0NvbGxpc2lvbk9wdGlvbnMubWluUm93cywgLi4ubmV4dFdpZGdldExpc3QubWFwKCh3KSA9PiB3LmxheW91dC55ICsgdy5sYXlvdXQuaGVpZ2h0IC0gMSkpXG4gICAgICB9LFxuICAgICAgd2lkZ2V0czogbmV4dFdpZGdldExpc3RcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sdmUtY29sbGlzaW9ucy5mdW5jdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9kYXNoYm9hcmQvY29tcG9uZW50cy9zb2x2ZS1jb2xsaXNpb25zLmZ1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBcUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUxRixNQUFNLFVBQVUsZ0NBQWdDLENBQzlDLENBQW1ELEVBQ25ELENBQW1EO0lBRW5ELE9BQU8sQ0FDTCxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLE9BQU87UUFDaEMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPO1FBQ2hDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTTtRQUMzQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU07UUFDM0MsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FDbEMsQ0FBQztBQUNKLENBQUM7QUFF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QUMsT0FBTyxDQUFDLENBQUM7SUFDckUsT0FBTyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGFzaGJvYXJkR3JpZExheW91dCwgRGFzaGJvYXJkTWFuaWZlc3QsIFdpZGdldE1hbmlmZXN0IH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC9tYW5pZmVzdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV2lkZ2V0UGxhY2VtZW50VXRpbHMgfSBmcm9tICcuLi9jb21wb25lbnRzL3dpZGdldHMvd2lkZ2V0LXBsYWNlbWVudC93aWRnZXQtcGxhY2VtZW50LnV0aWxzJztcbmltcG9ydCB7IERFRkFVTFRfQ09MVU1OU19OVU1CRVIsIERFRkFVTFRfUk9XU19OVU1CRVIgfSBmcm9tICcuLi9zdG9yZS9kYXNoYm9hcmQuY29udGFudHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gb3JkZXJXaWRnZXRzQWNjb3JkaW5nVG9QbGFjZW1lbnQoXG4gIGE6IFdpZGdldE1hbmlmZXN0ICYgeyBsYXlvdXQ6IHsgd2VpZ2h0PzogbnVtYmVyIH0gfSxcbiAgYjogV2lkZ2V0TWFuaWZlc3QgJiB7IGxheW91dDogeyB3ZWlnaHQ/OiBudW1iZXIgfSB9XG4pOiBudW1iZXIge1xuICByZXR1cm4gKFxuICAgIChiLmxheW91dC53ZWlnaHQgPz8gMCkgKiAxMDAwMDAwIC1cbiAgICAoYS5sYXlvdXQud2VpZ2h0ID8/IDApICogMTAwMDAwMCArXG4gICAgKGIubGF5b3V0LnkgKyBiLmxheW91dC5oZWlnaHQgLyAyKSAqIDEwMDAwMCAtXG4gICAgKGEubGF5b3V0LnkgKyBhLmxheW91dC5oZWlnaHQgLyAyKSAqIDEwMDAwMCArXG4gICAgKGIubGF5b3V0LnggKyBiLmxheW91dC53aWR0aCAvIDIpIC1cbiAgICAoYS5sYXlvdXQueCArIGEubGF5b3V0LndpZHRoIC8gMilcbiAgKTtcbn1cblxuZXhwb3J0IGNvbnN0IHNvbHZpbmdDb2xsaXNpb25PcHRpb25zID0ge1xuICBpbnZlcnRlZEdyYXZpdHk6IGZhbHNlLFxuICBtaW5Sb3dzOiAwXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc29sdmVDb2xsaXNpb25zKFxuICBjYW5kaWRhdGVXaWRnZXQ6IFdpZGdldE1hbmlmZXN0LFxuICBpbml0aWFsV2lkZ2V0TWFuaWZlc3RMaXN0OiBXaWRnZXRNYW5pZmVzdFtdLFxuICBkYXNoYm9hcmRNYW5pZmVzdDogRGFzaGJvYXJkTWFuaWZlc3Rcbik6IERhc2hib2FyZE1hbmlmZXN0IHtcbiAgY29uc3QgbmV4dFdpZGdldExpc3Q6IFdpZGdldE1hbmlmZXN0W10gPSBjYW5kaWRhdGVXaWRnZXRcbiAgICA/IEpTT04ucGFyc2UoXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5jYW5kaWRhdGVXaWRnZXQsXG4gICAgICAgICAgICBsYXlvdXQ6IHsgLi4uKGNhbmRpZGF0ZVdpZGdldD8ubGF5b3V0ID8/IHsgeDogMSwgeTogMSwgd2lkdGg6IDEsIGhlaWdodDogMSB9KSB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAuLi5pbml0aWFsV2lkZ2V0TWFuaWZlc3RMaXN0XG4gICAgICAgIF0pXG4gICAgICApXG4gICAgOiBbXTtcblxuICAvLyBGb3JjZSBhbGwgbGF5b3V0IHZhbHVlcyB0byBiZSBwb3NpdGl2ZSBhbmQgY2Fubm90IGJlIG91dHNpZGUgdGhlIGdyaWRcbiAgY29uc3QgY29sdW1ucyA9IGRhc2hib2FyZE1hbmlmZXN0LmdyaWQ/LmNvbHVtbnMgPz8gREVGQVVMVF9DT0xVTU5TX05VTUJFUjtcbiAgbmV4dFdpZGdldExpc3QuZm9yRWFjaCgodykgPT4ge1xuICAgIHcubGF5b3V0LmhlaWdodCA9IHcubGF5b3V0LmhlaWdodCA8PSAwID8gMSA6IHcubGF5b3V0LmhlaWdodDtcbiAgICB3LmxheW91dC53aWR0aCA9IHcubGF5b3V0LndpZHRoIDw9IDAgPyAxIDogdy5sYXlvdXQud2lkdGg7XG4gICAgdy5sYXlvdXQueCA9XG4gICAgICB3LmxheW91dC54IDw9IDAgPyAxIDogdy5sYXlvdXQueCArIHcubGF5b3V0LndpZHRoID4gY29sdW1ucyA/IGNvbHVtbnMgLSB3LmxheW91dC53aWR0aCArIDEgOiB3LmxheW91dC54O1xuICAgIHcubGF5b3V0LnkgPSB3LmxheW91dC55IDw9IDAgPyAxIDogdy5sYXlvdXQueTtcbiAgfSk7XG4gIGxldCByb3dzID0gZGFzaGJvYXJkTWFuaWZlc3QuZ3JpZD8ucm93cyA/PyBERUZBVUxUX1JPV1NfTlVNQkVSO1xuXG4gIGxldCBvdmVybGFwcGluZ1dpZGdldHMgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5nZXRPdmVybGFwcyhpbml0aWFsV2lkZ2V0TWFuaWZlc3RMaXN0KTtcbiAgaWYgKG92ZXJsYXBwaW5nV2lkZ2V0cy5sZW5ndGggPiAwKSB7XG4gICAgY29uc29sZS53YXJuKCdXaWRnZXRzIGFyZSBhbHJlYWR5IG92ZXJsYXBwaW5nLiBXZSBjYW5ub3QgaGF2ZSBhIGNvcnJlY3Qgc29sdXRpb24gZm9yIHRoaXMuJyk7XG4gIH1cblxuICBjb25zdCBsYXlvdXQgPSBkYXNoYm9hcmRNYW5pZmVzdC5ncmlkPy5sYXlvdXQgPz8gRGFzaGJvYXJkR3JpZExheW91dC5NQU5VQUw7XG5cbiAgbGV0IHJlc3VsdCA9IHVuZGVmaW5lZDtcbiAgaWYgKCFzb2x2aW5nQ29sbGlzaW9uT3B0aW9ucy5pbnZlcnRlZEdyYXZpdHkgfHwgbGF5b3V0ICE9PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTCkge1xuICAgIHJlc3VsdCA9IHtcbiAgICAgIC4uLmRhc2hib2FyZE1hbmlmZXN0LFxuICAgICAgZ3JpZDogeyAuLi5kYXNoYm9hcmRNYW5pZmVzdC5ncmlkLCByb3dzIH0sXG4gICAgICB3aWRnZXRzOiBuZXh0V2lkZ2V0TGlzdFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gUmVtb3ZlIFwiaG9sZXNcIiBhbmQgYWRhcHQgY29tcGxldGUgaGVpZ2h0XG4gICAgbmV4dFdpZGdldExpc3Quc29ydCgoYSwgYikgPT4gYS5sYXlvdXQueSAtIGIubGF5b3V0LnkpO1xuICAgIGxldCBzb21ldGhpbmdHb2VzVXAgPSB0cnVlO1xuICAgIHdoaWxlIChzb21ldGhpbmdHb2VzVXApIHtcbiAgICAgIHNvbWV0aGluZ0dvZXNVcCA9IGZhbHNlO1xuICAgICAgbmV4dFdpZGdldExpc3QuZm9yRWFjaCgodykgPT4ge1xuICAgICAgICBpZiAody5sYXlvdXQueSA+IDEpIHtcbiAgICAgICAgICBjb25zdCBvdmVybGFwc0lmTW92ZWRVcCA9IFdpZGdldFBsYWNlbWVudFV0aWxzLmdldE92ZXJsYXBzKFtcbiAgICAgICAgICAgIC4uLm5leHRXaWRnZXRMaXN0LFxuICAgICAgICAgICAgeyB0eXBlOiAncGxhY2Vob2xkZXInLCBsYXlvdXQ6IHsgLi4udy5sYXlvdXQsIHk6IE1hdGgubWF4KHcubGF5b3V0LnkgLSAxLCAxKSwgaGVpZ2h0OiAxIH0gfVxuICAgICAgICAgIF0pO1xuICAgICAgICAgIGlmIChvdmVybGFwc0lmTW92ZWRVcC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHcubGF5b3V0LnktLTtcbiAgICAgICAgICAgIHNvbWV0aGluZ0dvZXNVcCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXN1bHQgPSB7XG4gICAgICAuLi5kYXNoYm9hcmRNYW5pZmVzdCxcbiAgICAgIGdyaWQ6IHtcbiAgICAgICAgLi4uZGFzaGJvYXJkTWFuaWZlc3QuZ3JpZFxuICAgICAgfSxcbiAgICAgIHdpZGdldHM6IG5leHRXaWRnZXRMaXN0XG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IG5ld092ZXJsYXBzID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMuZ2V0T3ZlcmxhcHMocmVzdWx0LndpZGdldHMpO1xuICByZXR1cm4gbmV3T3ZlcmxhcHMubGVuZ3RoID4gMCA/IGRhc2hib2FyZE1hbmlmZXN0IDogcmVzdWx0O1xufVxuIl19
|