@rfprodz/client-d3-charts 1.3.0 → 1.3.2
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/components/bar-chart/bar-chart.component.mjs +3 -3
- package/esm2022/lib/components/chart-examples/chart-examples.component.mjs +4 -4
- package/esm2022/lib/components/force-directed-chart/force-directed-chart.component.mjs +3 -3
- package/esm2022/lib/components/line-chart/line-chart.component.mjs +3 -3
- package/esm2022/lib/components/pie-chart/pie-chart.component.mjs +3 -3
- package/esm2022/lib/components/radar-chart/radar-chart.component.mjs +3 -3
- package/esm2022/lib/d3-charts.module.mjs +4 -4
- package/esm2022/lib/util/line-chart.util.mjs +10 -3
- package/esm2022/lib/util/pie-chart.util.mjs +10 -10
- package/esm2022/lib/util/radar-chart.util.mjs +15 -5
- package/fesm2022/rfprodz-client-d3-charts.mjs +55 -38
- package/fesm2022/rfprodz-client-d3-charts.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -237,8 +237,6 @@ const drawRadarChartBlobs = (radiusScale, angleSlice, g, data, config) => {
|
|
|
237
237
|
const appendInvisibleTooltipCircles = (g, data, radiusScale, angleSlice, config) => {
|
|
238
238
|
// wrapper for the invisible circles on top
|
|
239
239
|
const blobCircleWrapper = g.selectAll('.radar-circle-wrapper').data(data).enter().append('g').attr('class', 'radar-circle-wrapper');
|
|
240
|
-
// set up the small tooltip for when you hover over a circle
|
|
241
|
-
const tooltip = g.append('text').attr('class', 'chart-tooltip').style('opacity', 0);
|
|
242
240
|
// append a set of invisible circles on top for the mouseover pop-up
|
|
243
241
|
const blobCircleWrapperRadiusMultiplier = 1.5;
|
|
244
242
|
blobCircleWrapper
|
|
@@ -258,10 +256,22 @@ const appendInvisibleTooltipCircles = (g, data, radiusScale, angleSlice, config)
|
|
|
258
256
|
const newY = parseFloat(d3.select(this).attr('cy')) - modifier;
|
|
259
257
|
const nodeData = event.target['__data__'];
|
|
260
258
|
const tooltipText = `${nodeData.value} ${nodeData.unit}`;
|
|
261
|
-
|
|
259
|
+
g.append('text')
|
|
260
|
+
.attr('class', 'chart-tooltip')
|
|
261
|
+
.style('opacity', 0)
|
|
262
|
+
.attr('x', newX)
|
|
263
|
+
.attr('y', newY)
|
|
264
|
+
.text(tooltipText)
|
|
265
|
+
.transition()
|
|
266
|
+
.duration(config.transitionDuration)
|
|
267
|
+
.style('opacity', 1);
|
|
262
268
|
})
|
|
263
269
|
.on('mouseout', () => {
|
|
264
|
-
|
|
270
|
+
d3.selectAll('.chart-tooltip')
|
|
271
|
+
.transition()
|
|
272
|
+
.duration(config.transitionDuration / 2)
|
|
273
|
+
.style('opacity', 0)
|
|
274
|
+
.remove();
|
|
265
275
|
});
|
|
266
276
|
};
|
|
267
277
|
/**
|
|
@@ -294,4 +304,4 @@ export const drawRadarChart = (container, data, options) => {
|
|
|
294
304
|
appendInvisibleTooltipCircles(g, data, radiusScale, angleSlice, config);
|
|
295
305
|
return config;
|
|
296
306
|
};
|
|
297
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkYXItY2hhcnQudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2xpZW50LWQzLWNoYXJ0cy9zcmMvbGliL3V0aWwvcmFkYXItY2hhcnQudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUd6QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUF1QixNQUFNLENBQUMsTUFBTSxDQUFxQjtJQUMzRixVQUFVLEVBQUUsRUFBRTtJQUNkLEtBQUssRUFBRSxHQUFHO0lBQ1YsTUFBTSxFQUFFLEdBQUc7SUFDWCxNQUFNLEVBQUU7UUFDTixHQUFHLEVBQUUsRUFBRTtRQUNQLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsRUFBRTtLQUNUO0lBQ0QsTUFBTSxFQUFFLENBQUM7SUFDVCxRQUFRLEVBQUUsQ0FBQztJQUNYLFVBQVUsRUFBRSxHQUFHO0lBQ2YsV0FBVyxFQUFFLElBQUk7SUFDakIsa0JBQWtCLEVBQUUsRUFBRTtJQUN0QixXQUFXLEVBQUUsSUFBSTtJQUNqQixTQUFTLEVBQUUsQ0FBQztJQUNaLGNBQWMsRUFBRSxHQUFHO0lBQ25CLFdBQVcsRUFBRSxDQUFDO0lBQ2QsWUFBWSxFQUFFLEtBQUs7SUFDbkIsa0JBQWtCLEVBQUUsR0FBRztJQUN2QixLQUFLLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7Q0FDNUMsQ0FBQyxDQUFDO0FBRUg7Ozs7O0dBS0c7QUFDSCxNQUFNLGVBQWUsR0FBRyxDQUFDLFNBQXFDLEVBQUUsTUFBMEIsRUFBRSxFQUFFO0lBQzVGLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLFNBQVMs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QUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUV4QixtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFOUQsNkJBQTZCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRXhFLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcblxuaW1wb3J0IHsgSVJhZGFyQ2hhcnREYXRhTm9kZSwgSVJhZGFyQ2hhcnRPcHRpb25zLCBUUmFkYXJDaGFydERhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JhZGFyLWNoYXJ0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBnZW5lcmF0ZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24udXRpbCc7XG5cbi8qKlxuICogVGhlIHJhZGFyIGNoYXJ0IGRlZmF1bHQgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRSYWRhckNoYXJ0Q29uZmlnOiBJUmFkYXJDaGFydE9wdGlvbnMgPSBPYmplY3QuZnJlZXplKDxJUmFkYXJDaGFydE9wdGlvbnM+e1xuICBjaGFydFRpdGxlOiAnJyxcbiAgd2lkdGg6IDM1MCxcbiAgaGVpZ2h0OiAzNTAsXG4gIG1hcmdpbjoge1xuICAgIHRvcDogNTAsXG4gICAgcmlnaHQ6IDUwLFxuICAgIGJvdHRvbTogNTAsXG4gICAgbGVmdDogNTAsXG4gIH0sXG4gIGxldmVsczogMywgLy8gaG93IG1hbnkgbGV2ZWxzIG9yIGlubmVyIGNpcmNsZXMgc2hvdWxkIHRoZXJlIGJlIGRyYXduXG4gIG1heFZhbHVlOiAwLCAvLyB3aGF0IGlzIHRoZSB2YWx1ZSB0aGF0IHRoZSBiaWdnZXN0IGNpcmNsZSB3aWxsIHJlcHJlc2VudFxuICBsaW5lRmFjdG9yOiAxLjEsIC8vIGhvdyBtdWNoIGZhcnRoZXIgdGhhbiB0aGUgcmFkaXVzIG9mIHRoZSBvdXRlciBjaXJjbGUgc2hvdWxkIHRoZSBsaW5lcyBiZSBzdHJldGNoZWRcbiAgbGFiZWxGYWN0b3I6IDEuMTUsIC8vIGhvdyBtdWNoIGZhcnRoZXIgdGhhbiB0aGUgcmFkaXVzIG9mIHRoZSBvdXRlciBjaXJjbGUgc2hvdWxkIHRoZSBsYWJlbHMgYmUgcGxhY2VkXG4gIGxhYmVsVGV4dFdyYXBXaWR0aDogNjAsIC8vIHRoZSBudW1iZXIgb2YgcGl4ZWxzIGFmdGVyIHdoaWNoIGEgbGFiZWwgbmVlZHMgdG8gYmUgZ2l2ZW4gYSBuZXcgbGluZVxuICBvcGFjaXR5QXJlYTogMC4zNSwgLy8gdGhlIG9wYWNpdHkgb2YgdGhlIGFyZWEgb2YgdGhlIGJsb2JcbiAgZG90UmFkaXVzOiA0LCAvLyB0aGUgc2l6ZSBvZiB0aGUgY29sb3JlZCBjaXJjbGVzIG9mIGVhY2ggYmxvZ1xuICBvcGFjaXR5Q2lyY2xlczogMC4xLCAvLyB0aGUgb3BhY2l0eSBvZiB0aGUgY2lyY2xlcyBvZiBlYWNoIGJsb2JcbiAgc3Ryb2tlV2lkdGg6IDIsIC8vIHRoZSB3aWR0aCBvZiB0aGUgc3Ryb2tlIGFyb3VuZCBlYWNoIGJsb2JcbiAgcm91bmRTdHJva2VzOiBmYWxzZSwgLy8gaWYgdHJ1ZSB0aGUgYXJlYSBhbmQgc3Ryb2tlIHdpbGwgZm9sbG93IGEgcm91bmQgcGF0aCAoY2FyZGluYWwtY2xvc2VkKVxuICB0cmFuc2l0aW9uRHVyYXRpb246IDIwMCxcbiAgY29sb3I6IGQzLnNjYWxlT3JkaW5hbChkMy5zY2hlbWVDYXRlZ29yeTEwKSxcbn0pO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjb250YWluZXIgZm9yIHRoZSByYWRhciBjaGFydC5cbiAqIEBwYXJhbSBjb250YWluZXIgdGhlIGNoYXJ0IGNvbnRhaW5lclxuICogQHBhcmFtIGNvbmZpZyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgdGhlIG9iamVjdCB3aXRoIHRoZSBzdmcgZWxlbWVudCBhbmQgdGhlIGcgZWxlbWVudFxuICovXG5jb25zdCBjcmVhdGVDb250YWluZXIgPSAoY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PiwgY29uZmlnOiBJUmFkYXJDaGFydE9wdGlvbnMpID0+IHtcbiAgY29uc3QgaWQgPSBjb250YWluZXIubmF0aXZlRWxlbWVudC5pZCA/PyAncmFkYXItMCc7XG5cbiAgZDMuc2VsZWN0KGAjJHtpZH1gKS5zZWxlY3QoJ3N2ZycpLnJlbW92ZSgpO1xuICBjb25zdCBzdmcgPSBkM1xuICAgIC5zZWxlY3QoYCMke2lkfWApXG4gICAgLmFwcGVuZCgnc3ZnJylcbiAgICAuYXR0cignd2lkdGgnLCBjb25maWcud2lkdGggKyBjb25maWcubWFyZ2luLmxlZnQgKyBjb25maWcubWFyZ2luLnJpZ2h0KVxuICAgIC5hdHRyKCdoZWlnaHQnLCBjb25maWcuaGVpZ2h0ICsgY29uZmlnLm1hcmdpbi50b3AgKyBjb25maWcubWFyZ2luLmJvdHRvbSlcbiAgICAuYXR0cignY2xhc3MnLCBpZCk7XG4gIGNvbnN0IGcgPSBzdmdcbiAgICAuYXBwZW5kKCdnJylcbiAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke2NvbmZpZy53aWR0aCAvIDIgKyBjb25maWcubWFyZ2luLmxlZnR9LCR7Y29uZmlnLmhlaWdodCAvIDIgKyBjb25maWcubWFyZ2luLnRvcH0pYCk7XG5cbiAgcmV0dXJuIHsgc3ZnLCBnIH07XG59O1xuXG4vKipcbiAqIERyYXdzIHRoZSByYWRhciBjaGFydCBjaXJjdWxhciBncmlkLlxuICogQHBhcmFtIGF4aXNHcmlkIHRoZSBjaGFydCBheGlzIGdyaWRcbiAqIEBwYXJhbSByYWRpdXMgdGhlIGNoYXJ0IHJhZGl1cyB2YWx1ZVxuICogQHBhcmFtIG1heFZhbHVlIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjaGFydCBheGlzXG4gKiBAcGFyYW0gY29uZmlnIHRoZSBjaGFydCBjb25maWd1cmF0aW9uXG4gKi9cbmNvbnN0IGRyYXdDaXJjdWxhckdyaWQgPSAoXG4gIGF4aXNHcmlkOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPixcbiAgcmFkaXVzOiBudW1iZXIsXG4gIG1heFZhbHVlOiBudW1iZXIsXG4gIGNvbmZpZzogSVJhZGFyQ2hhcnRPcHRpb25zLFxuKSA9PiB7XG4gIC8vIGJhY2tncm91bmQgY2lyY2xlc1xuICBheGlzR3JpZFxuICAgIC5zZWxlY3RBbGwoJy5sZXZlbHMnKVxuICAgIC5kYXRhKGQzLnJhbmdlKDEsIGNvbmZpZy5sZXZlbHMgKyAxKS5yZXZlcnNlKCkpXG4gICAgLmVudGVyKClcbiAgICAuYXBwZW5kKCdjaXJjbGUnKVxuICAgIC5hdHRyKCdjbGFzcycsICdncmlkLWNpcmNsZScpXG4gICAgLmF0dHIoJ3InLCAoZCwgaSkgPT4gKHJhZGl1cyAvIGNvbmZpZy5sZXZlbHMpICogZClcbiAgICAuc3R5bGUoJ2ZpbGwnLCAnI0NEQ0RDRCcpXG4gICAgLnN0eWxlKCdzdHJva2UnLCAnI0NEQ0RDRCcpXG4gICAgLnN0eWxlKCdmaWxsLW9wYWNpdHknLCBjb25maWcub3BhY2l0eUNpcmNsZXMpXG4gICAgLnN0eWxlKCdmaWx0ZXInLCAndXJsKCNnbG93KScpO1xuICAvLyB0ZXh0IGluZGljYXRpbmcgYXQgd2hhdCAlIGVhY2ggbGV2ZWwgaXNcbiAgY29uc3QgYXhpc0dyaWRYID0gNDtcbiAgYXhpc0dyaWRcbiAgICAuc2VsZWN0QWxsKCcuYXhpcy1sYWJlbCcpXG4gICAgLmRhdGEoZDMucmFuZ2UoMSwgY29uZmlnLmxldmVscyArIDEpLnJldmVyc2UoKSlcbiAgICAuZW50ZXIoKVxuICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgIC5hdHRyKCdjbGFzcycsICdheGlzLWxhYmVsJylcbiAgICAuYXR0cigneCcsIGF4aXNHcmlkWClcbiAgICAuYXR0cigneScsIGQgPT4gKC1kICogcmFkaXVzKSAvIGNvbmZpZy5sZXZlbHMpXG4gICAgLmF0dHIoJ2R5JywgJzAuNGVtJylcbiAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsICcxMHB4JylcbiAgICAuYXR0cignZmlsbCcsICcjNzM3MzczJylcbiAgICAudGV4dCgoZCwgaSkgPT4gKG1heFZhbHVlICogZCkgLyBjb25maWcubGV2ZWxzKTtcbn07XG5cbi8qKlxuICogV3JhcHMgdGhlIGNoYXJ0IGF4aXMgbGFiZWxzIHRleHQuXG4gKiBAcGFyYW0gc3ZnVGV4dCB0aGUgc3ZnIHRleHQgZWxlbWVudHNcbiAqIEBwYXJhbSB3aWR0aCB0aGUgY2hhcnQgYXhpcyBsYWJlbCB3aWR0aFxuICovXG5jb25zdCB3cmFwU3ZnVGV4dCA9IChzdmdUZXh0OiBkMy5TZWxlY3Rpb248U1ZHVGV4dEVsZW1lbnQsIHN0cmluZywgU1ZHR0VsZW1lbnQsIHVua25vd24+LCB3aWR0aDogbnVtYmVyKSA9PiB7XG4gIHN2Z1RleHQuZWFjaChmdW5jdGlvbiAodGhpczogU1ZHVGV4dEVsZW1lbnQpIHtcbiAgICBjb25zdCB0ZXh0ID0gZDMuc2VsZWN0PFNWR0VsZW1lbnQsIHN0cmluZz4odGhpcyk7XG4gICAgY29uc3Qgd29yZHMgPSB0ZXh0LnRleHQoKS5zcGxpdCgvXFxzKy8pLnJldmVyc2UoKTtcbiAgICBpZiAod29yZHMubGVuZ3RoID4gMSkge1xuICAgICAgbGV0IGxpbmU6IHN0cmluZ1tdID0gW107XG4gICAgICBsZXQgbGluZU51bWJlciA9IDA7XG4gICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gMS40O1xuICAgICAgY29uc3QgeSA9IHRleHQuYXR0cigneScpO1xuICAgICAgY29uc3QgeCA9IHRleHQuYXR0cigneCcpO1xuICAgICAgY29uc3QgZHkgPSBwYXJzZUZsb2F0KHRleHQuYXR0cignZHknKSA/PyAwKTtcbiAgICAgIGxldCB0c3BhbiA9IHRleHQudGV4dChudWxsKS5hcHBlbmQoJ3RzcGFuJykuYXR0cigneCcsIHgpLmF0dHIoJ3knLCB5KS5hdHRyKCdkeScsIGAke2R5fWVtYCk7XG5cbiAgICAgIGxldCB3b3JkID0gd29yZHMucG9wKCk7XG5cbiAgICAgIHdoaWxlICh0eXBlb2Ygd29yZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgbGluZS5wdXNoKHdvcmQgPz8gJycpO1xuICAgICAgICB0c3Bhbi50ZXh0KGxpbmUuam9pbignICcpKTtcbiAgICAgICAgaWYgKCh0c3Bhbi5ub2RlKCk/LmdldENvbXB1dGVkVGV4dExlbmd0aCgpID8/IDApID4gd2lkdGgpIHtcbiAgICAgICAgICBsaW5lLnBvcCgpO1xuICAgICAgICAgIHRzcGFuLnRleHQobGluZS5qb2luKCcgJykpO1xuICAgICAgICAgIGxpbmUgPSBbd29yZCA/PyAnJ107XG4gICAgICAgICAgbGluZU51bWJlciArPSAxO1xuICAgICAgICAgIHRzcGFuID0gdGV4dFxuICAgICAgICAgICAgLmFwcGVuZCgndHNwYW4nKVxuICAgICAgICAgICAgLmF0dHIoJ3gnLCB4KVxuICAgICAgICAgICAgLmF0dHIoJ3knLCB5KVxuICAgICAgICAgICAgLmF0dHIoJ2R5JywgYCR7bGluZU51bWJlciAqIGxpbmVIZWlnaHQgKyBkeX1lbWApXG4gICAgICAgICAgICAudGV4dCh3b3JkID8/ICcnKTtcbiAgICAgICAgfVxuICAgICAgICB3b3JkID0gd29yZHMucG9wKCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgbGVnZW5kLlxuICogQHBhcmFtIGcgdGhlIHN2ZyBnIGVsZW1lbnRcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgY3JlYXRlTGVnZW5kID0gKGc6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LCBjb25maWc6IElSYWRhckNoYXJ0T3B0aW9ucykgPT4ge1xuICBpZiAoY29uZmlnLmNoYXJ0VGl0bGUgIT09ICcnKSB7XG4gICAgZy5hcHBlbmQoJ2cnKVxuICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoLSR7Y29uZmlnLndpZHRoIC8gMiArIGNvbmZpZy5tYXJnaW4ubGVmdCAvIDJ9LCAtJHtjb25maWcuaGVpZ2h0IC8gMiArIGNvbmZpZy5tYXJnaW4udG9wIC8gMn0pYClcbiAgICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgICAgLnN0eWxlKCdmb250LXNpemUnLCAnMTJweCcpXG4gICAgICAuYXR0cignY2xhc3MnLCAnbGVnZW5kJylcbiAgICAgIC50ZXh0KGNvbmZpZy5jaGFydFRpdGxlKTtcbiAgfVxufTtcblxuLyoqXG4gKiBEcmF3cyB0aGUgcmFkYXIgY2hhcnQgYXhpcy5cbiAqIEBwYXJhbSBheGlzR3JpZCB0aGUgY2hhcnQgYXhpcyBncmlkXG4gKiBAcGFyYW0gYXhpc05hbWVzIHRoZSBjaGFydCBheGlzIG5hbWVzXG4gKiBAcGFyYW0gcmFkaXVzU2NhbGUgdGhlIGNoYXJ0IHJhZGl1cyBzY2FsZVxuICogQHBhcmFtIG1heFZhbHVlIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjaGFydCBheGlzXG4gKiBAcGFyYW0gYW5nbGVTbGljZSB0aGUgY2hhcnQgYW5nbGUgc2xpY2UgdmFsdWVcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgZHJhd0F4aXMgPSAoXG4gIGF4aXNHcmlkOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPixcbiAgYXhpc05hbWVzOiBzdHJpbmdbXSxcbiAgcmFkaXVzU2NhbGU6IGQzLlNjYWxlTGluZWFyPG51bWJlciwgbnVtYmVyPixcbiAgbWF4VmFsdWU6IG51bWJlcixcbiAgYW5nbGVTbGljZTogbnVtYmVyLFxuICBjb25maWc6IElSYWRhckNoYXJ0T3B0aW9ucyxcbikgPT4ge1xuICAvLyBjcmVhdGUgdGhlIHN0cmFpZ2h0IGxpbmVzIHJhZGlhdGluZyBvdXR3YXJkIGZyb20gdGhlIGNlbnRlclxuICBjb25zdCBheGlzID0gYXhpc0dyaWQuc2VsZWN0QWxsKCcuYXhpcycpLmRhdGEoYXhpc05hbWVzKS5lbnRlcigpLmFwcGVuZCgnZycpLmF0dHIoJ2NsYXNzJywgJ2F4aXMnKTtcbiAgLy8gYXBwZW5kIHRoZSBsaW5lc1xuICBheGlzXG4gICAgLmFwcGVuZCgnbGluZScpXG4gICAgLmF0dHIoJ3gxJywgMClcbiAgICAuYXR0cigneTEnLCAwKVxuICAgIC5hdHRyKCd4MicsIChkLCBpKSA9PiByYWRpdXNTY2FsZShtYXhWYWx1ZSAqIGNvbmZpZy5saW5lRmFjdG9yKSAqIE1hdGguY29zKGFuZ2xlU2xpY2UgKiBpIC0gTWF0aC5QSSAvIDIpKVxuICAgIC5hdHRyKCd5MicsIChkLCBpKSA9PiByYWRpdXNTY2FsZShtYXhWYWx1ZSAqIGNvbmZpZy5saW5lRmFjdG9yKSAqIE1hdGguc2luKGFuZ2xlU2xpY2UgKiBpIC0gTWF0aC5QSSAvIDIpKVxuICAgIC5hdHRyKCdjbGFzcycsICdsaW5lJylcbiAgICAuc3R5bGUoJ3N0cm9rZScsICd3aGl0ZScpXG4gICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAnMnB4Jyk7XG4gIC8vIGFwcGVuZCB0aGUgbGFiZWxzIGF0IGVhY2ggYXhpc1xuICBheGlzXG4gICAgLmFwcGVuZCgndGV4dCcpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ2xlZ2VuZCcpXG4gICAgLnN0eWxlKCdmb250LXNpemUnLCAnMTFweCcpXG4gICAgLmF0dHIoJ3RleHQtYW5jaG9yJywgJ21pZGRsZScpXG4gICAgLmF0dHIoJ2R5JywgJzAuMzVlbScpXG4gICAgLmF0dHIoJ3gnLCAoZCwgaSkgPT4gcmFkaXVzU2NhbGUobWF4VmFsdWUgKiBjb25maWcubGFiZWxGYWN0b3IpICogTWF0aC5jb3MoYW5nbGVTbGljZSAqIGkgLSBNYXRoLlBJIC8gMikpXG4gICAgLmF0dHIoJ3knLCAoZCwgaSkgPT4gcmFkaXVzU2NhbGUobWF4VmFsdWUgKiBjb25maWcubGFiZWxGYWN0b3IpICogTWF0aC5zaW4oYW5nbGVTbGljZSAqIGkgLSBNYXRoLlBJIC8gMikpXG4gICAgLnRleHQoZCA9PiBkKVxuICAgIC5jYWxsKHdyYXBTdmdUZXh0LCBjb25maWcubGFiZWxUZXh0V3JhcFdpZHRoKTtcbn07XG5cbi8qKlxuICogRHJhd3MgdGhlIHJhZGFyIGNoYXJ0IGJsb2JzLlxuICogQHBhcmFtIHJhZGl1c1NjYWxlIHRoZSBjaGFydCByYWRpdXMgc2NhbGVcbiAqIEBwYXJhbSBhbmdsZVNsaWNlIHRoZSBjaGFydCBhbmdsZSBzbGljZSB2YWx1ZVxuICogQHBhcmFtIGcgdGhlIHN2ZyBnIGVsZW1lbnRcbiAqIEBwYXJhbSBkYXRhIHRoZSBjaGFydCBkYXRhXG4gKiBAcGFyYW0gY29uZmlnIHRoZSBjaGFydCBjb25maWd1cmF0aW9uXG4gKi9cbmNvbnN0IGRyYXdSYWRhckNoYXJ0QmxvYnMgPSAoXG4gIHJhZGl1c1NjYWxlOiBkMy5TY2FsZUxpbmVhcjxudW1iZXIsIG51bWJlcj4sXG4gIGFuZ2xlU2xpY2U6IG51bWJlcixcbiAgZzogZDMuU2VsZWN0aW9uPFNWR0dFbGVtZW50LCB1bmtub3duLCBIVE1MRWxlbWVudCwgdW5rbm93bj4sXG4gIGRhdGE6IFRSYWRhckNoYXJ0RGF0YSxcbiAgY29uZmlnOiBJUmFkYXJDaGFydE9wdGlvbnMsXG4pID0+IHtcbiAgLy8gdGhlIHJhZGlhbCBsaW5lIGZ1bmN0aW9uXG4gIGNvbnN0IHJhZGFyTGluZSA9IGQzXG4gICAgLmxpbmVSYWRpYWw8SVJhZGFyQ2hhcnREYXRhTm9kZT4oKVxuICAgIC5yYWRpdXMoZCA9PiByYWRpdXNTY2FsZShkLnZhbHVlKSlcbiAgICAuYW5nbGUoKGQsIGkpID0+IGkgKiBhbmdsZVNsaWNlKTtcbiAgLy8gY3JlYXRlIGEgd3JhcHBlciBmb3IgdGhlIGJsb2JzXG4gIGNvbnN0IGJsb2JXcmFwcGVyID0gZy5zZWxlY3RBbGwoJy5yYWRhci13cmFwcGVyJykuZGF0YShkYXRhKS5lbnRlcigpLmFwcGVuZCgnZycpLmF0dHIoJ2NsYXNzJywgJ3JhZGFyLXdyYXBwZXInKTtcbiAgLy8gYXBwZW5kIHRoZSBiYWNrZ3JvdW5kc1xuICBibG9iV3JhcHBlclxuICAgIC5hcHBlbmQoJ3BhdGgnKVxuICAgIC5hdHRyKCdjbGFzcycsICdyYWRhci1hcmVhJylcbiAgICAuYXR0cignZCcsIChkLCBpKSA9PiByYWRhckxpbmUoZCkpXG4gICAgLnN0eWxlKCdmaWxsJywgKGQsIGkpID0+IGNvbmZpZy5jb2xvcihpLnRvU3RyaW5nKCkpKVxuICAgIC5zdHlsZSgnZmlsbC1vcGFjaXR5JywgY29uZmlnLm9wYWNpdHlBcmVhKVxuICAgIC5vbignbW91c2VvdmVyJywgZnVuY3Rpb24gKGQsIGkpIHtcbiAgICAgIC8vIGRpbSBhbGwgYmxvYnNcbiAgICAgIGNvbnN0IHJhZGFyQXJlYUZpbGxPcGFjaXR5ID0gMC4xO1xuICAgICAgZDMuc2VsZWN0QWxsKCcucmFkYXItYXJlYScpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihjb25maWcudHJhbnNpdGlvbkR1cmF0aW9uKS5zdHlsZSgnZmlsbC1vcGFjaXR5JywgcmFkYXJBcmVhRmlsbE9wYWNpdHkpO1xuICAgICAgLy8gYnJpbmcgYmFjayB0aGUgaG92ZXJlZCBvdmVyIGJsb2JcbiAgICAgIGNvbnN0IGZpbGxPcGFjaXR5ID0gMC43O1xuICAgICAgZDMuc2VsZWN0KHRoaXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihjb25maWcudHJhbnNpdGlvbkR1cmF0aW9uKS5zdHlsZSgnZmlsbC1vcGFjaXR5JywgZmlsbE9wYWNpdHkpO1xuICAgIH0pXG4gICAgLm9uKCdtb3VzZW91dCcsICgpID0+IHtcbiAgICAgIC8vIGJyaW5nIGJhY2sgYWxsIGJsb2JzXG4gICAgICBkMy5zZWxlY3RBbGwoJy5yYWRhci1hcmVhJykudHJhbnNpdGlvbigpLmR1cmF0aW9uKGNvbmZpZy50cmFuc2l0aW9uRHVyYXRpb24pLnN0eWxlKCdmaWxsLW9wYWNpdHknLCBjb25maWcub3BhY2l0eUFyZWEpO1xuICAgIH0pO1xuICAvLyBjcmVhdGUgdGhlIG91dGxpbmVzXG4gIGJsb2JXcmFwcGVyXG4gICAgLmFwcGVuZCgncGF0aCcpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ3JhZGFyLXN0cm9rZScpXG4gICAgLmF0dHIoJ2QnLCAoZCwgaSkgPT4gcmFkYXJMaW5lKGQpKVxuICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgYCR7Y29uZmlnLnN0cm9rZVdpZHRofXB4YClcbiAgICAuc3R5bGUoJ3N0cm9rZScsIChkLCBpKSA9PiBjb25maWcuY29sb3IoaS50b1N0cmluZygpKSlcbiAgICAuc3R5bGUoJ2ZpbGwnLCAnbm9uZScpXG4gICAgLnN0eWxlKCdmaWx0ZXInLCAndXJsKCNnbG93KScpO1xuICAvLyBhcHBlbmQgdGhlIGNpcmNsZXNcbiAgY29uc3QgYmxvYldyYXBwZXJGaWxsT3BhY2l0eSA9IDAuODtcbiAgYmxvYldyYXBwZXJcbiAgICAuc2VsZWN0QWxsKCcucmFkYXItY2lyY2xlJylcbiAgICAuZGF0YSgoZCwgaSkgPT4gZClcbiAgICAuZW50ZXIoKVxuICAgIC5hcHBlbmQoJ2NpcmNsZScpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ3JhZGFyLWNpcmNsZScpXG4gICAgLmF0dHIoJ3InLCBjb25maWcuZG90UmFkaXVzKVxuICAgIC5hdHRyKCdjeCcsIChkLCBpKSA9PiByYWRpdXNTY2FsZShkLnZhbHVlKSAqIE1hdGguY29zKGFuZ2xlU2xpY2UgKiBpIC0gTWF0aC5QSSAvIDIpKVxuICAgIC5hdHRyKCdjeScsIChkLCBpKSA9PiByYWRpdXNTY2FsZShkLnZhbHVlKSAqIE1hdGguc2luKGFuZ2xlU2xpY2UgKiBpIC0gTWF0aC5QSSAvIDIpKVxuICAgIC5zdHlsZSgnZmlsbCcsIChkLCBpLCBqKSA9PiBjb25maWcuY29sb3Ioai50b1N0cmluZygpKSlcbiAgICAuc3R5bGUoJ2ZpbGwtb3BhY2l0eScsIGJsb2JXcmFwcGVyRmlsbE9wYWNpdHkpO1xufTtcblxuLyoqXG4gKiBBcHBlbmRzIHRoZSBpbnZpc2libGUgdG9vbHRpcCBjaXJjbGVzLlxuICogQHBhcmFtIGcgdGhlIHN2ZyBnIGVsZW1lbnRcbiAqIEBwYXJhbSBkYXRhIHRoZSBjaGFydCBkYXRhXG4gKiBAcGFyYW0gcmFkaXVzU2NhbGUgdGhlIGNoYXJ0IHJhZGl1cyBzY2FsZVxuICogQHBhcmFtIGFuZ2xlU2xpY2UgdGhlIGNoYXJ0IGFuZ2xlIHNsaWNlIHZhbHVlXG4gKiBAcGFyYW0gY29uZmlnIHRoZSBjaGFydCBjb25maWd1cmF0aW9uXG4gKi9cbmNvbnN0IGFwcGVuZEludmlzaWJsZVRvb2x0aXBDaXJjbGVzID0gKFxuICBnOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPixcbiAgZGF0YTogVFJhZGFyQ2hhcnREYXRhLFxuICByYWRpdXNTY2FsZTogZDMuU2NhbGVMaW5lYXI8bnVtYmVyLCBudW1iZXI+LFxuICBhbmdsZVNsaWNlOiBudW1iZXIsXG4gIGNvbmZpZzogSVJhZGFyQ2hhcnRPcHRpb25zLFxuKSA9PiB7XG4gIC8vIHdyYXBwZXIgZm9yIHRoZSBpbnZpc2libGUgY2lyY2xlcyBvbiB0b3BcbiAgY29uc3QgYmxvYkNpcmNsZVdyYXBwZXIgPSBnLnNlbGVjdEFsbCgnLnJhZGFyLWNpcmNsZS13cmFwcGVyJykuZGF0YShkYXRhKS5lbnRlcigpLmFwcGVuZCgnZycpLmF0dHIoJ2NsYXNzJywgJ3JhZGFyLWNpcmNsZS13cmFwcGVyJyk7XG4gIC8vIHNldCB1cCB0aGUgc21hbGwgdG9vbHRpcCBmb3Igd2hlbiB5b3UgaG92ZXIgb3ZlciBhIGNpcmNsZVxuICBjb25zdCB0b29sdGlwID0gZy5hcHBlbmQoJ3RleHQnKS5hdHRyKCdjbGFzcycsICdjaGFydC10b29sdGlwJykuc3R5bGUoJ29wYWNpdHknLCAwKTtcbiAgLy8gYXBwZW5kIGEgc2V0IG9mIGludmlzaWJsZSBjaXJjbGVzIG9uIHRvcCBmb3IgdGhlIG1vdXNlb3ZlciBwb3AtdXBcbiAgY29uc3QgYmxvYkNpcmNsZVdyYXBwZXJSYWRpdXNNdWx0aXBsaWVyID0gMS41O1xuICBibG9iQ2lyY2xlV3JhcHBlclxuICAgIC5zZWxlY3RBbGw8U1ZHRWxlbWVudCwgSVJhZGFyQ2hhcnREYXRhTm9kZT4oJy5yYWRhci1pbnZpc2libGUtY2lyY2xlJylcbiAgICAuZGF0YSgoZCwgaSkgPT4gZClcbiAgICAuZW50ZXIoKVxuICAgIC5hcHBlbmQoJ2NpcmNsZScpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ3JhZGFyLWludmlzaWJsZS1jaXJjbGUnKVxuICAgIC5hdHRyKCdyJywgY29uZmlnLmRvdFJhZGl1cyAqIGJsb2JDaXJjbGVXcmFwcGVyUmFkaXVzTXVsdGlwbGllcilcbiAgICAuYXR0cignY3gnLCAoZCwgaSkgPT4gcmFkaXVzU2NhbGUoZC52YWx1ZSkgKiBNYXRoLmNvcyhhbmdsZVNsaWNlICogaSAtIE1hdGguUEkgLyAyKSlcbiAgICAuYXR0cignY3knLCAoZCwgaSkgPT4gcmFkaXVzU2NhbGUoZC52YWx1ZSkgKiBNYXRoLnNpbihhbmdsZVNsaWNlICogaSAtIE1hdGguUEkgLyAyKSlcbiAgICAuc3R5bGUoJ2ZpbGwnLCAnbm9uZScpXG4gICAgLnN0eWxlKCdwb2ludGVyLWV2ZW50cycsICdhbGwnKVxuICAgIC5vbignbW91c2VvdmVyJywgZnVuY3Rpb24gKGV2ZW50OiBNb3VzZUV2ZW50LCBpKSB7XG4gICAgICBjb25zdCBtb2RpZmllciA9IDEwO1xuICAgICAgY29uc3QgbmV3WCA9IHBhcnNlRmxvYXQoZDMuc2VsZWN0KHRoaXMpLmF0dHIoJ2N4JykpIC0gbW9kaWZpZXI7XG4gICAgICBjb25zdCBuZXdZID0gcGFyc2VGbG9hdChkMy5zZWxlY3QodGhpcykuYXR0cignY3knKSkgLSBtb2RpZmllcjtcblxuICAgICAgY29uc3Qgbm9kZURhdGEgPSAoZXZlbnQudGFyZ2V0IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgSVJhZGFyQ2hhcnREYXRhTm9kZT4pWydfX2RhdGFfXyddO1xuICAgICAgY29uc3QgdG9vbHRpcFRleHQgPSBgJHtub2RlRGF0YS52YWx1ZX0gJHtub2RlRGF0YS51bml0fWA7XG4gICAgICB0b29sdGlwLmF0dHIoJ3gnLCBuZXdYKS5hdHRyKCd5JywgbmV3WSkudGV4dCh0b29sdGlwVGV4dCkudHJhbnNpdGlvbigpLmR1cmF0aW9uKGNvbmZpZy50cmFuc2l0aW9uRHVyYXRpb24pLnN0eWxlKCdvcGFjaXR5JywgMSk7XG4gICAgfSlcbiAgICAub24oJ21vdXNlb3V0JywgKCkgPT4ge1xuICAgICAgdG9vbHRpcC50cmFuc2l0aW9uKCkuZHVyYXRpb24oY29uZmlnLnRyYW5zaXRpb25EdXJhdGlvbikuc3R5bGUoJ29wYWNpdHknLCAwKTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogRHJhd3MgdGhlIHJhZGFyIGNoYXJ0LlxuICogQHBhcmFtIGNvbnRhaW5lciB0aGUgY2hhcnQgY29udGFpbmVyXG4gKiBAcGFyYW0gZGF0YSB0aGUgY2hhcnQgZGF0YVxuICogQHBhcmFtIG9wdGlvbnMgdGhlIGNoYXJ0IG9wdGlvbnNcbiAqIEByZXR1cm5zIHRoZSBoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGRyYXdSYWRhckNoYXJ0ID0gKGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4sIGRhdGE6IFRSYWRhckNoYXJ0RGF0YSwgb3B0aW9ucz86IFBhcnRpYWw8SVJhZGFyQ2hhcnRPcHRpb25zPikgPT4ge1xuICBjb25zdCBjb25maWc6IElSYWRhckNoYXJ0T3B0aW9ucyA9IGdlbmVyYXRlQ29uZmlndXJhdGlvbjxJUmFkYXJDaGFydE9wdGlvbnM+KGRlZmF1bHRSYWRhckNoYXJ0Q29uZmlnLCBvcHRpb25zLCB7fSk7XG5cbiAgY29uc3QgbWF4VmFsdWUgPSBNYXRoLm1heChjb25maWcubWF4VmFsdWUsIGQzLm1heChkYXRhLCBpID0+IGQzLm1heChpLm1hcChvID0+IG8udmFsdWUpKSkgPz8gMCk7XG4gIGNvbnN0IGF4aXNOYW1lcyA9IGRhdGFbMF0ubWFwKChpLCBqKSA9PiBpLmF4aXMpO1xuICBjb25zdCB0b3RhbEF4aXMgPSBheGlzTmFtZXMubGVuZ3RoO1xuICBjb25zdCByYWRpdXMgPSBNYXRoLm1pbihjb25maWcud2lkdGggLyAyIC0gY29uZmlnLm1hcmdpbi5sZWZ0IC8gMiwgY29uZmlnLmhlaWdodCAvIDIgLSBjb25maWcubWFyZ2luLnRvcCAvIDIpO1xuICBjb25zdCBhbmdsZVNsaWNlID0gKE1hdGguUEkgKiAyKSAvIHRvdGFsQXhpcztcbiAgY29uc3QgcmFkaXVzU2NhbGUgPSBkMy5zY2FsZUxpbmVhcihbMCwgcmFkaXVzXSkuZG9tYWluKFswLCBtYXhWYWx1ZV0pO1xuXG4gIGNvbnN0IHsgZyB9ID0gY3JlYXRlQ29udGFpbmVyKGNvbnRhaW5lciwgY29uZmlnKTtcblxuICAvLyBmaWx0ZXIgZm9yIHRoZSBvdXRzaWRlIGdsb3dcbiAgY29uc3QgZmlsdGVyID0gZy5hcHBlbmQoJ2RlZnMnKS5hcHBlbmQoJ2ZpbHRlcicpLmF0dHIoJ2lkJywgJ2dsb3cnKTtcbiAgZmlsdGVyLmFwcGVuZCgnZmVHYXVzc2lhbkJsdXInKS5hdHRyKCdzdGREZXZpYXRpb24nLCAnMi41JykuYXR0cigncmVzdWx0JywgJ2NvbG9yZWRCbHVyJyk7XG4gIGNvbnN0IGZlTWVyZ2UgPSBmaWx0ZXIuYXBwZW5kKCdmZU1lcmdlJyk7XG4gIGZlTWVyZ2UuYXBwZW5kKCdmZU1lcmdlTm9kZScpLmF0dHIoJ2luJywgJ2NvbG9yZWRCbHVyJyk7XG4gIGZlTWVyZ2UuYXBwZW5kKCdmZU1lcmdlTm9kZScpLmF0dHIoJ2luJywgJ1NvdXJjZUdyYXBoaWMnKTtcblxuICBjb25zdCBheGlzR3JpZCA9IGcuYXBwZW5kKCdnJykuYXR0cignY2xhc3MnLCAnYXhpcy13cmFwcGVyJyk7XG5cbiAgZHJhd0NpcmN1bGFyR3JpZChheGlzR3JpZCwgcmFkaXVzLCBtYXhWYWx1ZSwgY29uZmlnKTtcblxuICBkcmF3QXhpcyhheGlzR3JpZCwgYXhpc05hbWVzLCByYWRpdXNTY2FsZSwgbWF4VmFsdWUsIGFuZ2xlU2xpY2UsIGNvbmZpZyk7XG5cbiAgY3JlYXRlTGVnZW5kKGcsIGNvbmZpZyk7XG5cbiAgZHJhd1JhZGFyQ2hhcnRCbG9icyhyYWRpdXNTY2FsZSwgYW5nbGVTbGljZSwgZywgZGF0YSwgY29uZmlnKTtcblxuICBhcHBlbmRJbnZpc2libGVUb29sdGlwQ2lyY2xlcyhnLCBkYXRhLCByYWRpdXNTY2FsZSwgYW5nbGVTbGljZSwgY29uZmlnKTtcblxuICByZXR1cm4gY29uZmlnO1xufTtcbiJdfQ==
|
|
307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkYXItY2hhcnQudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2xpZW50LWQzLWNoYXJ0cy9zcmMvbGliL3V0aWwvcmFkYXItY2hhcnQudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUd6QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUF1QixNQUFNLENBQUMsTUFBTSxDQUFxQjtJQUMzRixVQUFVLEVBQUUsRUFBRTtJQUNkLEtBQUssRUFBRSxHQUFHO0lBQ1YsTUFBTSxFQUFFLEdBQUc7SUFDWCxNQUFNLEVBQUU7UUFDTixHQUFHLEVBQUUsRUFBRTtRQUNQLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsRUFBRTtLQUNUO0lBQ0QsTUFBTSxFQUFFLENBQUM7SUFDVCxRQUFRLEVBQUUsQ0FBQztJQUNYLFVBQVUsRUFBRSxHQUFHO0lBQ2YsV0FBVyxFQUFFLElBQUk7SUFDakIsa0JBQWtCLEVBQUUsRUFBRTtJQUN0QixXQUFXLEVBQUUsSUFBSTtJQUNqQixTQUFTLEVBQUUsQ0FBQztJQUNaLGNBQWMsRUFBRSxHQUFHO0lBQ25CLFdBQVcsRUFBRSxDQUFDO0lBQ2QsWUFBWSxFQUFFLEtBQUs7SUFDbkIsa0JBQWtCLEVBQUUsR0FBRztJQUN2QixLQUFLLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7Q0FDNUMsQ0FBQyxDQUFDO0FBRUg7Ozs7O0dBS0c7QUFDSCxNQUFNLGVBQWUsR0FBRyxDQUFDLFNBQXFDLEVBQUUsTUFBMEIsRUFBRSxFQUFFO0lBQzVGLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLFNBQVMs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QztJQUV6RSxZQUFZLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRXhCLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUU5RCw2QkFBNkIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFeEUsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuXG5pbXBvcnQgeyBJUmFkYXJDaGFydERhdGFOb2RlLCBJUmFkYXJDaGFydE9wdGlvbnMsIFRSYWRhckNoYXJ0RGF0YSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmFkYXItY2hhcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IGdlbmVyYXRlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vY29uZmlndXJhdGlvbi51dGlsJztcblxuLyoqXG4gKiBUaGUgcmFkYXIgY2hhcnQgZGVmYXVsdCBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgZGVmYXVsdFJhZGFyQ2hhcnRDb25maWc6IElSYWRhckNoYXJ0T3B0aW9ucyA9IE9iamVjdC5mcmVlemUoPElSYWRhckNoYXJ0T3B0aW9ucz57XG4gIGNoYXJ0VGl0bGU6ICcnLFxuICB3aWR0aDogMzUwLFxuICBoZWlnaHQ6IDM1MCxcbiAgbWFyZ2luOiB7XG4gICAgdG9wOiA1MCxcbiAgICByaWdodDogNTAsXG4gICAgYm90dG9tOiA1MCxcbiAgICBsZWZ0OiA1MCxcbiAgfSxcbiAgbGV2ZWxzOiAzLCAvLyBob3cgbWFueSBsZXZlbHMgb3IgaW5uZXIgY2lyY2xlcyBzaG91bGQgdGhlcmUgYmUgZHJhd25cbiAgbWF4VmFsdWU6IDAsIC8vIHdoYXQgaXMgdGhlIHZhbHVlIHRoYXQgdGhlIGJpZ2dlc3QgY2lyY2xlIHdpbGwgcmVwcmVzZW50XG4gIGxpbmVGYWN0b3I6IDEuMSwgLy8gaG93IG11Y2ggZmFydGhlciB0aGFuIHRoZSByYWRpdXMgb2YgdGhlIG91dGVyIGNpcmNsZSBzaG91bGQgdGhlIGxpbmVzIGJlIHN0cmV0Y2hlZFxuICBsYWJlbEZhY3RvcjogMS4xNSwgLy8gaG93IG11Y2ggZmFydGhlciB0aGFuIHRoZSByYWRpdXMgb2YgdGhlIG91dGVyIGNpcmNsZSBzaG91bGQgdGhlIGxhYmVscyBiZSBwbGFjZWRcbiAgbGFiZWxUZXh0V3JhcFdpZHRoOiA2MCwgLy8gdGhlIG51bWJlciBvZiBwaXhlbHMgYWZ0ZXIgd2hpY2ggYSBsYWJlbCBuZWVkcyB0byBiZSBnaXZlbiBhIG5ldyBsaW5lXG4gIG9wYWNpdHlBcmVhOiAwLjM1LCAvLyB0aGUgb3BhY2l0eSBvZiB0aGUgYXJlYSBvZiB0aGUgYmxvYlxuICBkb3RSYWRpdXM6IDQsIC8vIHRoZSBzaXplIG9mIHRoZSBjb2xvcmVkIGNpcmNsZXMgb2YgZWFjaCBibG9nXG4gIG9wYWNpdHlDaXJjbGVzOiAwLjEsIC8vIHRoZSBvcGFjaXR5IG9mIHRoZSBjaXJjbGVzIG9mIGVhY2ggYmxvYlxuICBzdHJva2VXaWR0aDogMiwgLy8gdGhlIHdpZHRoIG9mIHRoZSBzdHJva2UgYXJvdW5kIGVhY2ggYmxvYlxuICByb3VuZFN0cm9rZXM6IGZhbHNlLCAvLyBpZiB0cnVlIHRoZSBhcmVhIGFuZCBzdHJva2Ugd2lsbCBmb2xsb3cgYSByb3VuZCBwYXRoIChjYXJkaW5hbC1jbG9zZWQpXG4gIHRyYW5zaXRpb25EdXJhdGlvbjogMjAwLFxuICBjb2xvcjogZDMuc2NhbGVPcmRpbmFsKGQzLnNjaGVtZUNhdGVnb3J5MTApLFxufSk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbnRhaW5lciBmb3IgdGhlIHJhZGFyIGNoYXJ0LlxuICogQHBhcmFtIGNvbnRhaW5lciB0aGUgY2hhcnQgY29udGFpbmVyXG4gKiBAcGFyYW0gY29uZmlnIHRoZSBjaGFydCBjb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyB0aGUgb2JqZWN0IHdpdGggdGhlIHN2ZyBlbGVtZW50IGFuZCB0aGUgZyBlbGVtZW50XG4gKi9cbmNvbnN0IGNyZWF0ZUNvbnRhaW5lciA9IChjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+LCBjb25maWc6IElSYWRhckNoYXJ0T3B0aW9ucykgPT4ge1xuICBjb25zdCBpZCA9IGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmlkID8/ICdyYWRhci0wJztcblxuICBkMy5zZWxlY3QoYCMke2lkfWApLnNlbGVjdCgnc3ZnJykucmVtb3ZlKCk7XG4gIGNvbnN0IHN2ZyA9IGQzXG4gICAgLnNlbGVjdChgIyR7aWR9YClcbiAgICAuYXBwZW5kKCdzdmcnKVxuICAgIC5hdHRyKCd3aWR0aCcsIGNvbmZpZy53aWR0aCArIGNvbmZpZy5tYXJnaW4ubGVmdCArIGNvbmZpZy5tYXJnaW4ucmlnaHQpXG4gICAgLmF0dHIoJ2hlaWdodCcsIGNvbmZpZy5oZWlnaHQgKyBjb25maWcubWFyZ2luLnRvcCArIGNvbmZpZy5tYXJnaW4uYm90dG9tKVxuICAgIC5hdHRyKCdjbGFzcycsIGlkKTtcbiAgY29uc3QgZyA9IHN2Z1xuICAgIC5hcHBlbmQoJ2cnKVxuICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKCR7Y29uZmlnLndpZHRoIC8gMiArIGNvbmZpZy5tYXJnaW4ubGVmdH0sJHtjb25maWcuaGVpZ2h0IC8gMiArIGNvbmZpZy5tYXJnaW4udG9wfSlgKTtcblxuICByZXR1cm4geyBzdmcsIGcgfTtcbn07XG5cbi8qKlxuICogRHJhd3MgdGhlIHJhZGFyIGNoYXJ0IGNpcmN1bGFyIGdyaWQuXG4gKiBAcGFyYW0gYXhpc0dyaWQgdGhlIGNoYXJ0IGF4aXMgZ3JpZFxuICogQHBhcmFtIHJhZGl1cyB0aGUgY2hhcnQgcmFkaXVzIHZhbHVlXG4gKiBAcGFyYW0gbWF4VmFsdWUgdGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNoYXJ0IGF4aXNcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgZHJhd0NpcmN1bGFyR3JpZCA9IChcbiAgYXhpc0dyaWQ6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LFxuICByYWRpdXM6IG51bWJlcixcbiAgbWF4VmFsdWU6IG51bWJlcixcbiAgY29uZmlnOiBJUmFkYXJDaGFydE9wdGlvbnMsXG4pID0+IHtcbiAgLy8gYmFja2dyb3VuZCBjaXJjbGVzXG4gIGF4aXNHcmlkXG4gICAgLnNlbGVjdEFsbCgnLmxldmVscycpXG4gICAgLmRhdGEoZDMucmFuZ2UoMSwgY29uZmlnLmxldmVscyArIDEpLnJldmVyc2UoKSlcbiAgICAuZW50ZXIoKVxuICAgIC5hcHBlbmQoJ2NpcmNsZScpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ2dyaWQtY2lyY2xlJylcbiAgICAuYXR0cigncicsIChkLCBpKSA9PiAocmFkaXVzIC8gY29uZmlnLmxldmVscykgKiBkKVxuICAgIC5zdHlsZSgnZmlsbCcsICcjQ0RDRENEJylcbiAgICAuc3R5bGUoJ3N0cm9rZScsICcjQ0RDRENEJylcbiAgICAuc3R5bGUoJ2ZpbGwtb3BhY2l0eScsIGNvbmZpZy5vcGFjaXR5Q2lyY2xlcylcbiAgICAuc3R5bGUoJ2ZpbHRlcicsICd1cmwoI2dsb3cpJyk7XG4gIC8vIHRleHQgaW5kaWNhdGluZyBhdCB3aGF0ICUgZWFjaCBsZXZlbCBpc1xuICBjb25zdCBheGlzR3JpZFggPSA0O1xuICBheGlzR3JpZFxuICAgIC5zZWxlY3RBbGwoJy5heGlzLWxhYmVsJylcbiAgICAuZGF0YShkMy5yYW5nZSgxLCBjb25maWcubGV2ZWxzICsgMSkucmV2ZXJzZSgpKVxuICAgIC5lbnRlcigpXG4gICAgLmFwcGVuZCgndGV4dCcpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ2F4aXMtbGFiZWwnKVxuICAgIC5hdHRyKCd4JywgYXhpc0dyaWRYKVxuICAgIC5hdHRyKCd5JywgZCA9PiAoLWQgKiByYWRpdXMpIC8gY29uZmlnLmxldmVscylcbiAgICAuYXR0cignZHknLCAnMC40ZW0nKVxuICAgIC5zdHlsZSgnZm9udC1zaXplJywgJzEwcHgnKVxuICAgIC5hdHRyKCdmaWxsJywgJyM3MzczNzMnKVxuICAgIC50ZXh0KChkLCBpKSA9PiAobWF4VmFsdWUgKiBkKSAvIGNvbmZpZy5sZXZlbHMpO1xufTtcblxuLyoqXG4gKiBXcmFwcyB0aGUgY2hhcnQgYXhpcyBsYWJlbHMgdGV4dC5cbiAqIEBwYXJhbSBzdmdUZXh0IHRoZSBzdmcgdGV4dCBlbGVtZW50c1xuICogQHBhcmFtIHdpZHRoIHRoZSBjaGFydCBheGlzIGxhYmVsIHdpZHRoXG4gKi9cbmNvbnN0IHdyYXBTdmdUZXh0ID0gKHN2Z1RleHQ6IGQzLlNlbGVjdGlvbjxTVkdUZXh0RWxlbWVudCwgc3RyaW5nLCBTVkdHRWxlbWVudCwgdW5rbm93bj4sIHdpZHRoOiBudW1iZXIpID0+IHtcbiAgc3ZnVGV4dC5lYWNoKGZ1bmN0aW9uICh0aGlzOiBTVkdUZXh0RWxlbWVudCkge1xuICAgIGNvbnN0IHRleHQgPSBkMy5zZWxlY3Q8U1ZHRWxlbWVudCwgc3RyaW5nPih0aGlzKTtcbiAgICBjb25zdCB3b3JkcyA9IHRleHQudGV4dCgpLnNwbGl0KC9cXHMrLykucmV2ZXJzZSgpO1xuICAgIGlmICh3b3Jkcy5sZW5ndGggPiAxKSB7XG4gICAgICBsZXQgbGluZTogc3RyaW5nW10gPSBbXTtcbiAgICAgIGxldCBsaW5lTnVtYmVyID0gMDtcbiAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSAxLjQ7XG4gICAgICBjb25zdCB5ID0gdGV4dC5hdHRyKCd5Jyk7XG4gICAgICBjb25zdCB4ID0gdGV4dC5hdHRyKCd4Jyk7XG4gICAgICBjb25zdCBkeSA9IHBhcnNlRmxvYXQodGV4dC5hdHRyKCdkeScpID8/IDApO1xuICAgICAgbGV0IHRzcGFuID0gdGV4dC50ZXh0KG51bGwpLmFwcGVuZCgndHNwYW4nKS5hdHRyKCd4JywgeCkuYXR0cigneScsIHkpLmF0dHIoJ2R5JywgYCR7ZHl9ZW1gKTtcblxuICAgICAgbGV0IHdvcmQgPSB3b3Jkcy5wb3AoKTtcblxuICAgICAgd2hpbGUgKHR5cGVvZiB3b3JkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBsaW5lLnB1c2god29yZCA/PyAnJyk7XG4gICAgICAgIHRzcGFuLnRleHQobGluZS5qb2luKCcgJykpO1xuICAgICAgICBpZiAoKHRzcGFuLm5vZGUoKT8uZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCkgPz8gMCkgPiB3aWR0aCkge1xuICAgICAgICAgIGxpbmUucG9wKCk7XG4gICAgICAgICAgdHNwYW4udGV4dChsaW5lLmpvaW4oJyAnKSk7XG4gICAgICAgICAgbGluZSA9IFt3b3JkID8/ICcnXTtcbiAgICAgICAgICBsaW5lTnVtYmVyICs9IDE7XG4gICAgICAgICAgdHNwYW4gPSB0ZXh0XG4gICAgICAgICAgICAuYXBwZW5kKCd0c3BhbicpXG4gICAgICAgICAgICAuYXR0cigneCcsIHgpXG4gICAgICAgICAgICAuYXR0cigneScsIHkpXG4gICAgICAgICAgICAuYXR0cignZHknLCBgJHtsaW5lTnVtYmVyICogbGluZUhlaWdodCArIGR5fWVtYClcbiAgICAgICAgICAgIC50ZXh0KHdvcmQgPz8gJycpO1xuICAgICAgICB9XG4gICAgICAgIHdvcmQgPSB3b3Jkcy5wb3AoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBsZWdlbmQuXG4gKiBAcGFyYW0gZyB0aGUgc3ZnIGcgZWxlbWVudFxuICogQHBhcmFtIGNvbmZpZyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICovXG5jb25zdCBjcmVhdGVMZWdlbmQgPSAoZzogZDMuU2VsZWN0aW9uPFNWR0dFbGVtZW50LCB1bmtub3duLCBIVE1MRWxlbWVudCwgdW5rbm93bj4sIGNvbmZpZzogSVJhZGFyQ2hhcnRPcHRpb25zKSA9PiB7XG4gIGlmIChjb25maWcuY2hhcnRUaXRsZSAhPT0gJycpIHtcbiAgICBnLmFwcGVuZCgnZycpXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgtJHtjb25maWcud2lkdGggLyAyICsgY29uZmlnLm1hcmdpbi5sZWZ0IC8gMn0sIC0ke2NvbmZpZy5oZWlnaHQgLyAyICsgY29uZmlnLm1hcmdpbi50b3AgLyAyfSlgKVxuICAgICAgLmFwcGVuZCgndGV4dCcpXG4gICAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsICcxMnB4JylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdsZWdlbmQnKVxuICAgICAgLnRleHQoY29uZmlnLmNoYXJ0VGl0bGUpO1xuICB9XG59O1xuXG4vKipcbiAqIERyYXdzIHRoZSByYWRhciBjaGFydCBheGlzLlxuICogQHBhcmFtIGF4aXNHcmlkIHRoZSBjaGFydCBheGlzIGdyaWRcbiAqIEBwYXJhbSBheGlzTmFtZXMgdGhlIGNoYXJ0IGF4aXMgbmFtZXNcbiAqIEBwYXJhbSByYWRpdXNTY2FsZSB0aGUgY2hhcnQgcmFkaXVzIHNjYWxlXG4gKiBAcGFyYW0gbWF4VmFsdWUgdGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNoYXJ0IGF4aXNcbiAqIEBwYXJhbSBhbmdsZVNsaWNlIHRoZSBjaGFydCBhbmdsZSBzbGljZSB2YWx1ZVxuICogQHBhcmFtIGNvbmZpZyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICovXG5jb25zdCBkcmF3QXhpcyA9IChcbiAgYXhpc0dyaWQ6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LFxuICBheGlzTmFtZXM6IHN0cmluZ1tdLFxuICByYWRpdXNTY2FsZTogZDMuU2NhbGVMaW5lYXI8bnVtYmVyLCBudW1iZXI+LFxuICBtYXhWYWx1ZTogbnVtYmVyLFxuICBhbmdsZVNsaWNlOiBudW1iZXIsXG4gIGNvbmZpZzogSVJhZGFyQ2hhcnRPcHRpb25zLFxuKSA9PiB7XG4gIC8vIGNyZWF0ZSB0aGUgc3RyYWlnaHQgbGluZXMgcmFkaWF0aW5nIG91dHdhcmQgZnJvbSB0aGUgY2VudGVyXG4gIGNvbnN0IGF4aXMgPSBheGlzR3JpZC5zZWxlY3RBbGwoJy5heGlzJykuZGF0YShheGlzTmFtZXMpLmVudGVyKCkuYXBwZW5kKCdnJykuYXR0cignY2xhc3MnLCAnYXhpcycpO1xuICAvLyBhcHBlbmQgdGhlIGxpbmVzXG4gIGF4aXNcbiAgICAuYXBwZW5kKCdsaW5lJylcbiAgICAuYXR0cigneDEnLCAwKVxuICAgIC5hdHRyKCd5MScsIDApXG4gICAgLmF0dHIoJ3gyJywgKGQsIGkpID0+IHJhZGl1c1NjYWxlKG1heFZhbHVlICogY29uZmlnLmxpbmVGYWN0b3IpICogTWF0aC5jb3MoYW5nbGVTbGljZSAqIGkgLSBNYXRoLlBJIC8gMikpXG4gICAgLmF0dHIoJ3kyJywgKGQsIGkpID0+IHJhZGl1c1NjYWxlKG1heFZhbHVlICogY29uZmlnLmxpbmVGYWN0b3IpICogTWF0aC5zaW4oYW5nbGVTbGljZSAqIGkgLSBNYXRoLlBJIC8gMikpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ2xpbmUnKVxuICAgIC5zdHlsZSgnc3Ryb2tlJywgJ3doaXRlJylcbiAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsICcycHgnKTtcbiAgLy8gYXBwZW5kIHRoZSBsYWJlbHMgYXQgZWFjaCBheGlzXG4gIGF4aXNcbiAgICAuYXBwZW5kKCd0ZXh0JylcbiAgICAuYXR0cignY2xhc3MnLCAnbGVnZW5kJylcbiAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsICcxMXB4JylcbiAgICAuYXR0cigndGV4dC1hbmNob3InLCAnbWlkZGxlJylcbiAgICAuYXR0cignZHknLCAnMC4zNWVtJylcbiAgICAuYXR0cigneCcsIChkLCBpKSA9PiByYWRpdXNTY2FsZShtYXhWYWx1ZSAqIGNvbmZpZy5sYWJlbEZhY3RvcikgKiBNYXRoLmNvcyhhbmdsZVNsaWNlICogaSAtIE1hdGguUEkgLyAyKSlcbiAgICAuYXR0cigneScsIChkLCBpKSA9PiByYWRpdXNTY2FsZShtYXhWYWx1ZSAqIGNvbmZpZy5sYWJlbEZhY3RvcikgKiBNYXRoLnNpbihhbmdsZVNsaWNlICogaSAtIE1hdGguUEkgLyAyKSlcbiAgICAudGV4dChkID0+IGQpXG4gICAgLmNhbGwod3JhcFN2Z1RleHQsIGNvbmZpZy5sYWJlbFRleHRXcmFwV2lkdGgpO1xufTtcblxuLyoqXG4gKiBEcmF3cyB0aGUgcmFkYXIgY2hhcnQgYmxvYnMuXG4gKiBAcGFyYW0gcmFkaXVzU2NhbGUgdGhlIGNoYXJ0IHJhZGl1cyBzY2FsZVxuICogQHBhcmFtIGFuZ2xlU2xpY2UgdGhlIGNoYXJ0IGFuZ2xlIHNsaWNlIHZhbHVlXG4gKiBAcGFyYW0gZyB0aGUgc3ZnIGcgZWxlbWVudFxuICogQHBhcmFtIGRhdGEgdGhlIGNoYXJ0IGRhdGFcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgZHJhd1JhZGFyQ2hhcnRCbG9icyA9IChcbiAgcmFkaXVzU2NhbGU6IGQzLlNjYWxlTGluZWFyPG51bWJlciwgbnVtYmVyPixcbiAgYW5nbGVTbGljZTogbnVtYmVyLFxuICBnOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPixcbiAgZGF0YTogVFJhZGFyQ2hhcnREYXRhLFxuICBjb25maWc6IElSYWRhckNoYXJ0T3B0aW9ucyxcbikgPT4ge1xuICAvLyB0aGUgcmFkaWFsIGxpbmUgZnVuY3Rpb25cbiAgY29uc3QgcmFkYXJMaW5lID0gZDNcbiAgICAubGluZVJhZGlhbDxJUmFkYXJDaGFydERhdGFOb2RlPigpXG4gICAgLnJhZGl1cyhkID0+IHJhZGl1c1NjYWxlKGQudmFsdWUpKVxuICAgIC5hbmdsZSgoZCwgaSkgPT4gaSAqIGFuZ2xlU2xpY2UpO1xuICAvLyBjcmVhdGUgYSB3cmFwcGVyIGZvciB0aGUgYmxvYnNcbiAgY29uc3QgYmxvYldyYXBwZXIgPSBnLnNlbGVjdEFsbCgnLnJhZGFyLXdyYXBwZXInKS5kYXRhKGRhdGEpLmVudGVyKCkuYXBwZW5kKCdnJykuYXR0cignY2xhc3MnLCAncmFkYXItd3JhcHBlcicpO1xuICAvLyBhcHBlbmQgdGhlIGJhY2tncm91bmRzXG4gIGJsb2JXcmFwcGVyXG4gICAgLmFwcGVuZCgncGF0aCcpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ3JhZGFyLWFyZWEnKVxuICAgIC5hdHRyKCdkJywgKGQsIGkpID0+IHJhZGFyTGluZShkKSlcbiAgICAuc3R5bGUoJ2ZpbGwnLCAoZCwgaSkgPT4gY29uZmlnLmNvbG9yKGkudG9TdHJpbmcoKSkpXG4gICAgLnN0eWxlKCdmaWxsLW9wYWNpdHknLCBjb25maWcub3BhY2l0eUFyZWEpXG4gICAgLm9uKCdtb3VzZW92ZXInLCBmdW5jdGlvbiAoZCwgaSkge1xuICAgICAgLy8gZGltIGFsbCBibG9ic1xuICAgICAgY29uc3QgcmFkYXJBcmVhRmlsbE9wYWNpdHkgPSAwLjE7XG4gICAgICBkMy5zZWxlY3RBbGwoJy5yYWRhci1hcmVhJykudHJhbnNpdGlvbigpLmR1cmF0aW9uKGNvbmZpZy50cmFuc2l0aW9uRHVyYXRpb24pLnN0eWxlKCdmaWxsLW9wYWNpdHknLCByYWRhckFyZWFGaWxsT3BhY2l0eSk7XG4gICAgICAvLyBicmluZyBiYWNrIHRoZSBob3ZlcmVkIG92ZXIgYmxvYlxuICAgICAgY29uc3QgZmlsbE9wYWNpdHkgPSAwLjc7XG4gICAgICBkMy5zZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKGNvbmZpZy50cmFuc2l0aW9uRHVyYXRpb24pLnN0eWxlKCdmaWxsLW9wYWNpdHknLCBmaWxsT3BhY2l0eSk7XG4gICAgfSlcbiAgICAub24oJ21vdXNlb3V0JywgKCkgPT4ge1xuICAgICAgLy8gYnJpbmcgYmFjayBhbGwgYmxvYnNcbiAgICAgIGQzLnNlbGVjdEFsbCgnLnJhZGFyLWFyZWEnKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oY29uZmlnLnRyYW5zaXRpb25EdXJhdGlvbikuc3R5bGUoJ2ZpbGwtb3BhY2l0eScsIGNvbmZpZy5vcGFjaXR5QXJlYSk7XG4gICAgfSk7XG4gIC8vIGNyZWF0ZSB0aGUgb3V0bGluZXNcbiAgYmxvYldyYXBwZXJcbiAgICAuYXBwZW5kKCdwYXRoJylcbiAgICAuYXR0cignY2xhc3MnLCAncmFkYXItc3Ryb2tlJylcbiAgICAuYXR0cignZCcsIChkLCBpKSA9PiByYWRhckxpbmUoZCkpXG4gICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCBgJHtjb25maWcuc3Ryb2tlV2lkdGh9cHhgKVxuICAgIC5zdHlsZSgnc3Ryb2tlJywgKGQsIGkpID0+IGNvbmZpZy5jb2xvcihpLnRvU3RyaW5nKCkpKVxuICAgIC5zdHlsZSgnZmlsbCcsICdub25lJylcbiAgICAuc3R5bGUoJ2ZpbHRlcicsICd1cmwoI2dsb3cpJyk7XG4gIC8vIGFwcGVuZCB0aGUgY2lyY2xlc1xuICBjb25zdCBibG9iV3JhcHBlckZpbGxPcGFjaXR5ID0gMC44O1xuICBibG9iV3JhcHBlclxuICAgIC5zZWxlY3RBbGwoJy5yYWRhci1jaXJjbGUnKVxuICAgIC5kYXRhKChkLCBpKSA9PiBkKVxuICAgIC5lbnRlcigpXG4gICAgLmFwcGVuZCgnY2lyY2xlJylcbiAgICAuYXR0cignY2xhc3MnLCAncmFkYXItY2lyY2xlJylcbiAgICAuYXR0cigncicsIGNvbmZpZy5kb3RSYWRpdXMpXG4gICAgLmF0dHIoJ2N4JywgKGQsIGkpID0+IHJhZGl1c1NjYWxlKGQudmFsdWUpICogTWF0aC5jb3MoYW5nbGVTbGljZSAqIGkgLSBNYXRoLlBJIC8gMikpXG4gICAgLmF0dHIoJ2N5JywgKGQsIGkpID0+IHJhZGl1c1NjYWxlKGQudmFsdWUpICogTWF0aC5zaW4oYW5nbGVTbGljZSAqIGkgLSBNYXRoLlBJIC8gMikpXG4gICAgLnN0eWxlKCdmaWxsJywgKGQsIGksIGopID0+IGNvbmZpZy5jb2xvcihqLnRvU3RyaW5nKCkpKVxuICAgIC5zdHlsZSgnZmlsbC1vcGFjaXR5JywgYmxvYldyYXBwZXJGaWxsT3BhY2l0eSk7XG59O1xuXG4vKipcbiAqIEFwcGVuZHMgdGhlIGludmlzaWJsZSB0b29sdGlwIGNpcmNsZXMuXG4gKiBAcGFyYW0gZyB0aGUgc3ZnIGcgZWxlbWVudFxuICogQHBhcmFtIGRhdGEgdGhlIGNoYXJ0IGRhdGFcbiAqIEBwYXJhbSByYWRpdXNTY2FsZSB0aGUgY2hhcnQgcmFkaXVzIHNjYWxlXG4gKiBAcGFyYW0gYW5nbGVTbGljZSB0aGUgY2hhcnQgYW5nbGUgc2xpY2UgdmFsdWVcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgYXBwZW5kSW52aXNpYmxlVG9vbHRpcENpcmNsZXMgPSAoXG4gIGc6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LFxuICBkYXRhOiBUUmFkYXJDaGFydERhdGEsXG4gIHJhZGl1c1NjYWxlOiBkMy5TY2FsZUxpbmVhcjxudW1iZXIsIG51bWJlcj4sXG4gIGFuZ2xlU2xpY2U6IG51bWJlcixcbiAgY29uZmlnOiBJUmFkYXJDaGFydE9wdGlvbnMsXG4pID0+IHtcbiAgLy8gd3JhcHBlciBmb3IgdGhlIGludmlzaWJsZSBjaXJjbGVzIG9uIHRvcFxuICBjb25zdCBibG9iQ2lyY2xlV3JhcHBlciA9IGcuc2VsZWN0QWxsKCcucmFkYXItY2lyY2xlLXdyYXBwZXInKS5kYXRhKGRhdGEpLmVudGVyKCkuYXBwZW5kKCdnJykuYXR0cignY2xhc3MnLCAncmFkYXItY2lyY2xlLXdyYXBwZXInKTtcbiAgLy8gYXBwZW5kIGEgc2V0IG9mIGludmlzaWJsZSBjaXJjbGVzIG9uIHRvcCBmb3IgdGhlIG1vdXNlb3ZlciBwb3AtdXBcbiAgY29uc3QgYmxvYkNpcmNsZVdyYXBwZXJSYWRpdXNNdWx0aXBsaWVyID0gMS41O1xuICBibG9iQ2lyY2xlV3JhcHBlclxuICAgIC5zZWxlY3RBbGw8U1ZHRWxlbWVudCwgSVJhZGFyQ2hhcnREYXRhTm9kZT4oJy5yYWRhci1pbnZpc2libGUtY2lyY2xlJylcbiAgICAuZGF0YSgoZCwgaSkgPT4gZClcbiAgICAuZW50ZXIoKVxuICAgIC5hcHBlbmQoJ2NpcmNsZScpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ3JhZGFyLWludmlzaWJsZS1jaXJjbGUnKVxuICAgIC5hdHRyKCdyJywgY29uZmlnLmRvdFJhZGl1cyAqIGJsb2JDaXJjbGVXcmFwcGVyUmFkaXVzTXVsdGlwbGllcilcbiAgICAuYXR0cignY3gnLCAoZCwgaSkgPT4gcmFkaXVzU2NhbGUoZC52YWx1ZSkgKiBNYXRoLmNvcyhhbmdsZVNsaWNlICogaSAtIE1hdGguUEkgLyAyKSlcbiAgICAuYXR0cignY3knLCAoZCwgaSkgPT4gcmFkaXVzU2NhbGUoZC52YWx1ZSkgKiBNYXRoLnNpbihhbmdsZVNsaWNlICogaSAtIE1hdGguUEkgLyAyKSlcbiAgICAuc3R5bGUoJ2ZpbGwnLCAnbm9uZScpXG4gICAgLnN0eWxlKCdwb2ludGVyLWV2ZW50cycsICdhbGwnKVxuICAgIC5vbignbW91c2VvdmVyJywgZnVuY3Rpb24gKGV2ZW50OiBNb3VzZUV2ZW50LCBpKSB7XG4gICAgICBjb25zdCBtb2RpZmllciA9IDEwO1xuICAgICAgY29uc3QgbmV3WCA9IHBhcnNlRmxvYXQoZDMuc2VsZWN0KHRoaXMpLmF0dHIoJ2N4JykpIC0gbW9kaWZpZXI7XG4gICAgICBjb25zdCBuZXdZID0gcGFyc2VGbG9hdChkMy5zZWxlY3QodGhpcykuYXR0cignY3knKSkgLSBtb2RpZmllcjtcblxuICAgICAgY29uc3Qgbm9kZURhdGEgPSAoZXZlbnQudGFyZ2V0IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgSVJhZGFyQ2hhcnREYXRhTm9kZT4pWydfX2RhdGFfXyddO1xuICAgICAgY29uc3QgdG9vbHRpcFRleHQgPSBgJHtub2RlRGF0YS52YWx1ZX0gJHtub2RlRGF0YS51bml0fWA7XG4gICAgICBnLmFwcGVuZCgndGV4dCcpXG4gICAgICAgIC5hdHRyKCdjbGFzcycsICdjaGFydC10b29sdGlwJylcbiAgICAgICAgLnN0eWxlKCdvcGFjaXR5JywgMClcbiAgICAgICAgLmF0dHIoJ3gnLCBuZXdYKVxuICAgICAgICAuYXR0cigneScsIG5ld1kpXG4gICAgICAgIC50ZXh0KHRvb2x0aXBUZXh0KVxuICAgICAgICAudHJhbnNpdGlvbigpXG4gICAgICAgIC5kdXJhdGlvbihjb25maWcudHJhbnNpdGlvbkR1cmF0aW9uKVxuICAgICAgICAuc3R5bGUoJ29wYWNpdHknLCAxKTtcbiAgICB9KVxuICAgIC5vbignbW91c2VvdXQnLCAoKSA9PiB7XG4gICAgICBkMy5zZWxlY3RBbGwoJy5jaGFydC10b29sdGlwJylcbiAgICAgICAgLnRyYW5zaXRpb24oKVxuICAgICAgICAuZHVyYXRpb24oY29uZmlnLnRyYW5zaXRpb25EdXJhdGlvbiAvIDIpXG4gICAgICAgIC5zdHlsZSgnb3BhY2l0eScsIDApXG4gICAgICAgIC5yZW1vdmUoKTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogRHJhd3MgdGhlIHJhZGFyIGNoYXJ0LlxuICogQHBhcmFtIGNvbnRhaW5lciB0aGUgY2hhcnQgY29udGFpbmVyXG4gKiBAcGFyYW0gZGF0YSB0aGUgY2hhcnQgZGF0YVxuICogQHBhcmFtIG9wdGlvbnMgdGhlIGNoYXJ0IG9wdGlvbnNcbiAqIEByZXR1cm5zIHRoZSBoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGRyYXdSYWRhckNoYXJ0ID0gKGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4sIGRhdGE6IFRSYWRhckNoYXJ0RGF0YSwgb3B0aW9ucz86IFBhcnRpYWw8SVJhZGFyQ2hhcnRPcHRpb25zPikgPT4ge1xuICBjb25zdCBjb25maWc6IElSYWRhckNoYXJ0T3B0aW9ucyA9IGdlbmVyYXRlQ29uZmlndXJhdGlvbjxJUmFkYXJDaGFydE9wdGlvbnM+KGRlZmF1bHRSYWRhckNoYXJ0Q29uZmlnLCBvcHRpb25zLCB7fSk7XG5cbiAgY29uc3QgbWF4VmFsdWUgPSBNYXRoLm1heChjb25maWcubWF4VmFsdWUsIGQzLm1heChkYXRhLCBpID0+IGQzLm1heChpLm1hcChvID0+IG8udmFsdWUpKSkgPz8gMCk7XG4gIGNvbnN0IGF4aXNOYW1lcyA9IGRhdGFbMF0ubWFwKChpLCBqKSA9PiBpLmF4aXMpO1xuICBjb25zdCB0b3RhbEF4aXMgPSBheGlzTmFtZXMubGVuZ3RoO1xuICBjb25zdCByYWRpdXMgPSBNYXRoLm1pbihjb25maWcud2lkdGggLyAyIC0gY29uZmlnLm1hcmdpbi5sZWZ0IC8gMiwgY29uZmlnLmhlaWdodCAvIDIgLSBjb25maWcubWFyZ2luLnRvcCAvIDIpO1xuICBjb25zdCBhbmdsZVNsaWNlID0gKE1hdGguUEkgKiAyKSAvIHRvdGFsQXhpcztcbiAgY29uc3QgcmFkaXVzU2NhbGUgPSBkMy5zY2FsZUxpbmVhcihbMCwgcmFkaXVzXSkuZG9tYWluKFswLCBtYXhWYWx1ZV0pO1xuXG4gIGNvbnN0IHsgZyB9ID0gY3JlYXRlQ29udGFpbmVyKGNvbnRhaW5lciwgY29uZmlnKTtcblxuICAvLyBmaWx0ZXIgZm9yIHRoZSBvdXRzaWRlIGdsb3dcbiAgY29uc3QgZmlsdGVyID0gZy5hcHBlbmQoJ2RlZnMnKS5hcHBlbmQoJ2ZpbHRlcicpLmF0dHIoJ2lkJywgJ2dsb3cnKTtcbiAgZmlsdGVyLmFwcGVuZCgnZmVHYXVzc2lhbkJsdXInKS5hdHRyKCdzdGREZXZpYXRpb24nLCAnMi41JykuYXR0cigncmVzdWx0JywgJ2NvbG9yZWRCbHVyJyk7XG4gIGNvbnN0IGZlTWVyZ2UgPSBmaWx0ZXIuYXBwZW5kKCdmZU1lcmdlJyk7XG4gIGZlTWVyZ2UuYXBwZW5kKCdmZU1lcmdlTm9kZScpLmF0dHIoJ2luJywgJ2NvbG9yZWRCbHVyJyk7XG4gIGZlTWVyZ2UuYXBwZW5kKCdmZU1lcmdlTm9kZScpLmF0dHIoJ2luJywgJ1NvdXJjZUdyYXBoaWMnKTtcblxuICBjb25zdCBheGlzR3JpZCA9IGcuYXBwZW5kKCdnJykuYXR0cignY2xhc3MnLCAnYXhpcy13cmFwcGVyJyk7XG5cbiAgZHJhd0NpcmN1bGFyR3JpZChheGlzR3JpZCwgcmFkaXVzLCBtYXhWYWx1ZSwgY29uZmlnKTtcblxuICBkcmF3QXhpcyhheGlzR3JpZCwgYXhpc05hbWVzLCByYWRpdXNTY2FsZSwgbWF4VmFsdWUsIGFuZ2xlU2xpY2UsIGNvbmZpZyk7XG5cbiAgY3JlYXRlTGVnZW5kKGcsIGNvbmZpZyk7XG5cbiAgZHJhd1JhZGFyQ2hhcnRCbG9icyhyYWRpdXNTY2FsZSwgYW5nbGVTbGljZSwgZywgZGF0YSwgY29uZmlnKTtcblxuICBhcHBlbmRJbnZpc2libGVUb29sdGlwQ2lyY2xlcyhnLCBkYXRhLCByYWRpdXNTY2FsZSwgYW5nbGVTbGljZSwgY29uZmlnKTtcblxuICByZXR1cm4gY29uZmlnO1xufTtcbiJdfQ==
|
|
@@ -754,7 +754,10 @@ const onMouseOver = (self, d, g, config) => {
|
|
|
754
754
|
.style('font-size', '11px')
|
|
755
755
|
.attr('dx', () => (config.width - config.margin.left - config.margin.right) / tooltipShift)
|
|
756
756
|
.attr('dy', () => tooltipDy)
|
|
757
|
-
.text(() => `${d.value} (${new Date(d.timestamp).toUTCString()})`)
|
|
757
|
+
.text(() => `${d.value} (${new Date(d.timestamp).toUTCString()})`)
|
|
758
|
+
.transition()
|
|
759
|
+
.duration(config.transitionDuration)
|
|
760
|
+
.style('opacity', 1);
|
|
758
761
|
};
|
|
759
762
|
/**
|
|
760
763
|
* The mouse out event handler.
|
|
@@ -765,7 +768,11 @@ const onMouseOut = (self, config) => {
|
|
|
765
768
|
const duration = 400;
|
|
766
769
|
d3.select(self).attr('class', 'dot');
|
|
767
770
|
d3.select(self).transition().duration(duration).attr('r', config.dotRadius);
|
|
768
|
-
d3.selectAll('.chart-tooltip')
|
|
771
|
+
d3.selectAll('.chart-tooltip')
|
|
772
|
+
.transition()
|
|
773
|
+
.duration(config.transitionDuration / 2)
|
|
774
|
+
.style('opacity', 0)
|
|
775
|
+
.remove();
|
|
769
776
|
};
|
|
770
777
|
/**
|
|
771
778
|
* Draws the chart lines, dots, and sets the mouse pointer events.
|
|
@@ -903,7 +910,6 @@ const drawPieChart = (container, data, options) => {
|
|
|
903
910
|
const pie = d3.pie().value(datum => datum.y);
|
|
904
911
|
const radius = Math.min(config.width, config.height) / 2;
|
|
905
912
|
const arc = d3.arc().innerRadius(config.innerRadius).outerRadius(radius);
|
|
906
|
-
const tooltip = g.append('text').attr('class', 'chart-tooltip').style('opacity', 0);
|
|
907
913
|
const arcs = g
|
|
908
914
|
.selectAll('arc')
|
|
909
915
|
.data(pie(data))
|
|
@@ -912,16 +918,12 @@ const drawPieChart = (container, data, options) => {
|
|
|
912
918
|
.attr('class', 'arc')
|
|
913
919
|
.on('mouseover', function (event, d) {
|
|
914
920
|
this.style.opacity = '0.8';
|
|
915
|
-
const modifier = 10;
|
|
916
|
-
const x = parseFloat(d3.select(this).attr('cx')) - modifier;
|
|
917
|
-
const y = parseFloat(d3.select(this).attr('cy')) - modifier;
|
|
918
921
|
const tooltipText = `${d.data.key}: ${d.data.y}`;
|
|
919
|
-
|
|
922
|
+
g.append('text')
|
|
920
923
|
.attr('class', 'chart-tooltip')
|
|
921
|
-
.
|
|
922
|
-
.attr('y', y)
|
|
924
|
+
.style('opacity', 0)
|
|
923
925
|
.attr('dx', -config.width / (2 * 2 * 2))
|
|
924
|
-
.attr('dy',
|
|
926
|
+
.attr('dy', config.height / 2 + config.margin.top)
|
|
925
927
|
.text(tooltipText)
|
|
926
928
|
.transition()
|
|
927
929
|
.duration(config.transitionDuration)
|
|
@@ -929,7 +931,11 @@ const drawPieChart = (container, data, options) => {
|
|
|
929
931
|
})
|
|
930
932
|
.on('mouseout', function (event, d) {
|
|
931
933
|
this.style.opacity = 'unset';
|
|
932
|
-
|
|
934
|
+
d3.selectAll('.chart-tooltip')
|
|
935
|
+
.transition()
|
|
936
|
+
.duration(config.transitionDuration / 2)
|
|
937
|
+
.style('opacity', 0)
|
|
938
|
+
.remove();
|
|
933
939
|
});
|
|
934
940
|
arcs
|
|
935
941
|
.append('path')
|
|
@@ -947,6 +953,7 @@ const drawPieChart = (container, data, options) => {
|
|
|
947
953
|
.attr('text-anchor', 'middle')
|
|
948
954
|
.attr('dy', textDy)
|
|
949
955
|
.attr('transform', d => `translate(${label.centroid(d)})`)
|
|
956
|
+
.style('font-size', '12px')
|
|
950
957
|
.text(d => d.data.y);
|
|
951
958
|
}
|
|
952
959
|
return config;
|
|
@@ -1189,8 +1196,6 @@ const drawRadarChartBlobs = (radiusScale, angleSlice, g, data, config) => {
|
|
|
1189
1196
|
const appendInvisibleTooltipCircles = (g, data, radiusScale, angleSlice, config) => {
|
|
1190
1197
|
// wrapper for the invisible circles on top
|
|
1191
1198
|
const blobCircleWrapper = g.selectAll('.radar-circle-wrapper').data(data).enter().append('g').attr('class', 'radar-circle-wrapper');
|
|
1192
|
-
// set up the small tooltip for when you hover over a circle
|
|
1193
|
-
const tooltip = g.append('text').attr('class', 'chart-tooltip').style('opacity', 0);
|
|
1194
1199
|
// append a set of invisible circles on top for the mouseover pop-up
|
|
1195
1200
|
const blobCircleWrapperRadiusMultiplier = 1.5;
|
|
1196
1201
|
blobCircleWrapper
|
|
@@ -1210,10 +1215,22 @@ const appendInvisibleTooltipCircles = (g, data, radiusScale, angleSlice, config)
|
|
|
1210
1215
|
const newY = parseFloat(d3.select(this).attr('cy')) - modifier;
|
|
1211
1216
|
const nodeData = event.target['__data__'];
|
|
1212
1217
|
const tooltipText = `${nodeData.value} ${nodeData.unit}`;
|
|
1213
|
-
|
|
1218
|
+
g.append('text')
|
|
1219
|
+
.attr('class', 'chart-tooltip')
|
|
1220
|
+
.style('opacity', 0)
|
|
1221
|
+
.attr('x', newX)
|
|
1222
|
+
.attr('y', newY)
|
|
1223
|
+
.text(tooltipText)
|
|
1224
|
+
.transition()
|
|
1225
|
+
.duration(config.transitionDuration)
|
|
1226
|
+
.style('opacity', 1);
|
|
1214
1227
|
})
|
|
1215
1228
|
.on('mouseout', () => {
|
|
1216
|
-
|
|
1229
|
+
d3.selectAll('.chart-tooltip')
|
|
1230
|
+
.transition()
|
|
1231
|
+
.duration(config.transitionDuration / 2)
|
|
1232
|
+
.style('opacity', 0)
|
|
1233
|
+
.remove();
|
|
1217
1234
|
});
|
|
1218
1235
|
};
|
|
1219
1236
|
/**
|
|
@@ -1318,10 +1335,10 @@ class AppBarChartComponent {
|
|
|
1318
1335
|
this.drawChart();
|
|
1319
1336
|
}
|
|
1320
1337
|
}
|
|
1321
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
|
1322
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.
|
|
1338
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AppBarChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1339
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: AppBarChartComponent, selector: "app-bar-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1323
1340
|
}
|
|
1324
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
|
1341
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AppBarChartComponent, decorators: [{
|
|
1325
1342
|
type: Component,
|
|
1326
1343
|
args: [{ selector: 'app-bar-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"] }]
|
|
1327
1344
|
}], ctorParameters: function () { return [{ type: Document, decorators: [{
|
|
@@ -1404,10 +1421,10 @@ class AppPieChartComponent {
|
|
|
1404
1421
|
this.drawChart();
|
|
1405
1422
|
}
|
|
1406
1423
|
}
|
|
1407
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
|
1408
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.
|
|
1424
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AppPieChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1425
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: AppPieChartComponent, selector: "app-pie-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host canvas{width:auto!important;height:150px}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1409
1426
|
}
|
|
1410
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
|
1427
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AppPieChartComponent, decorators: [{
|
|
1411
1428
|
type: Component,
|
|
1412
1429
|
args: [{ selector: 'app-pie-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host canvas{width:auto!important;height:150px}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"] }]
|
|
1413
1430
|
}], ctorParameters: function () { return [{ type: Document, decorators: [{
|
|
@@ -1501,10 +1518,10 @@ class AppRadarChartComponent {
|
|
|
1501
1518
|
this.drawChart();
|
|
1502
1519
|
}
|
|
1503
1520
|
}
|
|
1504
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
|
1505
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.
|
|
1521
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AppRadarChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1522
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: AppRadarChartComponent, selector: "app-radar-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1506
1523
|
}
|
|
1507
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
|
1524
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AppRadarChartComponent, decorators: [{
|
|
1508
1525
|
type: Component,
|
|
1509
1526
|
args: [{ selector: 'app-radar-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"] }]
|
|
1510
1527
|
}], ctorParameters: function () { return [{ type: Document, decorators: [{
|
|
@@ -1589,10 +1606,10 @@ class AppForceDirectedChartComponent {
|
|
|
1589
1606
|
this.drawChart();
|
|
1590
1607
|
}
|
|
1591
1608
|
}
|
|
1592
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
|
1593
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.
|
|
1609
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AppForceDirectedChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1610
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: AppForceDirectedChartComponent, selector: "app-force-directed-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1594
1611
|
}
|
|
1595
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
|
1612
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AppForceDirectedChartComponent, decorators: [{
|
|
1596
1613
|
type: Component,
|
|
1597
1614
|
args: [{ selector: 'app-force-directed-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"] }]
|
|
1598
1615
|
}], ctorParameters: function () { return [{ type: Document, decorators: [{
|
|
@@ -1676,10 +1693,10 @@ class AppLineChartComponent {
|
|
|
1676
1693
|
this.drawChart();
|
|
1677
1694
|
}
|
|
1678
1695
|
}
|
|
1679
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
|
1680
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.
|
|
1696
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AppLineChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1697
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: AppLineChartComponent, selector: "app-line-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1681
1698
|
}
|
|
1682
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
|
1699
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AppLineChartComponent, decorators: [{
|
|
1683
1700
|
type: Component,
|
|
1684
1701
|
args: [{ selector: 'app-line-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"] }]
|
|
1685
1702
|
}], ctorParameters: function () { return [{ type: Document, decorators: [{
|
|
@@ -1907,17 +1924,17 @@ class AppChartExamplesComponent {
|
|
|
1907
1924
|
chartTitle: 'Example force directed chart',
|
|
1908
1925
|
};
|
|
1909
1926
|
}
|
|
1910
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
|
1911
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.
|
|
1927
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AppChartExamplesComponent, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1928
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: AppChartExamplesComponent, selector: "app-chart-examples", ngImport: i0, template: "<div class=\"container\" *ngIf=\"barChartConfig$ | async as config\">\n <app-bar-chart [chartId]=\"'bar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-bar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"lineChartConfig$ | async as config\">\n <app-line-chart [chartId]=\"'line-example-1'\" [data]=\"[config.data[0]]\" [options]=\"config.options\"></app-line-chart>\n\n <app-line-chart [chartId]=\"'line-example-2'\" [data]=\"[config.data[1]]\" [options]=\"config.optionsDateDdMmYy\"></app-line-chart>\n\n <app-line-chart\n [chartId]=\"'line-example-3'\"\n [data]=\"[config.data[1], config.data[2]]\"\n [options]=\"config.optionsDateDdMmYyyy\"\n ></app-line-chart>\n\n <app-line-chart [chartId]=\"'line-example-4'\" [data]=\"config.data\" [options]=\"config.optionsDateMmYyyy\"></app-line-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"radarChartConfig$ | async as config\">\n <app-radar-chart [chartId]=\"'radar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-radar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"pieChartConfig$ | async as config\">\n <app-pie-chart [chartId]=\"'pie-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-pie-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"forceDirectedChartConfig$ | async as config\">\n <app-force-directed-chart\n [chartId]=\"'force-directed-example-1'\"\n [data]=\"config.data\"\n [options]=\"config.options\"\n ></app-force-directed-chart>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center}:host .container{display:flex;flex:1 1 auto;flex-wrap:wrap;width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: AppPieChartComponent, selector: "app-pie-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: AppRadarChartComponent, selector: "app-radar-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: AppForceDirectedChartComponent, selector: "app-force-directed-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: AppBarChartComponent, selector: "app-bar-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: AppLineChartComponent, selector: "app-line-chart", inputs: ["chartId", "data", "options"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1912
1929
|
}
|
|
1913
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
|
1930
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AppChartExamplesComponent, decorators: [{
|
|
1914
1931
|
type: Component,
|
|
1915
|
-
args: [{ selector: 'app-chart-examples', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\" *ngIf=\"barChartConfig$ | async as config\">\n <app-bar-chart [chartId]=\"'bar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-bar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"lineChartConfig$ | async as config\">\n <app-line-chart [chartId]=\"'line-example-1'\" [data]=\"[config.data[0]]\" [options]=\"config.options\"></app-line-chart>\n\n <app-line-chart [chartId]=\"'line-example-2'\" [data]=\"[config.data[1]]\" [options]=\"config.optionsDateDdMmYy\"></app-line-chart>\n\n <app-line-chart\n [chartId]=\"'line-example-3'\"\n [data]=\"[config.data[1], config.data[2]]\"\n [options]=\"config.optionsDateDdMmYyyy\"\n ></app-line-chart>\n\n <app-line-chart [chartId]=\"'line-example-4'\" [data]=\"config.data\" [options]=\"config.optionsDateMmYyyy\"></app-line-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"radarChartConfig$ | async as config\">\n <app-radar-chart [chartId]=\"'radar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-radar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"pieChartConfig$ | async as config\">\n <app-pie-chart [chartId]=\"'pie-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-pie-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"forceDirectedChartConfig$ | async as config\">\n <app-force-directed-chart\n [chartId]=\"'force-directed-example-1'\"\n [data]=\"config.data\"\n [options]=\"config.options\"\n ></app-force-directed-chart>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center}:host .container{display:flex;flex:1 1 auto;width:100%}\n"] }]
|
|
1932
|
+
args: [{ selector: 'app-chart-examples', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\" *ngIf=\"barChartConfig$ | async as config\">\n <app-bar-chart [chartId]=\"'bar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-bar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"lineChartConfig$ | async as config\">\n <app-line-chart [chartId]=\"'line-example-1'\" [data]=\"[config.data[0]]\" [options]=\"config.options\"></app-line-chart>\n\n <app-line-chart [chartId]=\"'line-example-2'\" [data]=\"[config.data[1]]\" [options]=\"config.optionsDateDdMmYy\"></app-line-chart>\n\n <app-line-chart\n [chartId]=\"'line-example-3'\"\n [data]=\"[config.data[1], config.data[2]]\"\n [options]=\"config.optionsDateDdMmYyyy\"\n ></app-line-chart>\n\n <app-line-chart [chartId]=\"'line-example-4'\" [data]=\"config.data\" [options]=\"config.optionsDateMmYyyy\"></app-line-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"radarChartConfig$ | async as config\">\n <app-radar-chart [chartId]=\"'radar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-radar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"pieChartConfig$ | async as config\">\n <app-pie-chart [chartId]=\"'pie-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-pie-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"forceDirectedChartConfig$ | async as config\">\n <app-force-directed-chart\n [chartId]=\"'force-directed-example-1'\"\n [data]=\"config.data\"\n [options]=\"config.options\"\n ></app-force-directed-chart>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center}:host .container{display:flex;flex:1 1 auto;flex-wrap:wrap;width:100%}\n"] }]
|
|
1916
1933
|
}], ctorParameters: function () { return [{ type: i1.BreakpointObserver }]; } });
|
|
1917
1934
|
|
|
1918
1935
|
class AppD3ChartsModule {
|
|
1919
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
|
1920
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.
|
|
1936
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AppD3ChartsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1937
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: AppD3ChartsModule, declarations: [AppPieChartComponent,
|
|
1921
1938
|
AppRadarChartComponent,
|
|
1922
1939
|
AppForceDirectedChartComponent,
|
|
1923
1940
|
AppBarChartComponent,
|
|
@@ -1928,9 +1945,9 @@ class AppD3ChartsModule {
|
|
|
1928
1945
|
AppBarChartComponent,
|
|
1929
1946
|
AppLineChartComponent,
|
|
1930
1947
|
AppChartExamplesComponent] }); }
|
|
1931
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.
|
|
1948
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AppD3ChartsModule, imports: [CommonModule] }); }
|
|
1932
1949
|
}
|
|
1933
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
|
1950
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AppD3ChartsModule, decorators: [{
|
|
1934
1951
|
type: NgModule,
|
|
1935
1952
|
args: [{
|
|
1936
1953
|
imports: [CommonModule],
|