vue-chrts 0.0.111 → 0.0.113
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/dist/components/Area/AreaChart.vue.d.ts +37 -0
- package/dist/components/Area/index.d.ts +1 -0
- package/dist/components/AreaStacked/AreaStackedChart.vue.d.ts +18 -0
- package/{src/components/AreaStacked/index.ts → dist/components/AreaStacked/index.d.ts} +1 -1
- package/dist/components/Bar/BarChart.vue.d.ts +37 -0
- package/dist/components/Bar/index.d.ts +1 -0
- package/dist/components/Crosshair/Crosshair.vue.d.ts +38 -0
- package/dist/components/Crosshair/index.d.ts +1 -0
- package/dist/components/Donut/DonutChart.vue.d.ts +31 -0
- package/dist/components/Donut/index.d.ts +1 -0
- package/dist/components/Line/LineChart.vue.d.ts +28 -0
- package/dist/components/Line/index.d.ts +1 -0
- package/dist/components/Tooltip.vue.d.ts +14 -0
- package/dist/components.d.ts +6 -0
- package/dist/index.cjs +502 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +9615 -0
- package/dist/index.js.map +1 -0
- package/package.json +11 -8
- package/.vscode/extensions.json +0 -3
- package/auto-imports.d.ts +0 -58
- package/components.d.ts +0 -46
- package/image.png +0 -0
- package/index.html +0 -14
- package/index.js +0 -2
- package/src/components/Area/AreaChart.vue +0 -141
- package/src/components/Area/index.ts +0 -1
- package/src/components/AreaStacked/AreaStackedChart.vue +0 -51
- package/src/components/Bar/BarChart.vue +0 -130
- package/src/components/Bar/index.ts +0 -1
- package/src/components/Crosshair/Crosshair.vue +0 -46
- package/src/components/Crosshair/index.ts +0 -1
- package/src/components/Donut/DonutChart.vue +0 -71
- package/src/components/Donut/index.ts +0 -1
- package/src/components/Line/LineChart.vue +0 -94
- package/src/components/Line/index.ts +0 -1
- package/src/components/Tooltip.vue +0 -17
- package/src/components.ts +0 -6
- package/src/index.ts +0 -6
- package/src/shims-vue.d.ts +0 -1
- package/src-demo/AdminTemplate.vue +0 -5
- package/src-demo/App.vue +0 -37
- package/src-demo/AreaChartPage.vue +0 -125
- package/src-demo/BarChartPage.vue +0 -166
- package/src-demo/DashboardTemplate.vue +0 -687
- package/src-demo/Homepage.vue +0 -325
- package/src-demo/LineChartPage.vue +0 -140
- package/src-demo/assets/main.css +0 -34
- package/src-demo/components/Progress/Progress.vue +0 -42
- package/src-demo/components/Progress/index.ts +0 -1
- package/src-demo/components/Status/Status.vue +0 -95
- package/src-demo/components/Status/index.ts +0 -1
- package/src-demo/components/charts.ts +0 -37
- package/src-demo/components/index.ts +0 -49
- package/src-demo/data/AreaChartData.ts +0 -294
- package/src-demo/data/BarChartData.ts +0 -79
- package/src-demo/data/IncomeExpenseData.ts +0 -189
- package/src-demo/data/InvestmentData.ts +0 -352
- package/src-demo/data/RevenueData.ts +0 -58
- package/src-demo/data/VisitorsData.ts +0 -260
- package/src-demo/elements/Button.vue +0 -13
- package/src-demo/elements/Card.vue +0 -17
- package/src-demo/elements/Dropdown.vue +0 -112
- package/src-demo/elements/Logo.vue +0 -8
- package/src-demo/elements/Table.vue +0 -363
- package/src-demo/elements/TopBar.vue +0 -40
- package/src-demo/index.ts +0 -58
- package/tsconfig.json +0 -11
- package/vite.config.ts +0 -59
- /package/{public → dist}/vite.svg +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/namespaces.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/namespace.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/creator.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selector.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/select.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/array.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selectorAll.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectAll.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/matcher.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectChild.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectChildren.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/filter.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sparse.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/enter.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/constant.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/data.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/exit.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/join.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/merge.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/order.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sort.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/call.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/nodes.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/node.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/size.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/empty.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/each.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/attr.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/window.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/style.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/property.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/classed.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/text.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/html.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/raise.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/lower.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/append.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/insert.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/remove.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/clone.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/datum.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/on.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/dispatch.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/iterator.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/index.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/select.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/sourceEvent.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/pointer.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/types/component.js","../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/ascending.js","../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/descending.js","../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bisector.js","../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/number.js","../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bisect.js","../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/extent.js","../node_modules/.pnpm/internmap@2.0.3/node_modules/internmap/src/index.js","../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/ticks.js","../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/max.js","../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/min.js","../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/quantile.js","../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/mean.js","../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/merge.js","../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/range.js","../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/sum.js","../node_modules/.pnpm/throttle-debounce@5.0.2/node_modules/throttle-debounce/esm/index.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/utils/data.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/freeze.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/element.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/global.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/process.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/scheduler.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObservation.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverController.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserver.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/utils/resize-observer.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/core/container/config.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/core/container/index.js","../node_modules/.pnpm/@emotion+sheet@1.4.0/node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Enum.js","../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Utility.js","../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Tokenizer.js","../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Parser.js","../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Serializer.js","../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Middleware.js","../node_modules/.pnpm/@emotion+memoize@0.9.0/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/.pnpm/@emotion+cache@11.14.0/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/.pnpm/@emotion+hash@0.9.2/node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/.pnpm/@emotion+unitless@0.10.0/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/.pnpm/@emotion+serialize@1.3.3/node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../node_modules/.pnpm/@emotion+utils@1.4.2/node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/.pnpm/@emotion+css@11.13.5/node_modules/@emotion/css/create-instance/dist/emotion-css-create-instance.esm.js","../node_modules/.pnpm/@emotion+css@11.13.5/node_modules/@emotion/css/dist/emotion-css.esm.js","../node_modules/.pnpm/parse-unit@1.0.1/node_modules/parse-unit/index.js","../node_modules/.pnpm/to-px@1.1.0/node_modules/to-px/browser.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/utils/misc.js","../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/define.js","../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/color.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/styles/colors.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/styles/patterns.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/styles/index.js","../node_modules/.pnpm/d3-dispatch@3.0.1/node_modules/d3-dispatch/src/dispatch.js","../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/timer.js","../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/timeout.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/schedule.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/interrupt.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/interrupt.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/constant.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/color.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/rgb.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/numberArray.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/array.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/date.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/number.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/object.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/string.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/value.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/round.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/decompose.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/parse.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/index.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/piecewise.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/tween.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/interpolate.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/attr.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/attrTween.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/delay.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/duration.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/ease.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/easeVarying.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/filter.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/merge.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/on.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/remove.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/select.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selectAll.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selection.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/style.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/styleTween.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/text.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/textTween.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/transition.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/end.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/index.js","../node_modules/.pnpm/d3-ease@3.0.1/node_modules/d3-ease/src/linear.js","../node_modules/.pnpm/d3-ease@3.0.1/node_modules/d3-ease/src/cubic.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/transition.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/index.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/utils/d3.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/containers/single-container/config.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/containers/single-container/index.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/data-models/core.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/axis/types.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/init.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/ordinal.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/band.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/constant.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/number.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/continuous.js","../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatDecimal.js","../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/exponent.js","../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatGroup.js","../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatNumerals.js","../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatSpecifier.js","../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatTrim.js","../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatRounded.js","../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatTypes.js","../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/identity.js","../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/locale.js","../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/defaultLocale.js","../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/precisionFixed.js","../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/precisionPrefix.js","../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/precisionRound.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/tickFormat.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/linear.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/identity.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/nice.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/log.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/symlog.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/pow.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/quantile.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/quantize.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/threshold.js","../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/interval.js","../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/millisecond.js","../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/duration.js","../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/second.js","../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/minute.js","../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/hour.js","../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/day.js","../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/week.js","../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/month.js","../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/year.js","../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/ticks.js","../node_modules/.pnpm/d3-time-format@4.1.0/node_modules/d3-time-format/src/locale.js","../node_modules/.pnpm/d3-time-format@4.1.0/node_modules/d3-time-format/src/defaultLocale.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/time.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/utcTime.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/sequential.js","../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/diverging.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/types/scale.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/types/direction.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/containers/xy-container/config.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/containers/xy-container/index.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/core/component/config.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/core/component/index.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/data-models/series.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/core/xy-component/config.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/core/xy-component/index.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/types/position.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/tooltip/config.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/tooltip/style.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/tooltip/index.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/constant.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/math.js","../node_modules/.pnpm/d3-path@3.1.0/node_modules/d3-path/src/path.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/path.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/arc.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/array.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/linear.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/point.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/line.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/area.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/descending.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/identity.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/pie.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/circle.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/cross.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/diamond.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/square.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/star.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/triangle.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol/wye.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/symbol.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/noop.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/basis.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/basisClosed.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/basisOpen.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/bundle.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/cardinal.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/cardinalClosed.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/cardinalOpen.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/catmullRom.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/catmullRomClosed.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/catmullRomOpen.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/linearClosed.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/monotone.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/natural.js","../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/step.js","../node_modules/.pnpm/d3-interpolate-path@2.3.0/node_modules/d3-interpolate-path/build/d3-interpolate-path.mjs","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/utils/color.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/types/curve.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/line/config.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/line/style.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/line/index.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/utils/path.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/stacked-bar/config.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/stacked-bar/style.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/stacked-bar/index.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/grouped-bar/config.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/grouped-bar/style.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/grouped-bar/index.js","../node_modules/.pnpm/d3-axis@3.0.0/node_modules/d3-axis/src/identity.js","../node_modules/.pnpm/d3-axis@3.0.0/node_modules/d3-axis/src/axis.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/types/text.js","../node_modules/.pnpm/striptags@3.2.0/node_modules/striptags/src/striptags.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/types/svg.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/utils/text.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/axis/config.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/axis/style.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/axis/index.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/types/symbol.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/bullet-legend/types.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/bullet-legend/config.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/bullet-legend/modules/shape.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/bullet-legend/style.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/bullet-legend/index.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/crosshair/config.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/crosshair/style.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/crosshair/index.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/area/config.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/area/style.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/area/index.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/donut/config.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/donut/modules/arc.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/donut/constants.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/donut/style.js","../node_modules/.pnpm/@unovis+ts@1.5.1/node_modules/@unovis/ts/components/donut/index.js","../node_modules/.pnpm/@unovis+vue@1.5.1_@unovis+ts@1.5.1_vue@3.5.13_typescript@5.6.3_/node_modules/@unovis/vue/utils/context.js","../node_modules/.pnpm/@unovis+vue@1.5.1_@unovis+ts@1.5.1_vue@3.5.13_typescript@5.6.3_/node_modules/@unovis/vue/utils/props.js","../node_modules/.pnpm/@unovis+vue@1.5.1_@unovis+ts@1.5.1_vue@3.5.13_typescript@5.6.3_/node_modules/@unovis/vue/containers/xy-container/index.js","../node_modules/.pnpm/@unovis+vue@1.5.1_@unovis+ts@1.5.1_vue@3.5.13_typescript@5.6.3_/node_modules/@unovis/vue/containers/single-container/index.js","../node_modules/.pnpm/@unovis+vue@1.5.1_@unovis+ts@1.5.1_vue@3.5.13_typescript@5.6.3_/node_modules/@unovis/vue/components/area/index.js","../node_modules/.pnpm/@unovis+vue@1.5.1_@unovis+ts@1.5.1_vue@3.5.13_typescript@5.6.3_/node_modules/@unovis/vue/components/axis/index.js","../node_modules/.pnpm/@unovis+vue@1.5.1_@unovis+ts@1.5.1_vue@3.5.13_typescript@5.6.3_/node_modules/@unovis/vue/components/crosshair/index.js","../node_modules/.pnpm/@unovis+vue@1.5.1_@unovis+ts@1.5.1_vue@3.5.13_typescript@5.6.3_/node_modules/@unovis/vue/components/grouped-bar/index.js","../node_modules/.pnpm/@unovis+vue@1.5.1_@unovis+ts@1.5.1_vue@3.5.13_typescript@5.6.3_/node_modules/@unovis/vue/components/line/index.js","../node_modules/.pnpm/@unovis+vue@1.5.1_@unovis+ts@1.5.1_vue@3.5.13_typescript@5.6.3_/node_modules/@unovis/vue/components/stacked-bar/index.js","../node_modules/.pnpm/@unovis+vue@1.5.1_@unovis+ts@1.5.1_vue@3.5.13_typescript@5.6.3_/node_modules/@unovis/vue/components/donut/index.js","../node_modules/.pnpm/@unovis+vue@1.5.1_@unovis+ts@1.5.1_vue@3.5.13_typescript@5.6.3_/node_modules/@unovis/vue/components/tooltip/index.js","../node_modules/.pnpm/@unovis+vue@1.5.1_@unovis+ts@1.5.1_vue@3.5.13_typescript@5.6.3_/node_modules/@unovis/vue/html-components/bullet-legend/index.js","../node_modules/.pnpm/@unovis+vue@1.5.1_@unovis+ts@1.5.1_vue@3.5.13_typescript@5.6.3_/node_modules/@unovis/vue/index.js","../src/components/Area/AreaChart.vue","../src/components/AreaStacked/AreaStackedChart.vue","../src/components/Line/LineChart.vue","../src/components/Bar/BarChart.vue","../src/components/Donut/DonutChart.vue","../src/components/Crosshair/Crosshair.vue","../src/index.ts"],"sourcesContent":["export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","var ComponentType;\r\n(function (ComponentType) {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n ComponentType[ComponentType[\"SVG\"] = 0] = \"SVG\";\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n ComponentType[ComponentType[\"HTML\"] = 1] = \"HTML\";\r\n})(ComponentType || (ComponentType = {}));\r\nvar Sizing;\r\n(function (Sizing) {\r\n Sizing[\"Fit\"] = \"fit\";\r\n Sizing[\"Extend\"] = \"extend\";\r\n Sizing[\"FitWidth\"] = \"fit_width\";\r\n})(Sizing || (Sizing = {}));\n\nexport { ComponentType, Sizing };\n//# sourceMappingURL=component.js.map\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n","export default function mean(values, valueof) {\n let count = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n }\n if (count) return sum / count;\n}\n","function* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\n\nexport default function merge(arrays) {\n return Array.from(flatten(arrays));\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, callback, options) {\n var _ref = options || {},\n _ref$noTrailing = _ref.noTrailing,\n noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n _ref$noLeading = _ref.noLeading,\n noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n _ref$debounceMode = _ref.debounceMode,\n debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false;\n\n // Keep track of the last time `callback` was executed.\n var lastExec = 0;\n\n // Function to clear existing timeout\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n }\n\n // Function to cancel next exec\n function cancel(options) {\n var _ref2 = options || {},\n _ref2$upcomingOnly = _ref2.upcomingOnly,\n upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n clearExistingTimeout();\n cancelled = !upcomingOnly;\n }\n\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n var self = this;\n var elapsed = Date.now() - lastExec;\n if (cancelled) {\n return;\n }\n\n // Execute `callback` and update the `lastExec` timestamp.\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n function clear() {\n timeoutID = undefined;\n }\n if (!noLeading && debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`\n * and noLeading != true.\n */\n exec();\n }\n clearExistingTimeout();\n if (debounceMode === undefined && elapsed > delay) {\n if (noLeading) {\n /*\n * In throttle mode with noLeading, if `delay` time has\n * been exceeded, update `lastExec` and schedule `callback`\n * to execute after `delay` ms.\n */\n lastExec = Date.now();\n if (!noTrailing) {\n timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n }\n } else {\n /*\n * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n }\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n wrapper.cancel = cancel;\n\n // Return the wrapper function.\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\nfunction debounce (delay, callback, options) {\n var _ref = options || {},\n _ref$atBegin = _ref.atBegin,\n atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n return throttle(delay, callback, {\n debounceMode: atBegin !== false\n });\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","import { mean, min, max, bisector } from 'd3-array';\nimport { throttle as throttle$1 } from 'throttle-debounce';\n\nconst isNumber = (a) => typeof a === 'number';\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nconst isFunction = (a) => typeof a === 'function';\r\nconst isUndefined = (a) => a === undefined;\r\nconst isNil = (a) => a == null;\r\nconst isString = (a) => typeof a === 'string';\r\nconst isArray = (a) => Array.isArray(a);\r\nconst isObject = (a) => (a instanceof Object);\r\nconst isAClassInstance = (a) => a.constructor.name !== 'Function' && a.constructor.name !== 'Object';\r\nconst isPlainObject = (a) => isObject(a) && !isArray(a) && !isFunction(a) && !isAClassInstance(a);\r\nconst isEmpty = (obj) => {\r\n return [Object, Array].includes((obj || {}).constructor) &&\r\n !Object.entries((obj || {})).length;\r\n};\r\n// Based on https://github.com/maplibre/maplibre-gl-js/blob/e78ad7944ef768e67416daa4af86b0464bd0f617/src/style-spec/util/deep_equal.ts, 3-Clause BSD license\r\nconst isEqual = (a, b, skipKeys = [], visited = new Set()) => {\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b) || a.length !== b.length)\r\n return false;\r\n if (visited.has(a))\r\n return true;\r\n else\r\n visited.add(a);\r\n for (let i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i], skipKeys, visited))\r\n return false;\r\n }\r\n return true;\r\n }\r\n if (a instanceof Date && b instanceof Date) {\r\n return a.getTime() === b.getTime();\r\n }\r\n if (typeof a === 'object' && a !== null && b !== null) {\r\n if (!(typeof b === 'object'))\r\n return false;\r\n if (a === b)\r\n return true;\r\n const keysA = Object.keys(a).filter(key => !skipKeys.includes(key));\r\n const keysB = Object.keys(b).filter(key => !skipKeys.includes(key));\r\n if (keysA.length !== keysB.length)\r\n return false;\r\n if (visited.has(a))\r\n return true;\r\n else\r\n visited.add(a);\r\n for (const key of keysA) {\r\n if (!isEqual(a[key], b[key], skipKeys, visited))\r\n return false;\r\n }\r\n return true;\r\n }\r\n return a === b;\r\n};\r\nconst without = (arr, ...args) => arr.filter(item => !args.includes(item));\r\nconst flatten = (arr) => arr.flat();\r\nconst cloneDeep = (obj, stack = new Map()) => {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return obj;\r\n }\r\n if (obj instanceof Date) {\r\n return new Date(obj.getTime());\r\n }\r\n if (obj instanceof Array) {\r\n const clone = [];\r\n stack.set(obj, clone);\r\n for (const item of obj) {\r\n clone.push(stack.has(item) ? stack.get(item) : cloneDeep(item, stack));\r\n }\r\n return clone;\r\n }\r\n // Class instances will be copied without cloning\r\n if (isAClassInstance(obj)) {\r\n const clone = obj;\r\n return clone;\r\n }\r\n if (obj instanceof Object) {\r\n const clone = {};\r\n stack.set(obj, clone);\r\n const objAsRecord = obj;\r\n Object.keys(obj)\r\n .reduce((newObj, key) => {\r\n newObj[key] = stack.has(objAsRecord[key]) ? stack.get(objAsRecord[key]) : cloneDeep(objAsRecord[key], stack);\r\n return newObj;\r\n }, clone);\r\n return clone;\r\n }\r\n return obj;\r\n};\r\nconst merge = (obj1, obj2, visited = new Map()) => {\r\n if (!obj1 || !obj2)\r\n return obj1;\r\n if (obj1 === obj2)\r\n return obj1;\r\n const newObj = (isAClassInstance(obj1) ? obj1 : cloneDeep(obj1));\r\n // Taking care of recursive structures\r\n if (visited.has(obj2))\r\n return visited.get(obj2);\r\n else\r\n visited.set(obj2, newObj);\r\n Object.keys(obj2).forEach(key => {\r\n // Preventing prototype pollution\r\n if (key === '__proto__' || key === 'constructor')\r\n return;\r\n if (isPlainObject(obj1[key]) && isPlainObject(obj2[key])) {\r\n newObj[key] = merge(obj1[key], obj2[key], visited);\r\n }\r\n else if (isAClassInstance(obj2)) {\r\n newObj[key] = obj2;\r\n }\r\n else {\r\n newObj[key] = cloneDeep(obj2[key]);\r\n }\r\n });\r\n return newObj;\r\n};\r\nconst omit = (obj, props) => {\r\n obj = Object.assign({}, obj);\r\n props.forEach(prop => delete obj[prop]);\r\n return obj;\r\n};\r\nconst groupBy = (arr, accessor) => {\r\n return arr.reduce((grouped, v, i, a, k = accessor(v)) => (((grouped[k] || (grouped[k] = [])).push(v), grouped)), {});\r\n};\r\nconst sortBy = (arr, accessor) => {\r\n return arr.concat() // The native sort method modifies the array in place. We use `.concat()` to copy the array first\r\n .sort((a, b) => {\r\n return (accessor(a) > accessor(b)) ? 1 : ((accessor(b) > accessor(a)) ? -1 : 0);\r\n });\r\n};\r\nconst throttle = (f, delay, options) => throttle$1(delay, f, options);\r\nfunction getValue(d, accessor, index) {\r\n // eslint-disable-next-line @typescript-eslint/ban-types\r\n if (isFunction(accessor))\r\n return accessor(d, index);\r\n else\r\n return accessor;\r\n}\r\nfunction getString(d, accessor, i) {\r\n return getValue(d, accessor, i);\r\n}\r\nfunction getNumber(d, accessor, i) {\r\n return getValue(d, accessor, i);\r\n}\r\nfunction getBoolean(d, accessor, i) {\r\n return getValue(d, accessor, i);\r\n}\r\nfunction clean(data) {\r\n return data.filter(d => d && !isNumber(d));\r\n}\r\nfunction clamp(d, min, max) {\r\n return Math.min(Math.max(d, min), max);\r\n}\r\nfunction unique(array) {\r\n return Array.from(new Set(array));\r\n}\r\nfunction countUnique(array, accessor = (d) => d) {\r\n return new Set(array.map(d => accessor(d))).size;\r\n}\r\nfunction arrayOfIndices(n) {\r\n return [...Array(n).keys()];\r\n}\r\nfunction shallowDiff(o1 = {}, o2 = {}) {\r\n return Object.keys(o2).reduce((diff, key) => {\r\n if (o1[key] === o2[key])\r\n return diff;\r\n return Object.assign(Object.assign({}, diff), { [key]: o2[key] });\r\n }, {});\r\n}\r\nfunction getStackedExtent(data, ...acs) {\r\n if (!data)\r\n return [undefined, undefined];\r\n if (isArray(acs)) {\r\n let minValue = 0;\r\n let maxValue = 0;\r\n data.forEach((d, i) => {\r\n let positiveStack = 0;\r\n let negativeStack = 0;\r\n for (const a of acs) {\r\n const value = getNumber(d, a, i) || 0;\r\n if (value >= 0)\r\n positiveStack += value;\r\n else\r\n negativeStack += value;\r\n }\r\n if (positiveStack > maxValue)\r\n maxValue = positiveStack;\r\n if (negativeStack < minValue)\r\n minValue = negativeStack;\r\n });\r\n return [minValue, maxValue];\r\n }\r\n}\r\nfunction getStackedValues(d, index, ...acs) {\r\n const values = [];\r\n let positiveStack = 0;\r\n let negativeStack = 0;\r\n for (const a of acs) {\r\n const value = getNumber(d, a, index) || 0;\r\n if (value >= 0) {\r\n values.push(positiveStack += value);\r\n }\r\n else {\r\n values.push(negativeStack += value);\r\n }\r\n }\r\n return values;\r\n}\r\nfunction getStackedData(data, baseline, acs, prevNegative // to help guessing the stack direction (positive/negative) when the values are 0 or null\r\n) {\r\n const baselineValues = data.map((d, i) => getNumber(d, baseline, i) || 0);\r\n const isNegativeStack = acs.map((a, j) => {\r\n const average = mean(data, (d, i) => getNumber(d, a, i) || 0);\r\n return (average === 0 && Array.isArray(prevNegative)) ? prevNegative[j] : average < 0;\r\n });\r\n const stackedData = acs.map(() => []);\r\n data.forEach((d, i) => {\r\n let positiveStack = baselineValues[i];\r\n let negativeStack = baselineValues[i];\r\n acs.forEach((a, j) => {\r\n const value = getNumber(d, a, i) || 0;\r\n if (value >= 0) {\r\n stackedData[j].push([positiveStack, positiveStack += value]);\r\n }\r\n else {\r\n stackedData[j].push([negativeStack, negativeStack += value]);\r\n }\r\n });\r\n });\r\n // Fill in additional stack information\r\n stackedData.forEach((stack, i) => {\r\n stack.isMostlyNegative = isNegativeStack[i];\r\n });\r\n return stackedData;\r\n}\r\nfunction getMin(data, ...acs) {\r\n if (!data)\r\n return undefined;\r\n const minValue = min(data, (d, i) => min(acs, a => getNumber(d, a, i)));\r\n return minValue;\r\n}\r\nfunction getMax(data, ...acs) {\r\n if (!data)\r\n return undefined;\r\n const maxValue = max(data, (d, i) => max(acs, a => getNumber(d, a, i)));\r\n return maxValue;\r\n}\r\nfunction getExtent(data, ...acs) {\r\n return [getMin(data, ...acs), getMax(data, ...acs)];\r\n}\r\nfunction getNearest(data, value, accessor) {\r\n if (data.length <= 1)\r\n return data[0];\r\n const values = data.map((d, i) => getNumber(d, accessor, i));\r\n values.sort((a, b) => a - b);\r\n const xBisector = bisector(d => d).left;\r\n const index = xBisector(values, value, 1, data.length - 1);\r\n return value - values[index - 1] > values[index] - value ? data[index] : data[index - 1];\r\n}\r\nfunction filterDataByRange(data, range, accessor) {\r\n const filteredData = data.filter((d, i) => {\r\n const value = getNumber(d, accessor, i);\r\n return (value >= range[0]) && (value <= range[1]);\r\n });\r\n return filteredData;\r\n}\r\nfunction isNumberWithinRange(value, range) {\r\n return (value >= range[0]) && (value <= range[1]);\r\n}\r\nconst ensureArray = (value) => {\r\n if (value === null || value === undefined) {\r\n return [];\r\n }\r\n if (Array.isArray(value)) {\r\n return value;\r\n }\r\n return [value];\r\n};\n\nexport { arrayOfIndices, clamp, clean, cloneDeep, countUnique, ensureArray, filterDataByRange, flatten, getBoolean, getExtent, getMax, getMin, getNearest, getNumber, getStackedData, getStackedExtent, getStackedValues, getString, getValue, groupBy, isAClassInstance, isArray, isEmpty, isEqual, isFunction, isNil, isNumber, isNumberWithinRange, isObject, isPlainObject, isString, isUndefined, merge, omit, shallowDiff, sortBy, throttle, unique, without };\n//# sourceMappingURL=data.js.map\n","var resizeObservers = [];\nexport { resizeObservers };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasActiveObservations = function () {\n return resizeObservers.some(function (ro) { return ro.activeTargets.length > 0; });\n};\nexport { hasActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasSkippedObservations = function () {\n return resizeObservers.some(function (ro) { return ro.skippedTargets.length > 0; });\n};\nexport { hasSkippedObservations };\n","var msg = 'ResizeObserver loop completed with undelivered notifications.';\nvar deliverResizeLoopError = function () {\n var event;\n if (typeof ErrorEvent === 'function') {\n event = new ErrorEvent('error', {\n message: msg\n });\n }\n else {\n event = document.createEvent('Event');\n event.initEvent('error', false, false);\n event.message = msg;\n }\n window.dispatchEvent(event);\n};\nexport { deliverResizeLoopError };\n","var ResizeObserverBoxOptions;\n(function (ResizeObserverBoxOptions) {\n ResizeObserverBoxOptions[\"BORDER_BOX\"] = \"border-box\";\n ResizeObserverBoxOptions[\"CONTENT_BOX\"] = \"content-box\";\n ResizeObserverBoxOptions[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\nexport { ResizeObserverBoxOptions };\n","export var freeze = function (obj) { return Object.freeze(obj); };\n","import { freeze } from './utils/freeze';\nvar ResizeObserverSize = (function () {\n function ResizeObserverSize(inlineSize, blockSize) {\n this.inlineSize = inlineSize;\n this.blockSize = blockSize;\n freeze(this);\n }\n return ResizeObserverSize;\n}());\nexport { ResizeObserverSize };\n","import { freeze } from './utils/freeze';\nvar DOMRectReadOnly = (function () {\n function DOMRectReadOnly(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.top = this.y;\n this.left = this.x;\n this.bottom = this.top + this.height;\n this.right = this.left + this.width;\n return freeze(this);\n }\n DOMRectReadOnly.prototype.toJSON = function () {\n var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;\n return { x: x, y: y, top: top, right: right, bottom: bottom, left: left, width: width, height: height };\n };\n DOMRectReadOnly.fromRect = function (rectangle) {\n return new DOMRectReadOnly(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n };\n return DOMRectReadOnly;\n}());\nexport { DOMRectReadOnly };\n","var isSVG = function (target) { return target instanceof SVGElement && 'getBBox' in target; };\nvar isHidden = function (target) {\n if (isSVG(target)) {\n var _a = target.getBBox(), width = _a.width, height = _a.height;\n return !width && !height;\n }\n var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;\n return !(offsetWidth || offsetHeight || target.getClientRects().length);\n};\nvar isElement = function (obj) {\n var _a;\n if (obj instanceof Element) {\n return true;\n }\n var scope = (_a = obj === null || obj === void 0 ? void 0 : obj.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;\n return !!(scope && obj instanceof scope.Element);\n};\nvar isReplacedElement = function (target) {\n switch (target.tagName) {\n case 'INPUT':\n if (target.type !== 'image') {\n break;\n }\n case 'VIDEO':\n case 'AUDIO':\n case 'EMBED':\n case 'OBJECT':\n case 'CANVAS':\n case 'IFRAME':\n case 'IMG':\n return true;\n }\n return false;\n};\nexport { isSVG, isHidden, isElement, isReplacedElement };\n","export var global = typeof window !== 'undefined' ? window : {};\n","import { ResizeObserverBoxOptions } from '../ResizeObserverBoxOptions';\nimport { ResizeObserverSize } from '../ResizeObserverSize';\nimport { DOMRectReadOnly } from '../DOMRectReadOnly';\nimport { isSVG, isHidden } from '../utils/element';\nimport { freeze } from '../utils/freeze';\nimport { global } from '../utils/global';\nvar cache = new WeakMap();\nvar scrollRegexp = /auto|scroll/;\nvar verticalRegexp = /^tb|vertical/;\nvar IE = (/msie|trident/i).test(global.navigator && global.navigator.userAgent);\nvar parseDimension = function (pixel) { return parseFloat(pixel || '0'); };\nvar size = function (inlineSize, blockSize, switchSizes) {\n if (inlineSize === void 0) { inlineSize = 0; }\n if (blockSize === void 0) { blockSize = 0; }\n if (switchSizes === void 0) { switchSizes = false; }\n return new ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0);\n};\nvar zeroBoxes = freeze({\n devicePixelContentBoxSize: size(),\n borderBoxSize: size(),\n contentBoxSize: size(),\n contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n});\nvar calculateBoxSizes = function (target, forceRecalculation) {\n if (forceRecalculation === void 0) { forceRecalculation = false; }\n if (cache.has(target) && !forceRecalculation) {\n return cache.get(target);\n }\n if (isHidden(target)) {\n cache.set(target, zeroBoxes);\n return zeroBoxes;\n }\n var cs = getComputedStyle(target);\n var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n var removePadding = !IE && cs.boxSizing === 'border-box';\n var switchSizes = verticalRegexp.test(cs.writingMode || '');\n var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || '');\n var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || '');\n var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n var horizontalPadding = paddingLeft + paddingRight;\n var verticalPadding = paddingTop + paddingBottom;\n var horizontalBorderArea = borderLeft + borderRight;\n var verticalBorderArea = borderTop + borderBottom;\n var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n var boxes = freeze({\n devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n });\n cache.set(target, boxes);\n return boxes;\n};\nvar calculateBoxSize = function (target, observedBox, forceRecalculation) {\n var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n switch (observedBox) {\n case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n return devicePixelContentBoxSize;\n case ResizeObserverBoxOptions.BORDER_BOX:\n return borderBoxSize;\n default:\n return contentBoxSize;\n }\n};\nexport { calculateBoxSize, calculateBoxSizes };\n","import { calculateBoxSizes } from './algorithms/calculateBoxSize';\nimport { freeze } from './utils/freeze';\nvar ResizeObserverEntry = (function () {\n function ResizeObserverEntry(target) {\n var boxes = calculateBoxSizes(target);\n this.target = target;\n this.contentRect = boxes.contentRect;\n this.borderBoxSize = freeze([boxes.borderBoxSize]);\n this.contentBoxSize = freeze([boxes.contentBoxSize]);\n this.devicePixelContentBoxSize = freeze([boxes.devicePixelContentBoxSize]);\n }\n return ResizeObserverEntry;\n}());\nexport { ResizeObserverEntry };\n","import { isHidden } from '../utils/element';\nvar calculateDepthForNode = function (node) {\n if (isHidden(node)) {\n return Infinity;\n }\n var depth = 0;\n var parent = node.parentNode;\n while (parent) {\n depth += 1;\n parent = parent.parentNode;\n }\n return depth;\n};\nexport { calculateDepthForNode };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { ResizeObserverEntry } from '../ResizeObserverEntry';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nimport { calculateBoxSize } from './calculateBoxSize';\nvar broadcastActiveObservations = function () {\n var shallowestDepth = Infinity;\n var callbacks = [];\n resizeObservers.forEach(function processObserver(ro) {\n if (ro.activeTargets.length === 0) {\n return;\n }\n var entries = [];\n ro.activeTargets.forEach(function processTarget(ot) {\n var entry = new ResizeObserverEntry(ot.target);\n var targetDepth = calculateDepthForNode(ot.target);\n entries.push(entry);\n ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n if (targetDepth < shallowestDepth) {\n shallowestDepth = targetDepth;\n }\n });\n callbacks.push(function resizeObserverCallback() {\n ro.callback.call(ro.observer, entries, ro.observer);\n });\n ro.activeTargets.splice(0, ro.activeTargets.length);\n });\n for (var _i = 0, callbacks_1 = callbacks; _i < callbacks_1.length; _i++) {\n var callback = callbacks_1[_i];\n callback();\n }\n return shallowestDepth;\n};\nexport { broadcastActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nvar gatherActiveObservationsAtDepth = function (depth) {\n resizeObservers.forEach(function processObserver(ro) {\n ro.activeTargets.splice(0, ro.activeTargets.length);\n ro.skippedTargets.splice(0, ro.skippedTargets.length);\n ro.observationTargets.forEach(function processTarget(ot) {\n if (ot.isActive()) {\n if (calculateDepthForNode(ot.target) > depth) {\n ro.activeTargets.push(ot);\n }\n else {\n ro.skippedTargets.push(ot);\n }\n }\n });\n });\n};\nexport { gatherActiveObservationsAtDepth };\n","import { hasActiveObservations } from '../algorithms/hasActiveObservations';\nimport { hasSkippedObservations } from '../algorithms/hasSkippedObservations';\nimport { deliverResizeLoopError } from '../algorithms/deliverResizeLoopError';\nimport { broadcastActiveObservations } from '../algorithms/broadcastActiveObservations';\nimport { gatherActiveObservationsAtDepth } from '../algorithms/gatherActiveObservationsAtDepth';\nvar process = function () {\n var depth = 0;\n gatherActiveObservationsAtDepth(depth);\n while (hasActiveObservations()) {\n depth = broadcastActiveObservations();\n gatherActiveObservationsAtDepth(depth);\n }\n if (hasSkippedObservations()) {\n deliverResizeLoopError();\n }\n return depth > 0;\n};\nexport { process };\n","var trigger;\nvar callbacks = [];\nvar notify = function () { return callbacks.splice(0).forEach(function (cb) { return cb(); }); };\nvar queueMicroTask = function (callback) {\n if (!trigger) {\n var toggle_1 = 0;\n var el_1 = document.createTextNode('');\n var config = { characterData: true };\n new MutationObserver(function () { return notify(); }).observe(el_1, config);\n trigger = function () { el_1.textContent = \"\".concat(toggle_1 ? toggle_1-- : toggle_1++); };\n }\n callbacks.push(callback);\n trigger();\n};\nexport { queueMicroTask };\n","import { queueMicroTask } from './queueMicroTask';\nvar queueResizeObserver = function (cb) {\n queueMicroTask(function ResizeObserver() {\n requestAnimationFrame(cb);\n });\n};\nexport { queueResizeObserver };\n","import { process } from './process';\nimport { global } from './global';\nimport { queueResizeObserver } from './queueResizeObserver';\nvar watching = 0;\nvar isWatching = function () { return !!watching; };\nvar CATCH_PERIOD = 250;\nvar observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };\nvar events = [\n 'resize',\n 'load',\n 'transitionend',\n 'animationend',\n 'animationstart',\n 'animationiteration',\n 'keyup',\n 'keydown',\n 'mouseup',\n 'mousedown',\n 'mouseover',\n 'mouseout',\n 'blur',\n 'focus'\n];\nvar time = function (timeout) {\n if (timeout === void 0) { timeout = 0; }\n return Date.now() + timeout;\n};\nvar scheduled = false;\nvar Scheduler = (function () {\n function Scheduler() {\n var _this = this;\n this.stopped = true;\n this.listener = function () { return _this.schedule(); };\n }\n Scheduler.prototype.run = function (timeout) {\n var _this = this;\n if (timeout === void 0) { timeout = CATCH_PERIOD; }\n if (scheduled) {\n return;\n }\n scheduled = true;\n var until = time(timeout);\n queueResizeObserver(function () {\n var elementsHaveResized = false;\n try {\n elementsHaveResized = process();\n }\n finally {\n scheduled = false;\n timeout = until - time();\n if (!isWatching()) {\n return;\n }\n if (elementsHaveResized) {\n _this.run(1000);\n }\n else if (timeout > 0) {\n _this.run(timeout);\n }\n else {\n _this.start();\n }\n }\n });\n };\n Scheduler.prototype.schedule = function () {\n this.stop();\n this.run();\n };\n Scheduler.prototype.observe = function () {\n var _this = this;\n var cb = function () { return _this.observer && _this.observer.observe(document.body, observerConfig); };\n document.body ? cb() : global.addEventListener('DOMContentLoaded', cb);\n };\n Scheduler.prototype.start = function () {\n var _this = this;\n if (this.stopped) {\n this.stopped = false;\n this.observer = new MutationObserver(this.listener);\n this.observe();\n events.forEach(function (name) { return global.addEventListener(name, _this.listener, true); });\n }\n };\n Scheduler.prototype.stop = function () {\n var _this = this;\n if (!this.stopped) {\n this.observer && this.observer.disconnect();\n events.forEach(function (name) { return global.removeEventListener(name, _this.listener, true); });\n this.stopped = true;\n }\n };\n return Scheduler;\n}());\nvar scheduler = new Scheduler();\nvar updateCount = function (n) {\n !watching && n > 0 && scheduler.start();\n watching += n;\n !watching && scheduler.stop();\n};\nexport { scheduler, updateCount };\n","import { ResizeObserverBoxOptions } from './ResizeObserverBoxOptions';\nimport { calculateBoxSize } from './algorithms/calculateBoxSize';\nimport { isSVG, isReplacedElement } from './utils/element';\nvar skipNotifyOnElement = function (target) {\n return !isSVG(target)\n && !isReplacedElement(target)\n && getComputedStyle(target).display === 'inline';\n};\nvar ResizeObservation = (function () {\n function ResizeObservation(target, observedBox) {\n this.target = target;\n this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n this.lastReportedSize = {\n inlineSize: 0,\n blockSize: 0\n };\n }\n ResizeObservation.prototype.isActive = function () {\n var size = calculateBoxSize(this.target, this.observedBox, true);\n if (skipNotifyOnElement(this.target)) {\n this.lastReportedSize = size;\n }\n if (this.lastReportedSize.inlineSize !== size.inlineSize\n || this.lastReportedSize.blockSize !== size.blockSize) {\n return true;\n }\n return false;\n };\n return ResizeObservation;\n}());\nexport { ResizeObservation };\n","var ResizeObserverDetail = (function () {\n function ResizeObserverDetail(resizeObserver, callback) {\n this.activeTargets = [];\n this.skippedTargets = [];\n this.observationTargets = [];\n this.observer = resizeObserver;\n this.callback = callback;\n }\n return ResizeObserverDetail;\n}());\nexport { ResizeObserverDetail };\n","import { scheduler, updateCount } from './utils/scheduler';\nimport { ResizeObservation } from './ResizeObservation';\nimport { ResizeObserverDetail } from './ResizeObserverDetail';\nimport { resizeObservers } from './utils/resizeObservers';\nvar observerMap = new WeakMap();\nvar getObservationIndex = function (observationTargets, target) {\n for (var i = 0; i < observationTargets.length; i += 1) {\n if (observationTargets[i].target === target) {\n return i;\n }\n }\n return -1;\n};\nvar ResizeObserverController = (function () {\n function ResizeObserverController() {\n }\n ResizeObserverController.connect = function (resizeObserver, callback) {\n var detail = new ResizeObserverDetail(resizeObserver, callback);\n observerMap.set(resizeObserver, detail);\n };\n ResizeObserverController.observe = function (resizeObserver, target, options) {\n var detail = observerMap.get(resizeObserver);\n var firstObservation = detail.observationTargets.length === 0;\n if (getObservationIndex(detail.observationTargets, target) < 0) {\n firstObservation && resizeObservers.push(detail);\n detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n updateCount(1);\n scheduler.schedule();\n }\n };\n ResizeObserverController.unobserve = function (resizeObserver, target) {\n var detail = observerMap.get(resizeObserver);\n var index = getObservationIndex(detail.observationTargets, target);\n var lastObservation = detail.observationTargets.length === 1;\n if (index >= 0) {\n lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n detail.observationTargets.splice(index, 1);\n updateCount(-1);\n }\n };\n ResizeObserverController.disconnect = function (resizeObserver) {\n var _this = this;\n var detail = observerMap.get(resizeObserver);\n detail.observationTargets.slice().forEach(function (ot) { return _this.unobserve(resizeObserver, ot.target); });\n detail.activeTargets.splice(0, detail.activeTargets.length);\n };\n return ResizeObserverController;\n}());\nexport { ResizeObserverController };\n","import { ResizeObserverController } from './ResizeObserverController';\nimport { isElement } from './utils/element';\nvar ResizeObserver = (function () {\n function ResizeObserver(callback) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (typeof callback !== 'function') {\n throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n }\n ResizeObserverController.connect(this, callback);\n }\n ResizeObserver.prototype.observe = function (target, options) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.observe(this, target, options);\n };\n ResizeObserver.prototype.unobserve = function (target) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.unobserve(this, target);\n };\n ResizeObserver.prototype.disconnect = function () {\n ResizeObserverController.disconnect(this);\n };\n ResizeObserver.toString = function () {\n return 'function ResizeObserver () { [polyfill code] }';\n };\n return ResizeObserver;\n}());\nexport { ResizeObserver };\n","import { ResizeObserver as ResizeObserver$1 } from '@juggle/resize-observer';\n\nconst ResizeObserver = globalThis.ResizeObserver || ResizeObserver$1;\n\nexport { ResizeObserver };\n//# sourceMappingURL=resize-observer.js.map\n","import { Sizing } from '../../types/component.js';\n\n// Core\r\nconst ContainerDefaultConfig = {\r\n duration: undefined,\r\n margin: {\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n },\r\n padding: {\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n },\r\n sizing: Sizing.Fit,\r\n width: undefined,\r\n height: undefined,\r\n svgDefs: undefined,\r\n ariaLabel: undefined,\r\n};\n\nexport { ContainerDefaultConfig };\n//# sourceMappingURL=config.js.map\n","import { select } from 'd3-selection';\nimport { Sizing } from '../../types/component.js';\nimport { merge, clamp, isEqual } from '../../utils/data.js';\nimport { ResizeObserver } from '../../utils/resize-observer.js';\nimport { ContainerDefaultConfig } from './config.js';\n\nclass ContainerCore {\r\n constructor(element) {\r\n this._defaultConfig = ContainerDefaultConfig;\r\n this._isFirstRender = true;\r\n this._renderAnimationFrameId = null;\r\n this._container = element;\r\n // Setting `role` attribute to `image` to make the container accessible\r\n const container = select(this._container);\r\n container.attr('role', 'figure');\r\n // Create SVG element for visualizations\r\n this.svg = container.append('svg')\r\n // We set `display` to `block` because inline elements have an invisible\r\n // inline space that adds 4px to the height of the container\r\n .style('display', 'block')\r\n .attr('xmlns', 'http://www.w3.org/2000/svg')\r\n .attr('height', ContainerCore.DEFAULT_CONTAINER_HEIGHT) // Overriding default SVG height of 150\r\n .attr('aria-hidden', true);\r\n this._svgDefs = this.svg.append('defs');\r\n this._svgDefsExternal = this.svg.append('defs');\r\n this.element = this.svg.node();\r\n }\r\n updateContainer(config) {\r\n var _a;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n this.prevConfig = this.config;\r\n this.config = merge(this._defaultConfig, config);\r\n // Add `svgDefs` if provided in the config\r\n if ((config === null || config === void 0 ? void 0 : config.svgDefs) !== ((_a = this.prevConfig) === null || _a === void 0 ? void 0 : _a.svgDefs)) {\r\n this._svgDefsExternal.selectAll('*').remove();\r\n this._svgDefsExternal.html(config.svgDefs);\r\n }\r\n }\r\n // The `_preRender` step should be used to perform some actions before rendering.\r\n // For example, calculating scales, setting component sizes, etc ...\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n _preRender() { }\r\n // The `_render` step should be used to perform the actual rendering\r\n _render(duration) {\r\n const { config } = this;\r\n // Apply the `aria-label` attribute\r\n select(this._container)\r\n .attr('aria-label', config.ariaLabel);\r\n this._isFirstRender = false;\r\n }\r\n // Warning: Some Containers (i.e. Single Container) may override this method, so if you introduce any changes here,\r\n // make sure to check that other containers didn't break after them.\r\n render(duration = this.config.duration) {\r\n const width = this.config.width || this.containerWidth;\r\n const height = this.config.height || this.containerHeight;\r\n // We set SVG size in `render()` instead of `_render()`, because the size values in pixels will become\r\n // available only in the next animation when being accessed via `element.clientWidth` and `element.clientHeight`,\r\n // and we rely on those values when setting width and size of the components.\r\n this.svg\r\n .attr('width', width)\r\n .attr('height', height);\r\n // Set up Resize Observer. We do it in `render()` to capture container size change if it happened\r\n // in the next animation frame after the initial `render` was called.\r\n if (!this._resizeObserver)\r\n this._setUpResizeObserver();\r\n // Schedule the actual rendering in the next frame\r\n cancelAnimationFrame(this._renderAnimationFrameId);\r\n this._renderAnimationFrameId = requestAnimationFrame(() => {\r\n this._preRender();\r\n this._render(duration);\r\n });\r\n }\r\n get containerWidth() {\r\n return this.config.width\r\n ? this.element.clientWidth\r\n : (this._container.clientWidth || this._container.getBoundingClientRect().width);\r\n }\r\n get containerHeight() {\r\n return this.config.height\r\n ? this.element.clientHeight\r\n : (this._container.clientHeight || this._container.getBoundingClientRect().height || ContainerCore.DEFAULT_CONTAINER_HEIGHT);\r\n }\r\n get width() {\r\n return clamp(this.containerWidth - this.config.margin.left - this.config.margin.right, 0, Number.POSITIVE_INFINITY);\r\n }\r\n get height() {\r\n return clamp(this.containerHeight - this.config.margin.top - this.config.margin.bottom, 0, Number.POSITIVE_INFINITY);\r\n }\r\n _removeAllChildren() {\r\n while (this.element.firstChild) {\r\n this.element.removeChild(this.element.firstChild);\r\n }\r\n }\r\n _onResize() {\r\n const { config } = this;\r\n const redrawOnResize = config.sizing === Sizing.Fit || config.sizing === Sizing.FitWidth;\r\n if (redrawOnResize)\r\n this.render(0);\r\n }\r\n _setUpResizeObserver() {\r\n if (this._resizeObserver)\r\n return;\r\n const containerRect = this._container.getBoundingClientRect();\r\n this._containerSize = { width: containerRect.width, height: containerRect.height };\r\n this._resizeObserver = new ResizeObserver((entries, observer) => {\r\n // Using request animation frame to avoid multiple resize events when scrollbars appear/disappear\r\n // See more: https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver#observation_errors\r\n cancelAnimationFrame(this._resizeObserverAnimationFrameId);\r\n this._resizeObserverAnimationFrameId = requestAnimationFrame(() => {\r\n const resizedContainerRect = this._container.getBoundingClientRect();\r\n const resizedContainerSize = { width: resizedContainerRect.width, height: resizedContainerRect.height };\r\n const hasSizeChanged = !isEqual(this._containerSize, resizedContainerSize);\r\n // Do resize only if element is attached to the DOM\r\n // will come in useful when some ancestor of container becomes detached\r\n if (hasSizeChanged && resizedContainerSize.width && resizedContainerSize.height) {\r\n this._containerSize = resizedContainerSize;\r\n this._onResize();\r\n }\r\n });\r\n });\r\n this._resizeObserver.observe(this._container);\r\n }\r\n destroy() {\r\n var _a;\r\n cancelAnimationFrame(this._renderAnimationFrameId);\r\n cancelAnimationFrame(this._resizeObserverAnimationFrameId);\r\n (_a = this._resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\r\n this.svg.remove();\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nContainerCore.DEFAULT_CONTAINER_HEIGHT = 300;\n\nexport { ContainerCore };\n//# sourceMappingURL=index.js.map\n","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value;\n var parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n var componentSelector = interpolation;\n\n if (componentSelector.__emotion_styles !== undefined) {\n\n return componentSelector;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n var keyframes = interpolation;\n\n if (keyframes.anim === 1) {\n cursor = {\n name: keyframes.name,\n styles: keyframes.styles,\n next: cursor\n };\n return keyframes.name;\n }\n\n var serializedStyles = interpolation;\n\n if (serializedStyles.styles !== undefined) {\n var next = serializedStyles.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = serializedStyles.styles + \";\";\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n }\n\n break;\n }\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n var asString = interpolation;\n\n if (registered == null) {\n return asString;\n }\n\n var cached = registered[asString];\n return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var key in obj) {\n var value = obj[key];\n\n if (typeof value !== 'object') {\n var asString = value;\n\n if (registered != null && registered[asString] !== undefined) {\n string += key + \"{\" + registered[asString] + \"}\";\n } else if (isProcessableValue(asString)) {\n string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n\n string += key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g; // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n var asTemplateStringsArr = strings;\n\n styles += asTemplateStringsArr[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n var templateStringsArr = strings;\n\n styles += templateStringsArr[i];\n }\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n}\n\nexport { serializeStyles };\n","var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else if (className) {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","import createCache from '@emotion/cache';\nimport { serializeStyles } from '@emotion/serialize';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\n\nfunction insertWithoutScoping(cache, serialized) {\n if (cache.inserted[serialized.name] === undefined) {\n return cache.insert('', serialized, cache.sheet, true);\n }\n}\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar createEmotion = function createEmotion(options) {\n var cache = createCache(options);\n\n cache.sheet.speedy = function (value) {\n\n this.isSpeedy = value;\n };\n\n cache.compat = true;\n\n var css = function css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered, undefined);\n insertStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var keyframes = function keyframes() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n var animation = \"animation-\" + serialized.name;\n insertWithoutScoping(cache, {\n name: serialized.name,\n styles: \"@keyframes \" + animation + \"{\" + serialized.styles + \"}\"\n });\n return animation;\n };\n\n var injectGlobal = function injectGlobal() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n insertWithoutScoping(cache, serialized);\n };\n\n var cx = function cx() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n return {\n css: css,\n cx: cx,\n injectGlobal: injectGlobal,\n keyframes: keyframes,\n hydrate: function hydrate(ids) {\n ids.forEach(function (key) {\n cache.inserted[key] = true;\n });\n },\n flush: function flush() {\n cache.registered = {};\n cache.inserted = {};\n cache.sheet.flush();\n },\n sheet: cache.sheet,\n cache: cache,\n getRegisteredStyles: getRegisteredStyles.bind(null, cache.registered),\n merge: merge.bind(null, cache.registered, css)\n };\n};\n\nvar classnames = function classnames(args) {\n var cls = '';\n\n for (var i = 0; i < args.length; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nexport { createEmotion as default };\n","import createEmotion from '../create-instance/dist/emotion-css-create-instance.esm.js';\nimport '@emotion/cache';\nimport '@emotion/serialize';\nimport '@emotion/utils';\n\nvar _createEmotion = createEmotion({\n key: 'css'\n}),\n flush = _createEmotion.flush,\n hydrate = _createEmotion.hydrate,\n cx = _createEmotion.cx,\n merge = _createEmotion.merge,\n getRegisteredStyles = _createEmotion.getRegisteredStyles,\n injectGlobal = _createEmotion.injectGlobal,\n keyframes = _createEmotion.keyframes,\n css = _createEmotion.css,\n sheet = _createEmotion.sheet,\n cache = _createEmotion.cache;\n\nexport { cache, css, cx, flush, getRegisteredStyles, hydrate, injectGlobal, keyframes, merge, sheet };\n","module.exports = function parseUnit(str, out) {\n if (!out)\n out = [ 0, '' ]\n\n str = String(str)\n var num = parseFloat(str, 10)\n out[0] = num\n out[1] = str.match(/[\\d.\\-\\+]*\\s*(.*)/)[1] || ''\n return out\n}","'use strict'\n\nvar parseUnit = require('parse-unit')\n\nmodule.exports = toPX\n\nvar PIXELS_PER_INCH = getSizeBrutal('in', document.body) // 96\n\n\nfunction getPropertyInPX(element, prop) {\n var parts = parseUnit(getComputedStyle(element).getPropertyValue(prop))\n return parts[0] * toPX(parts[1], element)\n}\n\n//This brutal hack is needed\nfunction getSizeBrutal(unit, element) {\n var testDIV = document.createElement('div')\n testDIV.style['height'] = '128' + unit\n element.appendChild(testDIV)\n var size = getPropertyInPX(testDIV, 'height') / 128\n element.removeChild(testDIV)\n return size\n}\n\nfunction toPX(str, element) {\n if (!str) return null\n\n element = element || document.body\n str = (str + '' || 'px').trim().toLowerCase()\n if(element === window || element === document) {\n element = document.body\n }\n\n switch(str) {\n case '%': //Ambiguous, not sure if we should use width or height\n return element.clientHeight / 100.0\n case 'ch':\n case 'ex':\n return getSizeBrutal(str, element)\n case 'em':\n return getPropertyInPX(element, 'font-size')\n case 'rem':\n return getPropertyInPX(document.body, 'font-size')\n case 'vw':\n return window.innerWidth/100\n case 'vh':\n return window.innerHeight/100\n case 'vmin':\n return Math.min(window.innerWidth, window.innerHeight) / 100\n case 'vmax':\n return Math.max(window.innerWidth, window.innerHeight) / 100\n case 'in':\n return PIXELS_PER_INCH\n case 'cm':\n return PIXELS_PER_INCH / 2.54\n case 'mm':\n return PIXELS_PER_INCH / 25.4\n case 'pt':\n return PIXELS_PER_INCH / 72\n case 'pc':\n return PIXELS_PER_INCH / 6\n case 'px':\n return 1\n }\n\n // detect number of units\n var parts = parseUnit(str)\n if (!isNaN(parts[0]) && parts[1]) {\n var px = toPX(parts[1], element)\n return typeof px === 'number' ? parts[0] * px : null\n }\n\n return null\n}\n","import { isString, getString } from './data.js';\nimport toPx from 'to-px';\n\nfunction guid() {\r\n const s4 = () => Math.floor((1 + crypto.getRandomValues(new Uint32Array(1))[0]) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n return `${s4() + s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`;\r\n}\r\nfunction stringToHtmlId(str) {\r\n return (str || '').replace(/\\W/g, '_');\r\n}\r\nfunction isStringCSSVariable(s) {\r\n return isString(s) ? (s.substring(0, 6) === 'var(--') : false;\r\n}\r\nfunction getCSSVariableValue(s, context) {\r\n if (!isString(s))\r\n return '';\r\n const variableName = s.substr(4, s.length - 5);\r\n return getComputedStyle(context).getPropertyValue(variableName);\r\n}\r\nfunction getCSSVariableValueInPixels(s, context) {\r\n const val = getCSSVariableValue(s, context);\r\n return toPx(val);\r\n}\r\nfunction getPixelValue(v) {\r\n return typeof v === 'number' ? v : toPx(v);\r\n}\r\nfunction rectIntersect(rect1, rect2, tolerancePx = 0) {\r\n const [left1, top1, right1, bottom1] = [\r\n rect1.x + tolerancePx,\r\n rect1.y + rect1.height - 2 * tolerancePx,\r\n rect1.x + rect1.width - 2 * tolerancePx,\r\n rect1.y + tolerancePx,\r\n ];\r\n const [left2, top2, right2, bottom2] = [\r\n rect2.x + tolerancePx,\r\n rect2.y + rect2.height - 2 * tolerancePx,\r\n rect2.x + rect2.width - 2 * tolerancePx,\r\n rect2.y + tolerancePx,\r\n ];\r\n return !(top1 < bottom2 || top2 < bottom1 || right1 < left2 || right2 < left1);\r\n}\r\nfunction getHref(d, identifier) {\r\n const id = getString(d, identifier);\r\n return id ? `url(#${id})` : null;\r\n}\r\nfunction parseUnit(value, basis = 0) {\r\n if (!value)\r\n return 0;\r\n else if (typeof value === 'number')\r\n return value;\r\n else if (value.endsWith('%'))\r\n return basis * parseFloat(value) / 100;\r\n else if (value.endsWith('px'))\r\n return parseFloat(value);\r\n else\r\n return parseFloat(value) || 0;\r\n}\n\nexport { getCSSVariableValue, getCSSVariableValueInPixels, getHref, getPixelValue, guid, isStringCSSVariable, parseUnit, rectIntersect, stringToHtmlId };\n//# sourceMappingURL=misc.js.map\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","import { hsl } from 'd3-color';\nimport { isNumber } from '../utils/data.js';\n\n/** Array of default colors */\r\nconst colors = (globalThis === null || globalThis === void 0 ? void 0 : globalThis.UNOVIS_COLORS) || ['#4D8CFD', '#FF6B7E', '#F4B83E', '#A6CC74', '#00C19A', '#6859BE'];\r\nconst colorsDark = (globalThis === null || globalThis === void 0 ? void 0 : globalThis.UNOVIS_COLORS_DARK) || ['#4D8CFD', '#FF6B7E', '#FFC16D', '#A6CC74', '#00C19A', '#7887E0'];\r\n/** Return a CSS Variable name for a given color index or string */\r\nconst getCSSColorVariable = (suffix) => {\r\n return `--vis-${isNumber(suffix) ? `color${suffix % colors.length}` : suffix}`;\r\n};\r\nfunction getLighterColor(hex, percentage = 0.4) {\r\n const c = hsl(hex);\r\n c.l = c.l * (1 + percentage);\r\n return c.formatHex();\r\n}\r\nfunction getDarkerColor(hex, percentageL = 0.4, percentageS = 0.6) {\r\n const c = hsl(hex);\r\n c.s = c.s * (1 - percentageS);\r\n c.l = c.l * (1 - percentageL);\r\n return c.formatHex();\r\n}\n\nexport { colors, colorsDark, getCSSColorVariable, getDarkerColor, getLighterColor };\n//# sourceMappingURL=colors.js.map\n","import { getCSSColorVariable } from './colors.js';\n\nconst PATTERN_SIZE_PX = 10;\r\nconst fills = [\r\n { id: 'stripes-diagonal', svg: '<path d=\"M-1,1 l2,-2 M0,10 l10,-10 M9,11 l2,-2\" stroke=\"#000\"/>' },\r\n { id: 'dots', svg: '<path d=\"m0-1.5a1 1 0 010 3m10-3a1 1 0 000 3M5 3.5a1 1 0 010 3 1 1 0 010-3M0 8.5 a1 1 0 010 3m10-3a1 1 0 000 3\" fill\"#000\"/>' },\r\n { id: 'stripes-vertical', svg: '<path d=\"M 5,-1 L5,11\" stroke=\"#000\"/>' },\r\n { id: 'crosshatch', svg: '<path d=\"M0 0L10 10ZM10 0L0 10Z\" stroke=\"#000\"/>' },\r\n { id: 'waves', svg: '<path d=\"M0 4Q2.5 1 5 4 7.5 7 10 4v2Q7.5 9 5 6 2.5 3 0 6Z\" fill=\"#000\"/>' },\r\n { id: 'circles', svg: '<circle cx=\"5\" cy=\"5\" r=\"3\" stroke=\"#000\" fill=\"#fff\"/>' },\r\n];\r\nconst lines = [\r\n { id: 'circle', marker: '<circle cx=\"5\" cy=\"5\" r=\"5\"/>', dashArray: [] },\r\n { id: 'triangle', marker: '<path d=\"M5,0 L10,9 L0,9Z\">', dashArray: [9, 1] },\r\n { id: 'diamond', marker: '<path d=\"M 0 5 L5 0 L 10 5 L 5 10 L 0 5Z\">', dashArray: [2] },\r\n { id: 'arrow', marker: '<path d=\"M4 0 0 0 6 5 0 10 4 10 10 5Z\">', dashArray: [2, 3, 8, 3] },\r\n { id: 'square', marker: '<rect x=\"1\" y=\"1\" width=\"8\" height=\"8\"/>', dashArray: [6] },\r\n { id: 'star', marker: '<path d=\"m2 9 3-9 3 9L0 3h10Z\"/>', dashArray: [1, 6] },\r\n];\r\nfunction getPatternVariable(p) {\r\n return `vis-${`pattern-${p.svg ? 'fill' : 'marker'}`}-${p.id}`;\r\n}\r\nconst maskDef = (p) => `<mask id=\"${getPatternVariable(p)}\">\n <pattern id=\"${p.id}\" viewBox=\"0 0 10 10\" width=\"${PATTERN_SIZE_PX}\" height=\"${PATTERN_SIZE_PX}\" patternUnits=\"userSpaceOnUse\">\n <rect width=\"100%\" height=\"100%\" fill=\"#fff\"/>\n ${p.svg}\n </pattern>\n <rect x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\" fill=\"url(#${p.id})\"/>\n </mask>`;\r\nconst markerDef = (p, i) => `<marker id=\"${getPatternVariable(p)}\"\n fill=\"var(${getCSSColorVariable(i)})\"\n markerUnits=\"userSpaceOnUse\"\n refX=\"5\"\n refY=\"5\"\n markerWidth=\"${PATTERN_SIZE_PX}\"\n markerHeight=\"${PATTERN_SIZE_PX}\">\n ${p.marker}\n </marker>`;\r\n// // Injecting SVG defs as a single SVG element on the page\r\nfunction injectSVGDefs() {\r\n const svgDefs = fills.map(maskDef).concat(lines.map(markerDef)).join('');\r\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\r\n svg.setAttribute('height', '100%');\r\n svg.setAttribute('width', '100%');\r\n svg.style.position = 'fixed';\r\n svg.style.zIndex = '-99999999';\r\n svg.innerHTML = `<defs>${svgDefs}</defs>`;\r\n document.body.appendChild(svg);\r\n}\r\nif (typeof window !== 'undefined')\r\n injectSVGDefs();\n\nexport { PATTERN_SIZE_PX, fills, getPatternVariable, lines };\n//# sourceMappingURL=patterns.js.map\n","import { injectGlobal } from '@emotion/css';\nimport { getCSSVariableValue } from '../utils/misc.js';\nimport { getCSSColorVariable, getLighterColor, colors, getDarkerColor, colorsDark } from './colors.js';\nimport { fills, getPatternVariable, lines } from './patterns.js';\n\nconst UNOVIS_ICON_FONT_FAMILY_DEFAULT = (globalThis === null || globalThis === void 0 ? void 0 : globalThis.UNOVIS_ICON_FONT_FAMILY) || 'FontAwesome';\r\nconst UNOVIS_FONT_WH_RATIO_DEFAULT = (globalThis === null || globalThis === void 0 ? void 0 : globalThis.UNOVIS_FONT_W2H_RATIO_DEFAULT) || 0.5;\r\nconst UNOVIS_TEXT_SEPARATOR_DEFAULT = (globalThis === null || globalThis === void 0 ? void 0 : globalThis.UNOVIS_TEXT_SEPARATOR_DEFAULT) || [' ', '-', '.', ','];\r\nconst UNOVIS_TEXT_HYPHEN_CHARACTER_DEFAULT = (globalThis === null || globalThis === void 0 ? void 0 : globalThis.UNOVIS_TEXT_HYPHEN_CHARACTER_DEFAULT) || '-';\r\nconst UNOVIS_TEXT_DEFAULT = (globalThis === null || globalThis === void 0 ? void 0 : globalThis.UNOVIS_TEXT_DEFAULT) || {\r\n text: '',\r\n fontSize: 12,\r\n fontFamily: 'var(--vis-font-family)',\r\n lineHeight: 1.25,\r\n marginTop: 0,\r\n marginBottom: 0,\r\n};\r\nconst variables = injectGlobal `\n :root {\n label: vis-root-styles;\n --vis-font-family: Inter, Arial, \"Helvetica Neue\", Helvetica, sans-serif;\n --vis-font-wh-ratio: ${UNOVIS_FONT_WH_RATIO_DEFAULT};\n --vis-color-main: var(${getCSSColorVariable(0)});\n --vis-color-main-light: ${getLighterColor(colors[0])};\n --vis-color-main-dark: ${getDarkerColor(colors[0])};\n --vis-color-grey: #2a2a2a;\n ${colors.map((c, i) => `${getCSSColorVariable(i)}: ${c};`)}\n ${colorsDark.map((c, i) => `--vis-dark-color${i}: ${c};`)}\n ${fills.map((p, i) => `\n --${getPatternVariable(p)}: url(#${getPatternVariable(p)});\n --vis-pattern-fill${i}: var(--${getPatternVariable(p)});\n `)}\n ${lines.map((p, i) => {\r\n var _a;\r\n return `\n --${getPatternVariable(p)}: url(#${getPatternVariable(p)});\n --vis-pattern-marker${i}: var(--${getPatternVariable(p)});\n --vis-pattern-dasharray${i}: ${(_a = p.dashArray) === null || _a === void 0 ? void 0 : _a.join(' ')};\n `;\r\n})}\n\n body.theme-dark {\n ${colors.map((c, i) => `${getCSSColorVariable(i)}: var(--vis-dark-color${i});`)}\n }\n\n body.theme-patterns {\n ${fills.map((_, i) => `path[style*=\"fill: var(${getCSSColorVariable(i)})\"] {\n mask: var(--vis-pattern-fill${i});\n }`)}\n ${lines.map((_, i) => `\n path[stroke=\"var(${getCSSColorVariable(i)})\"]:not([style*=\"fill\"]),\n path[style*=\"stroke: var(${getCSSColorVariable(i)})\"]:not([style*=\"fill\"]) {\n marker: var(--vis-pattern-marker${i});\n stroke-dasharray: var(--vis-pattern-dasharray${i});\n }\n `)}\n}\n`;\r\nfunction getFontWidthToHeightRatio(context = window === null || window === void 0 ? void 0 : window.document.body) {\r\n return context ? +getCSSVariableValue('var(--vis-font-wh-ratio)', context) : UNOVIS_FONT_WH_RATIO_DEFAULT;\r\n}\n\nexport { UNOVIS_FONT_WH_RATIO_DEFAULT, UNOVIS_ICON_FONT_FAMILY_DEFAULT, UNOVIS_TEXT_DEFAULT, UNOVIS_TEXT_HYPHEN_CHARACTER_DEFAULT, UNOVIS_TEXT_SEPARATOR_DEFAULT, getFontWidthToHeightRatio, variables };\n//# sourceMappingURL=index.js.map\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = value;\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export const linear = t => +t;\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import { interrupt } from 'd3-transition';\n\nfunction smartTransition(selection, duration, easing) {\r\n selection.nodes().forEach(node => interrupt(node)); // Interrupt active transitions if any\r\n if (duration) {\r\n const transition = selection.transition().duration(duration);\r\n if (easing)\r\n transition.ease(easing);\r\n return transition;\r\n }\r\n else\r\n return selection;\r\n}\n\nexport { smartTransition };\n//# sourceMappingURL=d3.js.map\n","import { ContainerDefaultConfig } from '../../core/container/config.js';\n\n// Core\r\nconst SingleContainerDefaultConfig = Object.assign(Object.assign({}, ContainerDefaultConfig), { tooltip: undefined, annotations: undefined });\n\nexport { SingleContainerDefaultConfig };\n//# sourceMappingURL=config.js.map\n","import '../../styles/index.js';\nimport { ContainerCore } from '../../core/container/index.js';\nimport { smartTransition } from '../../utils/d3.js';\nimport { Sizing } from '../../types/component.js';\nimport { SingleContainerDefaultConfig } from './config.js';\n\n// Global CSS variables (side effects import)\r\nclass SingleContainer extends ContainerCore {\r\n constructor(element, config, data) {\r\n var _a;\r\n super(element);\r\n this._defaultConfig = SingleContainerDefaultConfig;\r\n this.config = this._defaultConfig;\r\n if (config) {\r\n this.updateContainer(config, true);\r\n this.component = config.component;\r\n }\r\n if (data) {\r\n this.setData(data, true);\r\n }\r\n // Render if component exists and has data\r\n if ((_a = this.component) === null || _a === void 0 ? void 0 : _a.datamodel.data)\r\n this.render();\r\n }\r\n setData(data, preventRender) {\r\n var _a;\r\n const { config } = this;\r\n if (this.component)\r\n this.component.setData(data);\r\n if (!preventRender)\r\n this.render();\r\n (_a = config.tooltip) === null || _a === void 0 ? void 0 : _a.hide();\r\n }\r\n updateContainer(containerConfig, preventRender) {\r\n super.updateContainer(containerConfig);\r\n this._removeAllChildren();\r\n this.component = containerConfig.component;\r\n if (containerConfig.sizing)\r\n this.component.sizing = containerConfig.sizing;\r\n this.element.appendChild(this.component.element);\r\n const tooltip = containerConfig.tooltip;\r\n if (tooltip) {\r\n if (!tooltip.hasContainer())\r\n tooltip.setContainer(this._container);\r\n tooltip.setComponents([this.component]);\r\n }\r\n const annotations = containerConfig.annotations;\r\n if (annotations) {\r\n this.element.appendChild(annotations.element);\r\n }\r\n // Defs\r\n this.element.appendChild(this._svgDefs.node());\r\n this.element.appendChild(this._svgDefsExternal.node());\r\n if (!preventRender)\r\n this.render();\r\n }\r\n updateComponent(componentConfig, preventRender) {\r\n this.component.setConfig(componentConfig);\r\n if (!preventRender)\r\n this.render();\r\n }\r\n update(containerConfig, componentConfig, data) {\r\n if (containerConfig)\r\n this.updateContainer(containerConfig, true);\r\n if (componentConfig)\r\n this.updateComponent(componentConfig, true);\r\n if (data)\r\n this.setData(data, true);\r\n this.render();\r\n }\r\n getFitWidthScale() {\r\n const { config, component } = this;\r\n const extendedSizeComponent = component;\r\n if (!extendedSizeComponent.getWidth)\r\n return 1;\r\n const componentWidth = extendedSizeComponent.getWidth() + config.margin.left + config.margin.right;\r\n return this.width / componentWidth;\r\n }\r\n _preRender() {\r\n var _a;\r\n super._preRender();\r\n this.component.setSize(this.width, this.height, this.containerWidth, this.containerHeight);\r\n (_a = this.config.annotations) === null || _a === void 0 ? void 0 : _a.setSize(this.width, this.height, this.containerWidth, this.containerHeight);\r\n }\r\n _render(duration) {\r\n var _a;\r\n const { config, component } = this;\r\n super._render(duration);\r\n component.g.attr('transform', `translate(${config.margin.left},${config.margin.top})`);\r\n component.render(duration);\r\n (_a = config.annotations) === null || _a === void 0 ? void 0 : _a.render(duration);\r\n if (config.tooltip)\r\n config.tooltip.update();\r\n }\r\n // Re-defining the `render()` function to handle different sizing techniques (`Sizing.Extend` and `Sizing.FitWidth`)\r\n // Not calling `super.render()` because we don't want it to interfere with setting the SVG size here.\r\n render(duration = this.config.duration) {\r\n const { config, component } = this;\r\n if (config.sizing === Sizing.Extend || config.sizing === Sizing.FitWidth) {\r\n const fitToWidth = config.sizing === Sizing.FitWidth;\r\n const extendedSizeComponent = component;\r\n const componentWidth = extendedSizeComponent.getWidth() + config.margin.left + config.margin.right;\r\n const componentHeight = extendedSizeComponent.getHeight() + config.margin.top + config.margin.bottom;\r\n const scale = fitToWidth ? this.getFitWidthScale() : 1;\r\n const currentWidth = this.svg.attr('width');\r\n const currentHeight = this.svg.attr('height');\r\n const scaledWidth = componentWidth * scale;\r\n const scaledHeight = componentHeight * scale;\r\n const animated = currentWidth || currentHeight;\r\n smartTransition(this.svg, animated ? duration : 0)\r\n .attr('width', scaledWidth)\r\n .attr('height', scaledHeight)\r\n .attr('viewBox', `${0} ${0} ${componentWidth} ${fitToWidth ? scaledHeight : componentHeight}`)\r\n .attr('preserveAspectRatio', 'xMinYMin');\r\n }\r\n else {\r\n this.svg\r\n .attr('width', this.config.width || this.containerWidth)\r\n .attr('height', this.config.height || this.containerHeight);\r\n }\r\n // Set up Resize Observer\r\n if (!this._resizeObserver)\r\n this._setUpResizeObserver();\r\n // Schedule the actual rendering in the next frame\r\n cancelAnimationFrame(this._renderAnimationFrameId);\r\n this._renderAnimationFrameId = requestAnimationFrame(() => {\r\n this._preRender();\r\n this._render(duration);\r\n });\r\n }\r\n _onResize() {\r\n var _a;\r\n const { config } = this;\r\n super._onResize();\r\n (_a = config.tooltip) === null || _a === void 0 ? void 0 : _a.hide();\r\n }\r\n destroy() {\r\n var _a, _b;\r\n const { component, config } = this;\r\n super.destroy();\r\n component === null || component === void 0 ? void 0 : component.destroy();\r\n (_a = config.tooltip) === null || _a === void 0 ? void 0 : _a.destroy();\r\n (_b = config.annotations) === null || _b === void 0 ? void 0 : _b.destroy();\r\n }\r\n}\n\nexport { SingleContainer };\n//# sourceMappingURL=index.js.map\n","class CoreDataModel {\r\n constructor(data) {\r\n this.data = data;\r\n }\r\n get data() {\r\n return this._data;\r\n }\r\n set data(value) {\r\n this._data = value;\r\n }\r\n}\n\nexport { CoreDataModel };\n//# sourceMappingURL=core.js.map\n","var AxisType;\r\n(function (AxisType) {\r\n AxisType[\"X\"] = \"x\";\r\n AxisType[\"Y\"] = \"y\";\r\n})(AxisType || (AxisType = {}));\n\nexport { AxisType };\n//# sourceMappingURL=types.js.map\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n\n if (r) ([u, v] = [v, u]);\n\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = () => {\n return domain(nice(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n const scale = loggish(transformer()).domain([1, 10]);\n scale.copy = () => copy(scale, log()).base(scale.base());\n initRange.apply(scale, arguments);\n return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","import { scaleLinear, scalePow, scaleSqrt, scaleLog, scaleSymlog, scaleIdentity, scaleTime, scaleUtc, scaleSequential, scaleDiverging, scaleQuantize, scaleQuantile, scaleThreshold, scaleOrdinal, scaleBand, scalePoint } from 'd3-scale';\n\nconst Scale = {\r\n scaleLinear,\r\n scalePow,\r\n scaleSqrt,\r\n scaleLog,\r\n scaleSymlog,\r\n scaleIdentity,\r\n scaleTime,\r\n scaleUtc,\r\n scaleSequential,\r\n scaleDiverging,\r\n scaleQuantize,\r\n scaleQuantile,\r\n scaleThreshold,\r\n scaleOrdinal,\r\n scaleBand,\r\n scalePoint,\r\n};\r\nvar ScaleDimension;\r\n(function (ScaleDimension) {\r\n ScaleDimension[\"X\"] = \"x\";\r\n ScaleDimension[\"Y\"] = \"y\";\r\n})(ScaleDimension || (ScaleDimension = {}));\n\nexport { Scale, ScaleDimension };\n//# sourceMappingURL=scale.js.map\n","var Direction;\r\n(function (Direction) {\r\n Direction[\"West\"] = \"west\";\r\n Direction[\"East\"] = \"east\";\r\n Direction[\"North\"] = \"north\";\r\n Direction[\"South\"] = \"south\";\r\n})(Direction || (Direction = {}));\n\nexport { Direction };\n//# sourceMappingURL=direction.js.map\n","import { ContainerDefaultConfig } from '../../core/container/config.js';\nimport { Direction } from '../../types/direction.js';\n\nconst XYContainerDefaultConfig = Object.assign(Object.assign({}, ContainerDefaultConfig), { components: [], tooltip: undefined, crosshair: undefined, annotations: undefined, xAxis: undefined, yAxis: undefined, autoMargin: true, xScale: undefined, xDomain: undefined, xDomainMinConstraint: undefined, xDomainMaxConstraint: undefined, xRange: undefined, yScale: undefined, yDomain: undefined, yDomainMinConstraint: undefined, yDomainMaxConstraint: undefined, yRange: undefined, yDirection: Direction.North, preventEmptyDomain: null, scaleByDomain: false });\n\nexport { XYContainerDefaultConfig };\n//# sourceMappingURL=config.js.map\n","import { css } from '@emotion/css';\nimport { extent, merge } from 'd3-array';\nimport '../../styles/index.js';\nimport { ContainerCore } from '../../core/container/index.js';\nimport { CoreDataModel } from '../../data-models/core.js';\nimport { AxisType } from '../../components/axis/types.js';\nimport { ScaleDimension } from '../../types/scale.js';\nimport { Direction } from '../../types/direction.js';\nimport { clamp, clean, flatten } from '../../utils/data.js';\nimport { guid } from '../../utils/misc.js';\nimport { XYContainerDefaultConfig } from './config.js';\n\nclass XYContainer extends ContainerCore {\r\n constructor(element, config, data) {\r\n var _a, _b;\r\n super(element);\r\n this._defaultConfig = XYContainerDefaultConfig;\r\n this.datamodel = new CoreDataModel();\r\n this.config = this._defaultConfig;\r\n this._clipPathId = guid();\r\n this._axisMargin = { top: 0, bottom: 0, left: 0, right: 0 };\r\n this._firstRender = true;\r\n this._clipPath = this.svg.append('clipPath')\r\n .attr('id', this._clipPathId);\r\n this._clipPath.append('rect');\r\n // When the base tag is specified on the HTML head,\r\n // Safari fails to find the corresponding filter URL.\r\n // We have to provide tull url in order to fix that\r\n const highlightFilterId = 'saturate';\r\n const baseUrl = window.location.href.replace(window.location.hash, '');\r\n this.svg.attr('class', css `\n --highlight-filter-id: url(${baseUrl}#${highlightFilterId}); // defining a css variable\n `);\r\n this._svgDefs.append('filter')\r\n .attr('id', highlightFilterId)\r\n .attr('filterUnits', 'objectBoundingBox')\r\n .html('<feColorMatrix type=\"saturate\" in=\"SourceGraphic\" values=\"1.35\"/>');\r\n if (config) {\r\n this.updateContainer(config, true);\r\n }\r\n if (data) {\r\n this.setData(data, true);\r\n }\r\n // Render if there are axes or components with data\r\n if (this.config.xAxis ||\r\n this.config.yAxis ||\r\n ((_a = this.components) === null || _a === void 0 ? void 0 : _a.some(c => c.datamodel.data))) {\r\n this.render();\r\n }\r\n // Force re-render axes when fonts are loaded\r\n (_b = document.fonts) === null || _b === void 0 ? void 0 : _b.ready.then(() => {\r\n if (!this._firstRender)\r\n this._renderAxes(0);\r\n });\r\n }\r\n get components() {\r\n return this.config.components;\r\n }\r\n // Overriding ContainerCore default get width method to work with axis auto margin\r\n get width() {\r\n const margin = this._getMargin();\r\n return clamp(this.containerWidth - margin.left - margin.right, 0, Number.POSITIVE_INFINITY);\r\n }\r\n // Overriding ContainerCore default get height method to work with axis auto margin\r\n get height() {\r\n const margin = this._getMargin();\r\n return clamp(this.containerHeight - margin.top - margin.bottom, 0, Number.POSITIVE_INFINITY);\r\n }\r\n setData(data, preventRender) {\r\n var _a, _b, _c, _d;\r\n const { components, config } = this;\r\n if (!data)\r\n return;\r\n this.datamodel.data = data;\r\n components.forEach((c) => {\r\n c.setData(data);\r\n });\r\n (_a = config.crosshair) === null || _a === void 0 ? void 0 : _a.setData(data);\r\n (_b = config.xAxis) === null || _b === void 0 ? void 0 : _b.setData(data);\r\n (_c = config.yAxis) === null || _c === void 0 ? void 0 : _c.setData(data);\r\n (_d = config.tooltip) === null || _d === void 0 ? void 0 : _d.hide();\r\n if (!preventRender)\r\n this.render();\r\n }\r\n updateContainer(containerConfig, preventRender) {\r\n super.updateContainer(containerConfig);\r\n this._removeAllChildren();\r\n // If there were any new components added we need to pass them data\r\n this.setData(this.datamodel.data, true);\r\n // Set up the axes\r\n if (containerConfig.xAxis) {\r\n this.config.xAxis.config.type = AxisType.X;\r\n this.element.appendChild(containerConfig.xAxis.element);\r\n }\r\n if (containerConfig.yAxis) {\r\n this.config.yAxis.config.type = AxisType.Y;\r\n this.element.appendChild(containerConfig.yAxis.element);\r\n }\r\n // Re-insert elements to the DOM\r\n for (const c of this.components) {\r\n this.element.appendChild(c.element);\r\n }\r\n // Set up the tooltip\r\n const tooltip = containerConfig.tooltip;\r\n if (tooltip) {\r\n if (!tooltip.hasContainer())\r\n tooltip.setContainer(this._container);\r\n tooltip.setComponents(this.components);\r\n }\r\n // Set up the crosshair\r\n const crosshair = containerConfig.crosshair;\r\n if (crosshair) {\r\n crosshair.setContainer(this.svg);\r\n crosshair.tooltip = tooltip;\r\n this.element.appendChild(crosshair.element);\r\n }\r\n // Set up annotations\r\n const annotations = containerConfig.annotations;\r\n if (annotations) {\r\n this.element.appendChild(annotations.element);\r\n }\r\n // Clipping path\r\n this.element.appendChild(this._clipPath.node());\r\n // Defs\r\n this.element.appendChild(this._svgDefs.node());\r\n this.element.appendChild(this._svgDefsExternal.node());\r\n // Rendering\r\n if (!preventRender)\r\n this.render();\r\n }\r\n updateComponents(componentConfigs, preventRender) {\r\n const { config } = this;\r\n this.components.forEach((c, i) => {\r\n const componentConfig = componentConfigs[i];\r\n if (componentConfig) {\r\n c.setConfig(componentConfigs[i]);\r\n }\r\n });\r\n this._updateScales(...this.components, config.xAxis, config.yAxis, config.crosshair);\r\n if (!preventRender)\r\n this.render();\r\n }\r\n update(containerConfig, componentConfigs, data) {\r\n if (data)\r\n this.datamodel.data = data; // Just updating the data model because the `updateContainer` method has the `setData` step inside\r\n if (containerConfig)\r\n this.updateContainer(containerConfig, true);\r\n if (componentConfigs)\r\n this.updateComponents(componentConfigs, true);\r\n this.render();\r\n }\r\n _preRender() {\r\n const { config } = this;\r\n super._preRender();\r\n // Calculate extra margin required to fit the axes\r\n if (config.autoMargin) {\r\n this._setAutoMargin();\r\n }\r\n // Pass size to the components\r\n const components = clean([...this.components, config.xAxis, config.yAxis, config.crosshair, config.annotations]);\r\n for (const c of components) {\r\n c.setSize(this.width, this.height, this.containerWidth, this.containerHeight);\r\n }\r\n // Update Scales of all the components at once to calculate required paddings and sync them\r\n this._updateScales(...this.components, config.xAxis, config.yAxis, config.crosshair);\r\n }\r\n _render(customDuration) {\r\n var _a, _b, _c, _d, _e;\r\n const { config } = this;\r\n super._render();\r\n // Get chart total margin after auto margin calculations\r\n const margin = this._getMargin();\r\n // Render components\r\n for (const c of this.components) {\r\n c.g.attr('transform', `translate(${margin.left},${margin.top})`)\r\n .style('clip-path', c.clippable ? `url(#${this._clipPathId})` : null)\r\n .style('-webkit-clip-path', c.clippable ? `url(#${this._clipPathId})` : null);\r\n c.render(customDuration);\r\n }\r\n this._renderAxes(this._firstRender ? 0 : customDuration);\r\n // Clip RectsetSize\r\n // Extending the clipping path to allow small overflow (e.g. Line will looks better that way when it touches the edges)\r\n const clipPathExtension = 2;\r\n this._clipPath.select('rect')\r\n .attr('x', -clipPathExtension)\r\n .attr('y', -clipPathExtension)\r\n .attr('width', this.width + 2 * clipPathExtension)\r\n .attr('height', this.height + 2 * clipPathExtension);\r\n // Tooltip\r\n (_a = config.tooltip) === null || _a === void 0 ? void 0 : _a.update(); // Re-bind events\r\n // Crosshair\r\n const crosshair = config.crosshair;\r\n if (crosshair) {\r\n // Pass accessors\r\n const yAccessors = this.components.filter(c => !c.stacked).map(c => c.config.y);\r\n const yStackedAccessors = this.components.filter(c => c.stacked).map(c => c.config.y);\r\n const baselineComponentConfig = (_b = this.components.find(c => c.config.baseline)) === null || _b === void 0 ? void 0 : _b.config;\r\n const baselineAccessor = baselineComponentConfig === null || baselineComponentConfig === void 0 ? void 0 : baselineComponentConfig.baseline;\r\n crosshair.accessors = {\r\n x: (_c = this.components[0]) === null || _c === void 0 ? void 0 : _c.config.x,\r\n y: flatten(yAccessors),\r\n yStacked: flatten(yStackedAccessors),\r\n baseline: baselineAccessor,\r\n };\r\n crosshair.g.attr('transform', `translate(${margin.left},${margin.top})`)\r\n .style('clip-path', `url(#${this._clipPathId})`)\r\n .style('-webkit-clip-path', `url(#${this._clipPathId})`);\r\n crosshair.hide();\r\n }\r\n (_d = config.annotations) === null || _d === void 0 ? void 0 : _d.g.attr('transform', `translate(${margin.left},${margin.top})`);\r\n (_e = config.annotations) === null || _e === void 0 ? void 0 : _e.render();\r\n this._firstRender = false;\r\n }\r\n _updateScales(...components) {\r\n const c = clean(components || this.components);\r\n this._setScales(...c);\r\n this._updateScalesDomain(...c);\r\n this._updateScalesRange(...c);\r\n }\r\n _setScales(...components) {\r\n const { config } = this;\r\n if (!components)\r\n return;\r\n // Set the X and Y scales\r\n if (config.xScale)\r\n components.forEach(c => c.setScale(ScaleDimension.X, config.xScale));\r\n if (config.yScale)\r\n components.forEach(c => c.setScale(ScaleDimension.Y, config.yScale));\r\n }\r\n _updateScalesDomain(...components) {\r\n const { config } = this;\r\n if (!components)\r\n return;\r\n const componentsWithDomain = components.filter(c => !c.config.excludeFromDomainCalculation);\r\n // Loop over all the dimensions\r\n Object.values(ScaleDimension).forEach((dimension) => {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n const [min, max] = extent(merge(componentsWithDomain.map(c => c.getDataExtent(dimension, config.scaleByDomain)))); // Components with undefined dimension accessors will return [undefined, undefined] but d3.extent will take care of that\r\n const configuredDomain = dimension === ScaleDimension.Y ? config.yDomain : config.xDomain;\r\n const configuredDomainMinConstraint = dimension === ScaleDimension.Y ? config.yDomainMinConstraint : config.xDomainMinConstraint;\r\n const configuredDomainMaxConstraint = dimension === ScaleDimension.Y ? config.yDomainMaxConstraint : config.xDomainMaxConstraint;\r\n const domainMin = (_b = (_a = configuredDomain === null || configuredDomain === void 0 ? void 0 : configuredDomain[0]) !== null && _a !== void 0 ? _a : min) !== null && _b !== void 0 ? _b : 0;\r\n const domainMax = (_d = (_c = configuredDomain === null || configuredDomain === void 0 ? void 0 : configuredDomain[1]) !== null && _c !== void 0 ? _c : max) !== null && _d !== void 0 ? _d : 1;\r\n const domain = [\r\n clamp(domainMin, (_e = configuredDomainMinConstraint === null || configuredDomainMinConstraint === void 0 ? void 0 : configuredDomainMinConstraint[0]) !== null && _e !== void 0 ? _e : Number.NEGATIVE_INFINITY, (_f = configuredDomainMinConstraint === null || configuredDomainMinConstraint === void 0 ? void 0 : configuredDomainMinConstraint[1]) !== null && _f !== void 0 ? _f : Number.POSITIVE_INFINITY),\r\n clamp(domainMax, (_g = configuredDomainMaxConstraint === null || configuredDomainMaxConstraint === void 0 ? void 0 : configuredDomainMaxConstraint[0]) !== null && _g !== void 0 ? _g : Number.NEGATIVE_INFINITY, (_h = configuredDomainMaxConstraint === null || configuredDomainMaxConstraint === void 0 ? void 0 : configuredDomainMaxConstraint[1]) !== null && _h !== void 0 ? _h : Number.POSITIVE_INFINITY),\r\n ];\r\n // Extend the X and Y domains if they're empty and `preventEmptyDomain` was explicitly set to `true`\r\n // or just the X domain if there is no data provided and `preventEmptyDomain` set to `null`\r\n if (domain[0] === domain[1]) {\r\n const hasDataProvided = componentsWithDomain.some(c => { var _a; return ((_a = c.datamodel.data) === null || _a === void 0 ? void 0 : _a.length) > 0; });\r\n if (config.preventEmptyDomain || (config.preventEmptyDomain === null && (!hasDataProvided || dimension === ScaleDimension.Y))) {\r\n domain[1] = domain[0] + 1;\r\n }\r\n }\r\n components.forEach(c => c.setScaleDomain(dimension, domain));\r\n });\r\n }\r\n _updateScalesRange(...components) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const { config } = this;\r\n if (!components)\r\n return;\r\n // Set initial scale range\r\n const isYDirectionSouth = config.yDirection === Direction.South;\r\n const xRange = [(_a = config.padding.left) !== null && _a !== void 0 ? _a : 0, this.width - ((_b = config.padding.right) !== null && _b !== void 0 ? _b : 0)];\r\n const yRange = [this.height - ((_c = config.padding.bottom) !== null && _c !== void 0 ? _c : 0), (_d = config.padding.top) !== null && _d !== void 0 ? _d : 0];\r\n if (isYDirectionSouth)\r\n yRange.reverse();\r\n for (const c of components) {\r\n c.setSize(this.width, this.height, this.containerWidth, this.containerHeight);\r\n c.setScaleRange(ScaleDimension.X, (_e = config.xRange) !== null && _e !== void 0 ? _e : xRange);\r\n c.setScaleRange(ScaleDimension.Y, (_f = config.yRange) !== null && _f !== void 0 ? _f : yRange);\r\n }\r\n // Get and combine bleed\r\n const bleed = components.map(c => c.bleed).reduce((bleed, b) => {\r\n for (const key of Object.keys(bleed)) {\r\n const k = key;\r\n if (bleed[k] < b[k])\r\n bleed[k] = b[k];\r\n }\r\n return bleed;\r\n }, { top: 0, bottom: 0, left: 0, right: 0 });\r\n // Update scale range\r\n for (const c of components) {\r\n c.setScaleRange(ScaleDimension.X, [xRange[0] + bleed.left, xRange[1] - bleed.right]);\r\n c.setScaleRange(ScaleDimension.Y, isYDirectionSouth\r\n ? [yRange[0] + bleed.top, yRange[1] - bleed.bottom] // if Y axis is directed downwards\r\n : [yRange[0] - bleed.bottom, yRange[1] + bleed.top] // if Y axis is directed upwards\r\n );\r\n }\r\n }\r\n _renderAxes(duration) {\r\n const { config: { xAxis, yAxis } } = this;\r\n const margin = this._getMargin();\r\n const axes = clean([xAxis, yAxis]);\r\n axes.forEach(axis => {\r\n const offset = axis.getOffset(margin);\r\n axis.g.attr('transform', `translate(${offset.left},${offset.top})`);\r\n axis.render(duration);\r\n });\r\n }\r\n _setAutoMargin() {\r\n const { config: { xAxis, yAxis } } = this;\r\n // At first we need to set the domain to the scales\r\n const components = clean([...this.components, xAxis, yAxis]);\r\n this._setScales(...components);\r\n this._updateScalesDomain(...components);\r\n // Calculate margin required by the axes\r\n // We do two iterations on the first render, because the amount and size of ticks can change\r\n // after new margin are calculated and applied (axes dimensions will change).\r\n // That's needed for correct label placement.\r\n const numIterations = this._firstRender ? 2 : 1;\r\n for (let i = 0; i < numIterations; i += 1) {\r\n const axisMargin = { top: 0, bottom: 0, left: 0, right: 0 };\r\n this._updateScalesRange(...components);\r\n const axes = clean([xAxis, yAxis]);\r\n axes.forEach(axis => {\r\n axis.preRender();\r\n const m = axis.getRequiredMargin();\r\n if (axisMargin.top < m.top)\r\n axisMargin.top = m.top;\r\n if (axisMargin.bottom < m.bottom)\r\n axisMargin.bottom = m.bottom;\r\n if (axisMargin.left < m.left)\r\n axisMargin.left = m.left;\r\n if (axisMargin.right < m.right)\r\n axisMargin.right = m.right;\r\n });\r\n this._axisMargin = axisMargin;\r\n }\r\n }\r\n _getMargin() {\r\n const { config: { margin } } = this;\r\n return {\r\n top: margin.top + this._axisMargin.top,\r\n bottom: margin.bottom + this._axisMargin.bottom,\r\n left: margin.left + this._axisMargin.left,\r\n right: margin.right + this._axisMargin.right,\r\n };\r\n }\r\n destroy() {\r\n const { components, config: { tooltip, crosshair, annotations, xAxis, yAxis } } = this;\r\n super.destroy();\r\n for (const c of components)\r\n c === null || c === void 0 ? void 0 : c.destroy();\r\n tooltip === null || tooltip === void 0 ? void 0 : tooltip.destroy();\r\n crosshair === null || crosshair === void 0 ? void 0 : crosshair.destroy();\r\n annotations === null || annotations === void 0 ? void 0 : annotations.destroy();\r\n xAxis === null || xAxis === void 0 ? void 0 : xAxis.destroy();\r\n yAxis === null || yAxis === void 0 ? void 0 : yAxis.destroy();\r\n }\r\n}\n\nexport { XYContainer };\n//# sourceMappingURL=index.js.map\n","const ComponentDefaultConfig = {\r\n duration: 600,\r\n events: {},\r\n attributes: {},\r\n};\n\nexport { ComponentDefaultConfig };\n//# sourceMappingURL=config.js.map\n","import { select } from 'd3-selection';\nimport { CoreDataModel } from '../../data-models/core.js';\nimport { throttle, merge } from '../../utils/data.js';\nimport { guid } from '../../utils/misc.js';\nimport { ComponentType, Sizing } from '../../types/component.js';\nimport { ComponentDefaultConfig } from './config.js';\n\nclass ComponentCore {\r\n constructor(type = ComponentType.SVG) {\r\n var _a, _b;\r\n this.type = ComponentType.SVG;\r\n this.datamodel = new CoreDataModel();\r\n this.sizing = Sizing.Fit; // Supported by SingleContainer and a subset of components only (Sankey)\r\n this.events = {};\r\n /** Default configuration */\r\n this._defaultConfig = ComponentDefaultConfig;\r\n /** Component width in pixels. This property is set automatically by the container. */\r\n this._width = 400;\r\n /** Component height in pixels. This property is set automatically by the container. */\r\n this._height = 200;\r\n /** Container width in pixels. This property is set automatically by the container. */\r\n this._containerWidth = undefined;\r\n /** Container height in pixels. This property is set automatically by the container. */\r\n this._containerHeight = undefined;\r\n this._setUpComponentEventsThrottled = throttle(this._setUpComponentEvents, 500);\r\n this._setCustomAttributesThrottled = throttle(this._setCustomAttributes, 500);\r\n if (type === ComponentType.SVG) {\r\n this.element = document.createElementNS('http://www.w3.org/2000/svg', 'g');\r\n }\r\n else {\r\n this.element = document.createElement('div');\r\n }\r\n this.uid = guid();\r\n this.g = select(this.element);\r\n // Setting the root class if available\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n // eslint-disable-next-line dot-notation\r\n const rootClass = (_b = (_a = this.constructor) === null || _a === void 0 ? void 0 : _a['selectors']) === null || _b === void 0 ? void 0 : _b.root;\r\n if (rootClass)\r\n this.g.attr('class', rootClass);\r\n }\r\n setConfig(config) {\r\n this.prevConfig = this.config; // Store the previous config instance\r\n this.config = merge(this._defaultConfig, config);\r\n }\r\n setData(data) {\r\n this.datamodel.data = data;\r\n }\r\n setSize(width, height, containerWidth, containerHeight) {\r\n if (isFinite(width))\r\n this._width = width;\r\n if (isFinite(height))\r\n this._height = height;\r\n if (isFinite(containerWidth))\r\n this._containerWidth = containerWidth;\r\n if (isFinite(containerHeight))\r\n this._containerHeight = containerHeight;\r\n }\r\n render(duration = this.config.duration) {\r\n this._render(duration);\r\n // While transition is in progress, we add the 'animating' attribute to the component's SVG group\r\n const ANIMATING_ATTR = 'animating';\r\n if (duration) {\r\n this.g.attr(ANIMATING_ATTR, '');\r\n const transition = this.g\r\n .transition(ANIMATING_ATTR)\r\n .duration(duration);\r\n transition.on('end interrupt', () => {\r\n this.g.attr(ANIMATING_ATTR, null);\r\n });\r\n }\r\n this._setUpComponentEventsThrottled();\r\n this._setCustomAttributesThrottled();\r\n }\r\n get bleed() {\r\n return { top: 0, bottom: 0, left: 0, right: 0 };\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n _render(duration = this.config.duration) {\r\n }\r\n _setCustomAttributes() {\r\n const attributeMap = this.config.attributes;\r\n Object.keys(attributeMap).forEach(className => {\r\n Object.keys(attributeMap[className]).forEach(attr => {\r\n const selection = this.g\r\n .selectAll(`.${className}`);\r\n selection.attr(attr, attributeMap[className][attr]);\r\n });\r\n });\r\n }\r\n _setUpComponentEvents() {\r\n // Set up default events\r\n this._bindEvents(this.events);\r\n // Set up user-defined events\r\n this._bindEvents(this.config.events, '.user');\r\n }\r\n _bindEvents(events = this.events, suffix = '') {\r\n Object.keys(events).forEach(className => {\r\n Object.keys(events[className]).forEach(eventType => {\r\n const selection = this.g\r\n .selectAll(`.${className}`);\r\n selection.on(eventType + suffix, (event, d) => {\r\n const els = selection.nodes();\r\n const i = els.indexOf(event.currentTarget);\r\n const eventFunction = events[className][eventType];\r\n return eventFunction === null || eventFunction === void 0 ? void 0 : eventFunction(d, event, i, els);\r\n });\r\n });\r\n });\r\n }\r\n destroy() {\r\n var _a;\r\n (_a = this.g) === null || _a === void 0 ? void 0 : _a.remove();\r\n this.element = undefined;\r\n }\r\n isDestroyed() {\r\n return !this.element;\r\n }\r\n}\n\nexport { ComponentCore };\n//# sourceMappingURL=index.js.map\n","import { CoreDataModel } from './core.js';\n\n// Core\r\nclass SeriesDataModel extends CoreDataModel {\r\n constructor(data) {\r\n super(data);\r\n }\r\n get data() {\r\n var _a;\r\n return (_a = this._data) !== null && _a !== void 0 ? _a : [];\r\n }\r\n set data(data) {\r\n if (Array.isArray(data))\r\n this._data = data;\r\n }\r\n}\n\nexport { SeriesDataModel };\n//# sourceMappingURL=series.js.map\n","import { ComponentDefaultConfig } from '../component/config.js';\n\n// Config\r\nconst XYComponentDefaultConfig = Object.assign(Object.assign({}, ComponentDefaultConfig), { x: undefined, y: undefined, id: (d, i) => { var _a; return (_a = d.id) !== null && _a !== void 0 ? _a : `${i}`; }, color: (d) => d.color, xScale: undefined, yScale: undefined, excludeFromDomainCalculation: false });\n\nexport { XYComponentDefaultConfig };\n//# sourceMappingURL=config.js.map\n","import { ComponentCore } from '../component/index.js';\nimport { SeriesDataModel } from '../../data-models/series.js';\nimport { getExtent, filterDataByRange, isArray } from '../../utils/data.js';\nimport { Scale, ScaleDimension } from '../../types/scale.js';\nimport { XYComponentDefaultConfig } from './config.js';\n\n// Core\r\nclass XYComponentCore extends ComponentCore {\r\n constructor() {\r\n super(...arguments);\r\n this.datamodel = new SeriesDataModel();\r\n /** Clippable components can be affected by a clipping path (set up in the container) */\r\n this.clippable = true;\r\n /** Identifies whether the component displayed stacked data (eg StackedBar, Area) */\r\n this.stacked = false;\r\n this._defaultConfig = XYComponentDefaultConfig;\r\n this._xScale = Scale.scaleLinear();\r\n this._yScale = Scale.scaleLinear();\r\n }\r\n get xScale() {\r\n return this.config.xScale || this._xScale;\r\n }\r\n get yScale() {\r\n return this.config.yScale || this._yScale;\r\n }\r\n setConfig(config) {\r\n var _a, _b;\r\n // We don't allow changing scales after the component has been initialized\r\n if ((_a = this.config) === null || _a === void 0 ? void 0 : _a.xScale)\r\n config.xScale = this.config.xScale;\r\n if ((_b = this.config) === null || _b === void 0 ? void 0 : _b.yScale)\r\n config.yScale = this.config.yScale;\r\n super.setConfig(config);\r\n }\r\n setScaleDomain(dimension, domain) {\r\n var _a, _b;\r\n if (dimension === ScaleDimension.X)\r\n (_a = this._xScale) === null || _a === void 0 ? void 0 : _a.domain(domain);\r\n if (dimension === ScaleDimension.Y)\r\n (_b = this._yScale) === null || _b === void 0 ? void 0 : _b.domain(domain);\r\n }\r\n setScaleRange(dimension, range) {\r\n var _a, _b;\r\n if (dimension === ScaleDimension.X)\r\n (_a = this._xScale) === null || _a === void 0 ? void 0 : _a.range(range);\r\n if (dimension === ScaleDimension.Y)\r\n (_b = this._yScale) === null || _b === void 0 ? void 0 : _b.range(range);\r\n }\r\n setScale(dimension, scale) {\r\n if (scale && (dimension === ScaleDimension.X))\r\n this._xScale = scale;\r\n if (scale && (dimension === ScaleDimension.Y))\r\n this._yScale = scale;\r\n }\r\n getDataExtent(dimension, scaleByVisibleData) {\r\n const { config, datamodel } = this;\r\n switch (dimension) {\r\n case ScaleDimension.X: return this.getXDataExtent();\r\n case ScaleDimension.Y: return this.getYDataExtent(scaleByVisibleData);\r\n default: return getExtent(datamodel.data, config[dimension]);\r\n }\r\n }\r\n getXDataExtent() {\r\n const { config, datamodel } = this;\r\n return getExtent(datamodel.data, config.x);\r\n }\r\n getYDataExtent(scaleByVisibleData) {\r\n const { config, datamodel } = this;\r\n const data = scaleByVisibleData ? filterDataByRange(datamodel.data, this.xScale.domain(), config.x) : datamodel.data;\r\n const yAccessors = (isArray(config.y) ? config.y : [config.y]);\r\n return getExtent(data, ...yAccessors);\r\n }\r\n}\n\nexport { XYComponentCore };\n//# sourceMappingURL=index.js.map\n","var Position;\r\n(function (Position) {\r\n Position[\"Top\"] = \"top\";\r\n Position[\"Bottom\"] = \"bottom\";\r\n Position[\"Left\"] = \"left\";\r\n Position[\"Right\"] = \"right\";\r\n Position[\"Center\"] = \"center\";\r\n Position[\"Auto\"] = \"auto\";\r\n})(Position || (Position = {}));\r\nvar PositionStrategy;\r\n(function (PositionStrategy) {\r\n PositionStrategy[\"Absolute\"] = \"absolute\";\r\n PositionStrategy[\"Fixed\"] = \"fixed\";\r\n})(PositionStrategy || (PositionStrategy = {}));\r\nvar Arrangement;\r\n(function (Arrangement) {\r\n Arrangement[\"Inside\"] = \"inside\";\r\n Arrangement[\"Outside\"] = \"outside\";\r\n})(Arrangement || (Arrangement = {}));\r\nvar Orientation;\r\n(function (Orientation) {\r\n Orientation[\"Horizontal\"] = \"horizontal\";\r\n Orientation[\"Vertical\"] = \"vertical\";\r\n})(Orientation || (Orientation = {}));\n\nexport { Arrangement, Orientation, Position, PositionStrategy };\n//# sourceMappingURL=position.js.map\n","import { Position } from '../../types/position.js';\n\n// Types\r\nconst TooltipDefaultConfig = {\r\n components: [],\r\n container: undefined,\r\n followCursor: true,\r\n allowHover: true,\r\n horizontalPlacement: Position.Auto,\r\n horizontalShift: 0,\r\n verticalPlacement: Position.Top,\r\n verticalShift: 0,\r\n attributes: {},\r\n triggers: {},\r\n className: undefined,\r\n};\n\nexport { TooltipDefaultConfig };\n//# sourceMappingURL=config.js.map\n","import { css, injectGlobal } from '@emotion/css';\n\nconst root = css `\n label: tooltip;\n display: inline-block;\n left: 0;\n bottom: 0;\n min-width: max-content;\n position: absolute;\n opacity: 0;\n transition: opacity;\n transition-duration: var(--vis-tooltip-transition-duration);\n z-index: 999999;\n padding: var(--vis-tooltip-padding);\n color: var(--vis-tooltip-text-color);\n border-radius: var(--vis-tooltip-border-radius);\n box-shadow: var(--vis-tooltip-box-shadow);\n border: solid 1px var(--vis-tooltip-border-color);\n background-color: var(--vis-tooltip-background-color);\n backdrop-filter: var(--vis-tooltip-backdrop-filter);\n`;\r\n/**\r\n * @deprecated This selector is deprecated and will be removed in future versions. Use `root` instead.\r\n */\r\nconst tooltip = root;\r\nconst variables = injectGlobal `\n :root {\n --vis-tooltip-background-color: rgba(255, 255, 255, 0.95);\n --vis-tooltip-border-color: #e5e9f7;\n --vis-tooltip-text-color: #000;\n --vis-tooltip-shadow-color: rgba(172, 179, 184, 0.35);\n --vis-tooltip-backdrop-filter: none;\n --vis-tooltip-padding: 10px 15px;\n --vis-tooltip-border-radius: 5px;\n --vis-tooltip-transition-duration: 300ms;\n --vis-tooltip-box-shadow: none;\n\n --vis-dark-tooltip-background-color: rgba(30,30,30, 0.95);\n --vis-dark-tooltip-text-color: #e5e9f7;\n --vis-dark-tooltip-border-color: var(--vis-color-grey);\n --vis-dark-tooltip-shadow-color: rgba(0,0,0, 0.95);\n }\n\n body.theme-dark ${`.${root}`} {\n --vis-tooltip-background-color: var(--vis-dark-tooltip-background-color);\n --vis-tooltip-text-color: var(--vis-dark-tooltip-text-color);\n --vis-tooltip-border-color: var(--vis-dark-tooltip-border-color);\n --vis-tooltip-shadow-color: var(--vis-dark-tooltip-shadow-color);\n }\n\n body.theme-dark {\n --vis-tooltip-background-color: rgba(30,30,30, 0.95);\n --vis-tooltip-text-color: #e5e9f7;\n --vis-tooltip-border-color: var(--vis-color-grey);\n --vis-tooltip-shadow-color: rgba(0,0,0, 0.95);\n }\n`;\r\nconst positionFixed = css `\n bottom: unset;\n position: fixed;\n`;\r\nconst show = css `\n opacity: 1;\n`;\r\nconst hidden = css `\n display: none;\n`;\r\nconst nonInteractive = css `\n label: non-interactive;\n pointer-events: none;\n user-select: none;\n`;\n\nexport { hidden, nonInteractive, positionFixed, root, show, tooltip, variables };\n//# sourceMappingURL=style.js.map\n","import { select, pointer } from 'd3-selection';\nimport { Position } from '../../types/position.js';\nimport { throttle, merge } from '../../utils/data.js';\nimport { TooltipDefaultConfig } from './config.js';\nimport * as style from './style.js';\nimport { root, show, hidden, nonInteractive, positionFixed } from './style.js';\n\nclass Tooltip {\r\n constructor(config = {}) {\r\n this._defaultConfig = TooltipDefaultConfig;\r\n this.config = this._defaultConfig;\r\n this._setUpEventsThrottled = throttle(this._setUpEvents, 500);\r\n this._setContainerPositionThrottled = throttle(this._setContainerPosition, 500);\r\n this._isShown = false;\r\n this.element = document.createElement('div');\r\n this.div = select(this.element).attr('class', root);\r\n this.setConfig(config);\r\n this.components = this.config.components;\r\n // Set up MutationObserver to automatically re-position the tooltip\r\n // if the content has been dynamically changed\r\n this._mutationObserver = new MutationObserver(() => {\r\n if (!this._isShown)\r\n return;\r\n // Handle changes to the content of this.div\r\n // Add your logic here\r\n if (!this.config.followCursor && this._hoveredElement) {\r\n this.placeByElement(this._hoveredElement);\r\n }\r\n else if (this._position) {\r\n this.place({ x: this._position[0], y: this._position[1] });\r\n }\r\n });\r\n this._mutationObserver.observe(this.div.node(), { childList: true, subtree: true });\r\n }\r\n setConfig(config) {\r\n var _a;\r\n this.prevConfig = this.config;\r\n this.config = merge(this._defaultConfig, config);\r\n // Reset `this._overriddenHorizontalPlacement` if the `horizontalPlacement` has changed\r\n if (this.prevConfig.horizontalPlacement !== this.config.horizontalPlacement) {\r\n this.overrideHorizontalPlacement(undefined);\r\n }\r\n if (this.config.container && (this.config.container !== ((_a = this.prevConfig) === null || _a === void 0 ? void 0 : _a.container))) {\r\n this.setContainer(this.config.container);\r\n }\r\n this._setUpAttributes();\r\n }\r\n setContainer(container) {\r\n var _a;\r\n (_a = this.element.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(this.element);\r\n this._container = container;\r\n this._container.appendChild(this.element);\r\n this._setContainerPositionThrottled();\r\n }\r\n getContainer() {\r\n return this._container;\r\n }\r\n hasContainer() {\r\n return !!this._container && this._container.isConnected;\r\n }\r\n setComponents(components) {\r\n this.components = components;\r\n }\r\n update() {\r\n if (!this._container)\r\n return;\r\n this._setUpEventsThrottled();\r\n }\r\n /** Show the tooltip by providing content and position */\r\n show(html, pos) {\r\n this.render(html);\r\n this.place(pos);\r\n }\r\n /** Hide the tooltip */\r\n hide() {\r\n this.div\r\n .classed(show, false) // The `show` class triggers the opacity transition\r\n .on('transitionend', () => {\r\n // We hide the element once the transition completes\r\n // This ensures container overflow will not occur when the window is resized\r\n this.div.classed(hidden, !this._isShown);\r\n });\r\n this._isShown = false;\r\n }\r\n /** Simply displays the tooltip with its previous content on position */\r\n display() {\r\n this.div\r\n .classed(hidden, false) // The `hidden` class sets `display: none;`\r\n .classed(show, true); // The `show` class triggers the opacity transition\r\n this._isShown = true;\r\n }\r\n place(pos) {\r\n this._position = [pos.x, pos.y];\r\n if (!this.hasContainer()) {\r\n console.warn('Unovis | Tooltip: Container was not set or is not initialized yet');\r\n return;\r\n }\r\n const { config } = this;\r\n const tooltipWidth = this.element.offsetWidth;\r\n const tooltipHeight = this.element.offsetHeight;\r\n const horizontalPlacement = this._overriddenHorizontalPlacement ||\r\n (config.horizontalPlacement === Position.Auto\r\n ? Position.Center\r\n : config.horizontalPlacement);\r\n const verticalPlacement = config.verticalPlacement === Position.Auto\r\n ? ((pos.y - tooltipHeight) < 0 ? Position.Bottom : Position.Top)\r\n : config.verticalPlacement;\r\n // Todo: Get rid of the hardcoded margin in version 2.0\r\n // Can be simply replaced with `verticalShift` and `horizontalShift`\r\n // but it'll be a breaking change\r\n const margin = 5;\r\n const translateX = horizontalPlacement === Position.Left ? -tooltipWidth - margin - config.horizontalShift\r\n : horizontalPlacement === Position.Center ? -tooltipWidth / 2\r\n : margin + config.horizontalShift;\r\n const translateY = verticalPlacement === Position.Bottom ? margin + config.verticalShift\r\n : verticalPlacement === Position.Center ? -tooltipHeight / 2\r\n : -margin - config.verticalShift - tooltipHeight;\r\n // translateX and translateY variables shift the tooltip from the default position (above the cursor, centred horizontally)\r\n const [top, left] = this._constraintPosToContainer(pos.x + translateX, pos.y + translateY, tooltipWidth, tooltipHeight);\r\n this._applyPosition(top, left, tooltipHeight);\r\n }\r\n placeByElement(hoveredElement) {\r\n const { config } = this;\r\n // Store the hovered element and the event for future reference,\r\n // i.e. to re-position the tooltip if the content has been changed\r\n // by something else and it was captured by the MutationObserver\r\n this._hoveredElement = hoveredElement;\r\n // Todo: Get rid of the hardcoded margin in version 2.0\r\n // Can be simply replaced with `verticalShift` and `horizontalShift`\r\n // but it'll be a breaking change\r\n const margin = 5;\r\n const tooltipWidth = this.element.offsetWidth;\r\n const tooltipHeight = this.element.offsetHeight;\r\n const isContainerBody = this.isContainerBody();\r\n const containerWidth = isContainerBody ? window.innerWidth : this._container.scrollWidth;\r\n const hoveredElementRect = hoveredElement.getBoundingClientRect();\r\n // We use D3's point transformation to get the correct position of the element by pretending it's a pointer event\r\n // See more: https://github.com/d3/d3-selection/blob/main/src/pointer.js\r\n const elementPos = isContainerBody ? [hoveredElementRect.x, hoveredElementRect.y] : pointer({\r\n clientX: hoveredElementRect.x,\r\n clientY: hoveredElementRect.y,\r\n pageX: hoveredElementRect.x,\r\n pageY: hoveredElementRect.y,\r\n }, this._container);\r\n const horizontalPlacement = this._overriddenHorizontalPlacement || (config.horizontalPlacement === Position.Auto\r\n ? (elementPos[0] - tooltipWidth < 0 ? Position.Right\r\n : elementPos[0] + tooltipWidth > containerWidth ? Position.Left : Position.Center)\r\n : config.horizontalPlacement);\r\n let translateX = 0;\r\n switch (horizontalPlacement) {\r\n case Position.Left:\r\n translateX = -tooltipWidth - margin - config.horizontalShift;\r\n break;\r\n case Position.Right:\r\n translateX = hoveredElementRect.width + margin + config.horizontalShift;\r\n break;\r\n case Position.Center:\r\n default:\r\n translateX = (-tooltipWidth + hoveredElementRect.width) / 2;\r\n break;\r\n }\r\n const verticalPlacement = config.verticalPlacement === Position.Auto\r\n ? (horizontalPlacement !== Position.Center ? Position.Center\r\n : elementPos[1] - tooltipHeight < 0 ? Position.Bottom : Position.Top)\r\n : config.verticalPlacement;\r\n let translateY = -tooltipHeight;\r\n switch (verticalPlacement) {\r\n case Position.Center:\r\n translateY += (tooltipHeight + hoveredElementRect.height) / 2;\r\n break;\r\n case Position.Bottom:\r\n translateY += tooltipHeight + hoveredElementRect.height + margin + config.verticalShift;\r\n break;\r\n case Position.Top:\r\n default:\r\n translateY += -margin - config.verticalShift;\r\n break;\r\n }\r\n const [top, left] = this._constraintPosToContainer(elementPos[0] + translateX, elementPos[1] + translateY, tooltipWidth, tooltipHeight);\r\n this._applyPosition(top, left, tooltipHeight);\r\n }\r\n isContainerBody() {\r\n return this._container === document.body;\r\n }\r\n /** Allows to override the horizontal placement of the tooltip which is useful when you want to define custom positioning behavior.\r\n * This method has been added for Crosshair to allow it position tooltip left or right of the crosshair line\r\n * (see the `_showTooltip` method of the Crosshair component).\r\n */\r\n overrideHorizontalPlacement(placement) {\r\n this._overriddenHorizontalPlacement = placement;\r\n }\r\n render(html) {\r\n var _a;\r\n const { config, prevConfig } = this;\r\n if (html instanceof HTMLElement) {\r\n const node = this.div.select(':first-child').node();\r\n if (node !== html)\r\n this.div.html('').append(() => html);\r\n }\r\n else if (html) {\r\n this.div.html(html);\r\n }\r\n this.div\r\n .classed((_a = config.className) !== null && _a !== void 0 ? _a : '', Boolean(config.className))\r\n .classed(nonInteractive, !config.allowHover || config.followCursor);\r\n // Remove the previous class name if it was set\r\n if ((prevConfig === null || prevConfig === void 0 ? void 0 : prevConfig.className) && prevConfig.className !== config.className) {\r\n this.div.classed(prevConfig.className, false);\r\n }\r\n this.display();\r\n }\r\n _applyPosition(x, y, tooltipHeight) {\r\n const isContainerBody = this.isContainerBody();\r\n const containerHeight = isContainerBody ? window.innerHeight : this._container.scrollHeight;\r\n this.div\r\n .classed(positionFixed, isContainerBody)\r\n .style('top', isContainerBody ? `${y}px` : 'unset')\r\n .style('bottom', !isContainerBody ? `${containerHeight - y - tooltipHeight}px` : 'unset')\r\n .style('left', `${x}px`);\r\n }\r\n _constraintPosToContainer(top, left, tooltipWidth, tooltipHeight) {\r\n const isContainerBody = this.isContainerBody();\r\n const containerHeight = isContainerBody ? window.innerHeight : this._container.scrollHeight;\r\n const containerWidth = isContainerBody ? window.innerWidth : this._container.scrollWidth;\r\n // // Constraint to container\r\n const paddingX = 10;\r\n const hitRight = top > (containerWidth - tooltipWidth - paddingX);\r\n const hitLeft = top < paddingX;\r\n const constrainedLeft = hitRight ? containerWidth - tooltipWidth - paddingX\r\n : hitLeft ? paddingX : top;\r\n const paddingY = 10;\r\n const hitBottom = left > (containerHeight - tooltipHeight - paddingY);\r\n const hitTop = left < paddingY;\r\n const constrainedTop = hitBottom ? containerHeight - tooltipHeight - paddingY\r\n : hitTop ? paddingY : left;\r\n return [\r\n containerWidth < tooltipWidth ? 0 : constrainedLeft,\r\n containerHeight < tooltipHeight ? 0 : constrainedTop,\r\n ];\r\n }\r\n _setContainerPosition() {\r\n var _a;\r\n // Tooltip position calculation relies on the parent position\r\n // If it's not set (static), we set it to `relative` (not a good practice)\r\n if (this._container !== document.body && ((_a = getComputedStyle(this._container)) === null || _a === void 0 ? void 0 : _a.position) === 'static') {\r\n this._container.style.position = 'relative';\r\n }\r\n }\r\n _setUpEvents() {\r\n const { config } = this;\r\n // We use the Event Delegation pattern to set up Tooltip events\r\n // Every component will have single `mousemove` and `mouseleave` event listener functions, where we'll check\r\n // the `path` of the event and trigger corresponding callbacks\r\n this.components.forEach(component => {\r\n const selection = select(component.element);\r\n selection\r\n .on('mousemove.tooltip', (e) => {\r\n const path = (e.composedPath && e.composedPath()) || e.path || [e.target];\r\n // Go through all of the configured triggers\r\n for (const className of Object.keys(config.triggers)) {\r\n const template = config.triggers[className];\r\n if (!template)\r\n continue; // Skip if the trigger is not configured\r\n const els = selection.selectAll(`.${className}`).nodes();\r\n // Go through all of the elements in the event path (from the deepest element upwards)\r\n for (const el of path) {\r\n if (el === selection.node())\r\n break; // Break on the component's level (usually the `<g>` element)\r\n if (el.classList.contains(className)) { // If there's a match, show the tooltip\r\n const i = els.indexOf(el);\r\n const d = select(el).datum();\r\n const content = template(d, i, els);\r\n const [x, y] = this.isContainerBody() ? [e.clientX, e.clientY] : pointer(e, this._container);\r\n if (content === null) {\r\n // If the content is `null`, we hide the tooltip\r\n this.hide();\r\n }\r\n else {\r\n // Otherwise we show the tooltip, but don't render the content if it's `undefined` or\r\n // an empty string. This way we can allow it to work with things like `createPortal` in React\r\n this.render(content);\r\n if (config.followCursor)\r\n this.place({ x, y });\r\n else\r\n this.placeByElement(el);\r\n }\r\n // Stop propagation to prevent other interfering events from being triggered, e.g. Crosshair\r\n e.stopPropagation();\r\n // Stop looking for other matches\r\n return;\r\n }\r\n }\r\n }\r\n // Hide the tooltip if the event didn't pass through any of the configured triggers.\r\n // We use the `this._isShown` condition as a little performance optimization tweak\r\n // (we don't want the tooltip to update its class on every mouse movement, see `this.hide()`).\r\n if (this._isShown)\r\n this.hide();\r\n })\r\n .on('mouseleave.tooltip', (e) => {\r\n e.stopPropagation(); // Stop propagation to prevent other interfering events from being triggered, e.g. Crosshair\r\n this.hide();\r\n });\r\n });\r\n // Set up Tooltip hover\r\n if (config.allowHover && !config.followCursor) {\r\n this.div\r\n .on('mouseenter.tooltip', this.display.bind(this))\r\n .on('mouseleave.tooltip', this.hide.bind(this));\r\n }\r\n else {\r\n this.div\r\n .on('mouseenter.tooltip', null)\r\n .on('mouseleave.tooltip', null);\r\n }\r\n }\r\n _setUpAttributes() {\r\n const attributesMap = this.config.attributes;\r\n if (!attributesMap)\r\n return;\r\n Object.keys(attributesMap).forEach(attr => {\r\n this.div.attr(attr, attributesMap[attr]);\r\n });\r\n }\r\n destroy() {\r\n var _a;\r\n this._mutationObserver.disconnect();\r\n (_a = this.div) === null || _a === void 0 ? void 0 : _a.remove();\r\n }\r\n}\r\nTooltip.selectors = style;\n\nexport { Tooltip };\n//# sourceMappingURL=index.js.map\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import {pi, sqrt, tau} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst tan30 = sqrt(1 / 3);\nconst tan30_2 = tan30 * 2;\n\nexport default {\n draw(context, size) {\n const y = sqrt(size / tan30_2);\n const x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const w = sqrt(size);\n const x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","import {sin, cos, sqrt, pi, tau} from \"../math.js\";\n\nconst ka = 0.89081309152928522810;\nconst kr = sin(pi / 10) / sin(7 * pi / 10);\nconst kx = sin(tau / 10) * kr;\nconst ky = -cos(tau / 10) * kr;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size * ka);\n const x = kx * r;\n const y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (let i = 1; i < 5; ++i) {\n const a = tau * i / 5;\n const c = cos(a);\n const s = sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const y = -sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst c = -0.5;\nconst s = sqrt(3) / 2;\nconst k = 1 / sqrt(12);\nconst a = (k / 2 + 1) * 3;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / a);\n const x0 = r / 2, y0 = r * k;\n const x1 = x0, y1 = r * k + r;\n const x2 = -x1, y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n circle,\n plus,\n times,\n triangle2,\n asterisk,\n square2,\n diamond2\n];\n\nexport default function Symbol(type, size) {\n let context = null,\n path = withPath(symbol);\n\n type = typeof type === \"function\" ? type : constant(type || circle);\n size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n function symbol() {\n let buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function () {};\n\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (e) {\n throw e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = it.call(o);\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (e) {\n didErr = true;\n err = e;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\n/**\n * de Casteljau's algorithm for drawing and splitting bezier curves.\n * Inspired by https://pomax.github.io/bezierinfo/\n *\n * @param {Number[][]} points Array of [x,y] points: [start, control1, control2, ..., end]\n * The original segment to split.\n * @param {Number} t Where to split the curve (value between [0, 1])\n * @return {Object} An object { left, right } where left is the segment from 0..t and\n * right is the segment from t..1.\n */\nfunction decasteljau(points, t) {\n var left = [];\n var right = [];\n\n function decasteljauRecurse(points, t) {\n if (points.length === 1) {\n left.push(points[0]);\n right.push(points[0]);\n } else {\n var newPoints = Array(points.length - 1);\n\n for (var i = 0; i < newPoints.length; i++) {\n if (i === 0) {\n left.push(points[0]);\n }\n\n if (i === newPoints.length - 1) {\n right.push(points[i + 1]);\n }\n\n newPoints[i] = [(1 - t) * points[i][0] + t * points[i + 1][0], (1 - t) * points[i][1] + t * points[i + 1][1]];\n }\n\n decasteljauRecurse(newPoints, t);\n }\n }\n\n if (points.length) {\n decasteljauRecurse(points, t);\n }\n\n return {\n left: left,\n right: right.reverse()\n };\n}\n/**\n * Convert segments represented as points back into a command object\n *\n * @param {Number[][]} points Array of [x,y] points: [start, control1, control2, ..., end]\n * Represents a segment\n * @return {Object} A command object representing the segment.\n */\n\n\nfunction pointsToCommand(points) {\n var command = {};\n\n if (points.length === 4) {\n command.x2 = points[2][0];\n command.y2 = points[2][1];\n }\n\n if (points.length >= 3) {\n command.x1 = points[1][0];\n command.y1 = points[1][1];\n }\n\n command.x = points[points.length - 1][0];\n command.y = points[points.length - 1][1];\n\n if (points.length === 4) {\n // start, control1, control2, end\n command.type = 'C';\n } else if (points.length === 3) {\n // start, control, end\n command.type = 'Q';\n } else {\n // start, end\n command.type = 'L';\n }\n\n return command;\n}\n/**\n * Runs de Casteljau's algorithm enough times to produce the desired number of segments.\n *\n * @param {Number[][]} points Array of [x,y] points for de Casteljau (the initial segment to split)\n * @param {Number} segmentCount Number of segments to split the original into\n * @return {Number[][][]} Array of segments\n */\n\n\nfunction splitCurveAsPoints(points, segmentCount) {\n segmentCount = segmentCount || 2;\n var segments = [];\n var remainingCurve = points;\n var tIncrement = 1 / segmentCount; // x-----x-----x-----x\n // t= 0.33 0.66 1\n // x-----o-----------x\n // r= 0.33\n // x-----o-----x\n // r= 0.5 (0.33 / (1 - 0.33)) === tIncrement / (1 - (tIncrement * (i - 1))\n // x-----x-----x-----x----x\n // t= 0.25 0.5 0.75 1\n // x-----o----------------x\n // r= 0.25\n // x-----o----------x\n // r= 0.33 (0.25 / (1 - 0.25))\n // x-----o----x\n // r= 0.5 (0.25 / (1 - 0.5))\n\n for (var i = 0; i < segmentCount - 1; i++) {\n var tRelative = tIncrement / (1 - tIncrement * i);\n var split = decasteljau(remainingCurve, tRelative);\n segments.push(split.left);\n remainingCurve = split.right;\n } // last segment is just to the end from the last point\n\n\n segments.push(remainingCurve);\n return segments;\n}\n/**\n * Convert command objects to arrays of points, run de Casteljau's algorithm on it\n * to split into to the desired number of segments.\n *\n * @param {Object} commandStart The start command object\n * @param {Object} commandEnd The end command object\n * @param {Number} segmentCount The number of segments to create\n * @return {Object[]} An array of commands representing the segments in sequence\n */\n\n\nfunction splitCurve(commandStart, commandEnd, segmentCount) {\n var points = [[commandStart.x, commandStart.y]];\n\n if (commandEnd.x1 != null) {\n points.push([commandEnd.x1, commandEnd.y1]);\n }\n\n if (commandEnd.x2 != null) {\n points.push([commandEnd.x2, commandEnd.y2]);\n }\n\n points.push([commandEnd.x, commandEnd.y]);\n return splitCurveAsPoints(points, segmentCount).map(pointsToCommand);\n}\n\nvar commandTokenRegex = /[MLCSTQAHVZmlcstqahv]|-?[\\d.e+-]+/g;\n/**\n * List of params for each command type in a path `d` attribute\n */\n\nvar typeMap = {\n M: ['x', 'y'],\n L: ['x', 'y'],\n H: ['x'],\n V: ['y'],\n C: ['x1', 'y1', 'x2', 'y2', 'x', 'y'],\n S: ['x2', 'y2', 'x', 'y'],\n Q: ['x1', 'y1', 'x', 'y'],\n T: ['x', 'y'],\n A: ['rx', 'ry', 'xAxisRotation', 'largeArcFlag', 'sweepFlag', 'x', 'y'],\n Z: []\n}; // Add lower case entries too matching uppercase (e.g. 'm' == 'M')\n\nObject.keys(typeMap).forEach(function (key) {\n typeMap[key.toLowerCase()] = typeMap[key];\n});\n\nfunction arrayOfLength(length, value) {\n var array = Array(length);\n\n for (var i = 0; i < length; i++) {\n array[i] = value;\n }\n\n return array;\n}\n/**\n * Converts a command object to a string to be used in a `d` attribute\n * @param {Object} command A command object\n * @return {String} The string for the `d` attribute\n */\n\n\nfunction commandToString(command) {\n return \"\".concat(command.type).concat(typeMap[command.type].map(function (p) {\n return command[p];\n }).join(','));\n}\n/**\n * Converts command A to have the same type as command B.\n *\n * e.g., L0,5 -> C0,5,0,5,0,5\n *\n * Uses these rules:\n * x1 <- x\n * x2 <- x\n * y1 <- y\n * y2 <- y\n * rx <- 0\n * ry <- 0\n * xAxisRotation <- read from B\n * largeArcFlag <- read from B\n * sweepflag <- read from B\n *\n * @param {Object} aCommand Command object from path `d` attribute\n * @param {Object} bCommand Command object from path `d` attribute to match against\n * @return {Object} aCommand converted to type of bCommand\n */\n\n\nfunction convertToSameType(aCommand, bCommand) {\n var conversionMap = {\n x1: 'x',\n y1: 'y',\n x2: 'x',\n y2: 'y'\n };\n var readFromBKeys = ['xAxisRotation', 'largeArcFlag', 'sweepFlag']; // convert (but ignore M types)\n\n if (aCommand.type !== bCommand.type && bCommand.type.toUpperCase() !== 'M') {\n var aConverted = {};\n Object.keys(bCommand).forEach(function (bKey) {\n var bValue = bCommand[bKey]; // first read from the A command\n\n var aValue = aCommand[bKey]; // if it is one of these values, read from B no matter what\n\n if (aValue === undefined) {\n if (readFromBKeys.includes(bKey)) {\n aValue = bValue;\n } else {\n // if it wasn't in the A command, see if an equivalent was\n if (aValue === undefined && conversionMap[bKey]) {\n aValue = aCommand[conversionMap[bKey]];\n } // if it doesn't have a converted value, use 0\n\n\n if (aValue === undefined) {\n aValue = 0;\n }\n }\n }\n\n aConverted[bKey] = aValue;\n }); // update the type to match B\n\n aConverted.type = bCommand.type;\n aCommand = aConverted;\n }\n\n return aCommand;\n}\n/**\n * Interpolate between command objects commandStart and commandEnd segmentCount times.\n * If the types are L, Q, or C then the curves are split as per de Casteljau's algorithm.\n * Otherwise we just copy commandStart segmentCount - 1 times, finally ending with commandEnd.\n *\n * @param {Object} commandStart Command object at the beginning of the segment\n * @param {Object} commandEnd Command object at the end of the segment\n * @param {Number} segmentCount The number of segments to split this into. If only 1\n * Then [commandEnd] is returned.\n * @return {Object[]} Array of ~segmentCount command objects between commandStart and\n * commandEnd. (Can be segmentCount+1 objects if commandStart is type M).\n */\n\n\nfunction splitSegment(commandStart, commandEnd, segmentCount) {\n var segments = []; // line, quadratic bezier, or cubic bezier\n\n if (commandEnd.type === 'L' || commandEnd.type === 'Q' || commandEnd.type === 'C') {\n segments = segments.concat(splitCurve(commandStart, commandEnd, segmentCount)); // general case - just copy the same point\n } else {\n var copyCommand = _extends({}, commandStart); // convert M to L\n\n\n if (copyCommand.type === 'M') {\n copyCommand.type = 'L';\n }\n\n segments = segments.concat(arrayOfLength(segmentCount - 1).map(function () {\n return copyCommand;\n }));\n segments.push(commandEnd);\n }\n\n return segments;\n}\n/**\n * Extends an array of commandsToExtend to the length of the referenceCommands by\n * splitting segments until the number of commands match. Ensures all the actual\n * points of commandsToExtend are in the extended array.\n *\n * @param {Object[]} commandsToExtend The command object array to extend\n * @param {Object[]} referenceCommands The command object array to match in length\n * @param {Function} excludeSegment a function that takes a start command object and\n * end command object and returns true if the segment should be excluded from splitting.\n * @return {Object[]} The extended commandsToExtend array\n */\n\n\nfunction extend(commandsToExtend, referenceCommands, excludeSegment) {\n // compute insertion points:\n // number of segments in the path to extend\n var numSegmentsToExtend = commandsToExtend.length - 1; // number of segments in the reference path.\n\n var numReferenceSegments = referenceCommands.length - 1; // this value is always between [0, 1].\n\n var segmentRatio = numSegmentsToExtend / numReferenceSegments; // create a map, mapping segments in referenceCommands to how many points\n // should be added in that segment (should always be >= 1 since we need each\n // point itself).\n // 0 = segment 0-1, 1 = segment 1-2, n-1 = last vertex\n\n var countPointsPerSegment = arrayOfLength(numReferenceSegments).reduce(function (accum, d, i) {\n var insertIndex = Math.floor(segmentRatio * i); // handle excluding segments\n\n if (excludeSegment && insertIndex < commandsToExtend.length - 1 && excludeSegment(commandsToExtend[insertIndex], commandsToExtend[insertIndex + 1])) {\n // set the insertIndex to the segment that this point should be added to:\n // round the insertIndex essentially so we split half and half on\n // neighbouring segments. hence the segmentRatio * i < 0.5\n var addToPriorSegment = segmentRatio * i % 1 < 0.5; // only skip segment if we already have 1 point in it (can't entirely remove a segment)\n\n if (accum[insertIndex]) {\n // TODO - Note this is a naive algorithm that should work for most d3-area use cases\n // but if two adjacent segments are supposed to be skipped, this will not perform as\n // expected. Could be updated to search for nearest segment to place the point in, but\n // will only do that if necessary.\n // add to the prior segment\n if (addToPriorSegment) {\n if (insertIndex > 0) {\n insertIndex -= 1; // not possible to add to previous so adding to next\n } else if (insertIndex < commandsToExtend.length - 1) {\n insertIndex += 1;\n } // add to next segment\n\n } else if (insertIndex < commandsToExtend.length - 1) {\n insertIndex += 1; // not possible to add to next so adding to previous\n } else if (insertIndex > 0) {\n insertIndex -= 1;\n }\n }\n }\n\n accum[insertIndex] = (accum[insertIndex] || 0) + 1;\n return accum;\n }, []); // extend each segment to have the correct number of points for a smooth interpolation\n\n var extended = countPointsPerSegment.reduce(function (extended, segmentCount, i) {\n // if last command, just add `segmentCount` number of times\n if (i === commandsToExtend.length - 1) {\n var lastCommandCopies = arrayOfLength(segmentCount, _extends({}, commandsToExtend[commandsToExtend.length - 1])); // convert M to L\n\n if (lastCommandCopies[0].type === 'M') {\n lastCommandCopies.forEach(function (d) {\n d.type = 'L';\n });\n }\n\n return extended.concat(lastCommandCopies);\n } // otherwise, split the segment segmentCount times.\n\n\n return extended.concat(splitSegment(commandsToExtend[i], commandsToExtend[i + 1], segmentCount));\n }, []); // add in the very first point since splitSegment only adds in the ones after it\n\n extended.unshift(commandsToExtend[0]);\n return extended;\n}\n/**\n * Takes a path `d` string and converts it into an array of command\n * objects. Drops the `Z` character.\n *\n * @param {String|null} d A path `d` string\n */\n\n\nfunction pathCommandsFromString(d) {\n // split into valid tokens\n var tokens = (d || '').match(commandTokenRegex) || [];\n var commands = [];\n var commandArgs;\n var command; // iterate over each token, checking if we are at a new command\n // by presence in the typeMap\n\n for (var i = 0; i < tokens.length; ++i) {\n commandArgs = typeMap[tokens[i]]; // new command found:\n\n if (commandArgs) {\n command = {\n type: tokens[i]\n }; // add each of the expected args for this command:\n\n for (var a = 0; a < commandArgs.length; ++a) {\n command[commandArgs[a]] = +tokens[i + a + 1];\n } // need to increment our token index appropriately since\n // we consumed token args\n\n\n i += commandArgs.length;\n commands.push(command);\n }\n }\n\n return commands;\n}\n/**\n * Interpolate from A to B by extending A and B during interpolation to have\n * the same number of points. This allows for a smooth transition when they\n * have a different number of points.\n *\n * Ignores the `Z` command in paths unless both A and B end with it.\n *\n * This function works directly with arrays of command objects instead of with\n * path `d` strings (see interpolatePath for working with `d` strings).\n *\n * @param {Object[]} aCommandsInput Array of path commands\n * @param {Object[]} bCommandsInput Array of path commands\n * @param {(Function|Object)} interpolateOptions\n * @param {Function} interpolateOptions.excludeSegment a function that takes a start command object and\n * end command object and returns true if the segment should be excluded from splitting.\n * @param {Boolean} interpolateOptions.snapEndsToInput a boolean indicating whether end of input should\n * be sourced from input argument or computed.\n * @returns {Function} Interpolation function that maps t ([0, 1]) to an array of path commands.\n */\n\nfunction interpolatePathCommands(aCommandsInput, bCommandsInput, interpolateOptions) {\n // make a copy so we don't mess with the input arrays\n var aCommands = aCommandsInput == null ? [] : aCommandsInput.slice();\n var bCommands = bCommandsInput == null ? [] : bCommandsInput.slice();\n\n var _ref = _typeof(interpolateOptions) === 'object' ? interpolateOptions : {\n excludeSegment: interpolateOptions,\n snapEndsToInput: true\n },\n excludeSegment = _ref.excludeSegment,\n snapEndsToInput = _ref.snapEndsToInput; // both input sets are empty, so we don't interpolate\n\n\n if (!aCommands.length && !bCommands.length) {\n return function nullInterpolator() {\n return [];\n };\n } // do we add Z during interpolation? yes if both have it. (we'd expect both to have it or not)\n\n\n var addZ = (aCommands.length === 0 || aCommands[aCommands.length - 1].type === 'Z') && (bCommands.length === 0 || bCommands[bCommands.length - 1].type === 'Z'); // we temporarily remove Z\n\n if (aCommands.length > 0 && aCommands[aCommands.length - 1].type === 'Z') {\n aCommands.pop();\n }\n\n if (bCommands.length > 0 && bCommands[bCommands.length - 1].type === 'Z') {\n bCommands.pop();\n } // if A is empty, treat it as if it used to contain just the first point\n // of B. This makes it so the line extends out of from that first point.\n\n\n if (!aCommands.length) {\n aCommands.push(bCommands[0]); // otherwise if B is empty, treat it as if it contains the first point\n // of A. This makes it so the line retracts into the first point.\n } else if (!bCommands.length) {\n bCommands.push(aCommands[0]);\n } // extend to match equal size\n\n\n var numPointsToExtend = Math.abs(bCommands.length - aCommands.length);\n\n if (numPointsToExtend !== 0) {\n // B has more points than A, so add points to A before interpolating\n if (bCommands.length > aCommands.length) {\n aCommands = extend(aCommands, bCommands, excludeSegment); // else if A has more points than B, add more points to B\n } else if (bCommands.length < aCommands.length) {\n bCommands = extend(bCommands, aCommands, excludeSegment);\n }\n } // commands have same length now.\n // convert commands in A to the same type as those in B\n\n\n aCommands = aCommands.map(function (aCommand, i) {\n return convertToSameType(aCommand, bCommands[i]);\n }); // create mutable interpolated command objects\n\n var interpolatedCommands = aCommands.map(function (aCommand) {\n return _objectSpread2({}, aCommand);\n });\n\n if (addZ) {\n interpolatedCommands.push({\n type: 'Z'\n });\n aCommands.push({\n type: 'Z'\n }); // required for when returning at t == 0\n }\n\n return function pathCommandInterpolator(t) {\n // at 1 return the final value without the extensions used during interpolation\n if (t === 1 && snapEndsToInput) {\n return bCommandsInput == null ? [] : bCommandsInput;\n } // work with aCommands directly since interpolatedCommands are mutated\n\n\n if (t === 0) {\n return aCommands;\n } // interpolate the commands using the mutable interpolated command objs\n\n\n for (var i = 0; i < interpolatedCommands.length; ++i) {\n // if (interpolatedCommands[i].type === 'Z') continue;\n var aCommand = aCommands[i];\n var bCommand = bCommands[i];\n var interpolatedCommand = interpolatedCommands[i];\n\n var _iterator = _createForOfIteratorHelper(typeMap[interpolatedCommand.type]),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var arg = _step.value;\n interpolatedCommand[arg] = (1 - t) * aCommand[arg] + t * bCommand[arg]; // do not use floats for flags (#27), round to integer\n\n if (arg === 'largeArcFlag' || arg === 'sweepFlag') {\n interpolatedCommand[arg] = Math.round(interpolatedCommand[arg]);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n return interpolatedCommands;\n };\n}\n/** @typedef InterpolateOptions */\n\n/**\n * Interpolate from A to B by extending A and B during interpolation to have\n * the same number of points. This allows for a smooth transition when they\n * have a different number of points.\n *\n * Ignores the `Z` character in paths unless both A and B end with it.\n *\n * @param {String} a The `d` attribute for a path\n * @param {String} b The `d` attribute for a path\n * @param {((command1, command2) => boolean|{\n * excludeSegment?: (command1, command2) => boolean;\n * snapEndsToInput?: boolean\n * })} interpolateOptions The excludeSegment function or an options object\n * - interpolateOptions.excludeSegment a function that takes a start command object and\n * end command object and returns true if the segment should be excluded from splitting.\n * - interpolateOptions.snapEndsToInput a boolean indicating whether end of input should\n * be sourced from input argument or computed.\n * @returns {Function} Interpolation function that maps t ([0, 1]) to a path `d` string.\n */\n\nfunction interpolatePath(a, b, interpolateOptions) {\n var aCommands = pathCommandsFromString(a);\n var bCommands = pathCommandsFromString(b);\n\n var _ref2 = _typeof(interpolateOptions) === 'object' ? interpolateOptions : {\n excludeSegment: interpolateOptions,\n snapEndsToInput: true\n },\n excludeSegment = _ref2.excludeSegment,\n snapEndsToInput = _ref2.snapEndsToInput;\n\n if (!aCommands.length && !bCommands.length) {\n return function nullInterpolator() {\n return '';\n };\n }\n\n var commandInterpolator = interpolatePathCommands(aCommands, bCommands, {\n excludeSegment: excludeSegment,\n snapEndsToInput: snapEndsToInput\n });\n return function pathStringInterpolator(t) {\n // at 1 return the final value without the extensions used during interpolation\n if (t === 1 && snapEndsToInput) {\n return b == null ? '' : b;\n }\n\n var interpolatedCommands = commandInterpolator(t); // convert to a string (fastest concat: https://jsperf.com/join-concat/150)\n\n var interpolatedString = '';\n\n var _iterator2 = _createForOfIteratorHelper(interpolatedCommands),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var interpolatedCommand = _step2.value;\n interpolatedString += commandToString(interpolatedCommand);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return interpolatedString;\n };\n}\n\nexport { interpolatePath, interpolatePathCommands, pathCommandsFromString };\n","import { color } from 'd3-color';\nimport { getCSSColorVariable } from '../styles/colors.js';\nimport { getString, isNumber } from './data.js';\nimport { isStringCSSVariable, getCSSVariableValue } from './misc.js';\n\n/** Retrieves color from the data if provided, fallbacks to CSS variables if the index was passed */\r\nfunction getColor(d, accessor, index, dontFallbackToCssVar) {\r\n if (Array.isArray(accessor) && isFinite(index))\r\n return accessor[index % accessor.length];\r\n const value = getString(d, accessor, index);\r\n return (value || ((isNumber(index) && !dontFallbackToCssVar) ? `var(${getCSSColorVariable(index)})` : null));\r\n}\r\nfunction hexToRgb(hex) {\r\n const parsed = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return parsed ? {\r\n r: parseInt(parsed[1], 16),\r\n g: parseInt(parsed[2], 16),\r\n b: parseInt(parsed[3], 16),\r\n } : { r: 0, g: 0, b: 0 };\r\n}\r\nfunction rgbToBrightness(rgb) {\r\n return (0.2126 * rgb.r + 0.7152 * rgb.g + 0.0722 * rgb.b) / 255;\r\n}\r\nfunction hexToBrightness(hex) {\r\n const rgb = hexToRgb(hex);\r\n return rgbToBrightness(rgb);\r\n}\r\nfunction getHexValue(s, context) {\r\n var _a;\r\n const hex = isStringCSSVariable(s) ? getCSSVariableValue(s, context) : s;\r\n return (_a = color(hex)) === null || _a === void 0 ? void 0 : _a.formatHex();\r\n}\r\nfunction rgbaToRgb(rgba, backgroundColor) {\r\n var _a;\r\n const rgb = (_a = color(rgba)) === null || _a === void 0 ? void 0 : _a.rgb();\r\n if (!rgb || rgb.opacity === 1)\r\n return rgb;\r\n const alpha = 1 - rgb.opacity;\r\n const bg = color(backgroundColor !== null && backgroundColor !== void 0 ? backgroundColor : '#fff').rgb();\r\n return {\r\n r: Math.round((rgb.opacity * (rgb.r / 255) + (alpha * (bg.r / 255))) * 255),\r\n g: Math.round((rgb.opacity * (rgb.g / 255) + (alpha * (bg.g / 255))) * 255),\r\n b: Math.round((rgb.opacity * (rgb.b / 255) + (alpha * (bg.b / 255))) * 255),\r\n };\r\n}\n\nexport { getColor, getHexValue, hexToBrightness, hexToRgb, rgbToBrightness, rgbaToRgb };\n//# sourceMappingURL=color.js.map\n","import { curveBasis, curveBasisClosed, curveBasisOpen, curveBundle, curveCardinal, curveCardinalClosed, curveCardinalOpen, curveCatmullRom, curveCatmullRomClosed, curveCatmullRomOpen, curveLinear, curveLinearClosed, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from 'd3-shape';\n\nvar CurveType;\r\n(function (CurveType) {\r\n CurveType[\"Basis\"] = \"basis\";\r\n CurveType[\"BasisClosed\"] = \"basisClosed\";\r\n CurveType[\"BasisOpen\"] = \"basisOpen\";\r\n CurveType[\"Bundle\"] = \"bundle\";\r\n CurveType[\"Cardinal\"] = \"cardinal\";\r\n CurveType[\"CardinalClosed\"] = \"cardinalClosed\";\r\n CurveType[\"CardinalOpen\"] = \"cardinalOpen\";\r\n CurveType[\"CatmullRom\"] = \"catmullRom\";\r\n CurveType[\"CatmullRomClosed\"] = \"catmullRomClosed\";\r\n CurveType[\"CatmullRomOpen\"] = \"catmullRomOpen\";\r\n CurveType[\"Linear\"] = \"linear\";\r\n CurveType[\"LinearClosed\"] = \"linearClosed\";\r\n CurveType[\"MonotoneX\"] = \"monotoneX\";\r\n CurveType[\"MonotoneY\"] = \"monotoneY\";\r\n CurveType[\"Natural\"] = \"natural\";\r\n CurveType[\"Step\"] = \"step\";\r\n CurveType[\"StepAfter\"] = \"stepAfter\";\r\n CurveType[\"StepBefore\"] = \"stepBefore\";\r\n})(CurveType || (CurveType = {}));\r\nconst Curve = {\r\n [CurveType.Basis]: curveBasis,\r\n [CurveType.BasisClosed]: curveBasisClosed,\r\n [CurveType.BasisOpen]: curveBasisOpen,\r\n [CurveType.Bundle]: curveBundle,\r\n [CurveType.Cardinal]: curveCardinal,\r\n [CurveType.CardinalClosed]: curveCardinalClosed,\r\n [CurveType.CardinalOpen]: curveCardinalOpen,\r\n [CurveType.CatmullRom]: curveCatmullRom,\r\n [CurveType.CatmullRomClosed]: curveCatmullRomClosed,\r\n [CurveType.CatmullRomOpen]: curveCatmullRomOpen,\r\n [CurveType.Linear]: curveLinear,\r\n [CurveType.LinearClosed]: curveLinearClosed,\r\n [CurveType.MonotoneX]: curveMonotoneX,\r\n [CurveType.MonotoneY]: curveMonotoneY,\r\n [CurveType.Natural]: curveNatural,\r\n [CurveType.Step]: curveStep,\r\n [CurveType.StepAfter]: curveStepAfter,\r\n [CurveType.StepBefore]: curveStepBefore,\r\n};\n\nexport { Curve, CurveType };\n//# sourceMappingURL=curve.js.map\n","import { XYComponentDefaultConfig } from '../../core/xy-component/config.js';\nimport { CurveType } from '../../types/curve.js';\n\nconst LineDefaultConfig = Object.assign(Object.assign({}, XYComponentDefaultConfig), { curveType: CurveType.MonotoneX, lineWidth: 2, lineDashArray: undefined, fallbackValue: undefined, highlightOnHover: false, cursor: null, interpolateMissingData: false });\n\nexport { LineDefaultConfig };\n//# sourceMappingURL=config.js.map\n","import { injectGlobal, css } from '@emotion/css';\n\nconst globalStyles = injectGlobal `\n :root {\n --vis-line-cursor: default;\n --vis-line-stroke-dasharray: none;\n --vis-line-stroke-dashoffset: 0;\n\n --vis-line-gapfill-stroke-dasharray: 2 3;\n --vis-line-gapfill-stroke-opacity: 0.8;\n --vis-line-gapfill-stroke-dashoffset: 0;\n }\n`;\r\nconst root = css `\n label: line-component;\n`;\r\nconst line = css `\n label: line;\n transition: opacity 200ms;\n cursor: var(--vis-line-cursor);\n`;\r\nconst linePath = css `\n label: linePath;\n fill: none;\n stroke-dasharray: var(--vis-line-stroke-dasharray);\n stroke-dashoffset: var(--vis-line-stroke-dashoffset);\n`;\r\nconst lineSelectionHelper = css `\n label: lineSelectionHelper;\n fill: none;\n stroke: rgba(0, 0, 0, 0);\n stroke-width: 8px;\n`;\r\nconst dim = css `\n opacity: 0.2;\n`;\r\nconst interpolatedPath = css `\n label: interpolated-path;\n fill: none;\n stroke-dasharray: var(--vis-line-gapfill-stroke-dasharray);\n stroke-dashoffset: var(--vis-line-gapfill-stroke-dashoffset);\n stroke-opacity: var(--vis-line-gapfill-stroke-opacity);\n`;\n\nexport { dim, globalStyles, interpolatedPath, line, linePath, lineSelectionHelper, root };\n//# sourceMappingURL=style.js.map\n","import { select } from 'd3-selection';\nimport { line } from 'd3-shape';\nimport { interpolatePath } from 'd3-interpolate-path';\nimport { XYComponentCore } from '../../core/xy-component/index.js';\nimport { isNumber, isArray, getNumber, getString, getValue } from '../../utils/data.js';\nimport { smartTransition } from '../../utils/d3.js';\nimport { getColor } from '../../utils/color.js';\nimport { Curve, CurveType } from '../../types/curve.js';\nimport { Direction } from '../../types/direction.js';\nimport { LineDefaultConfig } from './config.js';\nimport * as style from './style.js';\nimport { line as line$1, linePath, lineSelectionHelper, interpolatedPath, dim } from './style.js';\n\nclass Line extends XYComponentCore {\r\n constructor(config) {\r\n super();\r\n this._defaultConfig = LineDefaultConfig;\r\n this.config = this._defaultConfig;\r\n this.curve = Curve[CurveType.MonotoneX];\r\n this.events = {\r\n [Line.selectors.line]: {\r\n mouseover: this._highlight.bind(this),\r\n mouseleave: this._resetHighlight.bind(this),\r\n },\r\n };\r\n if (config)\r\n this.setConfig(config);\r\n }\r\n get bleed() {\r\n const { config: { lineWidth } } = this;\r\n const yDomain = this.yScale.domain();\r\n const yDirection = this.yScale.range()[0] > this.yScale.range()[1]\r\n ? Direction.North\r\n : Direction.South;\r\n const isYDirectionSouth = yDirection === Direction.South;\r\n const isLineThick = lineWidth > 3;\r\n const isLineVeryThick = lineWidth >= 10;\r\n return {\r\n top: !isLineVeryThick && ((!isYDirectionSouth && (yDomain[1] === 0)) || (isYDirectionSouth && (yDomain[0] === 0))) ? 0 : lineWidth / 2,\r\n bottom: !isLineVeryThick && ((!isYDirectionSouth && (yDomain[0] === 0)) || (isYDirectionSouth && (yDomain[1] === 0))) ? 0 : lineWidth / 2,\r\n left: isLineThick ? lineWidth / 2 : 0,\r\n right: isLineThick ? lineWidth / 2 : 0,\r\n };\r\n }\r\n _render(customDuration) {\r\n super._render(customDuration);\r\n const { config, datamodel: { data } } = this;\r\n const duration = isNumber(customDuration) ? customDuration : config.duration;\r\n this.curve = Curve[config.curveType];\r\n this.lineGen = line()\r\n .x(d => d.x)\r\n .y(d => d.y)\r\n .defined(d => d.defined)\r\n .curve(this.curve);\r\n const yAccessors = (isArray(config.y) ? config.y : [config.y]);\r\n const lineDataX = data.map((d, i) => this.xScale(getNumber(d, config.x, i)));\r\n const lineData = yAccessors.map(a => {\r\n const ld = data.map((d, i) => {\r\n const rawValue = getNumber(d, a, i);\r\n // If `rawValue` is not numerical or if it's not finite (`NaN`, `undefined`, ...), we replace it with `config.fallbackValue`\r\n const value = (isNumber(rawValue) || (rawValue === null)) && isFinite(rawValue) ? rawValue : config.fallbackValue;\r\n const defined = config.interpolateMissingData\r\n ? (isNumber(rawValue) || (rawValue === null)) && isFinite(rawValue)\r\n : isFinite(value);\r\n return {\r\n x: lineDataX[i],\r\n y: this.yScale(value !== null && value !== void 0 ? value : 0),\r\n defined,\r\n value,\r\n };\r\n });\r\n const defined = ld.reduce((def, d) => (d.defined || def), false);\r\n let validGap = false;\r\n const gaps = ld.reduce((acc, d, i) => {\r\n // Gaps include fallback values if configured.\r\n if (!d.defined && isFinite(config.fallbackValue)) {\r\n acc.push(Object.assign(Object.assign({}, d), { defined: true }));\r\n }\r\n if (!d.defined && !validGap)\r\n validGap = true;\r\n const isEndpoint = (i > 0 && !ld[i - 1].defined) || (i < ld.length - 1 && !ld[i + 1].defined);\r\n if (d.defined && isEndpoint) {\r\n // If no undefined points have been found since the last endpoint, we insert one to enforce breaks between adjacent gaps.\r\n if (!validGap)\r\n acc.push(Object.assign(Object.assign({}, d), { defined: false }));\r\n acc.push(d);\r\n validGap = false;\r\n }\r\n return acc;\r\n }, []);\r\n // If the line consists only of `null` values, we'll still render it but it'll be invisible.\r\n // Such trick allows us to have better animated transitions.\r\n const visible = defined && ld.some(d => d.value !== null);\r\n return {\r\n values: ld,\r\n defined,\r\n gaps,\r\n visible,\r\n };\r\n });\r\n const lines = this.g\r\n .selectAll(`.${line$1}`)\r\n .data(lineData);\r\n const linesEnter = lines.enter().append('g')\r\n .attr('class', line$1);\r\n linesEnter\r\n .append('path')\r\n .attr('class', linePath)\r\n .attr('stroke', (d, i) => getColor(data, config.color, i))\r\n .attr('stroke-opacity', 0)\r\n .attr('stroke-width', config.lineWidth);\r\n linesEnter\r\n .append('path')\r\n .attr('class', lineSelectionHelper)\r\n .attr('d', this._emptyPath());\r\n linesEnter.append('path')\r\n .attr('class', interpolatedPath)\r\n .attr('d', this._emptyPath())\r\n .style('opacity', 0);\r\n const linesMerged = linesEnter.merge(lines);\r\n linesMerged.style('cursor', (d, i) => getString(data, config.cursor, i));\r\n linesMerged.each((d, i, elements) => {\r\n var _a;\r\n const group = select(elements[i]);\r\n const linePath$1 = group.select(`.${linePath}`);\r\n const lineSelectionHelper$1 = group.select(`.${lineSelectionHelper}`);\r\n const lineGaps = group.select(`.${interpolatedPath}`);\r\n const isLineVisible = d.visible;\r\n const dashArray = getValue(data, config.lineDashArray, i);\r\n const transition = smartTransition(linePath$1, duration)\r\n .attr('stroke', getColor(data, config.color, i))\r\n .attr('stroke-width', config.lineWidth)\r\n .attr('stroke-opacity', isLineVisible ? 1 : 0)\r\n .style('stroke-dasharray', (_a = dashArray === null || dashArray === void 0 ? void 0 : dashArray.join(' ')) !== null && _a !== void 0 ? _a : null); // We use `.style` because there's also a default CSS-variable for stroke-dasharray\r\n const hasUndefinedSegments = d.values.some(d => !d.defined);\r\n const svgPathD = this.lineGen(d.values);\r\n if (duration && !hasUndefinedSegments) {\r\n const previous = linePath$1.attr('d') || this._emptyPath();\r\n const next = svgPathD || this._emptyPath();\r\n const t = transition;\r\n t.attrTween('d', () => interpolatePath(previous, next));\r\n }\r\n else if (d.visible) {\r\n transition.attr('d', svgPathD);\r\n }\r\n lineSelectionHelper$1\r\n .attr('d', svgPathD)\r\n .attr('visibility', isLineVisible ? null : 'hidden');\r\n if (hasUndefinedSegments && config.interpolateMissingData) {\r\n smartTransition(lineGaps, duration)\r\n .attr('d', this.lineGen(d.gaps))\r\n .attr('stroke', getColor(data, config.color, i))\r\n .attr('stroke-width', config.lineWidth - 1)\r\n .style('opacity', 1);\r\n }\r\n else {\r\n lineGaps.transition()\r\n .duration(duration)\r\n .style('opacity', 0);\r\n }\r\n });\r\n smartTransition(lines.exit(), duration)\r\n .style('opacity', 0)\r\n .remove();\r\n }\r\n _emptyPath() {\r\n const xRange = this.xScale.range();\r\n const yRange = this.yScale.range();\r\n return `M${xRange[0]},${yRange[0]} L${xRange[1]},${yRange[0]}`;\r\n }\r\n _highlight(datum) {\r\n const { config } = this;\r\n if (config.highlightOnHover) {\r\n this.g\r\n .selectAll(`.${line$1}`)\r\n .classed(dim, d => d !== datum);\r\n }\r\n }\r\n _resetHighlight() {\r\n const { config } = this;\r\n if (config.highlightOnHover) {\r\n this.g\r\n .selectAll(`.${line$1}`)\r\n .classed(dim, false);\r\n }\r\n }\r\n}\r\nLine.selectors = style;\n\nexport { Line };\n//# sourceMappingURL=index.js.map\n","import { range, min, max } from 'd3-array';\nimport { line, curveCardinal, curveCardinalClosed } from 'd3-shape';\nimport { clamp } from './data.js';\n\n/*\r\n * Generate SVG path for rectangle with rounded corners\r\n *\r\n * @param {Object} props - Configuration object\r\n * @param {Number} props.x - Rect top left X coordinate\r\n * @param {Number} props.y - Rect top left Y coordinate\r\n * @param {Number} props.w - Rect width\r\n * @param {Number} props.h - Rect height\r\n * @param {Bool} [props.tl=false] - Round top left corner\r\n * @param {Bool} [props.tr=false] - Round top right corner\r\n * @param {Bool} [props.bl=false] - Round bottom left corner\r\n * @param {Bool} [props.br=false] - Round bottom right corner\r\n * @param {Number} [props.r=0] - Corner Radius\r\n * @return {String} Path string for the `d` attribute\r\n */\r\nfunction roundedRectPath({ x, y, w, h, tl = false, tr = false, bl = false, br = false, r = 0, }) {\r\n let path;\r\n path = `M${x + r},${y}h${w - 2 * r}`;\r\n let roundedR = tr ? r : 0;\r\n let angularR = tr ? 0 : r;\r\n path += `a${roundedR},${roundedR} 0 0 1 ${roundedR},${roundedR}`;\r\n path += `h${angularR}v${angularR}`;\r\n path += `v${h - 2 * r}`;\r\n roundedR = br ? r : 0;\r\n angularR = br ? 0 : r;\r\n path += `a${roundedR},${roundedR} 0 0 1 ${-roundedR},${roundedR}`;\r\n path += `v${angularR}h${-angularR}`;\r\n path += `h${2 * r - w}`;\r\n roundedR = bl ? r : 0;\r\n angularR = bl ? 0 : r;\r\n path += `a${roundedR},${roundedR} 0 0 1 ${-roundedR},${-roundedR}`;\r\n path += `h${-angularR}v${-angularR}`;\r\n path += `v${2 * r - h}`;\r\n roundedR = tl ? r : 0;\r\n angularR = tl ? 0 : r;\r\n path += `a${roundedR},${roundedR} 0 0 1 ${roundedR},${-roundedR}`;\r\n path += `v${-angularR}h${angularR}`;\r\n path += 'z';\r\n return path;\r\n}\r\nfunction polygon(size, n = 6, endAngle = 2 * Math.PI, open = false) {\r\n const r = n === 4 ? Math.sqrt(0.5) * size : size / 3.6 * 2;\r\n const deltaAngle = n === 4 ? Math.PI / 4 : 0; // rotate to 45 grads if shape is a rectangle\r\n const shiftedEndAngle = endAngle - deltaAngle;\r\n const completion = (shiftedEndAngle < 0 ? endAngle : shiftedEndAngle) / (2 * Math.PI);\r\n const nSegments = Math.ceil(n * completion);\r\n const centerAngle = 1 / n * Math.PI * 2; // /\\\r\n const baseAngle = (Math.PI - centerAngle) / 2; // /__\\\r\n const data = range(nSegments + (shiftedEndAngle >= 0 ? 1 : 0))\r\n .map((d, i) => {\r\n const isLastSegment = i === nSegments || (nSegments === 1 && shiftedEndAngle < 0);\r\n let mult = isLastSegment ? ((completion * n) % 1 || 1) : 1; // Handle partial shape\r\n if (shiftedEndAngle < 0) {\r\n mult += 0.5;\r\n }\r\n const angle = centerAngle * (i - 1 + mult);\r\n let radius;\r\n if (isLastSegment) {\r\n const thirdAngle = Math.PI - baseAngle - centerAngle * mult;\r\n radius = r * Math.sin(baseAngle) / Math.sin(thirdAngle); // Law of sines\r\n }\r\n else {\r\n radius = r;\r\n }\r\n return {\r\n x: Math.sin(angle + deltaAngle) * radius,\r\n y: -Math.cos(angle + deltaAngle) * radius,\r\n };\r\n });\r\n if (n === 4) {\r\n const angle = centerAngle * (-1 + 0.5);\r\n const thirdAngle = Math.PI * 0.5;\r\n const radius = r * Math.sin(baseAngle) / Math.sin(thirdAngle); // Law of sines\r\n data.unshift({\r\n x: Math.sin(angle + deltaAngle) * radius,\r\n y: -Math.cos(angle + deltaAngle) * radius,\r\n });\r\n }\r\n const path = line()\r\n /* eslint-disable-next-line dot-notation */\r\n .x(d => d['x'])\r\n /* eslint-disable-next-line dot-notation */\r\n .y(d => d['y'])\r\n .curve((open ? curveCardinal : curveCardinalClosed).tension(0.95));\r\n return path(data);\r\n}\r\nfunction circlePath(cx, cy, r) {\r\n return `\n M ${cx} ${cy}\n m ${-r}, 0\n a ${r},${r} 0 1,1 ${r * 2},0\n a ${r},${r} 0 1,1 ${-r * 2},0`;\r\n}\r\nfunction scoreRectPath({ x, y, w, h, r = 0, score = 1 }) {\r\n let path;\r\n const side = 1 / 4;\r\n const halfSide = side / 2;\r\n let part = score;\r\n // 8 1\r\n // - -\r\n // 7 | | 2\r\n // 6 | | 3\r\n // - -\r\n // 5 4\r\n // 1\r\n const hLength = min([w * 0.5 * (part / halfSide) + r, w * 0.5 - r]);\r\n path = `M${x + w * 0.5},${y}h${hLength}`;\r\n // 2, 3\r\n part = score - 1 / 8;\r\n if (part > 0) {\r\n path += `a${r},${r} 0 0 1 ${r},${r}`;\r\n const vLength = clamp(h * (part / side) - r, 0, h - 2 * r);\r\n path += `v${vLength}`;\r\n }\r\n // 4, 5\r\n part = score - 3 / 8;\r\n if (part > 0) {\r\n path += `a${r},${r} 0 0 1 ${-r},${r}`;\r\n const hLength = clamp(r - w * (part / side), 2 * r - w, 0);\r\n path += `h${hLength}`;\r\n }\r\n // 6, 7\r\n part = score - 5 / 8;\r\n if (part > 0) {\r\n path += `a${r},${r} 0 0 1 ${-r},${-r}`;\r\n const vLength = clamp(r - h * (part / side), 2 * r - h, 0);\r\n path += `v${vLength}`;\r\n }\r\n // 8\r\n part = score - 7 / 8;\r\n if (part > 0) {\r\n path += `a${r},${r} 0 0 1 ${r},${-r}`;\r\n const hLength = max([w * 0.5 * (part / halfSide) - r, 0]);\r\n path += `h${hLength}`;\r\n }\r\n return path;\r\n}\r\n/*\r\n * Replace L path command with arc with specified radius\r\n * @param {String} path - the path string\r\n * @param {number} r - radius in pixels\r\n * @returns {String} new path string\r\n */\r\nfunction convertLineToArc(path, r) {\r\n return path.toString().replace(/L(?<x>-?\\d*\\.?\\d*),(?<y>-?\\d+\\.?\\d*)/gm, (_, x, y) => `A ${r} ${r} 0 0 0 ${x} ${y}`);\r\n}\n\nexport { circlePath, convertLineToArc, polygon, roundedRectPath, scoreRectPath };\n//# sourceMappingURL=path.js.map\n","import { XYComponentDefaultConfig } from '../../core/xy-component/config.js';\nimport { Orientation } from '../../types/position.js';\n\nconst StackedBarDefaultConfig = Object.assign(Object.assign({}, XYComponentDefaultConfig), { color: undefined, barMaxWidth: undefined, barWidth: undefined, dataStep: undefined, barPadding: 0.0, roundedCorners: 2, cursor: null, barMinHeight1Px: false, barMinHeightZeroValue: null, orientation: Orientation.Vertical });\n\nexport { StackedBarDefaultConfig };\n//# sourceMappingURL=config.js.map\n","import { css, injectGlobal } from '@emotion/css';\n\nconst root = css `\n label: stacked-bar-component;\n`;\r\nconst globalStyles = injectGlobal `\n :root {\n --vis-stacked-bar-cursor: default;\n --vis-stacked-bar-fill-color: var(--vis-color-main);\n --vis-stacked-bar-stroke-color: none;\n --vis-stacked-bar-stroke-width: 0px;\n --vis-stacked-bar-hover-stroke-width: none;\n --vis-stacked-bar-hover-stroke-color: none;\n\n /* Dark Theme */\n --vis-dark-stacked-bar-stroke-color: none;\n }\n\n body.theme-dark ${`.${root}`} {\n --vis-stacked-bar-stroke-color: var(--vis-dark-stacked-bar-stroke-color);\n }\n`;\r\nconst bar = css `\n label: bar;\n fill: var(--vis-stacked-bar-fill-color);\n stroke: var(--vis-stacked-bar-stroke-color);\n stroke-width: var(--vis-stacked-bar-stroke-width);\n cursor: var(--vis-stacked-bar-cursor);\n\n &:hover {\n stroke-width: var(--vis-stacked-bar-hover-stroke-width);\n stroke: var(--vis-stacked-bar-hover-stroke-color);\n }\n`;\r\nconst barGroup = css `\n label: barGroup;\n`;\r\nconst barGroupExit = css `\n label: barGroupExit;\n`;\n\nexport { bar, barGroup, barGroupExit, globalStyles, root };\n//# sourceMappingURL=style.js.map\n","import { min, max } from 'd3-array';\nimport { XYComponentCore } from '../../core/xy-component/index.js';\nimport { isArray, getNumber, isNumber, getStackedData, getString, isEmpty, clamp, getStackedExtent, getExtent } from '../../utils/data.js';\nimport { roundedRectPath } from '../../utils/path.js';\nimport { smartTransition } from '../../utils/d3.js';\nimport { getColor } from '../../utils/color.js';\nimport { Orientation } from '../../types/position.js';\nimport { StackedBarDefaultConfig } from './config.js';\nimport * as style from './style.js';\nimport { barGroup, barGroupExit, bar } from './style.js';\n\nclass StackedBar extends XYComponentCore {\r\n constructor(config) {\r\n super();\r\n this._defaultConfig = StackedBarDefaultConfig;\r\n this.config = this._defaultConfig;\r\n this.getAccessors = () => (isArray(this.config.y) ? this.config.y : [this.config.y]);\r\n this.stacked = true;\r\n this.events = {};\r\n this._barData = [];\r\n if (config)\r\n this.setConfig(config);\r\n }\r\n get bleed() {\r\n this._barData = this._getVisibleData();\r\n if (this._barData.length === 0)\r\n return { top: 0, bottom: 0, left: 0, right: 0 };\r\n // By default, horizontal orientation is \"flipped\", i.e. the `yDirection` of `XYContainer` is set to `Direction.North`\r\n const isHorizontalAndFlipped = !this.isVertical() && (this.dataScale.range()[0] > this.dataScale.range()[1]);\r\n const dataDomain = this.dataScale.domain();\r\n const halfGroupWidth = this._getBarWidth() / 2;\r\n const dataScaleValues = this._barData.map((d, i) => getNumber(d, this.config.x, i));\r\n const firstDataValue = min(dataScaleValues);\r\n const lastDataValue = max(dataScaleValues);\r\n const firstValuePx = this.dataScale(firstDataValue);\r\n const lastValuePx = this.dataScale(lastDataValue);\r\n const dataDomainRequiredStart = this.dataScale.invert(firstValuePx + (isHorizontalAndFlipped ? halfGroupWidth : -halfGroupWidth));\r\n const dataDomainRequiredEnd = this.dataScale.invert(lastValuePx + (isHorizontalAndFlipped ? -halfGroupWidth : halfGroupWidth));\r\n const bleedPxStart = dataDomainRequiredStart <= dataDomain[0] ? this.dataScale(dataDomain[0]) - this.dataScale(dataDomainRequiredStart) : 0;\r\n const bleedPxEnd = dataDomainRequiredEnd > dataDomain[1] ? this.dataScale(dataDomainRequiredEnd) - this.dataScale(dataDomain[1]) : 0;\r\n return {\r\n top: this.isVertical() ? 0 : (isHorizontalAndFlipped ? -bleedPxEnd : bleedPxStart),\r\n bottom: this.isVertical() ? 0 : (isHorizontalAndFlipped ? -bleedPxStart : bleedPxEnd),\r\n left: this.isVertical() ? bleedPxStart : 0,\r\n right: this.isVertical() ? bleedPxEnd : 0,\r\n };\r\n }\r\n get dataScale() {\r\n return this.isVertical() ? this.xScale : this.yScale;\r\n }\r\n get valueScale() {\r\n return this.isVertical() ? this.yScale : this.xScale;\r\n }\r\n isVertical() {\r\n return this.config.orientation === Orientation.Vertical;\r\n }\r\n _render(customDuration) {\r\n const { config } = this;\r\n const duration = isNumber(customDuration) ? customDuration : config.duration;\r\n const yAccessors = this.getAccessors();\r\n const stacked = getStackedData(this._barData, 0, yAccessors, this._prevNegative);\r\n this._prevNegative = stacked.map(s => !!s.isMostlyNegative);\r\n const barGroups = this.g\r\n .selectAll(`.${barGroup}`)\r\n .data(this._barData, (d, i) => { var _a; return `${(_a = getString(d, config.id, i)) !== null && _a !== void 0 ? _a : i}`; });\r\n const getBarGroupsTransform = (d, i) => {\r\n const v = this.dataScale(getNumber(d, config.x, i));\r\n const x = this.isVertical() ? v : 0;\r\n const y = this.isVertical() ? 0 : v;\r\n return `translate(${x},${y})`;\r\n };\r\n const barGroupsEnter = barGroups.enter().append('g')\r\n .attr('class', barGroup)\r\n .attr('transform', getBarGroupsTransform)\r\n .style('opacity', 1);\r\n const barGroupsMerged = barGroupsEnter.merge(barGroups);\r\n smartTransition(barGroupsMerged, duration)\r\n .attr('transform', getBarGroupsTransform)\r\n .style('opacity', 1);\r\n const barGroupExit$1 = barGroups.exit()\r\n .attr('class', barGroupExit);\r\n smartTransition(barGroupExit$1, duration)\r\n .style('opacity', 0)\r\n .remove();\r\n // Animate bars from exiting groups going down\r\n smartTransition(barGroupExit$1.selectAll(`.${bar}`), duration)\r\n .attr('transform', this.isVertical()\r\n ? `translate(0,${this._height / 3})`\r\n : `translate(${this._width / 6},0)`);\r\n // Render Bars\r\n const bars = barGroupsMerged\r\n .selectAll(`.${bar}`)\r\n .data((d, j) => stacked.map((s, stackIndex) => (Object.assign(Object.assign({}, d), { _index: j, _stacked: s[j], \r\n // Ending bar if the next stack is not the same as the current one\r\n _ending: (stackIndex === stacked.length - 1) ||\r\n ((stackIndex <= stacked.length - 1) && stacked[stackIndex + 1][j][0] !== s[j][1]) }))));\r\n const barsEnter = bars.enter().append('path')\r\n .attr('class', bar)\r\n .attr('d', (d, j) => this._getBarPath(d, j, true))\r\n .style('fill', (d, j) => getColor(d, config.color, j));\r\n const barsMerged = barsEnter.merge(bars);\r\n smartTransition(barsMerged, duration)\r\n .attr('d', (d, j) => this._getBarPath(d, j))\r\n .style('fill', (d, j) => getColor(d, config.color, j))\r\n .style('cursor', (d, j) => getString(d, config.cursor, j));\r\n smartTransition(bars.exit(), duration)\r\n .style('opacity', 0)\r\n .remove();\r\n }\r\n _getBarWidth() {\r\n const { config, datamodel: { data } } = this;\r\n if (isEmpty(data))\r\n return 0;\r\n if (config.barWidth)\r\n return min([config.barWidth, config.barMaxWidth]);\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n const isOrdinal = this.dataScale.bandwidth;\r\n const domain = (this.dataScale.domain ? this.dataScale.domain() : []);\r\n const domainLength = isOrdinal ? domain.length : domain[1] - domain[0];\r\n // If the dataStep property is provided the amount of data elements is calculates as domainLength / dataStep\r\n // otherwise we get the number of data elements within the domain range\r\n // Or if the scale is ordinal we use data.length\r\n let dataSize = (1 + domainLength / config.dataStep) ||\r\n (!isOrdinal && data.filter((d, i) => {\r\n const value = getNumber(d, config.x, i);\r\n return (value >= domain[0]) && (value <= domain[1]);\r\n }).length) ||\r\n data.length;\r\n // We increase the dataSize by 1 to take into account possible additional domain space\r\n if (!isOrdinal && dataSize >= 2)\r\n dataSize += 1;\r\n const c = dataSize < 2 ? 1 : 1 - config.barPadding;\r\n const barWidth = c * (this.isVertical() ? this._width : this._height) / dataSize;\r\n return min([barWidth, config.barMaxWidth]);\r\n }\r\n _getVisibleData() {\r\n const { config, datamodel: { data } } = this;\r\n const groupWidth = this._getBarWidth();\r\n const halfGroupWidthPx = data.length < 2 ? 0 : groupWidth / 2;\r\n const scale = this.dataScale;\r\n const halfGroupWidth = Math.abs(scale.invert(halfGroupWidthPx) - scale.invert(0));\r\n const filtered = data === null || data === void 0 ? void 0 : data.filter((d, i) => {\r\n const v = getNumber(d, config.x, i);\r\n const domain = scale.domain();\r\n const domainMin = +domain[0];\r\n const domainMax = +domain[1];\r\n return (v >= (domainMin - halfGroupWidth)) && (v <= (domainMax + halfGroupWidth));\r\n });\r\n return filtered;\r\n }\r\n _getBarPath(d, accessorIndex, isEntering = false) {\r\n const { config } = this;\r\n const yAccessors = this.getAccessors();\r\n const barWidth = this._getBarWidth();\r\n const isNegative = d._stacked[1] < 0;\r\n const isEnding = d._ending; // The most top bar or, if the value is negative, the most bottom bar\r\n const value = getNumber(d, yAccessors[accessorIndex], d._index);\r\n const height = isEntering ? 0 : Math.abs(this.valueScale(d._stacked[0]) - this.valueScale(d._stacked[1]));\r\n const h = !isEntering && config.barMinHeight1Px && (height < 1) && isFinite(value) && (value !== config.barMinHeightZeroValue) ? 1 : height;\r\n const y = isEntering\r\n ? this.valueScale(0)\r\n : this.valueScale(isNegative ? d._stacked[0] : d._stacked[1]) - (height < 1 && config.barMinHeight1Px ? 1 : 0);\r\n const x = -barWidth / 2;\r\n const width = barWidth;\r\n const cornerRadius = config.roundedCorners\r\n ? isNumber(config.roundedCorners) ? +config.roundedCorners : width / 2\r\n : 0;\r\n const cornerRadiusClamped = clamp(cornerRadius, 0, Math.min(height, width) / 2);\r\n const isNorthDirected = this.yScale.range()[0] > this.yScale.range()[1];\r\n return roundedRectPath({\r\n x: this.isVertical() ? x : y - h,\r\n y: this.isVertical() ? y + (isNorthDirected ? 0 : -h) : x,\r\n w: this.isVertical() ? width : h,\r\n h: this.isVertical() ? h : width,\r\n tl: isEnding && (this.isVertical()\r\n ? (!isNegative && isNorthDirected) || (isNegative && !isNorthDirected)\r\n : isNegative),\r\n tr: isEnding && (this.isVertical()\r\n ? (!isNegative && isNorthDirected) || (isNegative && !isNorthDirected)\r\n : !isNegative),\r\n br: isEnding && (this.isVertical()\r\n ? (isNegative && isNorthDirected) || (!isNegative && !isNorthDirected)\r\n : !isNegative),\r\n bl: isEnding && (this.isVertical()\r\n ? (isNegative && isNorthDirected) || (!isNegative && !isNorthDirected)\r\n : isNegative),\r\n r: cornerRadiusClamped,\r\n });\r\n }\r\n getValueScaleExtent(scaleByVisibleData) {\r\n const { datamodel } = this;\r\n const yAccessors = this.getAccessors();\r\n const data = scaleByVisibleData ? this._getVisibleData() : datamodel.data;\r\n return getStackedExtent(data, ...yAccessors);\r\n }\r\n getDataScaleExtent() {\r\n const { config, datamodel } = this;\r\n return getExtent(datamodel.data, config.x);\r\n }\r\n getYDataExtent(scaleByVisibleData) {\r\n return this.isVertical() ? this.getValueScaleExtent(scaleByVisibleData) : this.getDataScaleExtent();\r\n }\r\n getXDataExtent() {\r\n return this.isVertical() ? this.getDataScaleExtent() : this.getValueScaleExtent(false);\r\n }\r\n}\r\nStackedBar.selectors = style;\n\nexport { StackedBar };\n//# sourceMappingURL=index.js.map\n","import { XYComponentDefaultConfig } from '../../core/xy-component/config.js';\nimport { Orientation } from '../../types/position.js';\n\nconst GroupedBarDefaultConfig = Object.assign(Object.assign({}, XYComponentDefaultConfig), { color: undefined, groupMaxWidth: undefined, groupWidth: undefined, dataStep: undefined, groupPadding: 0.05, barPadding: 0.0, roundedCorners: 2, barMinHeight: 2, cursor: null, orientation: Orientation.Vertical });\n\nexport { GroupedBarDefaultConfig };\n//# sourceMappingURL=config.js.map\n","import { css, injectGlobal } from '@emotion/css';\n\nconst root = css `\n label: grouped-bar-component;\n`;\r\nconst globalStyles = injectGlobal `\n :root {\n --vis-grouped-bar-cursor: default;\n --vis-grouped-bar-fill-color: var(--vis-color-main);\n --vis-grouped-bar-stroke-color: none;\n --vis-grouped-bar-stroke-width: 0px;\n --vis-grouped-bar-hover-stroke-width: 1px;\n --vis-grouped-bar-hover-stroke-color: none;\n\n\n /* Dark Theme */\n --vis-dark-grouped-bar-stroke-color: none;\n }\n\n body.theme-dark ${`.${root}`} {\n --vis-grouped-bar-stroke-color: var(--vis-dark-grouped-bar-stroke-color);\n }\n`;\r\nconst bar = css `\n label: bar;\n fill: var(--vis-grouped-bar-fill-color);\n stroke: var(--vis-grouped-bar-stroke-color);\n stroke-width: var(--vis-grouped-bar-stroke-width);\n cursor: var(--vis-grouped-bar-cursor);\n\n &:hover {\n stroke-width: var(--vis-grouped-bar-hover-stroke-width);\n stroke: var(--vis-grouped-bar-hover-stroke-color);\n }\n`;\r\nconst barGroup = css `\n label: barGroup;\n`;\r\nconst barGroupExit = css `\n label: barGroupExit;\n`;\n\nexport { bar, barGroup, barGroupExit, globalStyles, root };\n//# sourceMappingURL=style.js.map\n","import { scaleBand } from 'd3-scale';\nimport { min, max, range } from 'd3-array';\nimport { XYComponentCore } from '../../core/xy-component/index.js';\nimport { isArray, getNumber, isNumber, getString, clamp, isEmpty, getMin, getMax, getExtent } from '../../utils/data.js';\nimport { roundedRectPath } from '../../utils/path.js';\nimport { smartTransition } from '../../utils/d3.js';\nimport { getColor } from '../../utils/color.js';\nimport { Direction } from '../../types/direction.js';\nimport { Orientation } from '../../types/position.js';\nimport { GroupedBarDefaultConfig } from './config.js';\nimport * as style from './style.js';\nimport { barGroup, barGroupExit, bar } from './style.js';\n\nclass GroupedBar extends XYComponentCore {\r\n constructor(config) {\r\n super();\r\n this._defaultConfig = GroupedBarDefaultConfig;\r\n this.config = this._defaultConfig;\r\n this.getAccessors = () => isArray(this.config.y) ? this.config.y : [this.config.y];\r\n this.events = {};\r\n this._barData = [];\r\n if (config)\r\n this.setConfig(config);\r\n }\r\n get bleed() {\r\n this._barData = this._getVisibleData();\r\n if (this._barData.length === 0)\r\n return { top: 0, bottom: 0, left: 0, right: 0 };\r\n // By default, horizontal orientation is \"flipped\", i.e. the `yDirection` of `XYContainer` is set to `Direction.North`\r\n const isHorizontalAndFlipped = !this.isVertical() && (this.dataScale.range()[0] > this.dataScale.range()[1]);\r\n const dataDomain = this.dataScale.domain();\r\n const halfGroupWidth = this._getGroupWidth() / 2;\r\n const dataScaleValues = this._barData.map((d, i) => getNumber(d, this.config.x, i));\r\n const firstDataValue = min(dataScaleValues);\r\n const lastDataValue = max(dataScaleValues);\r\n const firstValuePx = this.dataScale(firstDataValue);\r\n const lastValuePx = this.dataScale(lastDataValue);\r\n const dataDomainRequiredStart = this.dataScale.invert(firstValuePx + (isHorizontalAndFlipped ? halfGroupWidth : -halfGroupWidth));\r\n const dataDomainRequiredEnd = this.dataScale.invert(lastValuePx + (isHorizontalAndFlipped ? -halfGroupWidth : halfGroupWidth));\r\n const bleedPxStart = dataDomainRequiredStart <= dataDomain[0] ? this.dataScale(dataDomain[0]) - this.dataScale(dataDomainRequiredStart) : 0;\r\n const bleedPxEnd = dataDomainRequiredEnd > dataDomain[1] ? this.dataScale(dataDomainRequiredEnd) - this.dataScale(dataDomain[1]) : 0;\r\n return {\r\n top: this.isVertical() ? 0 : (isHorizontalAndFlipped ? -bleedPxEnd : bleedPxStart),\r\n bottom: this.isVertical() ? 0 : (isHorizontalAndFlipped ? -bleedPxStart : bleedPxEnd),\r\n left: this.isVertical() ? bleedPxStart : 0,\r\n right: this.isVertical() ? bleedPxEnd : 0,\r\n };\r\n }\r\n get dataScale() {\r\n return this.isVertical() ? this.xScale : this.yScale;\r\n }\r\n get valueScale() {\r\n return this.isVertical() ? this.yScale : this.xScale;\r\n }\r\n isVertical() {\r\n return this.config.orientation === Orientation.Vertical;\r\n }\r\n _render(customDuration) {\r\n const { config } = this;\r\n const duration = isNumber(customDuration)\r\n ? customDuration\r\n : config.duration;\r\n const groupWidth = this._getGroupWidth();\r\n const yAccessors = this.getAccessors();\r\n const innerBandScaleRange = [-groupWidth / 2, groupWidth / 2];\r\n const innerBandScale = scaleBand()\r\n .domain(range(yAccessors.length))\r\n .range(innerBandScaleRange)\r\n .paddingInner(config.barPadding)\r\n .paddingOuter(config.barPadding);\r\n const barGroups = this.g\r\n .selectAll(`.${barGroup}`)\r\n .data(this._barData, (d, i) => { var _a; return `${(_a = getString(d, config.id, i)) !== null && _a !== void 0 ? _a : i}`; });\r\n const getBarGroupsTransform = (d, i) => {\r\n const v = this.dataScale(getNumber(d, config.x, i));\r\n const x = this.isVertical() ? v : 0;\r\n const y = this.isVertical() ? 0 : v;\r\n return `translate(${x},${y})`;\r\n };\r\n const barGroupsEnter = barGroups\r\n .enter()\r\n .append('g')\r\n .attr('class', barGroup)\r\n .attr('transform', getBarGroupsTransform)\r\n .style('opacity', 1);\r\n const barGroupsMerged = barGroupsEnter.merge(barGroups);\r\n smartTransition(barGroupsMerged, duration)\r\n .attr('transform', getBarGroupsTransform)\r\n .style('opacity', 1);\r\n const barGroupExit$1 = barGroups.exit().attr('class', barGroupExit);\r\n smartTransition(barGroupExit$1, duration).style('opacity', 0).remove();\r\n // Animate exiting bars going down\r\n smartTransition(barGroupExit$1.selectAll(`.${bar}`), duration)\r\n .attr('transform', (d, i, e) => {\r\n return this.isVertical()\r\n ? `translate(0,${this.yScale(0)}) scale(1,0)`\r\n : `translate(${this.xScale(0)},0) scale(0,1)`;\r\n });\r\n const barWidth = innerBandScale.bandwidth();\r\n const bars = barGroupsMerged\r\n .selectAll(`.${bar}`)\r\n .data((d) => yAccessors.map(() => d));\r\n const valueAxisDirection = this._getValueAxisDirection();\r\n const barsEnter = bars\r\n .enter()\r\n .append('path')\r\n .attr('class', bar)\r\n .attr('d', (d, i) => {\r\n const x = innerBandScale(i);\r\n const y = this.valueScale(0);\r\n const width = barWidth;\r\n const height = 0;\r\n return this._getBarPath(x, y, width, height, false, valueAxisDirection);\r\n })\r\n .style('fill', (d, i) => getColor(d, config.color, i));\r\n const barsMerged = barsEnter.merge(bars);\r\n smartTransition(barsMerged, duration)\r\n .attr('d', (d, j) => {\r\n const x = innerBandScale(j);\r\n const width = barWidth;\r\n // Todo: Find a way to pass the datum index to `getNumber` below\r\n const value = getNumber(d, yAccessors[j]);\r\n const isNegative = value < 0;\r\n let y = isNegative ? this.valueScale(0) : this.valueScale(value || 0);\r\n let height = Math.abs(this.valueScale(0) - this.valueScale(value)) || 0;\r\n // Optionally set minimum bar height\r\n if (height < config.barMinHeight) {\r\n const dir = valueAxisDirection === Direction.North ? -1 : 1;\r\n y = this.valueScale(0) + dir * config.barMinHeight;\r\n height = config.barMinHeight;\r\n }\r\n return this._getBarPath(x, y, width, height, isNegative, valueAxisDirection);\r\n })\r\n .style('fill', (d, i) => getColor(d, config.color, i))\r\n .style('cursor', (d, i) => getString(d, config.cursor, i));\r\n smartTransition(bars.exit(), duration).remove();\r\n }\r\n _getValueAxisDirection() {\r\n return this.valueScale.range()[0] > this.valueScale.range()[1]\r\n ? Direction.North\r\n : Direction.South;\r\n }\r\n _getVisibleData() {\r\n const { config, datamodel: { data }, } = this;\r\n const groupWidth = this._getGroupWidth();\r\n const halfGroupWidth = data.length < 2 ? 0 : groupWidth / 2;\r\n const dataScale = this.dataScale;\r\n const xHalfGroupWidth = Math.abs(dataScale.invert(halfGroupWidth) -\r\n dataScale.invert(0));\r\n const filtered = data === null || data === void 0 ? void 0 : data.filter((d, i) => {\r\n const v = getNumber(d, config.x, i);\r\n const domain = dataScale.domain();\r\n const domainMin = +domain[0];\r\n const domainMax = +domain[1];\r\n return (v >= domainMin - xHalfGroupWidth && v <= domainMax + xHalfGroupWidth);\r\n });\r\n return filtered;\r\n }\r\n _getBarPath(x, y, width, height, isNegative, direction) {\r\n const { config } = this;\r\n const cornerRadius = config.roundedCorners\r\n ? isNumber(config.roundedCorners)\r\n ? +config.roundedCorners\r\n : width / 2\r\n : 0;\r\n const cornerRadiusClamped = clamp(cornerRadius, 0, Math.min(height, width) / 2);\r\n const isNorthDirected = direction === Direction.North;\r\n const roundedTop = this.isVertical() && isNegative !== isNorthDirected;\r\n const roundedBottom = this.isVertical() && isNegative === isNorthDirected;\r\n const roundedLeft = !this.isVertical() && isNegative;\r\n const roundedRight = !this.isVertical() && !isNegative;\r\n return roundedRectPath({\r\n x: this.isVertical() ? x : y + (isNorthDirected ? 0 : -height),\r\n y: this.isVertical() ? y + (isNorthDirected ? 0 : -height) : x,\r\n w: this.isVertical() ? width : height,\r\n h: this.isVertical() ? height : width,\r\n tl: roundedTop || roundedLeft,\r\n tr: roundedTop || roundedRight,\r\n bl: roundedBottom || roundedLeft,\r\n br: roundedBottom || roundedRight,\r\n r: cornerRadiusClamped,\r\n });\r\n }\r\n _getGroupWidth() {\r\n const { config, datamodel: { data }, } = this;\r\n if (isEmpty(data))\r\n return 0;\r\n if (config.groupWidth) {\r\n return min([config.groupWidth, config.groupMaxWidth]);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n const isOrdinal = this.dataScale.bandwidth;\r\n const domain = (this.dataScale.domain ? this.dataScale.domain() : []);\r\n const domainLength = isOrdinal ? domain.length : domain[1] - domain[0];\r\n // If the dataStep property is provided the amount of data elements is calculates as domainLength / dataStep\r\n // otherwise we get the number of data elements within the domain range\r\n // Or if the scale is ordinal we use data.length\r\n let dataSize = 1 + domainLength / config.dataStep ||\r\n (!isOrdinal &&\r\n data.filter((d, i) => {\r\n const value = getNumber(d, config.x, i);\r\n return value >= domain[0] && value <= domain[1];\r\n }).length) ||\r\n data.length;\r\n // We increase the dataSize by 1 to take into account possible additional domain space\r\n if (!isOrdinal && dataSize >= 2)\r\n dataSize += 1;\r\n const c = dataSize < 2 ? 1 : 1 - config.groupPadding;\r\n const groupWidth = (c * (this.isVertical() ? this._width : this._height)) / dataSize;\r\n return min([groupWidth, config.groupMaxWidth]);\r\n }\r\n getValueScaleExtent(scaleByVisibleData) {\r\n const { datamodel } = this;\r\n const yAccessors = this.getAccessors();\r\n const data = scaleByVisibleData ? this._getVisibleData() : datamodel.data;\r\n const min = getMin(data, ...yAccessors);\r\n const max = getMax(data, ...yAccessors);\r\n return [min > 0 ? 0 : min, max < 0 ? 0 : max];\r\n }\r\n getDataScaleExtent() {\r\n const { config, datamodel } = this;\r\n return getExtent(datamodel.data, config.x);\r\n }\r\n getYDataExtent(scaleByVisibleData) {\r\n return this.isVertical()\r\n ? this.getValueScaleExtent(scaleByVisibleData)\r\n : this.getDataScaleExtent();\r\n }\r\n getXDataExtent() {\r\n return this.isVertical()\r\n ? this.getDataScaleExtent()\r\n : this.getValueScaleExtent(false);\r\n }\r\n}\r\nGroupedBar.selectors = style;\n\nexport { GroupedBar };\n//# sourceMappingURL=index.js.map\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var TrimMode;\r\n(function (TrimMode) {\r\n TrimMode[\"Start\"] = \"start\";\r\n TrimMode[\"Middle\"] = \"middle\";\r\n TrimMode[\"End\"] = \"end\";\r\n})(TrimMode || (TrimMode = {}));\r\nvar VerticalAlign;\r\n(function (VerticalAlign) {\r\n VerticalAlign[\"Top\"] = \"top\";\r\n VerticalAlign[\"Middle\"] = \"middle\";\r\n VerticalAlign[\"Bottom\"] = \"bottom\";\r\n})(VerticalAlign || (VerticalAlign = {}));\r\nvar FitMode;\r\n(function (FitMode) {\r\n FitMode[\"Wrap\"] = \"wrap\";\r\n FitMode[\"Trim\"] = \"trim\";\r\n})(FitMode || (FitMode = {}));\r\nvar TextAlign;\r\n(function (TextAlign) {\r\n TextAlign[\"Left\"] = \"left\";\r\n TextAlign[\"Center\"] = \"center\";\r\n TextAlign[\"Right\"] = \"right\";\r\n})(TextAlign || (TextAlign = {}));\n\nexport { FitMode, TextAlign, TrimMode, VerticalAlign };\n//# sourceMappingURL=text.js.map\n","'use strict';\n\n(function (global) {\n\n // minimal symbol polyfill for IE11 and others\n if (typeof Symbol !== 'function') {\n var Symbol = function(name) {\n return name;\n }\n\n Symbol.nonNative = true;\n }\n\n const STATE_PLAINTEXT = Symbol('plaintext');\n const STATE_HTML = Symbol('html');\n const STATE_COMMENT = Symbol('comment');\n\n const ALLOWED_TAGS_REGEX = /<(\\w*)>/g;\n const NORMALIZE_TAG_REGEX = /<\\/?([^\\s\\/>]+)/;\n\n function striptags(html, allowable_tags, tag_replacement) {\n html = html || '';\n allowable_tags = allowable_tags || [];\n tag_replacement = tag_replacement || '';\n\n let context = init_context(allowable_tags, tag_replacement);\n\n return striptags_internal(html, context);\n }\n\n function init_striptags_stream(allowable_tags, tag_replacement) {\n allowable_tags = allowable_tags || [];\n tag_replacement = tag_replacement || '';\n\n let context = init_context(allowable_tags, tag_replacement);\n\n return function striptags_stream(html) {\n return striptags_internal(html || '', context);\n };\n }\n\n striptags.init_streaming_mode = init_striptags_stream;\n\n function init_context(allowable_tags, tag_replacement) {\n allowable_tags = parse_allowable_tags(allowable_tags);\n\n return {\n allowable_tags : allowable_tags,\n tag_replacement: tag_replacement,\n\n state : STATE_PLAINTEXT,\n tag_buffer : '',\n depth : 0,\n in_quote_char : ''\n };\n }\n\n function striptags_internal(html, context) {\n if (typeof html != \"string\") {\n throw new TypeError(\"'html' parameter must be a string\");\n }\n\n let allowable_tags = context.allowable_tags;\n let tag_replacement = context.tag_replacement;\n\n let state = context.state;\n let tag_buffer = context.tag_buffer;\n let depth = context.depth;\n let in_quote_char = context.in_quote_char;\n let output = '';\n\n for (let idx = 0, length = html.length; idx < length; idx++) {\n let char = html[idx];\n\n if (state === STATE_PLAINTEXT) {\n switch (char) {\n case '<':\n state = STATE_HTML;\n tag_buffer += char;\n break;\n\n default:\n output += char;\n break;\n }\n }\n\n else if (state === STATE_HTML) {\n switch (char) {\n case '<':\n // ignore '<' if inside a quote\n if (in_quote_char) {\n break;\n }\n\n // we're seeing a nested '<'\n depth++;\n break;\n\n case '>':\n // ignore '>' if inside a quote\n if (in_quote_char) {\n break;\n }\n\n // something like this is happening: '<<>>'\n if (depth) {\n depth--;\n\n break;\n }\n\n // this is closing the tag in tag_buffer\n in_quote_char = '';\n state = STATE_PLAINTEXT;\n tag_buffer += '>';\n\n if (allowable_tags.has(normalize_tag(tag_buffer))) {\n output += tag_buffer;\n } else {\n output += tag_replacement;\n }\n\n tag_buffer = '';\n break;\n\n case '\"':\n case '\\'':\n // catch both single and double quotes\n\n if (char === in_quote_char) {\n in_quote_char = '';\n } else {\n in_quote_char = in_quote_char || char;\n }\n\n tag_buffer += char;\n break;\n\n case '-':\n if (tag_buffer === '<!-') {\n state = STATE_COMMENT;\n }\n\n tag_buffer += char;\n break;\n\n case ' ':\n case '\\n':\n if (tag_buffer === '<') {\n state = STATE_PLAINTEXT;\n output += '< ';\n tag_buffer = '';\n\n break;\n }\n\n tag_buffer += char;\n break;\n\n default:\n tag_buffer += char;\n break;\n }\n }\n\n else if (state === STATE_COMMENT) {\n switch (char) {\n case '>':\n if (tag_buffer.slice(-2) == '--') {\n // close the comment\n state = STATE_PLAINTEXT;\n }\n\n tag_buffer = '';\n break;\n\n default:\n tag_buffer += char;\n break;\n }\n }\n }\n\n // save the context for future iterations\n context.state = state;\n context.tag_buffer = tag_buffer;\n context.depth = depth;\n context.in_quote_char = in_quote_char;\n\n return output;\n }\n\n function parse_allowable_tags(allowable_tags) {\n let tag_set = new Set();\n\n if (typeof allowable_tags === 'string') {\n let match;\n\n while ((match = ALLOWED_TAGS_REGEX.exec(allowable_tags))) {\n tag_set.add(match[1]);\n }\n }\n\n else if (!Symbol.nonNative &&\n typeof allowable_tags[Symbol.iterator] === 'function') {\n\n tag_set = new Set(allowable_tags);\n }\n\n else if (typeof allowable_tags.forEach === 'function') {\n // IE11 compatible\n allowable_tags.forEach(tag_set.add, tag_set);\n }\n\n return tag_set;\n }\n\n function normalize_tag(tag_buffer) {\n let match = NORMALIZE_TAG_REGEX.exec(tag_buffer);\n\n return match ? match[1].toLowerCase() : null;\n }\n\n if (typeof define === 'function' && define.amd) {\n // AMD\n define(function module_factory() { return striptags; });\n }\n\n else if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = striptags;\n }\n\n else {\n // Browser\n global.striptags = striptags;\n }\n}(this));\n","import { TextAlign } from './text.js';\n\n/**\r\n * Converts a TextAlign value into an SVG text-anchor attribute value.\r\n *\r\n * @param {TextAlign | string} textAlign - The TextAlign value to convert.\r\n * @returns {'start' | 'middle' | 'end'} The corresponding text-anchor attribute value. Defaults to 'start' if an invalid TextAlign value is provided.\r\n */\r\nfunction getTextAnchorFromTextAlign(textAlign) {\r\n switch (textAlign) {\r\n case TextAlign.Center:\r\n return 'middle';\r\n case TextAlign.Right:\r\n return 'end';\r\n case TextAlign.Left:\r\n default:\r\n return 'start';\r\n }\r\n}\n\nexport { getTextAnchorFromTextAlign };\n//# sourceMappingURL=svg.js.map\n","import { sum } from 'd3-array';\nimport striptags from 'striptags';\nimport { TrimMode, VerticalAlign, TextAlign } from '../types/text.js';\nimport { flatten, isArray, merge } from './data.js';\nimport { getTextAnchorFromTextAlign } from '../types/svg.js';\nimport { getFontWidthToHeightRatio, UNOVIS_TEXT_HYPHEN_CHARACTER_DEFAULT, UNOVIS_TEXT_SEPARATOR_DEFAULT, UNOVIS_TEXT_DEFAULT } from '../styles/index.js';\n\n/**\r\n * Converts a kebab-case string to camelCase.\r\n *\r\n * @param {string} str - The kebab-case string to be converted.\r\n * @returns {string} The resulting camelCase string.\r\n */\r\nfunction kebabCaseToCamel(str) {\r\n return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());\r\n}\r\n/**\r\n * Converts a given string to kebab-case.\r\n * @param {string} str - The input string to be converted to kebab-case.\r\n * @returns {string} - The kebab-cased string.\r\n */\r\nfunction kebabCase(str) {\r\n var _a;\r\n return (_a = str.match(/[A-Z]{2,}(?=[A-Z][a-z0-9]*|\\b)|[A-Z]?[a-z0-9]*|[A-Z]|[0-9]+/g)) === null || _a === void 0 ? void 0 : _a.filter(Boolean).map(x => x.toLowerCase()).join('-');\r\n}\r\nfunction escapeStringKeepHash(str) {\r\n return str\r\n .replace(/['\"]/g, ''') // Escapes quotes with '\r\n // eslint-disable-next-line no-control-regex\r\n .replace(/\\u0000/g, '\\\\0') // Escapes null characters\r\n .replace(/\\n/g, '\\\\n') // Escapes new lines\r\n .replace(/\\r/g, '\\\\r') // Escapes carriage returns\r\n .replace(/\\v/g, '\\\\v') // Escapes vertical tabs\r\n .replace(/\\t/g, '\\\\t') // Escapes horizontal tabs\r\n .replace(/\\f/g, '\\\\f'); // Escapes form feeds\r\n}\r\n/**\r\n * Trims the input string from the start, leaving only the specified maximum length.\r\n * @param {string} str - The input string to be trimmed.\r\n * @param {number} [maxLength=15] - The maximum allowed length of the trimmed string.\r\n * @returns {string} - The trimmed string.\r\n */\r\nfunction trimStringStart(str, maxLength = 15) {\r\n if (!str)\r\n return '';\r\n return str.length > maxLength ? `…${str.substr(str.length - maxLength, maxLength)}` : str;\r\n}\r\n/**\r\n * Trims the input string from the middle, leaving only the specified maximum length.\r\n * @param {string} str - The input string to be trimmed.\r\n * @param {number} [maxLength=15] - The maximum allowed length of the trimmed string.\r\n * @returns {string} - The trimmed string.\r\n */\r\nfunction trimStringMiddle(str, maxLength = 15) {\r\n if (!str)\r\n return '';\r\n const dist = Math.floor((maxLength - 3) / 2);\r\n return str.length > maxLength ? `${str.substr(0, dist)}…${str.substr(-dist, dist)}` : str;\r\n}\r\n/**\r\n * Trims the input string from the end, leaving only the specified maximum length.\r\n * @param {string} str - The input string to be trimmed.\r\n * @param {number} [maxLength=15] - The maximum allowed length of the trimmed string.\r\n * @returns {string} - The trimmed string.\r\n */\r\nfunction trimStringEnd(str, maxLength = 15) {\r\n if (!str)\r\n return '';\r\n return str.length > maxLength ? `${str.substr(0, maxLength)}…` : str;\r\n}\r\n/**\r\n * Trims the input string according to the specified trim mode.\r\n * @param {string} str - The input string to be trimmed.\r\n * @param {number} [length=15] - The maximum allowed length of the trimmed string.\r\n * @param {TrimMode} [type=TrimMode.Middle] - The trim mode to be applied.\r\n * @returns {string} - The trimmed string.\r\n */\r\nfunction trimString(str, length = 15, type = TrimMode.Middle) {\r\n if (!str)\r\n return '';\r\n let result = trimStringEnd(str, length);\r\n if (type === TrimMode.Start)\r\n result = trimStringStart(str, length);\r\n else if (type === TrimMode.Middle)\r\n result = trimStringMiddle(str, length);\r\n return result;\r\n}\r\n/**\r\n * Splits the input string according to the specified separators.\r\n * @param {string} text - The input string to be split.\r\n * @param {string[]} [separators=[' ']] - The array of separators to be used for splitting.\r\n * @returns {string[]} - The array of split words.\r\n */\r\nfunction splitString(text, separators = [' ']) {\r\n let result = [text];\r\n for (let i = 0; i < separators.length; i++) {\r\n const sep = separators[i];\r\n result.forEach((d, index) => {\r\n const separated = d.split(sep);\r\n const words = separated.map((word, j) => `${word}${j === separated.length - 1 ? '' : sep}`);\r\n result[index] = words;\r\n });\r\n result = flatten(result);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Wraps an SVG text element to fit within the specified width.\r\n * @param {Selection<SVGTextElement, any, SVGElement, any>} textElement - The SVG text element to be wrapped.\r\n * @param {number} width - The maximum allowed width for the text element.\r\n * @param {(string | string[])} [separator=[' ', '-', '.', ',']] - The separator(s) to be used for wrapping.\r\n */\r\nfunction wrapSVGText(textElement, width, separator = [' ', '-', '.', ',']) {\r\n const text = textElement.text();\r\n if (!text)\r\n return;\r\n // Wrap\r\n const separators = (isArray(separator) ? separator : [separator]);\r\n const words = splitString(text, separators);\r\n const x = parseFloat(textElement.attr('x')) || 0;\r\n textElement.text('');\r\n let tspan = textElement.append('tspan').attr('x', x);\r\n let tspanContent = `${words[0]}`;\r\n tspan.text(tspanContent);\r\n words.forEach((word, i) => {\r\n if (i === 0)\r\n return;\r\n const tspanText = `${tspanContent}${word}`;\r\n tspan.text(tspanText);\r\n const tspanWidth = tspan.node().getComputedTextLength();\r\n if (tspanWidth > width) {\r\n tspan.text(tspanContent.trim());\r\n tspan = textElement.append('tspan')\r\n .attr('x', x)\r\n .attr('dy', '1.2em')\r\n .text(word);\r\n tspanContent = word;\r\n }\r\n else\r\n tspanContent += word;\r\n });\r\n}\r\n/**\r\n * Trims an SVG text element based on the specified max width, trim type, and other options.\r\n * @param {Selection<SVGTextElement, any, SVGElement, any>} svgTextSelection - The D3 selection of the SVG text element to be trimmed.\r\n * @param {number} [maxWidth=50] - The maximum width of the text element.\r\n * @param {TrimMode} [trimType=TrimMode.Middle] - The type of trim (start, middle, or end).\r\n * @param {boolean} [fastMode=true] - Whether to use a fast estimation method for text length calculation.\r\n * @param {number} [fontSize=0] - The font size of the text.\r\n * @param {number} [fontWidthToHeightRatio=getFontWidthToHeightRatio()] - The font width to height ratio.\r\n * @returns {boolean} True if the text was trimmed, false otherwise.\r\n */\r\nfunction trimSVGText(svgTextSelection, maxWidth, trimType, fastMode, fontSize, fontWidthToHeightRatio) {\r\n var _a;\r\n if (maxWidth === void 0) { maxWidth = 50; }\r\n if (trimType === void 0) { trimType = TrimMode.Middle; }\r\n if (fastMode === void 0) { fastMode = true; }\r\n if (fontSize === void 0) { fontSize = +((_a = window.getComputedStyle(svgTextSelection.node())) === null || _a === void 0 ? void 0 : _a.fontSize) || 0; }\r\n if (fontWidthToHeightRatio === void 0) { fontWidthToHeightRatio = getFontWidthToHeightRatio(); }\r\n const text = svgTextSelection.text();\r\n const textLength = text.length;\r\n const textWidth = fastMode ? fontSize * textLength * fontWidthToHeightRatio : svgTextSelection.node().getComputedTextLength();\r\n const tolerance = 1.1;\r\n const maxCharacters = Math.ceil(textLength * maxWidth / (tolerance * textWidth));\r\n if (maxCharacters < textLength) {\r\n svgTextSelection.text(trimString(text, maxCharacters, trimType));\r\n return true;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Estimates the length of a string in pixels.\r\n * @param {string} str - The string to be measured.\r\n * @param {number} fontSize - The font size of the string.\r\n * @param {number} [fontWidthToHeightRatio=getFontWidthToHeightRatio()] - The font width to height ratio.\r\n * @returns {number} The estimated length of the string in pixels.\r\n */\r\nfunction estimateStringPixelLength(str, fontSize, fontWidthToHeightRatio = getFontWidthToHeightRatio()) {\r\n return str.length * fontSize * fontWidthToHeightRatio || 0;\r\n}\r\n/**\r\n * Calculates the precise length of a string in pixels.\r\n * @param {string} str - The string to be measured.\r\n * @param {string} [fontFamily] - The font family of the string.\r\n * @param {(string | number)} [fontSize] - The font size of the string.\r\n * @returns {number} The precise length of the string in pixels.\r\n */\r\nfunction getPreciseStringLengthPx(str, fontFamily, fontSize) {\r\n const svgNS = 'http://www.w3.org/2000/svg';\r\n const svg = document.createElementNS(svgNS, 'svg');\r\n const text = document.createElementNS(svgNS, 'text');\r\n text.textContent = str;\r\n text.setAttribute('font-size', `${fontSize}`);\r\n text.setAttribute('font-family', fontFamily);\r\n svg.appendChild(text);\r\n document.body.appendChild(svg);\r\n const length = text.getComputedTextLength();\r\n document.body.removeChild(svg);\r\n return length;\r\n}\r\n/**\r\n * Estimates the dimensions of an SVG text element.\r\n *\r\n * @export\r\n * @param {Selection<SVGTextElement, any, SVGElement, any>} svgTextSelection - The D3 selection of the SVG text element.\r\n * @param {number} fontSize - The font size.\r\n * @param {number} [dy=0.32] - The line height scaling factor.\r\n * @param {boolean} [fastMode=true] - Whether to use a fast estimation method or a more accurate one.\r\n * @param {number} [fontWidthToHeightRatio] - The font width-to-height ratio.\r\n * @returns {{width: number, height: number}} - The estimated dimensions of the text element.\r\n */\r\nfunction estimateTextSize(svgTextSelection, fontSize, dy = 0.32, fastMode = true, fontWidthToHeightRatio) {\r\n fontWidthToHeightRatio = fontWidthToHeightRatio || getFontWidthToHeightRatio();\r\n const tspanSelection = svgTextSelection.selectAll('tspan');\r\n const lines = tspanSelection.size() || 1;\r\n const height = svgTextSelection.text() ? 0.85 * fontSize * lines * (1 + dy) - dy : 0;\r\n let width = 0;\r\n if (tspanSelection.empty()) {\r\n const textLength = svgTextSelection.text().length;\r\n width = fastMode ? fontSize * textLength * fontWidthToHeightRatio : svgTextSelection.node().getComputedTextLength();\r\n }\r\n else {\r\n for (const tspan of tspanSelection.nodes()) {\r\n const tspanTextLength = tspan.textContent.length;\r\n const w = fastMode ? fontSize * tspanTextLength * fontWidthToHeightRatio : tspan.getComputedTextLength();\r\n if (w > width)\r\n width = w;\r\n }\r\n }\r\n return { width, height };\r\n}\r\n/**\r\n * Breaks a text block into lines based on the specified width.\r\n *\r\n * @param {UnovisText} textBlock - The text block to break into lines.\r\n * @param {number | undefined} [width=undefined] - The maximum width of a line in pixels.\r\n * @param {(number | undefined)} [height=undefined] - The height limit for the wrapped text in pixels.\r\n * @param {boolean} [fastMode=true] - Whether to use a fast estimation method or a more accurate one.\r\n * @param {string | string[]} [separator] - The word separators.\r\n * @returns {string[]} - The text split into lines.\r\n */\r\nfunction breakTextIntoLines(textBlock, width = undefined, fastMode = true, separator = UNOVIS_TEXT_SEPARATOR_DEFAULT, wordBreak = false) {\r\n const text = `${textBlock.text}`;\r\n if (!text)\r\n return [];\r\n const separators = Array.isArray(separator) ? separator : [separator];\r\n const splitByNewLine = text.split('\\n');\r\n return splitByNewLine.map((str) => {\r\n const lines = [];\r\n if (!width)\r\n return [str];\r\n const words = splitString(str, separators);\r\n let line = '';\r\n for (let i = 0; i < words.length; i += 1) {\r\n const textLengthPx = fastMode\r\n ? estimateStringPixelLength(line + words[i], textBlock.fontSize, textBlock.fontWidthToHeightRatio)\r\n : getPreciseStringLengthPx(line + words[i], textBlock.fontFamily, textBlock.fontSize);\r\n if (textLengthPx < width || i === 0) {\r\n line += words[i];\r\n }\r\n else {\r\n lines.push(line.trim());\r\n line = words[i];\r\n }\r\n // Word break functionality\r\n const minCharactersOnLine = 2;\r\n if (wordBreak) {\r\n while (line.trim().length > minCharactersOnLine) {\r\n const subLineLengthPx = fastMode\r\n ? estimateStringPixelLength(line, textBlock.fontSize, textBlock.fontWidthToHeightRatio)\r\n : getPreciseStringLengthPx(line, textBlock.fontFamily, textBlock.fontSize);\r\n if (subLineLengthPx > width) {\r\n let breakIndex = (line.trim()).length - minCharactersOnLine; // Place at least `minCharactersOnLine` characters onto the next line\r\n while (breakIndex > 0) {\r\n const subLine = `${line.substring(0, breakIndex)}${UNOVIS_TEXT_HYPHEN_CHARACTER_DEFAULT}`; // Use hyphen when force breaking words\r\n const subLinePx = fastMode\r\n ? estimateStringPixelLength(subLine, textBlock.fontSize, textBlock.fontWidthToHeightRatio)\r\n : getPreciseStringLengthPx(subLine, textBlock.fontFamily, textBlock.fontSize);\r\n // If the subline is less than the width, or just one character left, break the line\r\n if (subLinePx <= width || breakIndex === 1) {\r\n lines.push(subLine.trim());\r\n line = line.substring(breakIndex);\r\n break;\r\n }\r\n breakIndex--;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n // Adding the final line after the loop\r\n if (line)\r\n lines.push(line.trim());\r\n return lines;\r\n }).flat();\r\n}\r\n/**\r\n * Wraps a text or array of texts to fit within specified width and height, if provided.\r\n *\r\n * @export\r\n * @param {UnovisText | UnovisText[]} text - The text or array of texts to wrap.\r\n * @param {number | undefined} [width=undefined] - The maximum width of a line in pixels.\r\n * @param {boolean} [fastMode=true] - Whether to use a fast estimation method or a more accurate one.\r\n * @param {string | string[]} [separator] - The word separators.\r\n * @returns {UnovisWrappedText[]} - The wrapped texts.\r\n */\r\nfunction getWrappedText(text, width = undefined, height = undefined, fastMode = true, separator = UNOVIS_TEXT_SEPARATOR_DEFAULT, wordBreak = false) {\r\n // Merge input text with default values and convert it to an array if it's not already\r\n const textArrays = Array.isArray(text) ? text.map(t => merge(UNOVIS_TEXT_DEFAULT, t)) : [merge(UNOVIS_TEXT_DEFAULT, text)];\r\n // Break input text into lines based on width and separator\r\n const textWrapped = textArrays.map(block => breakTextIntoLines(block, width, fastMode, separator, wordBreak));\r\n const firstBlock = textArrays[0];\r\n let h = -firstBlock.fontSize * (firstBlock.lineHeight - 1);\r\n const blocks = [];\r\n // Process each text block and its lines based on height limit\r\n textArrays.forEach((text, i) => {\r\n var _a;\r\n let lines = textWrapped[i];\r\n const prevBlock = i > 0 ? blocks[i - 1] : undefined;\r\n const prevBlockMarginBottomPx = prevBlock ? prevBlock.marginBottom : 0;\r\n const marginTopPx = text.marginTop;\r\n const effectiveMarginPx = Math.max(prevBlockMarginBottomPx, marginTopPx);\r\n h += effectiveMarginPx;\r\n const dh = text.fontSize * text.lineHeight;\r\n let maxWidth = 0;\r\n // Iterate over lines and handle text overflow based on the height limit if provided\r\n for (let k = 0; k < lines.length; k += 1) {\r\n let line = lines[k];\r\n h += dh;\r\n const lineWithEllipsis = `${line} …`;\r\n const textLengthPx = fastMode\r\n ? estimateStringPixelLength(lineWithEllipsis, text.fontSize, text.fontWidthToHeightRatio)\r\n : getPreciseStringLengthPx(lineWithEllipsis, text.fontFamily, text.fontSize);\r\n maxWidth = Math.max(textLengthPx, maxWidth);\r\n if (height && (h + dh) > height && (k !== lines.length - 1)) {\r\n // Remove hyphen character from the end of the line if it's there\r\n const lastCharacter = line.charAt(line.length - 1);\r\n if (lastCharacter === UNOVIS_TEXT_HYPHEN_CHARACTER_DEFAULT) {\r\n line = line.substr(0, lines[k].length - 1);\r\n }\r\n if (textLengthPx < width) {\r\n lines[k] = lineWithEllipsis;\r\n }\r\n else {\r\n lines[k] = `${lines[k].substr(0, lines[k].length - 2)}…`;\r\n }\r\n lines = lines.slice(0, k + 1);\r\n break;\r\n }\r\n }\r\n // Create wrapped text block with its calculated properties\r\n blocks.push(Object.assign(Object.assign({}, text), { _lines: lines, _estimatedHeight: h - ((prevBlock === null || prevBlock === void 0 ? void 0 : prevBlock._estimatedHeight) || 0), _maxWidth: Math.max(maxWidth, (_a = prevBlock === null || prevBlock === void 0 ? void 0 : prevBlock._maxWidth) !== null && _a !== void 0 ? _a : 0) }));\r\n });\r\n return blocks;\r\n}\r\n/**\r\n * Renders a text or array of texts to SVG tspan strings.\r\n *\r\n * @param {UnovisWrappedText[]} blocks - The wrapped text blocks.\r\n * @param {number} [x=0] - The x-coordinate for the tspan elements.\r\n * @param {number} [y] - The y-coordinate for the tspan elements.\r\n * @returns {string[]} - The SVG tspan strings.\r\n */\r\nfunction renderTextToTspanStrings(blocks, x = 0, y) {\r\n return blocks.map((b, i) => {\r\n const prevBlock = i > 0 ? blocks[i - 1] : undefined;\r\n const prevBlockMarginBottomEm = prevBlock ? prevBlock.marginBottom / prevBlock.fontSize : 0;\r\n const marginTopEm = b.marginTop / b.fontSize;\r\n const marginEm = Math.max(prevBlockMarginBottomEm, marginTopEm);\r\n const attributes = {\r\n fontSize: b.fontSize,\r\n fontFamily: b.fontFamily,\r\n fontWeight: b.fontWeight,\r\n fill: b.color,\r\n y: (i === 0) && y,\r\n };\r\n const attributesString = Object.entries(attributes)\r\n .filter(([_, value]) => value)\r\n .map(([key, value]) => `${kebabCase(key)}=\"${escapeStringKeepHash(value.toString())}\"`)\r\n .join(' ');\r\n return `<tspan xmlns=\"http://www.w3.org/2000/svg\" ${attributesString}>${b._lines.map((line, k) => {\r\n let dy;\r\n if (i === 0 && k === 0)\r\n dy = 0.8 + marginEm;\r\n else if (k === 0)\r\n dy = marginEm + b.lineHeight;\r\n else\r\n dy = b.lineHeight;\r\n return `<tspan x=\"${x}\" dy=\"${dy}em\">${line.length ? line : ' '}</tspan>`;\r\n }).join('')}</tspan>`;\r\n });\r\n}\r\n/**\r\n * Estimates the height of wrapped text blocks.\r\n *\r\n * @export\r\n * @param {UnovisWrappedText[]} blocks - The wrapped text blocks.\r\n * @returns {number} - The estimated height of the wrapped text blocks.\r\n */\r\nfunction estimateWrappedTextHeight(blocks) {\r\n return sum(blocks, b => b._estimatedHeight);\r\n}\r\nconst allowedSvgTextTags = ['text', 'tspan', 'textPath', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'glyphRef', 'textRef', 'textArea'];\r\n/**\r\n * Renders a text or array of texts to an SVG text element.\r\n * Calling this function will replace the contents of the specified SVG text element.\r\n *\r\n * @export\r\n * @param {SVGTextElement} textElement - The SVG text element to render the text into.\r\n * @param {UnovisText | UnovisText[]} text - The text or array of texts to render.\r\n * @param {UnovisTextOptions} options - The text options.\r\n */\r\nfunction renderTextToSvgTextElement(textElement, text, options, trimmed) {\r\n var _a, _b;\r\n const wrappedText = getWrappedText(text, options.width, undefined, options.fastMode, options.separator, options.wordBreak);\r\n const textElementX = (_a = options.x) !== null && _a !== void 0 ? _a : +textElement.getAttribute('x');\r\n const textElementY = (_b = options.y) !== null && _b !== void 0 ? _b : +textElement.getAttribute('y');\r\n const x = textElementX !== null && textElementX !== void 0 ? textElementX : 0;\r\n let y = textElementY !== null && textElementY !== void 0 ? textElementY : 0;\r\n if (options.textAlign) {\r\n textElement.setAttribute('text-anchor', getTextAnchorFromTextAlign(options.textAlign));\r\n }\r\n if (options.verticalAlign && options.verticalAlign !== VerticalAlign.Top) {\r\n const height = estimateWrappedTextHeight(wrappedText);\r\n const dy = options.verticalAlign === VerticalAlign.Middle ? -height / 2\r\n : options.verticalAlign === VerticalAlign.Bottom ? -height : 0;\r\n y += dy;\r\n }\r\n if (options.textRotationAngle) {\r\n textElement.setAttribute('transform', `rotate(${(options.textRotationAngle === 0 || options.textRotationAngle) ? options.textRotationAngle : 0} ${x} ${y})`);\r\n }\r\n else {\r\n textElement.removeAttribute('transform');\r\n }\r\n if (!trimmed) {\r\n const parser = new DOMParser();\r\n textElement.textContent = '';\r\n wrappedText.forEach(block => {\r\n const svgCode = renderTextToTspanStrings([block], x, y).join('');\r\n const svgCodeSanitized = striptags(svgCode, allowedSvgTextTags);\r\n const parsedSvgCode = parser.parseFromString(svgCodeSanitized, 'image/svg+xml').firstChild;\r\n textElement.appendChild(parsedSvgCode);\r\n });\r\n }\r\n}\r\n/**\r\n * Renders a text or array of texts into a frame.\r\n * Calling this function will replace the contents of the specified SVG group.\r\n *\r\n * @export\r\n * @param {SVGGElement} group - The SVG group element to render the text into.\r\n * @param {UnovisText | UnovisText[]} text - The text or array of texts to render.\r\n * @param {UnovisTextFrameOptions} frameOptions - The text frame options.\r\n */\r\nfunction renderTextIntoFrame(group, text, frameOptions) {\r\n var _a, _b;\r\n const wrappedText = getWrappedText(text, frameOptions.width, frameOptions.height, frameOptions.fastMode, frameOptions.separator, frameOptions.wordBreak);\r\n const x = frameOptions.textAlign === TextAlign.Center ? frameOptions.width / 2\r\n : frameOptions.textAlign === TextAlign.Right ? frameOptions.width : 0;\r\n let y = 0;\r\n const height = estimateWrappedTextHeight(wrappedText);\r\n // If the frame has height, the text will be vertically aligned within the frame.\r\n // If not, the text will be aligned against the `y` position of the frame.\r\n const dh = frameOptions.height - height;\r\n y = frameOptions.verticalAlign === VerticalAlign.Middle ? dh / 2\r\n : frameOptions.verticalAlign === VerticalAlign.Bottom ? dh : 0;\r\n const translate = (frameOptions.x || frameOptions.y)\r\n ? `transform=\"translate(${(_a = frameOptions.x) !== null && _a !== void 0 ? _a : 0},${(_b = frameOptions.y) !== null && _b !== void 0 ? _b : 0})\"`\r\n : '';\r\n const svgCode = `<text\n xmlns=\"http://www.w3.org/2000/svg\"\n text-anchor=\"${getTextAnchorFromTextAlign(frameOptions.textAlign)}\"\n ${translate}\n >\n ${renderTextToTspanStrings(wrappedText, x, y).join('')}\n </text>`;\r\n const parser = new DOMParser();\r\n const svgCodeSanitized = striptags(svgCode, allowedSvgTextTags);\r\n const parsedSvgCode = parser.parseFromString(svgCodeSanitized, 'image/svg+xml').firstChild;\r\n group.textContent = '';\r\n group.appendChild(parsedSvgCode);\r\n}\n\nexport { allowedSvgTextTags, escapeStringKeepHash, estimateStringPixelLength, estimateTextSize, estimateWrappedTextHeight, getPreciseStringLengthPx, getWrappedText, kebabCase, kebabCaseToCamel, renderTextIntoFrame, renderTextToSvgTextElement, splitString, trimSVGText, trimString, trimStringEnd, trimStringMiddle, trimStringStart, wrapSVGText };\n//# sourceMappingURL=text.js.map\n","import { XYComponentDefaultConfig } from '../../core/xy-component/config.js';\nimport { TrimMode, FitMode } from '../../types/text.js';\n\nconst AxisDefaultConfig = Object.assign(Object.assign({}, XYComponentDefaultConfig), { position: undefined, type: undefined, label: undefined, labelFontSize: null, gridLine: true, tickLine: true, domainLine: true, numTicks: undefined, minMaxTicksOnly: false, minMaxTicksOnlyWhenWidthIsLess: 250, tickTextWidth: undefined, tickTextSeparator: undefined, tickTextForceWordBreak: false, tickTextTrimType: TrimMode.Middle, tickTextFitMode: FitMode.Wrap, tickTextFontSize: null, tickTextAlign: undefined, tickTextColor: null, tickTextAngle: undefined, labelMargin: 8, labelColor: null, tickFormat: undefined, tickValues: undefined, fullSize: true, tickPadding: 8, tickTextHideOverlapping: undefined });\n\nexport { AxisDefaultConfig };\n//# sourceMappingURL=config.js.map\n","import { css, injectGlobal } from '@emotion/css';\n\nconst root = css `\n label: axis-component;\n`;\r\nconst globalStyles = injectGlobal `\n :root {\n // Undefined by default to allow proper fallback to var(--vis-font-family)\n /* --vis-axis-font-family: */\n --vis-axis-tick-color: #e8e9ef;\n /* --vis-axis-domain-color: // Undefined by default to allow fallback to var(--vis-axis-tick-color) */\n --vis-axis-grid-color: #e8e9ef;\n --vis-axis-label-color: #6c778c;\n --vis-axis-tick-label-color: #6c778c;\n --vis-axis-tick-label-font-size: 12px;\n --vis-axis-tick-label-cursor: default;\n --vis-axis-tick-label-text-decoration: none;\n --vis-axis-label-font-size: 14px;\n --vis-axis-tick-line-width: 1px;\n --vis-axis-tick-label-hide-transition: opacity 400ms ease-in-out;\n --vis-axis-grid-line-width: 1px;\n /* --vis-axis-domain-line-width: // Undefined by default to allow fallback to var(--vis-axis-grid-line-width) */\n\n --vis-dark-axis-tick-color: #6c778c;\n /* --vis-dark-axis-domain-color: // Undefined by default to allow fallback to var(--vis-dark-axis-tick-color) */\n --vis-dark-axis-tick-label-color: #e8e9ef;\n --vis-dark-axis-grid-color: #6c778c;\n --vis-dark-axis-label-color: #fefefe;\n }\n\n body.theme-dark ${`.${root}`} {\n --vis-axis-tick-color: var(--vis-dark-axis-tick-color);\n --vis-axis-domain-color: var(--vis-dark-axis-domain-color);\n --vis-axis-tick-label-color: var(--vis-dark-axis-tick-label-color);\n --vis-axis-grid-color: var(--vis-dark-axis-grid-color);\n --vis-axis-label-color: var(--vis-dark-axis-label-color);\n }\n`;\r\nconst hideTickLine = css `\n label: hide-tick-line;\n`;\r\nconst hideDomain = css `\n label: hide-domain;\n`;\r\nconst axis = css `\n label: axis;\n\n user-select: none;\n\n .domain {\n stroke: var(--vis-axis-domain-color, var(--vis-axis-tick-color));\n stroke-width: var(--vis-axis-domain-line-width, var(--vis-axis-grid-line-width));\n }\n\n &${`.${hideTickLine}`} {\n .tick > line {\n opacity: 0;\n }\n }\n\n &${`.${hideDomain}`} {\n .domain {\n opacity: 0;\n }\n }\n`;\r\nconst grid = css `\n label: grid;\n\n .domain {\n opacity: 0;\n }\n\n line {\n stroke: var(--vis-axis-grid-color);\n stroke-width: var(--vis-axis-grid-line-width);\n }\n`;\r\nconst tick = css `\n label: tick;\n\n stroke: none;\n font-size: var(--vis-axis-tick-label-font-size);\n\n line {\n stroke: var(--vis-axis-tick-color);\n stroke-width: var(--vis-axis-tick-line-width);\n }\n\n text {\n fill: var(--vis-axis-tick-label-color);\n cursor: var(--vis-axis-tick-label-cursor);\n font-family: var(--vis-axis-font-family, var(--vis-font-family));\n text-decoration: var(--vis-axis-tick-label-text-decoration);\n stroke: none;\n }\n`;\r\nconst label = css `\n label: label;\n fill: var(--vis-axis-label-color);\n font-size: var(--vis-axis-label-font-size);\n font-family: var(--vis-axis-font-family, var(--vis-font-family));\n text-anchor: middle;\n`;\r\nconst tickLabel = css `\n label: tick-label;\n`;\r\nconst tickLabelHideable = css `\n label: tick-label-hideable;\n opacity: 0;\n transition: var(--vis-axis-tick-label-hide-transition);\n`;\n\nexport { axis, globalStyles, grid, hideDomain, hideTickLine, label, root, tick, tickLabel, tickLabelHideable };\n//# sourceMappingURL=style.js.map\n","import { select } from 'd3-selection';\nimport { interrupt } from 'd3-transition';\nimport { axisLeft, axisRight, axisBottom, axisTop } from 'd3-axis';\nimport { XYComponentCore } from '../../core/xy-component/index.js';\nimport { Position } from '../../types/position.js';\nimport { VerticalAlign, FitMode, TextAlign } from '../../types/text.js';\nimport { smartTransition } from '../../utils/d3.js';\nimport { trimSVGText, renderTextToSvgTextElement } from '../../utils/text.js';\nimport { isEqual } from '../../utils/data.js';\nimport { rectIntersect } from '../../utils/misc.js';\nimport { AxisType } from './types.js';\nimport { AxisDefaultConfig } from './config.js';\nimport * as style from './style.js';\nimport { grid, tick, tickLabel, tickLabelHideable, axis, hideTickLine, hideDomain, label } from './style.js';\n\nclass Axis extends XYComponentCore {\r\n constructor(config) {\r\n super();\r\n this._defaultConfig = AxisDefaultConfig;\r\n this.config = this._defaultConfig;\r\n this._defaultNumTicks = 3;\r\n this.events = {};\r\n if (config)\r\n this.setConfig(config);\r\n this.axisGroup = this.g.append('g');\r\n this.gridGroup = this.g.append('g')\r\n .attr('class', grid);\r\n }\r\n /** Renders axis to an invisible grouped to calculate automatic chart margins */\r\n preRender() {\r\n const { config } = this;\r\n const axisRenderHelperGroup = this.g.append('g').attr('opacity', 0);\r\n this._renderAxis(axisRenderHelperGroup, 0);\r\n // Store axis raw BBox (without the label) for further label positioning (see _renderAxisLabel)\r\n this._axisRawBBox = axisRenderHelperGroup.node().getBBox();\r\n // Align tick text\r\n if (config.tickTextAlign)\r\n this._alignTickLabels();\r\n // Render label and store total axis size and required margins\r\n this._renderAxisLabel(axisRenderHelperGroup);\r\n this._axisSizeBBox = this._getAxisSize(axisRenderHelperGroup);\r\n this._requiredMargin = this._getRequiredMargin(this._axisSizeBBox);\r\n axisRenderHelperGroup.remove();\r\n }\r\n getPosition() {\r\n const { config: { type, position } } = this;\r\n return (position !== null && position !== void 0 ? position : ((type === AxisType.X) ? Position.Bottom : Position.Left));\r\n }\r\n _getAxisSize(selection) {\r\n const bBox = selection.node().getBBox();\r\n return bBox;\r\n }\r\n _getRequiredMargin(axisSize = this._axisSizeBBox) {\r\n const { config: { type, position } } = this;\r\n switch (type) {\r\n case AxisType.X: {\r\n const tolerancePx = 1;\r\n const xEnd = this._axisSizeBBox.x + this._axisSizeBBox.width;\r\n const left = this._axisSizeBBox.x < 0 ? Math.abs(this._axisSizeBBox.x) : 0;\r\n const right = (xEnd - this._width) > tolerancePx ? xEnd - this._width : 0;\r\n switch (position) {\r\n case Position.Top: return { top: axisSize.height, left, right };\r\n case Position.Bottom:\r\n default: return { bottom: axisSize.height, left, right };\r\n }\r\n }\r\n case AxisType.Y: {\r\n const bleedY = axisSize.height > this._height ? (axisSize.height - this._height) / 2 : 0;\r\n const top = bleedY;\r\n const bottom = bleedY;\r\n switch (position) {\r\n case Position.Right: return { right: axisSize.width, top, bottom };\r\n case Position.Left:\r\n default: return { left: axisSize.width, top, bottom };\r\n }\r\n }\r\n }\r\n }\r\n getRequiredMargin() {\r\n return this._requiredMargin;\r\n }\r\n /** Calculates axis transform:translate offset based on passed container margins */\r\n getOffset(containerMargin) {\r\n const { config: { type, position } } = this;\r\n switch (type) {\r\n case AxisType.X:\r\n switch (position) {\r\n case Position.Top: return { top: containerMargin.top, left: containerMargin.left };\r\n case Position.Bottom:\r\n default: return { top: containerMargin.top + this._height, left: containerMargin.left };\r\n }\r\n case AxisType.Y:\r\n switch (position) {\r\n case Position.Right: return { top: containerMargin.top, left: containerMargin.left + this._width };\r\n case Position.Left:\r\n default: return { top: containerMargin.top, left: containerMargin.left };\r\n }\r\n }\r\n }\r\n _render(duration = this.config.duration, selection = this.axisGroup) {\r\n const { config } = this;\r\n this._renderAxis(selection, duration);\r\n this._renderAxisLabel(selection);\r\n if (config.gridLine) {\r\n const gridGen = this._buildGrid().tickFormat(() => '');\r\n gridGen.tickValues(this._getConfiguredTickValues());\r\n // Interrupting all active transitions first to prevent them from being stuck.\r\n // Somehow we see it happening in Angular apps.\r\n this.gridGroup.selectAll('*').interrupt();\r\n smartTransition(this.gridGroup, duration).call(gridGen).style('opacity', 1);\r\n }\r\n else {\r\n smartTransition(this.gridGroup, duration).style('opacity', 0);\r\n }\r\n if (config.tickTextAlign)\r\n this._alignTickLabels();\r\n this._resolveTickLabelOverlap(selection);\r\n }\r\n _buildAxis() {\r\n const { config: { type, position, tickPadding } } = this;\r\n const ticks = this._getNumTicks();\r\n switch (type) {\r\n case AxisType.X:\r\n switch (position) {\r\n case Position.Top: return axisTop(this.xScale).ticks(ticks).tickPadding(tickPadding);\r\n case Position.Bottom:\r\n default: return axisBottom(this.xScale).ticks(ticks).tickPadding(tickPadding);\r\n }\r\n case AxisType.Y:\r\n switch (position) {\r\n case Position.Right: return axisRight(this.yScale).ticks(ticks).tickPadding(tickPadding);\r\n case Position.Left:\r\n default: return axisLeft(this.yScale).ticks(ticks).tickPadding(tickPadding);\r\n }\r\n }\r\n }\r\n _buildGrid() {\r\n const { config: { type, position } } = this;\r\n const ticks = this._getNumTicks();\r\n switch (type) {\r\n case AxisType.X:\r\n switch (position) {\r\n case Position.Top: return axisTop(this.xScale).ticks(ticks * 2).tickSize(-this._height).tickSizeOuter(0);\r\n case Position.Bottom:\r\n default: return axisBottom(this.xScale).ticks(ticks * 2).tickSize(-this._height).tickSizeOuter(0);\r\n }\r\n case AxisType.Y:\r\n switch (position) {\r\n case Position.Right: return axisRight(this.yScale).ticks(ticks * 2).tickSize(-this._width).tickSizeOuter(0);\r\n case Position.Left:\r\n default: return axisLeft(this.yScale).ticks(ticks * 2).tickSize(-this._width).tickSizeOuter(0);\r\n }\r\n }\r\n }\r\n _renderAxis(selection = this.axisGroup, duration = this.config.duration) {\r\n const { config } = this;\r\n const axisGen = this._buildAxis();\r\n const tickValues = this._getConfiguredTickValues() || axisGen.scale().ticks(this._getNumTicks());\r\n axisGen.tickValues(tickValues);\r\n // Interrupting all active transitions first to prevent them from being stuck.\r\n // Somehow we see it happening in Angular apps.\r\n selection.selectAll('*').interrupt();\r\n smartTransition(selection, duration).call(axisGen);\r\n const ticks = selection.selectAll('g.tick');\r\n ticks\r\n .classed(tick, true)\r\n .style('font-size', config.tickTextFontSize);\r\n // Selecting the <text> elements of the ticks to apply formatting. By default, this selection\r\n // will include exiting elements, so we're filtering them out.\r\n const tickText = selection.selectAll('g.tick > text')\r\n .filter(tickValue => tickValues.some((t) => isEqual(tickValue, t))) // We use isEqual to compare Dates\r\n .classed(tickLabel, true)\r\n .classed(tickLabelHideable, Boolean(config.tickTextHideOverlapping))\r\n .style('fill', config.tickTextColor);\r\n // We interrupt the transition on tick's <text> to make it 'wrappable'\r\n tickText.nodes().forEach(node => interrupt(node));\r\n tickText.each((value, i, elements) => {\r\n var _a, _b;\r\n let text = (_b = (_a = config.tickFormat) === null || _a === void 0 ? void 0 : _a.call(config, value, i, tickValues)) !== null && _b !== void 0 ? _b : `${value}`;\r\n const textElement = elements[i];\r\n const textMaxWidth = config.tickTextWidth || (config.type === AxisType.X ? this._containerWidth / (ticks.size() + 1) : this._containerWidth / 5);\r\n const styleDeclaration = getComputedStyle(textElement);\r\n const fontSize = Number.parseFloat(styleDeclaration.fontSize);\r\n const fontFamily = styleDeclaration.fontFamily;\r\n const textOptions = {\r\n verticalAlign: config.type === AxisType.X ? VerticalAlign.Top : VerticalAlign.Middle,\r\n width: textMaxWidth,\r\n textRotationAngle: config.tickTextAngle,\r\n separator: config.tickTextSeparator,\r\n wordBreak: config.tickTextForceWordBreak,\r\n };\r\n if (config.tickTextFitMode === FitMode.Trim) {\r\n const textElementSelection = select(textElement).text(text);\r\n trimSVGText(textElementSelection, textMaxWidth, config.tickTextTrimType, true, fontSize, 0.58);\r\n text = select(textElement).text();\r\n }\r\n const textBlock = { text, fontFamily, fontSize };\r\n renderTextToSvgTextElement(textElement, textBlock, textOptions);\r\n });\r\n selection\r\n .classed(axis, true)\r\n .classed(hideTickLine, !config.tickLine)\r\n .classed(hideDomain, !config.domainLine);\r\n if (config.fullSize) {\r\n const path = this._getFullDomainPath(0);\r\n smartTransition(selection.select('.domain'), duration).attr('d', path);\r\n }\r\n }\r\n _resolveTickLabelOverlap(selection = this.axisGroup) {\r\n const { config } = this;\r\n const tickTextSelection = selection.selectAll('g.tick > text');\r\n if (!config.tickTextHideOverlapping) {\r\n tickTextSelection.style('opacity', null);\r\n return;\r\n }\r\n cancelAnimationFrame(this._collideTickLabelsAnimFrameId);\r\n // Colliding labels in the next frame to prevent forced reflow\r\n this._collideTickLabelsAnimFrameId = requestAnimationFrame(() => {\r\n this._collideTickLabels(tickTextSelection);\r\n });\r\n }\r\n _collideTickLabels(selection) {\r\n // Reset visibility of all labels\r\n selection.each((d, i, elements) => {\r\n const node = elements[i];\r\n node._visible = true;\r\n });\r\n // We do three iterations because not all overlapping labels can be resolved in the first iteration\r\n const numIterations = 3;\r\n for (let i = 0; i < numIterations; i += 1) {\r\n // Run collision detection and set labels visibility\r\n selection.each((d, i, elements) => {\r\n const label1 = elements[i];\r\n const isLabel1Visible = label1._visible;\r\n if (!isLabel1Visible)\r\n return;\r\n // Calculate bounding rect of point's label\r\n const label1BoundingRect = label1.getBoundingClientRect();\r\n for (let j = i + 1; j < elements.length; j += 1) {\r\n if (i === j)\r\n continue;\r\n const label2 = elements[j];\r\n const isLabel2Visible = label2._visible;\r\n if (isLabel2Visible) {\r\n const label2BoundingRect = label2.getBoundingClientRect();\r\n const intersect = rectIntersect(label1BoundingRect, label2BoundingRect, -5);\r\n if (intersect) {\r\n label2._visible = false;\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n // Hide the overlapping labels\r\n selection.each((d, i, elements) => {\r\n const label = elements[i];\r\n select(label).style('opacity', label._visible ? 1 : 0);\r\n });\r\n }\r\n _getNumTicks() {\r\n const { config: { type, numTicks } } = this;\r\n if (numTicks)\r\n return numTicks;\r\n if (type === AxisType.X) {\r\n const xRange = this.xScale.range();\r\n const width = xRange[1] - xRange[0];\r\n return Math.floor(width / 175);\r\n }\r\n if (type === AxisType.Y) {\r\n const yRange = this.yScale.range();\r\n const height = Math.abs(yRange[0] - yRange[1]);\r\n return Math.pow(height, 0.85) / 25;\r\n }\r\n return this._defaultNumTicks;\r\n }\r\n _getConfiguredTickValues() {\r\n const { config } = this;\r\n const scale = config.type === AxisType.X ? this.xScale : this.yScale;\r\n const scaleDomain = scale === null || scale === void 0 ? void 0 : scale.domain();\r\n if (config.tickValues) {\r\n return config.tickValues.filter(v => (v >= scaleDomain[0]) && (v <= scaleDomain[1]));\r\n }\r\n if (config.minMaxTicksOnly || (config.type === AxisType.X && this._width < config.minMaxTicksOnlyWhenWidthIsLess)) {\r\n return scaleDomain;\r\n }\r\n return null;\r\n }\r\n _getFullDomainPath(tickSize = 0) {\r\n const { config: { type } } = this;\r\n switch (type) {\r\n case AxisType.X: return `M0.5, ${tickSize} V0.5 H${this._width + 0.5} V${tickSize}`;\r\n case AxisType.Y: return `M${-tickSize}, ${this._height + 0.5} H0.5 V0.5 H${-tickSize}`;\r\n }\r\n }\r\n _renderAxisLabel(selection = this.axisGroup) {\r\n var _a;\r\n const { type, label: label$1, labelMargin, labelFontSize } = this.config;\r\n // Remove the old label first to calculate the axis size properly\r\n selection.selectAll(`.${label}`).remove();\r\n // Calculate label position and rotation\r\n const axisPosition = this.getPosition();\r\n // We always use this.axisRenderHelperGroup to calculate the size of the axis because\r\n // this.axisGroup will give us incorrect values due to animation\r\n const { width: axisWidth, height: axisHeight } = (_a = this._axisRawBBox) !== null && _a !== void 0 ? _a : selection.node().getBBox();\r\n const offsetX = type === AxisType.X ? this._width / 2 : Math.pow((-1), (+(axisPosition === Position.Left))) * axisWidth;\r\n const offsetY = type === AxisType.X ? Math.pow((-1), (+(axisPosition === Position.Top))) * axisHeight : this._height / 2;\r\n const marginX = type === AxisType.X ? 0 : Math.pow((-1), (+(axisPosition === Position.Left))) * labelMargin;\r\n const marginY = type === AxisType.X ? Math.pow((-1), (+(axisPosition === Position.Top))) * labelMargin : 0;\r\n const rotation = type === AxisType.Y ? -90 : 0;\r\n // Append new label\r\n selection\r\n .append('text')\r\n .attr('class', label)\r\n .text(label$1)\r\n .attr('dy', `${this._getLabelDY()}em`)\r\n .attr('transform', `translate(${offsetX + marginX},${offsetY + marginY}) rotate(${rotation})`)\r\n .style('font-size', labelFontSize)\r\n .style('fill', this.config.labelColor);\r\n }\r\n _getLabelDY() {\r\n const { type, position } = this.config;\r\n switch (type) {\r\n case AxisType.X:\r\n switch (position) {\r\n case Position.Top: return 0;\r\n case Position.Bottom:\r\n default: return 0.75;\r\n }\r\n case AxisType.Y:\r\n switch (position) {\r\n case Position.Right: return 0.75;\r\n case Position.Left:\r\n default: return -0.25;\r\n }\r\n }\r\n }\r\n _alignTickLabels() {\r\n const { config: { type, tickTextAlign, tickTextAngle, position } } = this;\r\n const tickText = this.g.selectAll('g.tick > text');\r\n const textAnchor = this._getTickTextAnchor(tickTextAlign);\r\n const translateX = type === AxisType.X\r\n ? 0\r\n : this._getYTickTextTranslate(tickTextAlign, position);\r\n const translateValue = tickTextAngle ? `translate(${translateX},0) rotate(${tickTextAngle})` : `translate(${translateX},0)`;\r\n tickText\r\n .attr('transform', translateValue)\r\n .attr('text-anchor', textAnchor);\r\n }\r\n _getTickTextAnchor(textAlign) {\r\n switch (textAlign) {\r\n case TextAlign.Left: return 'start';\r\n case TextAlign.Right: return 'end';\r\n case TextAlign.Center: return 'middle';\r\n default: return null;\r\n }\r\n }\r\n _getYTickTextTranslate(textAlign, axisPosition = Position.Left) {\r\n const defaultTickTextSpacingPx = 9; // Default in D3\r\n const width = this._axisRawBBox.width - defaultTickTextSpacingPx;\r\n switch (textAlign) {\r\n case TextAlign.Left: return axisPosition === Position.Left ? width * -1 : 0;\r\n case TextAlign.Right: return axisPosition === Position.Left ? 0 : width;\r\n case TextAlign.Center: return axisPosition === Position.Left ? width * (-0.5) : width * 0.5;\r\n default: return 0;\r\n }\r\n }\r\n}\r\nAxis.selectors = style;\n\nexport { Axis };\n//# sourceMappingURL=index.js.map\n","import { symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye } from 'd3-shape';\n\nvar SymbolType;\r\n(function (SymbolType) {\r\n SymbolType[\"Circle\"] = \"circle\";\r\n SymbolType[\"Cross\"] = \"cross\";\r\n SymbolType[\"Diamond\"] = \"diamond\";\r\n SymbolType[\"Square\"] = \"square\";\r\n SymbolType[\"Star\"] = \"star\";\r\n SymbolType[\"Triangle\"] = \"triangle\";\r\n SymbolType[\"Wye\"] = \"wye\";\r\n})(SymbolType || (SymbolType = {}));\r\nconst Symbol = {\r\n [SymbolType.Circle]: symbolCircle,\r\n [SymbolType.Cross]: symbolCross,\r\n [SymbolType.Diamond]: symbolDiamond,\r\n [SymbolType.Square]: symbolSquare,\r\n [SymbolType.Star]: symbolStar,\r\n [SymbolType.Triangle]: symbolTriangle,\r\n [SymbolType.Wye]: symbolWye,\r\n};\n\nexport { Symbol, SymbolType };\n//# sourceMappingURL=symbol.js.map\n","import { SymbolType } from '../../types/symbol.js';\n\n/* eslint-disable @typescript-eslint/naming-convention */\r\nconst BulletShape = Object.assign(Object.assign({}, SymbolType), { Line: 'line' });\r\nvar BulletLegendOrientation;\r\n(function (BulletLegendOrientation) {\r\n BulletLegendOrientation[\"Horizontal\"] = \"horizontal\";\r\n BulletLegendOrientation[\"Vertical\"] = \"vertical\";\r\n})(BulletLegendOrientation || (BulletLegendOrientation = {}));\n\nexport { BulletLegendOrientation, BulletShape };\n//# sourceMappingURL=types.js.map\n","import { BulletShape, BulletLegendOrientation } from './types.js';\n\nconst BulletLegendDefaultConfig = {\r\n items: [],\r\n labelClassName: '',\r\n onLegendItemClick: undefined,\r\n labelFontSize: null,\r\n labelMaxWidth: null,\r\n bulletSize: null,\r\n bulletShape: d => { var _a; return (_a = d.shape) !== null && _a !== void 0 ? _a : BulletShape.Circle; },\r\n orientation: BulletLegendOrientation.Horizontal,\r\n renderIntoProvidedDomNode: false,\r\n};\n\nexport { BulletLegendDefaultConfig };\n//# sourceMappingURL=config.js.map\n","import { select } from 'd3-selection';\nimport { symbol } from 'd3-shape';\nimport { Symbol } from '../../../types/symbol.js';\nimport { getColor } from '../../../utils/color.js';\nimport { getString } from '../../../utils/data.js';\nimport { PATTERN_SIZE_PX } from '../../../styles/patterns.js';\nimport { BulletShape } from '../types.js';\n\n// Size with respect to the viewBox. We use this to compute path data which is independent of the\r\n// the configured size.\r\nconst BULLET_SIZE = PATTERN_SIZE_PX * 3;\r\n// Different shapes need different scaling to fit the full size\r\nconst shapeScale = {\r\n [BulletShape.Circle]: Math.PI / 4,\r\n [BulletShape.Cross]: 5 / 9,\r\n [BulletShape.Diamond]: Math.sqrt(3) / 6,\r\n [BulletShape.Square]: 1,\r\n [BulletShape.Star]: 0.3,\r\n [BulletShape.Triangle]: Math.sqrt(3) / 4,\r\n [BulletShape.Wye]: 5 / 11,\r\n};\r\nfunction createBullets(container) {\r\n container.each((d, i, els) => {\r\n select(els[i]).append('svg')\r\n .attr('width', '100%')\r\n .attr('height', '100%')\r\n .append('path');\r\n });\r\n}\r\nfunction updateBullets(container, config, colorAccessor) {\r\n container.each((d, i, els) => {\r\n const shape = getString(d, config.bulletShape, i);\r\n const color = getColor(d, colorAccessor, i);\r\n const width = BULLET_SIZE;\r\n const height = shape === BulletShape.Line ? BULLET_SIZE / 2.5 : BULLET_SIZE;\r\n const selection = select(els[i]).select('svg')\r\n .attr('viewBox', `0 0 ${width} ${height}`);\r\n const bulletPath = selection.select('path')\r\n .attr('stroke', color);\r\n const opacity = d.inactive ? 'var(--vis-legend-bullet-inactive-opacity)' : 1;\r\n if (shape === BulletShape.Line) {\r\n bulletPath\r\n .attr('d', `M0,${height / 2} L${width / 2},${height / 2} L${width},${height / 2}`)\r\n .attr('transform', null)\r\n .style('opacity', opacity)\r\n .style('stroke-width', '3px')\r\n .style('fill', null)\r\n .style('fill-opacity', null)\r\n .style('marker-start', 'none')\r\n .style('marker-end', 'none');\r\n }\r\n else {\r\n const symbolGen = symbol()\r\n .type(Symbol[shape])\r\n .size(width * height * shapeScale[shape]);\r\n const scale = (width - 2) / width;\r\n let dy = height / 2;\r\n switch (shape) {\r\n case BulletShape.Triangle:\r\n dy += height / 8;\r\n break;\r\n case BulletShape.Star:\r\n dy += height / 16;\r\n break;\r\n case BulletShape.Wye:\r\n dy -= height / 16;\r\n break;\r\n }\r\n bulletPath\r\n .attr('d', symbolGen)\r\n .attr('transform', `translate(${width / 2}, ${Math.round(dy)}) scale(${scale})`)\r\n .style('stroke-width', '1px')\r\n .style('opacity', null)\r\n .style('fill', color)\r\n .style('fill-opacity', opacity);\r\n }\r\n });\r\n}\n\nexport { createBullets, updateBullets };\n//# sourceMappingURL=shape.js.map\n","import { css, injectGlobal } from '@emotion/css';\n\nconst root = css `\n label: bullet-legend-component;\n`;\r\nconst variables = injectGlobal `\n :root {\n // Undefined by default to allow proper fallback to var(--vis-font-family)\n /* --vis-legend-font-family: */\n\n --vis-legend-label-color: #6c778c;\n --vis-legend-label-max-width: 300px;\n --vis-legend-label-font-size: 12px;\n --vis-legend-bullet-size: 9px;\n --vis-legend-bullet-inactive-opacity: 0.15;\n --vis-legend-item-spacing: 20px;\n --vis-legend-vertical-item-spacing: 5px;\n --vis-legend-bullet-label-spacing: 8px;\n\n --vis-dark-legend-label-color: #eee;\n }\n\n body.theme-dark ${`.${root}`} {\n --vis-legend-label-color: var(--vis-dark-legend-label-color);\n }\n\n body.theme-patterns {\n --vis-legend-bullet-size: 14px;\n }\n`;\r\nconst item = css `\n label: legendItem;\n display: inline-flex;\n align-items: center;\n font-family: var(--vis-legend-font-family, var(--vis-font-family));\n margin-right: var(--vis-legend-item-spacing);\n white-space: nowrap;\n cursor: default;\n user-select: none;\n max-width: min-content;\n`;\r\nconst itemVertical = css `\n label: legendItemVertical;\n display: flex;\n margin-top: var(--vis-legend-vertical-item-spacing);\n`;\r\nconst clickable = css `\n cursor: pointer;\n`;\r\nconst label = css `\n label: legendItemLabel;\n font-size: var(--vis-legend-label-font-size);\n display: inline-block;\n vertical-align: middle;\n color: var(--vis-legend-label-color);\n max-width: var(--vis-legend-label-max-width);\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n`;\r\nconst bullet = css `\n flex: 0 0 auto;\n label: legendItemBullet;\n margin-right: var(--vis-legend-bullet-label-spacing);\n height: var(--vis-legend-bullet-size);\n width: var(--vis-legend-bullet-size);\n\n svg {\n display: block;\n }\n`;\n\nexport { bullet, clickable, item, itemVertical, label, root, variables };\n//# sourceMappingURL=style.js.map\n","import { select } from 'd3-selection';\nimport { merge } from '../../utils/data.js';\nimport { BulletLegendDefaultConfig } from './config.js';\nimport { BulletLegendOrientation } from './types.js';\nimport { createBullets, updateBullets } from './modules/shape.js';\nimport * as style from './style.js';\nimport { root, item, itemVertical, clickable, bullet, label } from './style.js';\n\nclass BulletLegend {\r\n constructor(element, config) {\r\n this._defaultConfig = BulletLegendDefaultConfig;\r\n this.config = this._defaultConfig;\r\n this._colorAccessor = (d) => d.color;\r\n this._container = element;\r\n this.div = (config === null || config === void 0 ? void 0 : config.renderIntoProvidedDomNode) ? select(this._container) : select(this._container).append('div');\r\n this.div.classed(root, true);\r\n this.element = this.div.node();\r\n if (config)\r\n this.update(config);\r\n }\r\n update(config) {\r\n this.prevConfig = this.config;\r\n this.config = merge(this._defaultConfig, config);\r\n this.render();\r\n }\r\n render() {\r\n const { config } = this;\r\n const legendItems = this.div.selectAll(`.${item}`).data(config.items);\r\n const legendItemsEnter = legendItems.enter().append('div')\r\n .on('click', this._onItemClick.bind(this));\r\n const legendItemsMerged = legendItemsEnter.merge(legendItems);\r\n legendItemsMerged\r\n .attr('class', d => { var _a; return `${item} ${(_a = d.className) !== null && _a !== void 0 ? _a : ''}`; })\r\n .classed(itemVertical, config.orientation === BulletLegendOrientation.Vertical)\r\n .classed(clickable, d => !!config.onLegendItemClick && this._isItemClickable(d))\r\n .attr('title', d => d.name)\r\n .style('display', (d) => d.hidden ? 'none' : null);\r\n // Bullet\r\n legendItemsEnter.append('span')\r\n .attr('class', bullet)\r\n .call(createBullets);\r\n legendItemsMerged.select(`.${bullet}`)\r\n .style('width', config.bulletSize)\r\n .style('height', config.bulletSize)\r\n .style('box-sizing', 'content-box')\r\n .call(updateBullets, this.config, this._colorAccessor);\r\n // Labels\r\n legendItemsEnter.append('span')\r\n .attr('class', label)\r\n .classed(config.labelClassName, true)\r\n .style('max-width', config.labelMaxWidth)\r\n .style('font-size', config.labelFontSize);\r\n legendItemsMerged.select(`.${label}`)\r\n .text((d) => d.name);\r\n legendItems.exit().remove();\r\n }\r\n _isItemClickable(item) {\r\n return item.pointer === undefined ? true : item.pointer;\r\n }\r\n _onItemClick(event, d) {\r\n const { config: { onLegendItemClick } } = this;\r\n const legendItems = this.div.selectAll(`.${item}`).nodes();\r\n const index = legendItems.indexOf(event.currentTarget);\r\n if (onLegendItemClick)\r\n onLegendItemClick(d, index);\r\n }\r\n destroy() {\r\n if (this.element !== this._container)\r\n this.div.remove();\r\n }\r\n}\r\nBulletLegend.selectors = style;\n\nexport { BulletLegend };\n//# sourceMappingURL=index.js.map\n","import { XYComponentDefaultConfig } from '../../core/xy-component/config.js';\n\nconst CrosshairDefaultConfig = Object.assign(Object.assign({}, XYComponentDefaultConfig), { yStacked: undefined, baseline: null, duration: 100, tooltip: undefined, template: (d, x) => '', hideWhenFarFromPointer: true, hideWhenFarFromPointerDistance: 100, snapToData: true, getCircles: undefined, color: undefined, strokeColor: undefined, strokeWidth: undefined });\n\nexport { CrosshairDefaultConfig };\n//# sourceMappingURL=config.js.map\n","import { injectGlobal, css } from '@emotion/css';\n\nconst globalStyles = injectGlobal `\n :root {\n --vis-crosshair-line-stroke-color: #888;\n --vis-crosshair-line-stroke-width: 1px;\n --vis-crosshair-line-stroke-opacity: 1;\n --vis-crosshair-circle-stroke-color: #fff;\n --vis-crosshair-circle-stroke-width: 1px;\n --vis-crosshair-circle-stroke-opacity: 0.75;\n }\n`;\r\nconst root = css `\n label: crosshair-component;\n`;\r\nconst line = css `\n stroke: var(--vis-crosshair-line-stroke-color);\n stroke-width: var(--vis-crosshair-line-stroke-width);\n stroke-opacity: var(--vis-crosshair-line-stroke-opacity);\n pointer-events: none;\n`;\r\nconst circle = css `\n stroke: var(--vis-crosshair-circle-stroke-color);\n stroke-width: var(--vis-crosshair-circle-stroke-width);\n stroke-opacity: var(--vis-crosshair-circle-stroke-opacity);\n pointer-events: none;\n`;\n\nexport { circle, globalStyles, line, root };\n//# sourceMappingURL=style.js.map\n","import { pointer } from 'd3-selection';\nimport { easeLinear } from 'd3-ease';\nimport { XYComponentCore } from '../../core/xy-component/index.js';\nimport { isArray, isNumber, getNearest, clamp, getNumber, isFunction, getStackedValues } from '../../utils/data.js';\nimport { smartTransition } from '../../utils/d3.js';\nimport { getColor } from '../../utils/color.js';\nimport { Position } from '../../types/position.js';\nimport { CrosshairDefaultConfig } from './config.js';\nimport * as style from './style.js';\nimport { line, circle } from './style.js';\n\nclass Crosshair extends XYComponentCore {\r\n constructor(config) {\r\n super();\r\n this.clippable = true; // Don't apply clipping path to this component. See XYContainer\r\n this._defaultConfig = CrosshairDefaultConfig;\r\n this.config = this._defaultConfig;\r\n this.x = 0;\r\n this.show = false;\r\n this._animFrameId = null;\r\n /** Accessors passed externally (e.g. from XYContainer) */\r\n this._accessors = {\r\n x: undefined,\r\n y: undefined,\r\n yStacked: undefined,\r\n baseline: undefined,\r\n };\r\n if (config)\r\n this.setConfig(config);\r\n this.g.style('opacity', this.show ? 1 : 0);\r\n this.line = this.g.append('line')\r\n .attr('class', line);\r\n }\r\n set accessors(accessors) { this._accessors = accessors; }\r\n get accessors() {\r\n var _a;\r\n const { config } = this;\r\n const hasConfig = !!(config.x || config.y || config.yStacked);\r\n const x = hasConfig ? config.x : this._accessors.x;\r\n const yAcc = hasConfig ? config.y : this._accessors.y;\r\n const y = yAcc ? (isArray(yAcc) ? yAcc : [yAcc]) : undefined;\r\n const yStacked = hasConfig ? config.yStacked : this._accessors.yStacked;\r\n const baseline = (_a = config.baseline) !== null && _a !== void 0 ? _a : this._accessors.baseline;\r\n return { x, y, yStacked, baseline };\r\n }\r\n setContainer(containerSvg) {\r\n // Set up mousemove event for Crosshair\r\n this.container = containerSvg;\r\n this.container.on('mousemove.crosshair', this._onMouseMove.bind(this));\r\n this.container.on('mouseout.crosshair', this._onMouseOut.bind(this));\r\n }\r\n _render(customDuration) {\r\n const { config } = this;\r\n if (config.snapToData && !this.datum)\r\n return;\r\n const duration = isNumber(customDuration) ? customDuration : config.duration;\r\n smartTransition(this.g, duration)\r\n .style('opacity', this.show ? 1 : 0);\r\n this.line\r\n .attr('y1', 0)\r\n .attr('y1', this._height);\r\n smartTransition(this.line, duration, easeLinear)\r\n .attr('x1', this.x)\r\n .attr('x2', this.x);\r\n const circleData = this.getCircleData();\r\n const circles = this.g\r\n .selectAll('circle')\r\n .data(circleData, (d, i) => { var _a; return (_a = d.id) !== null && _a !== void 0 ? _a : i; });\r\n const circlesEnter = circles.enter()\r\n .append('circle')\r\n .attr('class', circle)\r\n .attr('r', 0)\r\n .attr('cx', this.x)\r\n .attr('cy', d => d.y)\r\n .style('fill', d => d.color)\r\n .style('stroke', d => d.strokeColor)\r\n .style('stroke-width', d => d.strokeWidth);\r\n smartTransition(circlesEnter.merge(circles), duration, easeLinear)\r\n .attr('cx', this.x)\r\n .attr('cy', d => d.y)\r\n .attr('r', 4)\r\n .style('opacity', d => d.opacity)\r\n .style('fill', d => d.color)\r\n .style('stroke', d => d.strokeColor)\r\n .style('stroke-width', d => d.strokeWidth);\r\n circles.exit().remove();\r\n }\r\n hide() {\r\n this._onMouseOut();\r\n }\r\n _onMouseMove(event) {\r\n var _a, _b;\r\n const { config, datamodel, element } = this;\r\n if (!this.accessors.x && ((_a = datamodel.data) === null || _a === void 0 ? void 0 : _a.length)) {\r\n console.warn('Unovis | Crosshair: X accessor function has not been configured. Please check if it\\'s present in the configuration object');\r\n }\r\n const [x] = pointer(event, element);\r\n const xRange = this.xScale.range();\r\n if (config.snapToData) {\r\n if (!this.accessors.y && !this.accessors.yStacked && ((_b = datamodel.data) === null || _b === void 0 ? void 0 : _b.length)) {\r\n console.warn('Unovis | Crosshair: Y accessors have not been configured. Please check if they\\'re present in the configuration object');\r\n }\r\n const scaleX = this.xScale;\r\n const valueX = scaleX.invert(x);\r\n this.datum = getNearest(datamodel.data, valueX, this.accessors.x);\r\n this.datumIndex = datamodel.data.indexOf(this.datum);\r\n if (!this.datum)\r\n return;\r\n this.x = clamp(Math.round(scaleX(getNumber(this.datum, this.accessors.x, this.datumIndex))), 0, this._width);\r\n // Show the crosshair only if it's in the chart range and not far from mouse pointer (if configured)\r\n this.show = (this.x >= 0) && (this.x <= this._width) && (!config.hideWhenFarFromPointer || (Math.abs(this.x - x) < config.hideWhenFarFromPointerDistance));\r\n }\r\n else {\r\n const tolerance = 2; // Show the crosshair when it is at least 2 pixels close to the chart area\r\n this.x = clamp(x, xRange[0], xRange[1]);\r\n this.show = (x >= (xRange[0] - tolerance)) && (x <= (xRange[1] + tolerance));\r\n }\r\n window.cancelAnimationFrame(this._animFrameId);\r\n this._animFrameId = window.requestAnimationFrame(() => {\r\n this._render();\r\n });\r\n if (this.show)\r\n this._showTooltip(event);\r\n else\r\n this._hideTooltip();\r\n }\r\n _onMouseOut() {\r\n this.show = false;\r\n window.cancelAnimationFrame(this._animFrameId);\r\n this._animFrameId = window.requestAnimationFrame(() => {\r\n this._render();\r\n });\r\n this._hideTooltip();\r\n }\r\n _showTooltip(event) {\r\n var _a;\r\n const { config } = this;\r\n const tooltip = (_a = config.tooltip) !== null && _a !== void 0 ? _a : this.tooltip;\r\n if (!tooltip)\r\n return;\r\n const container = tooltip.getContainer() || this.container.node();\r\n const [x, y] = tooltip.isContainerBody() ? [event.clientX, event.clientY] : pointer(event, container);\r\n const content = config.template(this.datum, this.xScale.invert(this.x));\r\n // Force set `followCursor` to `true` because we don't want Crosshair's tooltip to be hoverable\r\n tooltip.config.followCursor = true;\r\n // Set tooltip placement based on Crosshair's position (left / right)\r\n if (!tooltip.config.horizontalPlacement || tooltip.config.horizontalPlacement === Position.Auto) {\r\n const xRelative = tooltip.isContainerBody() ? x - this.container.node().getBoundingClientRect().left : x;\r\n tooltip.overrideHorizontalPlacement(xRelative > this._containerWidth / 2 ? Position.Left : Position.Right);\r\n }\r\n if (content)\r\n tooltip.show(content, { x, y });\r\n }\r\n _hideTooltip() {\r\n var _a;\r\n const { config } = this;\r\n const tooltip = (_a = config.tooltip) !== null && _a !== void 0 ? _a : this.tooltip;\r\n tooltip === null || tooltip === void 0 ? void 0 : tooltip.hide();\r\n }\r\n // We don't want Crosshair to be be taken in to account in domain calculations\r\n getYDataExtent() {\r\n return [undefined, undefined];\r\n }\r\n getCircleData() {\r\n var _a, _b;\r\n const { config, datamodel: { data } } = this;\r\n if (isFunction(config.getCircles))\r\n return config.getCircles(this.xScale.invert(this.x), data, this.yScale);\r\n if (config.snapToData && this.datum) {\r\n const yAccessors = (_a = this.accessors.y) !== null && _a !== void 0 ? _a : [];\r\n const yStackedAccessors = (_b = this.accessors.yStacked) !== null && _b !== void 0 ? _b : [];\r\n const baselineValue = getNumber(this.datum, this.accessors.baseline, this.datumIndex) || 0;\r\n const stackedValues = getStackedValues(this.datum, this.datumIndex, ...yStackedAccessors)\r\n .map((value, index, arr) => ({\r\n y: this.yScale(value + baselineValue),\r\n opacity: isNumber(getNumber(this.datum, yStackedAccessors[index])) ? 1 : 0,\r\n color: getColor(this.datum, config.color, index),\r\n strokeColor: config.strokeColor ? getColor(this.datum, config.strokeColor, index) : undefined,\r\n strokeWidth: config.strokeWidth ? getNumber(this.datum, config.strokeWidth, index) : undefined,\r\n }));\r\n const regularValues = yAccessors\r\n .map((a, index) => {\r\n const value = getNumber(this.datum, a);\r\n return {\r\n y: this.yScale(value),\r\n opacity: isNumber(value) ? 1 : 0,\r\n color: getColor(this.datum, config.color, stackedValues.length + index),\r\n strokeColor: config.strokeColor ? getColor(this.datum, config.strokeColor, index) : undefined,\r\n strokeWidth: config.strokeWidth ? getNumber(this.datum, config.strokeWidth, index) : undefined,\r\n };\r\n });\r\n return stackedValues.concat(regularValues);\r\n }\r\n return [];\r\n }\r\n}\r\nCrosshair.selectors = style;\n\nexport { Crosshair };\n//# sourceMappingURL=index.js.map\n","import { XYComponentDefaultConfig } from '../../core/xy-component/config.js';\nimport { CurveType } from '../../types/curve.js';\n\nconst AreaDefaultConfig = Object.assign(Object.assign({}, XYComponentDefaultConfig), { color: undefined, curveType: CurveType.MonotoneX, baseline: () => 0, opacity: 1, cursor: null, minHeight1Px: false });\n\nexport { AreaDefaultConfig };\n//# sourceMappingURL=config.js.map\n","import { css, injectGlobal } from '@emotion/css';\n\nconst root = css `\n label: area-component;\n`;\r\nconst globalStyles = injectGlobal `\n :root {\n --vis-area-cursor: default;\n --vis-area-fill-opacity: 1;\n --vis-area-stroke-color: none;\n --vis-area-stroke-width: 0px;\n --vis-area-stroke-dasharray: none;\n --vis-area-stroke-opacity: 1;\n --vis-area-hover-fill-opacity: none;\n --vis-area-hover-stroke-width: none;\n\n /* Dark Theme */\n --vis-dark-area-stroke-color: none;\n }\n\n body.theme-dark ${`.${root}`} {\n --vis-area-stroke-color: var(--vis-dark-area-stroke-color);\n }\n\n`;\r\nconst area = css `\n label: area;\n cursor: var(--vis-area-cursor);\n fill-opacity: var(--vis-area-fill-opacity);\n stroke-width: var(--vis-area-stroke-width);\n stroke-dasharray: var(--vis-area-stroke-dasharray);\n stroke: var(--vis-area-stroke-color);\n stroke-opacity: var(--vis-area-stroke-opacity);\n\n &:hover {\n fill-opacity: var(--vis-area-hover-fill-opacity);\n stroke-width: var(--vis-area-hover-stroke-width);\n }\n`;\n\nexport { area, globalStyles, root };\n//# sourceMappingURL=style.js.map\n","import { select } from 'd3-selection';\nimport { area } from 'd3-shape';\nimport { interpolatePath } from 'd3-interpolate-path';\nimport { XYComponentCore } from '../../core/xy-component/index.js';\nimport { isNumber, isArray, getNumber, getStackedData, getString, filterDataByRange, getStackedExtent } from '../../utils/data.js';\nimport { smartTransition } from '../../utils/d3.js';\nimport { getColor } from '../../utils/color.js';\nimport { Curve } from '../../types/curve.js';\nimport { AreaDefaultConfig } from './config.js';\nimport * as style from './style.js';\nimport { area as area$1 } from './style.js';\n\nclass Area extends XYComponentCore {\r\n constructor(config) {\r\n super();\r\n this._defaultConfig = AreaDefaultConfig;\r\n this.config = this._defaultConfig;\r\n this.stacked = true;\r\n this.events = {\r\n [Area.selectors.area]: {},\r\n };\r\n if (config)\r\n this.setConfig(config);\r\n // Determine if the provided chart should be stacked\r\n this.stacked = Array.isArray(this.config.y);\r\n }\r\n _render(customDuration) {\r\n super._render(customDuration);\r\n const { config, datamodel: { data } } = this;\r\n const duration = isNumber(customDuration) ? customDuration : config.duration;\r\n const curveGen = Curve[config.curveType];\r\n this._areaGen = area()\r\n .x(d => d.x)\r\n .y0(d => d.y0)\r\n .y1(d => {\r\n const isSmallerThanPixel = Math.abs(d.y1 - d.y0) < 1;\r\n return d.y1 - ((isSmallerThanPixel && config.minHeight1Px) ? 1 : 0);\r\n })\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n .curve(curveGen);\r\n const yAccessors = (isArray(config.y) ? config.y : [config.y]);\r\n const areaDataX = data.map((d, i) => this.xScale(getNumber(d, config.x, i)));\r\n const stacked = getStackedData(data, config.baseline, yAccessors, this._prevNegative);\r\n this._prevNegative = stacked.map(s => !!s.isMostlyNegative);\r\n const stackedData = stacked.map(arr => arr.map((d, j) => ({\r\n y0: this.yScale(d[0]),\r\n y1: this.yScale(d[1]),\r\n x: areaDataX[j],\r\n })));\r\n // We reverse the data in order to have the first areas to be displayed on top\r\n // for better visibility when they're close to zero\r\n const areaMaxIdx = stackedData.length - 1;\r\n const stackedDataReversed = stackedData.reverse();\r\n const areas = this.g\r\n .selectAll(`.${area$1}`)\r\n .data(stackedDataReversed);\r\n const areasEnter = areas.enter().append('path')\r\n .attr('class', area$1)\r\n .attr('d', d => this._areaGen(d) || this._emptyPath())\r\n .style('opacity', 0)\r\n .style('fill', (d, i) => getColor(data, config.color, areaMaxIdx - i));\r\n const areasMerged = smartTransition(areasEnter.merge(areas), duration)\r\n .style('opacity', (d, i) => {\r\n const isDefined = d.some(p => (p.y0 - p.y1) !== 0);\r\n return isDefined ? getNumber(data, config.opacity, areaMaxIdx - i) : 0;\r\n })\r\n .style('fill', (d, i) => getColor(data, config.color, areaMaxIdx - i))\r\n .style('cursor', (d, i) => getString(data, config.cursor, areaMaxIdx - i));\r\n if (duration) {\r\n const transition = areasMerged;\r\n transition.attrTween('d', (d, i, el) => {\r\n const previous = select(el[i]).attr('d');\r\n const next = this._areaGen(d) || this._emptyPath();\r\n return interpolatePath(previous, next);\r\n });\r\n }\r\n else {\r\n areasMerged.attr('d', d => this._areaGen(d) || this._emptyPath());\r\n }\r\n smartTransition(areas.exit(), duration)\r\n .style('opacity', 0)\r\n .remove();\r\n }\r\n getYDataExtent(scaleByVisibleData) {\r\n const { config, datamodel } = this;\r\n const yAccessors = (isArray(config.y) ? config.y : [config.y]);\r\n const data = scaleByVisibleData ? filterDataByRange(datamodel.data, this.xScale.domain(), config.x) : datamodel.data;\r\n return getStackedExtent(data, config.baseline, ...yAccessors);\r\n }\r\n _emptyPath() {\r\n const xRange = this.xScale.range();\r\n const yDomain = this.yScale.domain();\r\n const y0 = this.yScale((yDomain[0] + yDomain[1]) / 2);\r\n const y1 = y0;\r\n return this._areaGen([\r\n { y0, y1, x: xRange[0] },\r\n { y0, y1, x: xRange[1] },\r\n ]);\r\n }\r\n}\r\nArea.selectors = style;\n\nexport { Area };\n//# sourceMappingURL=index.js.map\n","import { ComponentDefaultConfig } from '../../core/component/config.js';\n\n// Core\r\nconst DonutDefaultConfig = Object.assign(Object.assign({}, ComponentDefaultConfig), { id: (d, i) => { var _a; return (_a = d.id) !== null && _a !== void 0 ? _a : i; }, value: undefined, angleRange: [0, 2 * Math.PI], padAngle: 0, sortFunction: undefined, cornerRadius: 0, color: undefined, radius: undefined, arcWidth: 20, centralLabel: undefined, centralSubLabel: undefined, centralSubLabelWrap: true, showEmptySegments: false, emptySegmentAngle: 0.5 * Math.PI / 180, showBackground: true, backgroundAngleRange: undefined, centralLabelOffsetX: undefined, centralLabelOffsetY: undefined });\n\nexport { DonutDefaultConfig };\n//# sourceMappingURL=config.js.map\n","import { interpolate } from 'd3-interpolate';\nimport { getColor } from '../../../utils/color.js';\nimport { smartTransition } from '../../../utils/d3.js';\n\nfunction createArc(selection, config) {\r\n selection\r\n .style('fill', d => getColor(d.data, config.color, d.index))\r\n .style('opacity', 0)\r\n .each((d, i, els) => {\r\n const arcNode = els[i];\r\n const angleCenter = (d.startAngle + d.endAngle) / 2;\r\n const angleHalfWidth = (d.endAngle - d.startAngle) / 2;\r\n arcNode._animState = {\r\n startAngle: angleCenter - angleHalfWidth,\r\n endAngle: angleCenter + angleHalfWidth,\r\n innerRadius: d.innerRadius,\r\n outerRadius: d.outerRadius,\r\n padAngle: d.padAngle,\r\n };\r\n });\r\n}\r\nfunction updateArc(selection, config, arcGen, duration) {\r\n selection\r\n .style('transition', `fill ${duration}ms`) // Animate color with CSS because we're using CSS-variables\r\n .style('fill', d => getColor(d.data, config.color, d.index));\r\n const setOpacity = (d) => (config.showEmptySegments || d.value) ? 1 : 0;\r\n if (duration) {\r\n const transition = smartTransition(selection, duration)\r\n .style('opacity', setOpacity);\r\n transition.attrTween('d', (d, i, els) => {\r\n const arcNode = els[i];\r\n const nextAnimState = {\r\n startAngle: d.startAngle,\r\n endAngle: d.endAngle,\r\n innerRadius: d.innerRadius,\r\n outerRadius: d.outerRadius,\r\n padAngle: d.padAngle,\r\n };\r\n const datum = interpolate(arcNode._animState, nextAnimState);\r\n return (t) => {\r\n arcNode._animState = datum(t);\r\n return arcGen(arcNode._animState);\r\n };\r\n });\r\n }\r\n else {\r\n selection\r\n .attr('d', arcGen)\r\n .style('opacity', setOpacity);\r\n }\r\n}\r\nfunction removeArc(selection, duration) {\r\n smartTransition(selection, duration)\r\n .style('opacity', 0)\r\n .remove();\r\n}\n\nexport { createArc, removeArc, updateArc };\n//# sourceMappingURL=arc.js.map\n","const DONUT_HALF_ANGLE_RANGES = Array.from({ length: 4 }, (_, i) => {\r\n const offset = -Math.PI / 2 + i * Math.PI / 2;\r\n return [offset, offset + Math.PI];\r\n});\r\nconst [DONUT_HALF_ANGLE_RANGE_TOP, DONUT_HALF_ANGLE_RANGE_RIGHT, DONUT_HALF_ANGLE_RANGE_BOTTOM, DONUT_HALF_ANGLE_RANGE_LEFT,] = DONUT_HALF_ANGLE_RANGES;\n\nexport { DONUT_HALF_ANGLE_RANGES, DONUT_HALF_ANGLE_RANGE_BOTTOM, DONUT_HALF_ANGLE_RANGE_LEFT, DONUT_HALF_ANGLE_RANGE_RIGHT, DONUT_HALF_ANGLE_RANGE_TOP };\n//# sourceMappingURL=constants.js.map\n","import { css, injectGlobal } from '@emotion/css';\n\nconst root = css `\n label: donut-component;\n`;\r\nconst variables = injectGlobal `\n :root {\n --vis-donut-central-label-font-size: 16px;\n --vis-donut-central-label-text-color: #5b5f6d;\n // Undefined by default to allow proper fallback to var(--vis-font-family)\n /* --vis-donut-central-label-font-family: */\n --vis-donut-central-label-font-weight: 600;\n\n --vis-donut-central-sub-label-font-size: 12px;\n --vis-donut-central-sub-label-text-color: #5b5f6d;\n // Undefined by default to allow proper fallback to var(--vis-font-family)\n /* --vis-donut-central-sub-label-font-family: */\n --vis-donut-central-sub-label-font-weight: 500;\n\n --vis-donut-background-color: #E7E9F3;\n --vis-donut-segment-stroke-width: 0;\n // The line segment color variable is not defined by default\n // to allow it to fallback to the donut background color\n /* --vis-donut-segment-stroke-color: none; */\n\n --vis-dark-donut-central-label-text-color: #C2BECE;\n --vis-dark-donut-central-sub-label-text-color: #C2BECE;\n --vis-dark-donut-background-color: #18160C;\n }\n\n body.theme-dark ${`.${root}`} {\n --vis-donut-central-label-text-color: var(--vis-dark-donut-central-label-text-color);\n --vis-donut-central-sub-label-text-color: var(--vis-dark-donut-central-sub-label-text-color);\n --vis-donut-background-color: var(--vis-dark-donut-background-color);\n }\n`;\r\nconst background = css `\n label: background;\n fill: var(--vis-donut-background-color);\n`;\r\nconst segment = css `\n label: segment;\n stroke-width: var(--vis-donut-segment-stroke-width);\n stroke: var(--vis-donut-segment-stroke-color, var(--vis-donut-background-color));\n`;\r\nconst segmentExit = css `\n label: segment-exit;\n`;\r\nconst centralLabel = css `\n label: central-label;\n text-anchor: middle;\n dominant-baseline: middle;\n font-size: var(--vis-donut-central-label-font-size);\n font-family: var(--vis-donut-central-label-font-family, var(--vis-font-family));\n font-weight: var(--vis-donut-central-label-font-weight);\n fill: var(--vis-donut-central-label-text-color);\n`;\r\nconst centralSubLabel = css `\n label: central-label;\n text-anchor: middle;\n dominant-baseline: middle;\n font-size: var(--vis-donut-central-sub-label-font-size);\n font-family: var(--vis-donut-central-sub-label-font-family, var(--vis-font-family));\n font-weight: var(--vis-donut-central-sub-label-font-weight);\n fill: var(--vis-donut-central-sub-label-text-color);\n`;\n\nexport { background, centralLabel, centralSubLabel, root, segment, segmentExit, variables };\n//# sourceMappingURL=style.js.map\n","import { arc, pie } from 'd3-shape';\nimport { ComponentCore } from '../../core/component/index.js';\nimport { SeriesDataModel } from '../../data-models/series.js';\nimport { smartTransition } from '../../utils/d3.js';\nimport { getNumber, isNumber, clamp } from '../../utils/data.js';\nimport { wrapSVGText } from '../../utils/text.js';\nimport { DonutDefaultConfig } from './config.js';\nimport { createArc, updateArc, removeArc } from './modules/arc.js';\nimport { DONUT_HALF_ANGLE_RANGES } from './constants.js';\nimport * as style from './style.js';\nimport { centralLabel, centralSubLabel, segment, segmentExit, background } from './style.js';\n\nclass Donut extends ComponentCore {\r\n constructor(config) {\r\n super();\r\n this._defaultConfig = DonutDefaultConfig;\r\n this.config = this._defaultConfig;\r\n this.datamodel = new SeriesDataModel();\r\n this.arcGen = arc();\r\n this.events = {};\r\n if (config)\r\n this.setConfig(config);\r\n this.arcBackground = this.g.append('path');\r\n this.arcGroup = this.g.append('g');\r\n this.centralLabel = this.g.append('text')\r\n .attr('class', centralLabel);\r\n this.centralSubLabel = this.g.append('text')\r\n .attr('class', centralSubLabel);\r\n }\r\n get bleed() {\r\n return { top: 0, bottom: 0, left: 0, right: 0 };\r\n }\r\n _render(customDuration) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;\r\n const { config, datamodel, bleed } = this;\r\n // Wrap data to preserve original indices\r\n const data = datamodel.data\r\n .map((d, i) => ({\r\n index: i,\r\n datum: d,\r\n }))\r\n .filter(d => config.showEmptySegments || getNumber(d.datum, config.value, d.index));\r\n const duration = isNumber(customDuration) ? customDuration : config.duration;\r\n // Handle half-donut cases, which adjust the scaling and positioning.\r\n // One of these is true if we are dealing with a half-donut.\r\n const [isHalfDonutTop, isHalfDonutRight, isHalfDonutBottom, isHalfDonutLeft,] = DONUT_HALF_ANGLE_RANGES.map(angleRange => config.angleRange && (config.angleRange[0] === angleRange[0] &&\r\n config.angleRange[1] === angleRange[1]));\r\n const isVerticalHalfDonut = isHalfDonutTop || isHalfDonutBottom;\r\n const isHorizontalHalfDonut = isHalfDonutRight || isHalfDonutLeft;\r\n // Compute the bounding box of the donut,\r\n // considering it may be a half-donut\r\n const width = this._width * (isHorizontalHalfDonut ? 2 : 1);\r\n const height = this._height * (isVerticalHalfDonut ? 2 : 1);\r\n const outerRadius = config.radius || Math.min(width - bleed.left - bleed.right, height - bleed.top - bleed.bottom) / 2;\r\n const innerRadius = config.arcWidth === 0 ? 0 : clamp(outerRadius - config.arcWidth, 0, outerRadius - 1);\r\n const translateY = this._height / 2 + (isHalfDonutTop ? outerRadius / 2 : isHalfDonutBottom ? -outerRadius / 2 : 0);\r\n const translateX = this._width / 2 + (isHalfDonutLeft ? outerRadius / 2 : isHalfDonutRight ? -outerRadius / 2 : 0);\r\n const translate = `translate(${translateX},${translateY})`;\r\n this.arcGroup.attr('transform', translate);\r\n this.arcGen\r\n .startAngle(d => d.startAngle)\r\n .endAngle(d => d.endAngle)\r\n .innerRadius(d => d.innerRadius)\r\n .outerRadius(d => d.outerRadius)\r\n .padAngle(d => d.padAngle)\r\n .cornerRadius(config.cornerRadius);\r\n const pieGen = pie()\r\n .startAngle((_b = (_a = config.angleRange) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : 0)\r\n .endAngle((_d = (_c = config.angleRange) === null || _c === void 0 ? void 0 : _c[1]) !== null && _d !== void 0 ? _d : 2 * Math.PI)\r\n .padAngle(config.padAngle)\r\n .value(d => getNumber(d.datum, config.value, d.index) || 0)\r\n .sort((a, b) => { var _a; return (_a = config.sortFunction) === null || _a === void 0 ? void 0 : _a.call(config, a.datum, b.datum); });\r\n const arcData = pieGen(data).map(d => {\r\n const arc = Object.assign(Object.assign({}, d), { data: d.data.datum, index: d.data.index, innerRadius,\r\n outerRadius });\r\n if (config.showEmptySegments && d.endAngle - d.startAngle - d.padAngle <= Number.EPSILON) {\r\n arc.endAngle = d.startAngle + Math.max(config.emptySegmentAngle, config.padAngle);\r\n arc.padAngle = d.padAngle / 2;\r\n }\r\n return arc;\r\n });\r\n // Arc segments\r\n const arcsSelection = this.arcGroup\r\n .selectAll(`.${segment}`)\r\n .data(arcData, (d) => config.id(d.data, d.index));\r\n const arcsEnter = arcsSelection.enter().append('path')\r\n .attr('class', segment)\r\n .call(createArc, config);\r\n const arcsMerged = arcsSelection.merge(arcsEnter);\r\n arcsMerged.call(updateArc, config, this.arcGen, duration);\r\n arcsMerged.sort((a, b) => b.value - a.value);\r\n arcsSelection.exit()\r\n .attr('class', segmentExit)\r\n .call(removeArc, duration);\r\n // Label\r\n const labelTextAnchor = isHalfDonutRight ? 'start' : isHalfDonutLeft ? 'end' : 'middle';\r\n this.centralLabel\r\n .attr('dy', config.centralSubLabel ? '-0.55em' : null)\r\n .style('text-anchor', labelTextAnchor)\r\n .text((_e = config.centralLabel) !== null && _e !== void 0 ? _e : null);\r\n this.centralSubLabel\r\n .attr('dy', config.centralLabel ? '0.55em' : null)\r\n .style('text-anchor', labelTextAnchor)\r\n .text((_f = config.centralSubLabel) !== null && _f !== void 0 ? _f : null);\r\n if (config.centralSubLabelWrap)\r\n wrapSVGText(this.centralSubLabel, innerRadius * 1.9);\r\n // Label placement\r\n const labelTranslateX = (config.centralLabelOffsetX || 0) + translateX;\r\n let labelTranslateY = (config.centralLabelOffsetY || 0) + translateY;\r\n // Special case label placement for half donut\r\n if (isVerticalHalfDonut && config.centralLabelOffsetX === undefined && config.centralLabelOffsetY === undefined) {\r\n const halfDonutLabelOffsetY = isHalfDonutTop\r\n ? -this.centralSubLabel.node().getBoundingClientRect().height\r\n : isHalfDonutBottom\r\n ? this.centralLabel.node().getBoundingClientRect().height\r\n : 0;\r\n labelTranslateY = halfDonutLabelOffsetY + translateY;\r\n }\r\n const labelTranslate = `translate(${labelTranslateX},${labelTranslateY})`;\r\n this.centralLabel.attr('transform', labelTranslate);\r\n this.centralSubLabel.attr('transform', labelTranslate);\r\n // Background\r\n this.arcBackground.attr('class', background)\r\n .attr('visibility', config.showBackground ? null : 'hidden')\r\n .attr('transform', translate);\r\n smartTransition(this.arcBackground, duration)\r\n .attr('d', this.arcGen({\r\n startAngle: (_k = (_h = (_g = config.backgroundAngleRange) === null || _g === void 0 ? void 0 : _g[0]) !== null && _h !== void 0 ? _h : (_j = config.angleRange) === null || _j === void 0 ? void 0 : _j[0]) !== null && _k !== void 0 ? _k : 0,\r\n endAngle: (_p = (_m = (_l = config.backgroundAngleRange) === null || _l === void 0 ? void 0 : _l[1]) !== null && _m !== void 0 ? _m : (_o = config.angleRange) === null || _o === void 0 ? void 0 : _o[1]) !== null && _p !== void 0 ? _p : 2 * Math.PI,\r\n innerRadius,\r\n outerRadius,\r\n }));\r\n }\r\n}\r\nDonut.selectors = style;\n\nexport { Donut };\n//# sourceMappingURL=index.js.map\n","const o = Symbol(\"componentAccessorKey\"), s = Symbol(\"tooltipAccessorKey\"), c = Symbol(\"crosshairAccessorKey\"), e = Symbol(\"axisAccessorKey\"), t = Symbol(\"annotationsAccessorKey\");\nexport {\n t as annotationsAccessorKey,\n e as axisAccessorKey,\n o as componentAccessorKey,\n c as crosshairAccessorKey,\n s as tooltipAccessorKey\n};\n//# sourceMappingURL=context.js.map\n","import { isEqual as p } from \"@unovis/ts\";\nimport { getCurrentInstance as a, computed as u, camelize as s } from \"vue\";\nfunction f(t, r) {\n return p(t, r);\n}\nfunction m(t) {\n const r = a(), n = r.attrs;\n return u(() => {\n const o = {}, c = (r == null ? void 0 : r.vnode.props) ?? {};\n return Object.keys(c).forEach((e) => {\n o[s(e)] = t[s(e)];\n }), { ...o, ...n };\n });\n}\nexport {\n f as arePropsEqual,\n m as useForwardProps\n};\n//# sourceMappingURL=props.js.map\n","import { defineComponent as u, toRefs as y, ref as p, reactive as v, watch as f, watchEffect as x, toRaw as r, onMounted as h, onUnmounted as D, provide as a, openBlock as g, createElementBlock as A, renderSlot as C } from \"vue\";\nimport { XYContainer as w } from \"@unovis/ts\";\nimport { componentAccessorKey as B, axisAccessorKey as M, crosshairAccessorKey as R, tooltipAccessorKey as _, annotationsAccessorKey as K } from \"../../utils/context.js\";\nimport { useForwardProps as b } from \"../../utils/props.js\";\nconst $ = /* @__PURE__ */ u({\n __name: \"index\",\n props: {\n components: {},\n xScale: { type: [Object, Function] },\n xDomain: {},\n xDomainMinConstraint: {},\n xDomainMaxConstraint: {},\n xRange: {},\n yScale: { type: [Object, Function] },\n yDomain: {},\n yDomainMinConstraint: {},\n yDomainMaxConstraint: {},\n yRange: {},\n yDirection: {},\n xAxis: {},\n yAxis: {},\n autoMargin: { type: Boolean },\n tooltip: {},\n crosshair: {},\n preventEmptyDomain: { type: [Boolean, null] },\n scaleByDomain: { type: Boolean },\n annotations: {},\n duration: {},\n margin: {},\n padding: {},\n sizing: {},\n width: {},\n height: {},\n svgDefs: {},\n ariaLabel: {},\n data: {}\n },\n setup(d, { expose: l }) {\n const c = d, { data: t } = y(c), m = b(c), n = p(), e = v({\n components: [],\n annotations: void 0,\n crosshair: void 0,\n tooltip: void 0,\n xAxis: void 0,\n yAxis: void 0\n }), s = p();\n return f(t, () => {\n n.value && n.value.setData(t.value, !0);\n }), x(() => {\n var o;\n e.components.map((i) => i.config), (o = n.value) == null || o.updateContainer({ ...r(m.value), ...r(e) });\n }), h(() => {\n s.value && (n.value = new w(s.value, { ...r(e) }, t.value));\n }), D(() => {\n var o;\n return (o = n.value) == null ? void 0 : o.destroy();\n }), a(B, {\n data: t,\n update: (o) => e.components = [...e.components, o],\n destroy: () => {\n var o;\n return e.components = (o = e.components) == null ? void 0 : o.filter((i) => !i.isDestroyed());\n }\n }), a(M, {\n data: t,\n update: (o) => e[`${o.config.type}Axis`] = o,\n destroy: (o) => {\n e[`${o}Axis`] = void 0;\n }\n }), a(R, {\n data: t,\n update: (o) => e.crosshair = o,\n destroy: () => {\n e.crosshair = void 0;\n }\n }), a(_, {\n data: t,\n update: (o) => e.tooltip = o,\n destroy: () => {\n e.tooltip = void 0;\n }\n }), a(K, {\n data: t,\n update: (o) => e.annotations = o,\n destroy: () => {\n e.annotations = void 0;\n }\n }), l({\n component: n\n }), (o, i) => (g(), A(\"div\", {\n \"data-vis-xy-container\": \"\",\n ref_key: \"elRef\",\n ref: s,\n class: \"unovis-xy-container\"\n }, [\n C(o.$slots, \"default\")\n ], 512));\n }\n});\nexport {\n $ as default\n};\n//# sourceMappingURL=index.js.map\n","import { defineComponent as f, toRefs as m, reactive as u, ref as v, watchEffect as g, watch as y, onUnmounted as w, provide as a, openBlock as _, createElementBlock as h, renderSlot as C, toRaw as s } from \"vue\";\nimport { SingleContainer as R } from \"@unovis/ts\";\nimport { componentAccessorKey as k, tooltipAccessorKey as x, annotationsAccessorKey as A } from \"../../utils/context.js\";\nimport { useForwardProps as K } from \"../../utils/props.js\";\nconst b = /* @__PURE__ */ f({\n __name: \"index\",\n props: {\n component: {},\n tooltip: {},\n annotations: {},\n duration: {},\n margin: {},\n padding: {},\n sizing: {},\n width: {},\n height: {},\n svgDefs: {},\n ariaLabel: {},\n data: {}\n },\n setup(c, { expose: d }) {\n const r = c, { data: n } = m(r), l = K(r);\n let o;\n const e = u({\n component: void 0,\n tooltip: void 0,\n annotations: void 0\n }), i = v(), p = () => {\n o || i.value && e.component && (o = new R(i.value, { ...s(e) }, n.value));\n };\n return g(() => {\n var t;\n p(), (t = e.component) == null || t.config, o == null || o.updateContainer({ ...s(l.value), ...s(e) });\n }), y(n, () => {\n o ? o.setData(n.value, !0) : p();\n }), w(() => o == null ? void 0 : o.destroy()), a(k, {\n data: n,\n update: (t) => e.component = t,\n destroy: () => e.component = void 0\n }), a(x, {\n data: n,\n update: (t) => e.tooltip = t,\n destroy: () => {\n e.tooltip = void 0;\n }\n }), a(A, {\n data: n,\n update: (t) => e.annotations = t,\n destroy: () => {\n e.annotations = void 0;\n }\n }), d({\n component: o\n }), (t, B) => (_(), h(\"div\", {\n \"data-vis-single-container\": \"\",\n ref_key: \"elRef\",\n ref: i,\n class: \"unovis-single-container\"\n }, [\n C(t.$slots, \"default\")\n ], 512));\n }\n});\nexport {\n b as default\n};\n//# sourceMappingURL=index.js.map\n","import { defineComponent as d, inject as m, computed as v, ref as y, onMounted as f, nextTick as x, onUnmounted as _, watch as u, openBlock as F, createElementBlock as b } from \"vue\";\nimport { Area as i } from \"@unovis/ts\";\nimport { useForwardProps as h, arePropsEqual as B } from \"../../utils/props.js\";\nimport { componentAccessorKey as g } from \"../../utils/context.js\";\nconst j = { \"data-vis-component\": \"\" }, D = i.selectors, P = /* @__PURE__ */ d({\n __name: \"index\",\n props: {\n color: {},\n curveType: {},\n baseline: {},\n opacity: {},\n cursor: {},\n minHeight1Px: { type: Boolean },\n x: {},\n y: {},\n id: { type: Function },\n xScale: { type: [Object, Function] },\n yScale: { type: [Object, Function] },\n excludeFromDomainCalculation: { type: Boolean },\n duration: {},\n events: {},\n attributes: {},\n data: {}\n },\n setup(l, { expose: p }) {\n const o = m(g), c = l, a = v(() => o.data.value ?? c.data), n = h(c), t = y();\n return f(() => {\n x(() => {\n var e;\n t.value = new i(n.value), (e = t.value) == null || e.setData(a.value), o.update(t.value);\n });\n }), _(() => {\n var e;\n (e = t.value) == null || e.destroy(), o.destroy();\n }), u(n, (e, r) => {\n var s;\n B(e, r) || (s = t.value) == null || s.setConfig(n.value);\n }), u(a, () => {\n var e;\n (e = t.value) == null || e.setData(a.value);\n }), p({\n component: t\n }), (e, r) => (F(), b(\"div\", j));\n }\n});\nexport {\n D as VisAreaSelectors,\n P as default\n};\n//# sourceMappingURL=index.js.map\n","import { defineComponent as d, inject as x, computed as m, ref as y, onMounted as k, nextTick as T, onUnmounted as v, watch as s, openBlock as f, createElementBlock as B } from \"vue\";\nimport { Axis as r } from \"@unovis/ts\";\nimport { useForwardProps as F, arePropsEqual as g } from \"../../utils/props.js\";\nimport { axisAccessorKey as _ } from \"../../utils/context.js\";\nconst b = { \"data-vis-axis\": \"\" }, M = r.selectors, O = /* @__PURE__ */ d({\n __name: \"index\",\n props: {\n position: {},\n type: {},\n fullSize: { type: Boolean },\n label: {},\n labelFontSize: {},\n labelMargin: {},\n labelColor: {},\n gridLine: { type: Boolean },\n tickLine: { type: Boolean },\n domainLine: { type: Boolean },\n minMaxTicksOnly: { type: Boolean },\n minMaxTicksOnlyWhenWidthIsLess: {},\n tickFormat: { type: Function },\n tickValues: {},\n numTicks: {},\n tickTextFitMode: {},\n tickTextWidth: {},\n tickTextSeparator: {},\n tickTextForceWordBreak: { type: Boolean },\n tickTextTrimType: {},\n tickTextFontSize: {},\n tickTextAlign: {},\n tickTextColor: {},\n tickTextAngle: {},\n tickTextHideOverlapping: { type: Boolean },\n tickPadding: {},\n x: {},\n y: {},\n id: { type: Function },\n color: {},\n xScale: { type: [Object, Function] },\n yScale: { type: [Object, Function] },\n excludeFromDomainCalculation: { type: Boolean },\n duration: {},\n events: {},\n attributes: {},\n data: {}\n },\n setup(p, { expose: u }) {\n const o = x(_), a = p, n = m(() => o.data.value ?? a.data), i = F(a), t = y();\n return k(() => {\n T(() => {\n var e;\n t.value = new r(i.value), (e = t.value) == null || e.setData(n.value), o.update(t.value);\n });\n }), v(() => {\n var e;\n (e = t.value) == null || e.destroy(), o.destroy(a.type);\n }), s(i, (e, c) => {\n var l;\n g(e, c) || (l = t.value) == null || l.setConfig(i.value);\n }), s(n, () => {\n var e;\n (e = t.value) == null || e.setData(n.value);\n }), u({\n component: t\n }), (e, c) => (f(), B(\"div\", b));\n }\n});\nexport {\n M as VisAxisSelectors,\n O as default\n};\n//# sourceMappingURL=index.js.map\n","import { defineComponent as d, inject as m, computed as v, ref as f, onMounted as _, nextTick as h, onUnmounted as x, watch as u, openBlock as C, createElementBlock as k } from \"vue\";\nimport { Crosshair as i } from \"@unovis/ts\";\nimport { useForwardProps as w, arePropsEqual as y } from \"../../utils/props.js\";\nimport { crosshairAccessorKey as g } from \"../../utils/context.js\";\nconst B = { \"data-vis-crosshair\": \"\" }, q = i.selectors, A = /* @__PURE__ */ d({\n __name: \"index\",\n props: {\n data: {}\n },\n setup(l, { expose: p }) {\n const t = m(g), r = l, a = v(() => t.data.value ?? r.data), s = w(r), o = f();\n return _(() => {\n h(() => {\n var e;\n o.value = new i(s.value), (e = o.value) == null || e.setData(a.value), t.update(o.value);\n });\n }), x(() => {\n var e;\n (e = o.value) == null || e.destroy(), t.destroy();\n }), u(s, (e, n) => {\n var c;\n y(e, n) || (c = o.value) == null || c.setConfig(s.value);\n }), u(a, () => {\n var e;\n (e = o.value) == null || e.setData(a.value);\n }), p({\n component: o\n }), (e, n) => (C(), k(\"div\", B));\n }\n});\nexport {\n q as VisCrosshairSelectors,\n A as default\n};\n//# sourceMappingURL=index.js.map\n","import { defineComponent as l, inject as m, computed as v, ref as f, onMounted as y, nextTick as x, onUnmounted as g, watch as u, openBlock as _, createElementBlock as b } from \"vue\";\nimport { GroupedBar as i } from \"@unovis/ts\";\nimport { useForwardProps as h, arePropsEqual as B } from \"../../utils/props.js\";\nimport { componentAccessorKey as F } from \"../../utils/context.js\";\nconst C = { \"data-vis-component\": \"\" }, w = i.selectors, D = /* @__PURE__ */ l({\n __name: \"index\",\n props: {\n color: {},\n groupWidth: {},\n groupMaxWidth: {},\n dataStep: {},\n groupPadding: {},\n barPadding: {},\n roundedCorners: { type: [Number, Boolean] },\n barMinHeight: {},\n cursor: {},\n orientation: {},\n x: {},\n y: {},\n id: { type: Function },\n xScale: { type: [Object, Function] },\n yScale: { type: [Object, Function] },\n excludeFromDomainCalculation: { type: Boolean },\n duration: {},\n events: {},\n attributes: {},\n data: {}\n },\n setup(d, { expose: p }) {\n const t = m(F), r = d, a = v(() => t.data.value ?? r.data), n = h(r), o = f();\n return y(() => {\n x(() => {\n var e;\n o.value = new i(n.value), (e = o.value) == null || e.setData(a.value), t.update(o.value);\n });\n }), g(() => {\n var e;\n (e = o.value) == null || e.destroy(), t.destroy();\n }), u(n, (e, c) => {\n var s;\n B(e, c) || (s = o.value) == null || s.setConfig(n.value);\n }), u(a, () => {\n var e;\n (e = o.value) == null || e.setData(a.value);\n }), p({\n component: o\n }), (e, c) => (_(), b(\"div\", C));\n }\n});\nexport {\n w as VisGroupedBarSelectors,\n D as default\n};\n//# sourceMappingURL=index.js.map\n","import { defineComponent as d, inject as m, computed as v, ref as y, onMounted as f, nextTick as h, onUnmounted as x, watch as i, openBlock as _, createElementBlock as g } from \"vue\";\nimport { Line as l } from \"@unovis/ts\";\nimport { useForwardProps as B, arePropsEqual as D } from \"../../utils/props.js\";\nimport { componentAccessorKey as F } from \"../../utils/context.js\";\nconst b = { \"data-vis-component\": \"\" }, O = l.selectors, S = /* @__PURE__ */ d({\n __name: \"index\",\n props: {\n color: {},\n curveType: {},\n lineWidth: {},\n lineDashArray: {},\n fallbackValue: {},\n highlightOnHover: { type: Boolean },\n cursor: {},\n interpolateMissingData: { type: Boolean },\n x: {},\n y: {},\n id: { type: Function },\n xScale: { type: [Object, Function] },\n yScale: { type: [Object, Function] },\n excludeFromDomainCalculation: { type: Boolean },\n duration: {},\n events: {},\n attributes: {},\n data: {}\n },\n setup(u, { expose: p }) {\n const o = m(F), c = u, a = v(() => o.data.value ?? c.data), n = B(c), t = y();\n return f(() => {\n h(() => {\n var e;\n t.value = new l(n.value), (e = t.value) == null || e.setData(a.value), o.update(t.value);\n });\n }), x(() => {\n var e;\n (e = t.value) == null || e.destroy(), o.destroy();\n }), i(n, (e, r) => {\n var s;\n D(e, r) || (s = t.value) == null || s.setConfig(n.value);\n }), i(a, () => {\n var e;\n (e = t.value) == null || e.setData(a.value);\n }), p({\n component: t\n }), (e, r) => (_(), g(\"div\", b));\n }\n});\nexport {\n O as VisLineSelectors,\n S as default\n};\n//# sourceMappingURL=index.js.map\n","import { defineComponent as p, inject as m, computed as v, ref as f, onMounted as y, nextTick as x, onUnmounted as b, watch as i, openBlock as _, createElementBlock as h } from \"vue\";\nimport { StackedBar as u } from \"@unovis/ts\";\nimport { useForwardProps as B, arePropsEqual as S } from \"../../utils/props.js\";\nimport { componentAccessorKey as g } from \"../../utils/context.js\";\nconst k = { \"data-vis-component\": \"\" }, j = u.selectors, w = /* @__PURE__ */ p({\n __name: \"index\",\n props: {\n color: {},\n barWidth: {},\n barMaxWidth: {},\n dataStep: {},\n barPadding: {},\n roundedCorners: { type: [Number, Boolean] },\n cursor: {},\n barMinHeight1Px: { type: Boolean },\n barMinHeightZeroValue: {},\n orientation: {},\n x: {},\n y: {},\n id: { type: Function },\n xScale: { type: [Object, Function] },\n yScale: { type: [Object, Function] },\n excludeFromDomainCalculation: { type: Boolean },\n duration: {},\n events: {},\n attributes: {},\n data: {}\n },\n setup(d, { expose: l }) {\n const o = m(g), r = d, a = v(() => o.data.value ?? r.data), n = B(r), t = f();\n return y(() => {\n x(() => {\n var e;\n t.value = new u(n.value), (e = t.value) == null || e.setData(a.value), o.update(t.value);\n });\n }), b(() => {\n var e;\n (e = t.value) == null || e.destroy(), o.destroy();\n }), i(n, (e, c) => {\n var s;\n S(e, c) || (s = t.value) == null || s.setConfig(n.value);\n }), i(a, () => {\n var e;\n (e = t.value) == null || e.setData(a.value);\n }), l({\n component: t\n }), (e, c) => (_(), h(\"div\", k));\n }\n});\nexport {\n j as VisStackedBarSelectors,\n w as default\n};\n//# sourceMappingURL=index.js.map\n","import { defineComponent as i, inject as m, computed as f, ref as v, onMounted as g, nextTick as y, onUnmounted as b, watch as l, openBlock as _, createElementBlock as h } from \"vue\";\nimport { Donut as u } from \"@unovis/ts\";\nimport { useForwardProps as B, arePropsEqual as k } from \"../../utils/props.js\";\nimport { componentAccessorKey as w } from \"../../utils/context.js\";\nconst x = { \"data-vis-component\": \"\" }, F = u.selectors, E = /* @__PURE__ */ i({\n __name: \"index\",\n props: {\n id: { type: Function },\n value: {},\n angleRange: {},\n padAngle: {},\n sortFunction: { type: Function },\n cornerRadius: {},\n color: {},\n radius: {},\n arcWidth: {},\n centralLabel: {},\n centralSubLabel: {},\n centralSubLabelWrap: { type: Boolean },\n showEmptySegments: { type: Boolean },\n emptySegmentAngle: {},\n showBackground: { type: Boolean },\n backgroundAngleRange: {},\n centralLabelOffsetX: {},\n centralLabelOffsetY: {},\n duration: {},\n events: {},\n attributes: {},\n data: {}\n },\n setup(p, { expose: d }) {\n const o = m(w), r = p, a = f(() => o.data.value ?? r.data), n = B(r), t = v();\n return g(() => {\n y(() => {\n var e;\n t.value = new u(n.value), (e = t.value) == null || e.setData(a.value), o.update(t.value);\n });\n }), b(() => {\n var e;\n (e = t.value) == null || e.destroy(), o.destroy();\n }), l(n, (e, c) => {\n var s;\n k(e, c) || (s = t.value) == null || s.setConfig(n.value);\n }), l(a, () => {\n var e;\n (e = t.value) == null || e.setData(a.value);\n }), d({\n component: t\n }), (e, c) => (_(), h(\"div\", x));\n }\n});\nexport {\n F as VisDonutSelectors,\n E as default\n};\n//# sourceMappingURL=index.js.map\n","import { defineComponent as i, inject as p, ref as m, onMounted as u, nextTick as f, onUnmounted as d, watch as v, openBlock as _, createElementBlock as h } from \"vue\";\nimport { Tooltip as a } from \"@unovis/ts\";\nimport { useForwardProps as w, arePropsEqual as x } from \"../../utils/props.js\";\nimport { tooltipAccessorKey as y } from \"../../utils/context.js\";\nconst g = { \"data-vis-tooltip\": \"\" }, T = a.selectors, z = /* @__PURE__ */ i({\n __name: \"index\",\n props: {\n components: {},\n container: {},\n followCursor: { type: Boolean },\n allowHover: { type: Boolean },\n horizontalPlacement: {},\n horizontalShift: {},\n verticalPlacement: {},\n verticalShift: {},\n triggers: {},\n attributes: {},\n className: {},\n data: {}\n },\n setup(c, { expose: l }) {\n const r = p(y), t = w(c), o = m();\n return u(() => {\n f(() => {\n o.value = new a(t.value), r.update(o.value);\n });\n }), d(() => {\n var e;\n (e = o.value) == null || e.destroy(), r.destroy();\n }), v(t, (e, n) => {\n var s;\n x(e, n) || (s = o.value) == null || s.setConfig(t.value);\n }), l({\n component: o\n }), (e, n) => (_(), h(\"div\", g));\n }\n});\nexport {\n T as VisTooltipSelectors,\n z as default\n};\n//# sourceMappingURL=index.js.map\n","import { defineComponent as c, computed as p, ref as d, onMounted as m, nextTick as f, onUnmounted as v, watch as _, openBlock as b, createElementBlock as x } from \"vue\";\nimport { BulletLegend as u } from \"@unovis/ts\";\nimport { useForwardProps as g, arePropsEqual as k } from \"../../utils/props.js\";\nconst P = u.selectors, S = /* @__PURE__ */ c({\n __name: \"index\",\n props: {\n items: {},\n labelClassName: {},\n onLegendItemClick: { type: Function },\n labelFontSize: {},\n labelMaxWidth: {},\n bulletSize: {},\n bulletShape: {},\n orientation: {},\n renderIntoProvidedDomNode: { type: Boolean },\n data: {}\n },\n setup(s, { expose: i }) {\n const l = s;\n p(() => l.data);\n const t = g(l), o = d(), n = d();\n return m(() => {\n f(() => {\n n.value && (o.value = new u(n.value, { ...t.value, renderIntoProvidedDomNode: !0 }));\n });\n }), v(() => {\n var e;\n (e = o.value) == null || e.destroy();\n }), _(t, (e, a) => {\n var r;\n k(e, a) || (r = o.value) == null || r.update(t.value);\n }), i({\n component: o\n }), (e, a) => (b(), x(\"div\", {\n \"data-vis-bullet-legend\": \"\",\n ref_key: \"elRef\",\n ref: n\n }, null, 512));\n }\n});\nexport {\n P as VisBulletLegendSelectors,\n S as default\n};\n//# sourceMappingURL=index.js.map\n","(function(){\"use strict\";try{if(typeof document<\"u\"){var e=document.createElement(\"style\");e.appendChild(document.createTextNode(\".unovis-xy-container,.unovis-single-container{display:block;position:relative;width:100%}[data-vis-leaflet-map],[data-vis-leaflet-flow-map]{display:block;position:relative}[data-vis-bullet-legend]{display:block}\")),document.head.appendChild(e)}}catch(t){console.error(\"vite-plugin-css-injected-by-js\",t)}})();\nimport { default as l } from \"./containers/xy-container/index.js\";\n\nimport { default as V } from \"./containers/single-container/index.js\";\n/* empty css */\nimport { default as u, VisAreaSelectors as d } from \"./components/area/index.js\";\nimport { default as S, VisAxisSelectors as c } from \"./components/axis/index.js\";\nimport { default as n, VisBrushSelectors as h } from \"./components/brush/index.js\";\nimport { default as L, VisCrosshairSelectors as A } from \"./components/crosshair/index.js\";\nimport { default as D, VisFreeBrushSelectors as M } from \"./components/free-brush/index.js\";\nimport { default as g, VisGroupedBarSelectors as k } from \"./components/grouped-bar/index.js\";\nimport { default as G, VisLineSelectors as N } from \"./components/line/index.js\";\nimport { default as Y, VisScatterSelectors as b } from \"./components/scatter/index.js\";\nimport { default as y, VisStackedBarSelectors as J } from \"./components/stacked-bar/index.js\";\nimport { default as j, VisTimelineSelectors as q } from \"./components/timeline/index.js\";\nimport { default as z, VisXYLabelsSelectors as E } from \"./components/xy-labels/index.js\";\nimport { default as I, VisChordDiagramSelectors as K } from \"./components/chord-diagram/index.js\";\nimport { default as Q, VisDonutSelectors as R } from \"./components/donut/index.js\";\nimport { default as W, VisGraphSelectors as Z } from \"./components/graph/index.js\";\nimport { default as $, VisNestedDonutSelectors as ee } from \"./components/nested-donut/index.js\";\nimport { default as re, VisSankeySelectors as oe } from \"./components/sankey/index.js\";\nimport { default as ae, VisTopoJSONMapSelectors as ie } from \"./components/topojson-map/index.js\";\nimport { default as fe, VisTooltipSelectors as Ve } from \"./components/tooltip/index.js\";\nimport { default as ue, VisAnnotationsSelectors as de } from \"./components/annotations/index.js\";\nimport { default as Se, VisLeafletMapSelectors as ce } from \"./html-components/leaflet-map/index.js\";\n/* empty css */\nimport { default as ne, VisLeafletFlowMapSelectors as he } from \"./html-components/leaflet-flow-map/index.js\";\n/* empty css */\nimport { default as Le, VisBulletLegendSelectors as Ae } from \"./html-components/bullet-legend/index.js\";\n/* empty css */\nexport {\n ue as VisAnnotations,\n de as VisAnnotationsSelectors,\n u as VisArea,\n d as VisAreaSelectors,\n S as VisAxis,\n c as VisAxisSelectors,\n n as VisBrush,\n h as VisBrushSelectors,\n Le as VisBulletLegend,\n Ae as VisBulletLegendSelectors,\n I as VisChordDiagram,\n K as VisChordDiagramSelectors,\n L as VisCrosshair,\n A as VisCrosshairSelectors,\n Q as VisDonut,\n R as VisDonutSelectors,\n D as VisFreeBrush,\n M as VisFreeBrushSelectors,\n W as VisGraph,\n Z as VisGraphSelectors,\n g as VisGroupedBar,\n k as VisGroupedBarSelectors,\n ne as VisLeafletFlowMap,\n he as VisLeafletFlowMapSelectors,\n Se as VisLeafletMap,\n ce as VisLeafletMapSelectors,\n G as VisLine,\n N as VisLineSelectors,\n $ as VisNestedDonut,\n ee as VisNestedDonutSelectors,\n re as VisSankey,\n oe as VisSankeySelectors,\n Y as VisScatter,\n b as VisScatterSelectors,\n V as VisSingleContainer,\n y as VisStackedBar,\n J as VisStackedBarSelectors,\n j as VisTimeline,\n q as VisTimelineSelectors,\n fe as VisTooltip,\n Ve as VisTooltipSelectors,\n ae as VisTopoJSONMap,\n ie as VisTopoJSONMapSelectors,\n l as VisXYContainer,\n z as VisXYLabels,\n E as VisXYLabelsSelectors\n};\n//# sourceMappingURL=index.js.map\n","<script setup lang=\"ts\" generic=\"T\">\nimport { computed, createApp } from \"vue\";\nimport type { BulletLegendItemInterface, NumericAccessor } from \"@unovis/ts\";\nimport { CurveType, Position } from \"@unovis/ts\";\nimport {\n VisArea,\n VisAxis,\n VisBulletLegend,\n VisCrosshair,\n VisLine,\n VisTooltip,\n VisXYContainer,\n} from \"@unovis/vue\";\n\nimport Tooltip from \"./../Tooltip.vue\";\nimport { PaginationPosition } from \"../..\";\n\nexport type AreaChartProps<T> = {\n data: T[];\n height: number;\n xLabel?: string;\n yLabel?: string;\n categories: Record<string, BulletLegendItemInterface>;\n xFormatter: (i: number, idx: number) => string;\n yFormatter?: (i: number, idx?: number) => string | number;\n curveType?: CurveType;\n xNumTicks?: number;\n yNumTicks?: number;\n hideLegend?: boolean;\n hideTooltip?: boolean;\n gridLineX?: boolean;\n domainLineX?: boolean;\n gridLineY?: boolean;\n domainLineY?: boolean;\n paginationPoisition?: PaginationPosition;\n }\n\nconst props = withDefaults(\n defineProps<AreaChartProps<T>>(),\n {\n xNumTicks: (props) =>\n props.data.length > 24 ? 24 / 4 : props.data.length - 1,\n yNumTicks: (props) =>\n props.data.length > 24 ? 24 / 4 : props.data.length - 1,\n }\n);\n\nconst colors = Object.values(props.categories).map((c) => c.color);\n\nconst generateTooltip = computed(() => (d: T) => {\n const app = createApp(Tooltip, {\n data: d,\n categories: props.categories,\n });\n\n const container = document.createElement(\"div\");\n app.mount(container);\n\n const html = container.innerHTML;\n app.unmount();\n\n return html;\n});\n\nfunction accessors(id: string): { y: NumericAccessor<T>; color: string } {\n return {\n y: (d: T) => Number(d[id as keyof typeof d]),\n color: props.categories[id]?.color ?? \"#3b82f6\",\n };\n}\n\nconst svgDefs = colors\n .map(\n (color, index) => `\n <linearGradient id=\"gradient${index}-${color}\" gradientTransform=\"rotate(90)\">\n <stop offset=\"0%\" stop-color=\"${color}\" stop-opacity=\"1\" />\n <stop offset=\"100%\" stop-color=\"${color}\" stop-opacity=\"0\" />\n </linearGradient>\n`\n )\n .join(\"\");\n</script>\n\n<template>\n <div\n class=\"flex flex-col space-y-4\"\n :class=\"{\n 'flex-col-reverse': props.paginationPoisition === 'top',\n }\"\n >\n <VisXYContainer :data=\"data\" :height=\"height\" :svg-defs=\"svgDefs\">\n <VisTooltip\n v-if=\"!hideTooltip\"\n :horizontal-placement=\"Position.Right\"\n :vertical-placement=\"Position.Top\"\n />\n <template v-for=\"(i, iKey) in Object.keys(props.categories)\" :key=\"iKey\">\n <VisArea\n :x=\"(_: T, i: number) => i\"\n v-bind=\"accessors(i)\"\n :color=\"`url(#gradient${iKey}-${colors[iKey]})`\"\n :opacity=\"0.5\"\n :curve-type=\"curveType ?? CurveType.MonotoneX\"\n />\n <VisLine\n :x=\"(_: any, i: number) => i\"\n :y=\"(d: T) => d[i as keyof typeof d]\"\n :color=\"colors[iKey]\"\n :curve-type=\"curveType ?? CurveType.MonotoneX\"\n />\n </template>\n\n <VisAxis\n type=\"x\"\n :tick-format=\"xFormatter\"\n :num-ticks=\"xNumTicks\"\n :label=\"xLabel\"\n :grid-line=\"gridLineX\"\n :domain-line=\"domainLineX\"\n :tick-line=\"!!gridLineX\"\n />\n <VisAxis\n type=\"y\"\n :num-ticks=\"yNumTicks ?? data.length\"\n :tick-format=\"yFormatter\"\n :label=\"yLabel\"\n :grid-line=\"gridLineY\"\n :domain-line=\"domainLineY\"\n :tick-line=\"!!gridLineY\"\n />\n <VisCrosshair\n v-if=\"!hideTooltip\"\n color=\"#666\"\n :template=\"generateTooltip\"\n />\n </VisXYContainer>\n <div v-if=\"!hideLegend\" class=\"flex items center justify-end\">\n <VisBulletLegend :items=\"Object.values(categories)\" />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\" generic=\"T\">\nimport { VisXYContainer, VisAxis, VisArea, VisBulletLegend } from '@unovis/vue'\nimport { BulletLegendItemInterface, CurveType } from '@unovis/ts'\n\nexport type AreaStackedChartProps<T> = {\n data: T[];\n categories: Record<string, BulletLegendItemInterface>;\n }\n\nconst props = defineProps<AreaStackedChartProps<T>>()\n\nconst x = (d: any) => {\n return Number.parseInt(d.time)\n}\nconst y = [\n (d: any) => d.firstTime,\n (d: any) => d.returning\n]\n</script>\n\n<template>\n <div class=\"flex flex-col space-y-4\">\n <VisXYContainer\n :data=\"data\"\n :height=\"200\"\n >\n <VisArea\n :x=\"x\"\n :y=\"y\"\n :color=\"Object.values(props.categories).map((i) => i.color) \"\n :curve-type=\"CurveType.Linear\"\n />\n <VisAxis\n type=\"x\"\n label=\"Time\"\n :num-ticks=\"12\"\n\n />\n <VisAxis\n type=\"y\"\n label=\"Number of visitors\"\n :num-ticks=\"3\"\n />\n </VisXYContainer>\n <div class=\"flex items center justify-end\">\n <VisBulletLegend\n :items=\"Object.values(categories)\"\n />\n </div>\n </div>\n</template>","<script setup lang=\"ts\" generic=\"T\">\nimport { computed, createApp } from \"vue\";\n\nimport { CurveType, BulletLegendItemInterface, Position } from \"@unovis/ts\";\n\nimport Tooltip from \"./../Tooltip.vue\";\nimport { PaginationPosition } from \"../..\";\n\nimport {\n VisAxis,\n VisBulletLegend,\n VisCrosshair,\n VisLine,\n VisXYContainer,\n VisTooltip,\n} from \"@unovis/vue\";\n\nexport type LineChartProps<T> = {\n data: T[];\n height: number;\n xLabel?: string;\n yLabel?: string;\n categories: Record<string, BulletLegendItemInterface>;\n xFormatter: (i: number, idx: number) => string;\n yFormatter?: (i: number, idx: number) => string;\n curveType?: CurveType;\n yNumTicks?: number;\n xNumTicks?: number;\n paginationPosition?: PaginationPosition;\n};\n\nconst props = defineProps<LineChartProps<T>>();\n\nconst color = (key: number) => Object.values(props.categories)[key].color;\n\nconst generateTooltip = computed(() => (d: T) => {\n const app = createApp(Tooltip, {\n data: d,\n categories: props.categories,\n });\n\n const container = document.createElement(\"div\");\n app.mount(container);\n\n const html = container.innerHTML;\n app.unmount();\n\n return html;\n});\n</script>\n\n<template>\n <div\n class=\"space-y-4 flex flex-col\"\n :class=\"{\n 'flex-col-reverse': props.paginationPosition === 'top',\n }\"\n >\n <VisXYContainer :data=\"data\" :height=\"height\">\n <VisTooltip\n :horizontal-placement=\"Position.Right\"\n :vertical-placement=\"Position.Top\"\n />\n <template v-for=\"(i, iKey) in Object.keys(props.categories)\" :key=\"iKey\">\n <VisLine\n :x=\"(_: any, i: number) => i\"\n :y=\"(d: T) => d[i as keyof typeof d]\"\n :color=\"color(iKey)\"\n :curve-type=\"curveType ?? CurveType.MonotoneX\"\n />\n </template>\n <VisAxis\n type=\"x\"\n :tick-format=\"xFormatter\"\n :num-ticks=\"xNumTicks ?? 4\"\n :label=\"xLabel\"\n :label-margin=\"8\"\n :domain-line=\"false\"\n :grid-line=\"false\"\n />\n <VisAxis\n type=\"y\"\n :num-ticks=\"yNumTicks ?? 4\"\n :tick-format=\"yFormatter\"\n :label=\"yLabel\"\n :domain-line=\"false\"\n />\n <VisCrosshair color=\"#666\" :template=\"generateTooltip\" />\n </VisXYContainer>\n <div class=\"flex items center justify-end\">\n <VisBulletLegend :items=\"Object.values(categories)\" />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\" generic=\"T\">\nimport { computed, ComputedRef, createApp } from \"vue\";\nimport { BulletLegendItemInterface, GroupedBar, Orientation } from \"@unovis/ts\";\n\nimport {\n VisAxis,\n VisBulletLegend,\n VisGroupedBar,\n VisStackedBar,\n VisTooltip,\n VisXYContainer,\n} from \"@unovis/vue\";\n\nimport Tooltip from \"./../Tooltip.vue\";\nimport { PaginationPosition } from \"../..\";\n\nexport type BarChartProps<T> = {\n data: T[];\n stacked?: boolean;\n height: number;\n xLabel?: string;\n yLabel?: string;\n categories: Record<string, BulletLegendItemInterface>;\n xFormatter: (i: number, idx?: number) => string | number;\n yFormatter?: (i: number, idx?: number) => string | number;\n yNumTicks?: number;\n xNumTicks?: number;\n yAxis: (keyof T)[];\n groupPadding?: number;\n barPadding?: number;\n radius?: number;\n hideLegend?: boolean;\n orientation?: Orientation;\n paginationPosition?: PaginationPosition;\n }\n\nconst props = withDefaults(\n defineProps<BarChartProps<T>>(),\n {\n orientation: Orientation.Vertical,\n paginationPosition: PaginationPosition.Bottom\n }\n);\n\nconst yAxis: ComputedRef<((d: T) => T[keyof T])[]> = computed(() => {\n return props.yAxis.map((key) => (d: T) => {\n return d[key];\n });\n});\n\nconst color = (_: T, i: number) => Object.values(props.categories)[i].color;\n\nconst generateTooltip = computed(() => (d: T) => {\n const app = createApp(Tooltip, {\n data: d,\n categories: props.categories,\n });\n\n const container = document.createElement(\"div\");\n app.mount(container);\n\n const html = container.innerHTML;\n app.unmount();\n\n return html;\n});\n\nconst PaginationPositionTop = computed(() => props.paginationPosition === PaginationPosition.Top)\n</script>\n\n<template>\n <div\n class=\"flex flex-col space-y-4\"\n :class=\"{'flex-col-reverse' : PaginationPositionTop}\"\n >\n <VisXYContainer :height=\"height\">\n <VisTooltip\n :triggers=\"{\n [GroupedBar.selectors.bar]: generateTooltip,\n }\"\n />\n\n <VisGroupedBar\n v-if=\"!stacked\"\n :data=\"data\"\n :x=\"(_: T, i: number) => i\"\n :y=\"yAxis\"\n :grid-line=\"false\"\n :domain-line=\"false\"\n :color=\"color\"\n :rounded-corners=\"radius ?? 0\"\n :group-padding=\"groupPadding ?? 0\"\n :bar-padding=\"barPadding ?? 0.2\"\n :orientation=\"orientation ?? Orientation.Vertical\"\n />\n <VisStackedBar\n v-else\n :data=\"data\"\n :x=\"(_: T, i: number) => i\"\n :y=\"yAxis\"\n :grid-line=\"false\"\n :domain-line=\"false\"\n :color=\"color\"\n :rounded-corners=\"radius ?? 0\"\n :group-padding=\"groupPadding ?? 0\"\n :bar-padding=\"barPadding ?? 0.2\"\n :orientation=\"orientation ?? Orientation.Vertical\"\n />\n <VisAxis\n type=\"x\"\n :label=\"xLabel\"\n :grid-line=\"false\"\n :domain-line=\"false\"\n :tick-format=\"xFormatter\"\n :num-ticks=\"xNumTicks\"\n :tick-line=\"false\"\n />\n <VisAxis\n type=\"y\"\n :label=\"yLabel\"\n :grid-line=\"orientation !== Orientation.Horizontal\"\n :domain-line=\"false\"\n :tick-format=\"yFormatter\"\n />\n </VisXYContainer>\n <div v-if=\"!hideLegend\" class=\"flex items center justify-end\" :class=\"{'pb-4' : PaginationPositionTop}\">\n <VisBulletLegend :items=\"Object.values(categories)\" />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { Donut } from \"@unovis/ts\";\nimport {\n VisBulletLegend,\n VisDonut,\n VisSingleContainer,\n VisTooltip,\n} from \"@unovis/vue\";\n\nexport type DonutChartProps = {\n type?: string;\n data: number[];\n height: number;\n radius: number;\n hidePagination?: boolean\n labels: {\n name: string;\n color: string;\n }[];\n }\n\nconst props = defineProps<DonutChartProps>();\n\nconst value = (d: number) => d;\n\nconst isHalf = props.type === \"half\";\n\nconst tooltip = {\n [Donut.selectors.segment]: (d: any) => {\n console.log();\n\n return `<div class='flex items-center'><div class='w-2 h-2 rounded-full mr-2' style='background-color: ${\n props.labels[d.index].color\n } ;'></div>\n <div>${d.data}</div>\n </vistooltip>\n </vissinglecontainer>\n </div>`;\n },\n};\n</script>\n\n<template>\n <div class=\"flex items-center justify-center\">\n <VisSingleContainer\n :class=\"isHalf ? 'mt-24' : ''\"\n :data=\"data\"\n :height=\"height\"\n :margin=\"{}\"\n >\n <VisTooltip\n :horizontal-shift=\"20\"\n :vertical-shift=\"20\"\n :triggers=\"tooltip\"\n />\n\n <VisDonut\n :value=\"value\"\n :corner-radius=\"radius\"\n :color=\"props.labels.map((l) => l.color)\"\n :angle-range=\"isHalf ? [-1.5707963267948966, 1.5707963267948966] : []\"\n />\n </VisSingleContainer>\n\n <slot />\n </div>\n\n <div v-if=\"!hidePagination\" class=\"flex items-center justify-center mt-4\">\n <VisBulletLegend :items=\"labels\" />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { BulletLegendItemInterface } from '@unovis/ts'\nimport { omit } from '@unovis/ts'\nimport { VisCrosshair, VisTooltip } from '@unovis/vue'\nimport { type Component, createApp } from 'vue'\n\nconst props = withDefaults(defineProps<{\n colors: string[]\n index: string\n items: BulletLegendItemInterface[]\n customTooltip?: Component\n}>(), {\n colors: () => [],\n})\n\n// Use weakmap to store reference to each datapoint for Tooltip\nconst wm = new WeakMap()\nfunction template(d: any) {\n if (wm.has(d)) {\n return wm.get(d)\n }\n else {\n if (typeof window !== 'undefined') {\n const componentDiv = document.createElement('div')\n const omittedData = Object.entries(omit(d, [props.index])).map(([key, value]) => {\n const legendReference = props.items.find(i => i.name === key)\n return { ...legendReference, value }\n })\n const TooltipComponent = props.customTooltip ?? VisTooltip\n createApp(TooltipComponent, { title: d[props.index].toString(), data: omittedData }).mount(componentDiv)\n wm.set(d, componentDiv.innerHTML)\n return componentDiv.innerHTML\n }\n\n }\n}\n\nfunction color(_: unknown, i: number) {\n return props.colors[i] ?? 'transparent'\n}\n</script>\n\n<template>\n <VisTooltip :horizontal-shift=\"20\" :vertical-shift=\"20\" />\n <VisCrosshair :template=\"template\" :color=\"color\" />\n</template>","export * from \"./components\";\n\nexport enum PaginationPosition {\n Top = \"top\",\n Bottom = \"bottom\",\n}\n"],"names":["xhtml","namespaces","namespace","name","prefix","i","creatorInherit","document","uri","creatorFixed","fullname","creator","none","selector","selection_select","select","groups","m","subgroups","j","group","n","subgroup","node","subnode","Selection","array","x","empty","selectorAll","arrayAll","selection_selectAll","parents","matcher","childMatcher","find","childFind","match","childFirst","selection_selectChild","filter","children","childrenFilter","selection_selectChildren","selection_filter","sparse","update","selection_enter","EnterNode","parent","datum","child","next","constant$2","bindIndex","enter","exit","data","groupLength","dataLength","bindKey","key","nodeByKeyValue","keyValues","keyValue","selection_data","value","bind","constant","arraylike","enterGroup","updateGroup","exitGroup","i0","i1","previous","selection_exit","selection_join","onenter","onupdate","onexit","selection_merge","context","selection","groups0","groups1","m0","m1","merges","group0","group1","merge","selection_order","selection_sort","compare","ascending","compareNode","a","b","sortgroups","sortgroup","selection_call","callback","selection_nodes","selection_node","selection_size","size","selection_empty","selection_each","attrRemove","attrRemoveNS","attrConstant","attrConstantNS","attrFunction","v","attrFunctionNS","selection_attr","defaultView","styleRemove","styleConstant","priority","styleFunction","selection_style","styleValue","propertyRemove","propertyConstant","propertyFunction","selection_property","classArray","string","classList","ClassList","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","selection_classed","textRemove","textConstant","textFunction","selection_text","htmlRemove","htmlConstant","htmlFunction","selection_html","raise","selection_raise","lower","selection_lower","selection_append","create","constantNull","selection_insert","before","remove","selection_remove","selection_cloneShallow","clone","selection_cloneDeep","selection_clone","deep","selection_datum","contextListener","listener","event","parseTypenames","typenames","t","onRemove","typename","on","onAdd","options","o","selection_on","dispatchEvent","type","params","window","dispatchConstant","dispatchFunction","selection_dispatch","selection_iterator","root","selection_selection","sourceEvent","pointer","svg","point","rect","ComponentType","Sizing","descending","bisector","f","compare1","compare2","delta","d","zero","left","lo","hi","mid","right","center","number","ascendingBisect","bisectRight","extent","values","valueof","min","max","InternMap","entries","keyof","intern_get","intern_set","intern_delete","_intern","_key","e10","e5","e2","tickSpec","start","stop","count","step","power","error","factor","i2","inc","ticks","reverse","tickIncrement","tickStep","index","quantileSorted","p","value0","value1","mean","sum","flatten","arrays","range","throttle","delay","_ref","_ref$noTrailing","noTrailing","_ref$noLeading","noLeading","_ref$debounceMode","debounceMode","timeoutID","cancelled","lastExec","clearExistingTimeout","cancel","_ref2","_ref2$upcomingOnly","upcomingOnly","wrapper","_len","arguments_","self","elapsed","exec","clear","isNumber","isFunction","isArray","isObject","isAClassInstance","isPlainObject","isEmpty","obj","isEqual","skipKeys","visited","keysA","keysB","arr","cloneDeep","stack","item","objAsRecord","newObj","obj1","obj2","omit","props","prop","throttle$1","getValue","accessor","getString","getNumber","clean","clamp","getStackedExtent","acs","minValue","maxValue","positiveStack","negativeStack","getStackedValues","getStackedData","baseline","prevNegative","baselineValues","isNegativeStack","average","stackedData","getMin","getMax","getExtent","getNearest","xBisector","filterDataByRange","resizeObservers","hasActiveObservations","ro","hasSkippedObservations","msg","deliverResizeLoopError","ResizeObserverBoxOptions","freeze","ResizeObserverSize","inlineSize","blockSize","DOMRectReadOnly","y","width","height","_a","top","bottom","rectangle","isSVG","target","isHidden","_b","offsetWidth","offsetHeight","isElement","scope","isReplacedElement","global","cache","scrollRegexp","verticalRegexp","IE","parseDimension","pixel","switchSizes","zeroBoxes","calculateBoxSizes","forceRecalculation","cs","removePadding","canScrollVertically","canScrollHorizontally","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTop","borderRight","borderBottom","borderLeft","horizontalPadding","verticalPadding","horizontalBorderArea","verticalBorderArea","horizontalScrollbarThickness","verticalScrollbarThickness","widthReduction","heightReduction","contentWidth","contentHeight","borderBoxWidth","borderBoxHeight","boxes","calculateBoxSize","observedBox","borderBoxSize","contentBoxSize","devicePixelContentBoxSize","ResizeObserverEntry","calculateDepthForNode","depth","broadcastActiveObservations","shallowestDepth","callbacks","ot","entry","targetDepth","_i","callbacks_1","gatherActiveObservationsAtDepth","process","trigger","notify","cb","queueMicroTask","toggle_1","el_1","config","queueResizeObserver","watching","isWatching","CATCH_PERIOD","observerConfig","events","time","timeout","scheduled","Scheduler","_this","until","elementsHaveResized","scheduler","updateCount","skipNotifyOnElement","ResizeObservation","ResizeObserverDetail","resizeObserver","observerMap","getObservationIndex","observationTargets","ResizeObserverController","detail","firstObservation","lastObservation","ResizeObserver","ResizeObserver$1","ContainerDefaultConfig","ContainerCore","element","container","duration","containerRect","observer","resizedContainerRect","resizedContainerSize","sheetForTag","tag","createStyleElement","StyleSheet","_proto","nodes","rule","sheet","_tag$parentNode","MS","MOZ","WEBKIT","COMMENT","RULESET","DECLARATION","IMPORT","KEYFRAMES","LAYER","abs","from","assign","hash","length","charat","trim","pattern","replace","replacement","indexof","search","substr","begin","end","strlen","sizeof","append","combine","line","column","position","character","characters","copy","char","prev","peek","caret","slice","token","alloc","dealloc","delimit","delimiter","whitespace","escaping","commenter","identifier","compile","parse","rules","rulesets","pseudo","points","declarations","offset","atrule","property","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","k","z","serialize","output","stringify","middleware","collection","rulesheet","memoize","fn","arg","identifierWithPointTracking","toRules","parsed","getRules","fixedElements","compat","isImplicitRule","parentRules","removeLabel","prefixer","defaultStylisPlugins","createCache","ssrStyles","dataEmotionAttribute","stylisPlugins","inserted","nodesToHydrate","attrib","_insert","omnipresentPlugins","currentSheet","finalizingPlugins","serializer","stylis","styles","serialized","shouldCache","murmur2","str","h","len","unitlessKeys","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","p1","p2","cursor","unitless","handleInterpolation","mergedProps","registered","interpolation","componentSelector","keyframes","serializedStyles","createStringFromObject","asString","cached","interpolated","labelPattern","serializeStyles","args","stringMode","strings","asTemplateStringsArr","templateStringsArr","identifierName","hashString","getRegisteredStyles","registeredStyles","classNames","rawClassName","className","registerStyles","isStringTag","insertStyles","current","insertWithoutScoping","css","createEmotion","_len2","_key2","animation","injectGlobal","_len3","_key3","cx","_len4","_key4","classnames","ids","cls","toAdd","_createEmotion","parseUnit","out","num","require$$0","browser","toPX","PIXELS_PER_INCH","getSizeBrutal","getPropertyInPX","parts","unit","testDIV","px","guid","s4","getCSSVariableValue","s","variableName","rectIntersect","rect1","rect2","tolerancePx","left1","top1","right1","bottom1","left2","top2","right2","bottom2","define","constructor","factory","prototype","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","color","channels","color_formatHex","color_formatHex8","color_formatHsl","color_formatRgb","hslConvert","format","l","rgbn","Rgb","rgba","hsla","r","g","rgbConvert","rgb","opacity","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","hex","Hsl","hsl","m2","hsl2rgb","clamph","clampt","colors","colorsDark","getCSSColorVariable","suffix","getLighterColor","percentage","c","getDarkerColor","percentageL","percentageS","PATTERN_SIZE_PX","fills","lines","getPatternVariable","maskDef","markerDef","injectSVGDefs","svgDefs","UNOVIS_FONT_WH_RATIO_DEFAULT","UNOVIS_TEXT_SEPARATOR_DEFAULT","UNOVIS_TEXT_HYPHEN_CHARACTER_DEFAULT","UNOVIS_TEXT_DEFAULT","_","getFontWidthToHeightRatio","noop","dispatch","Dispatch","types","T","get","set","that","frame","interval","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","now","clearNow","Timer","timer","sleep","timerFlush","wake","nap","poke","t0","t1","t2","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","id","timing","schedules","init","tween","tick","interrupt","active","selection_interrupt","constant$1","linear","exponential","gamma","nogamma","interpolateRgb","rgbGamma","colorRgb","numberArray","isNumberArray","genericArray","nb","na","date$1","interpolateNumber","object","reA","reB","one","interpolateString","bi","am","bm","bs","q","interpolate$1","date","interpolateRound","degrees","identity","decompose","e","scaleX","scaleY","skewX","svgNode","parseCss","parseSvg","interpolateTransform","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","rotate","scale","interpolateTransformCss","interpolateTransformSvg","piecewise","interpolate","I","tweenRemove","tween0","tween1","tweenFunction","transition_tween","tweenValue","transition","string00","string1","interpolate0","string0","string10","transition_attr","attrInterpolate","attrInterpolateNS","attrTweenNS","attrTween","transition_attrTween","delayFunction","delayConstant","transition_delay","durationFunction","durationConstant","transition_duration","easeConstant","transition_ease","easeVarying","transition_easeVarying","transition_filter","Transition","transition_merge","onFunction","on0","on1","sit","transition_on","removeFunction","transition_remove","transition_select","transition_selectAll","inherit","transition_selection","styleNull","style","styleMaybeRemove","listener0","transition_style","styleInterpolate","styleTween","transition_styleTween","transition_text","textInterpolate","textTween","transition_textTween","transition_transition","id0","id1","newId","transition_end","resolve","reject","selection_prototype","cubicInOut","defaultTiming","easeCubicInOut","selection_transition","smartTransition","easing","SingleContainerDefaultConfig","SingleContainer","preventRender","containerConfig","tooltip","annotations","componentConfig","component","extendedSizeComponent","componentWidth","fitToWidth","componentHeight","currentWidth","currentHeight","scaledWidth","scaledHeight","animated","CoreDataModel","AxisType","initRange","domain","initInterpolator","interpolator","implicit","ordinal","unknown","band","ordinalRange","r0","r1","bandwidth","round","paddingInner","paddingOuter","align","rescale","sequence","pointish","constants","normalize","clamper","bimap","d0","d1","polymap","bisect","source","transformer","interpolateValue","transform","untransform","input","u","continuous","formatDecimal","formatDecimalParts","coefficient","exponent","formatGroup","grouping","thousands","formatNumerals","numerals","re","formatSpecifier","specifier","FormatSpecifier","formatTrim","prefixExponent","formatPrefixAuto","formatRounded","formatTypes","identity$3","map","prefixes","formatLocale$1","locale","currencyPrefix","currencySuffix","decimal","percent","minus","nan","newFormat","fill","sign","symbol","comma","precision","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","padding","formatPrefix","defaultLocale","formatLocale","precisionFixed","precisionPrefix","precisionRound","tickFormat","linearish","prestep","maxIter","nice","x0","x1","transformLog","transformExp","transformLogn","transformExpn","pow10","powp","base","logp","reflect","loggish","logs","pows","log","transformSymlog","transformSymexp","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","pow","sqrt","quantile","thresholds","threshold","quantize","timeInterval","floori","offseti","field","test","millisecond","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","second","timeMinute","utcMinute","timeHour","utcHour","timeDay","utcDay","unixDay","timeWeekday","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","utcMonth","timeYear","utcYear","ticker","year","month","week","day","hour","minute","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","utcDate","newDate","locale_dateTime","locale_date","locale_time","locale_periods","locale_weekdays","locale_shortWeekdays","locale_months","locale_shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","formatMonth","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatQuarter","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCQuarter","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseZone","parseLiteralPercent","pad","pads","newParse","Z","parseSpecifier","numberRe","percentRe","requoteRe","requote","dISO","dow","UTCdISO","timeFormat","utcFormat","calendar","invert","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","timeWeek","timeSecond","utcTime","utcWeek","utcSecond","k10","sequential","x2","k21","r2","diverging","Scale","scaleLinear","scalePow","scaleSqrt","scaleLog","scaleSymlog","scaleIdentity","scaleTime","scaleUtc","scaleSequential","scaleDiverging","scaleQuantize","scaleQuantile","scaleThreshold","scaleOrdinal","scaleBand","scalePoint","ScaleDimension","Direction","XYContainerDefaultConfig","XYContainer","highlightFilterId","baseUrl","margin","_c","_d","components","crosshair","componentConfigs","customDuration","_e","clipPathExtension","yAccessors","yStackedAccessors","baselineComponentConfig","baselineAccessor","componentsWithDomain","dimension","_f","_g","_h","configuredDomain","configuredDomainMinConstraint","configuredDomainMaxConstraint","domainMin","domainMax","hasDataProvided","isYDirectionSouth","xRange","yRange","bleed","xAxis","yAxis","axis","numIterations","axisMargin","ComponentDefaultConfig","ComponentCore","rootClass","containerWidth","containerHeight","ANIMATING_ATTR","attributeMap","attr","eventType","els","eventFunction","SeriesDataModel","XYComponentDefaultConfig","XYComponentCore","scaleByVisibleData","datamodel","Position","PositionStrategy","Arrangement","Orientation","TooltipDefaultConfig","variables","positionFixed","show","hidden","nonInteractive","Tooltip","html","pos","tooltipWidth","tooltipHeight","horizontalPlacement","verticalPlacement","translateX","translateY","hoveredElement","isContainerBody","hoveredElementRect","elementPos","placement","prevConfig","paddingX","hitRight","hitLeft","constrainedLeft","paddingY","hitBottom","hitTop","constrainedTop","path","template","el","content","attributesMap","atan2","cos","sin","epsilon","pi","halfPi","tau","acos","asin","tauEpsilon","appendRound","digits","Path","y1","y2","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","a0","a1","ccw","dx","dy","cw","da","w","withPath","shape","arcInnerRadius","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","intersect","x3","y3","x10","y10","x32","y32","cornerTangents","rc","ox","oy","x11","y11","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","arc","innerRadius","outerRadius","cornerRadius","padRadius","startAngle","endAngle","padAngle","buffer","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","oc","ax","ay","bx","by","kc","lc","Linear","curveLinear","line$2","defined","curve","pointX","pointY","defined0","area$1","area","x0z","y0z","arealine","identity$1","pie","sortValues","sort","arcs","pa","symbolCircle","symbolCross","tan30","tan30_2","symbolDiamond","symbolSquare","ka","kr","kx","ky","symbolStar","sqrt3","symbolTriangle","symbolWye","Symbol","circle","Basis","curveBasis","BasisClosed","curveBasisClosed","BasisOpen","curveBasisOpen","Bundle","beta","curveBundle","custom","bundle","Cardinal","tension","curveCardinal","cardinal","CardinalClosed","curveCardinalClosed","CardinalOpen","curveCardinalOpen","CatmullRom","alpha","x23","y23","curveCatmullRom","catmullRom","CatmullRomClosed","curveCatmullRomClosed","CatmullRomOpen","curveCatmullRomOpen","LinearClosed","curveLinearClosed","slope3","h0","h1","s0","s1","slope2","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","py","curveNatural","Step","curveStep","stepBefore","stepAfter","ownKeys","enumerableOnly","keys","symbols","sym","_objectSpread2","_defineProperty","_typeof","_extends","_unsupportedIterableToArray","minLen","_arrayLikeToArray","arr2","_createForOfIteratorHelper","allowArrayLike","it","F","normalCompletion","didErr","err","decasteljau","decasteljauRecurse","newPoints","pointsToCommand","command","splitCurveAsPoints","segmentCount","segments","remainingCurve","tIncrement","tRelative","split","splitCurve","commandStart","commandEnd","commandTokenRegex","typeMap","arrayOfLength","commandToString","convertToSameType","aCommand","bCommand","conversionMap","readFromBKeys","aConverted","bKey","bValue","aValue","splitSegment","copyCommand","commandsToExtend","referenceCommands","excludeSegment","numSegmentsToExtend","numReferenceSegments","segmentRatio","countPointsPerSegment","accum","insertIndex","addToPriorSegment","extended","lastCommandCopies","pathCommandsFromString","tokens","commands","commandArgs","interpolatePathCommands","aCommandsInput","bCommandsInput","interpolateOptions","aCommands","bCommands","snapEndsToInput","addZ","numPointsToExtend","interpolatedCommands","interpolatedCommand","_iterator","_step","interpolatePath","commandInterpolator","interpolatedString","_iterator2","_step2","getColor","dontFallbackToCssVar","CurveType","Curve","curveMonotoneX","curveMonotoneY","curveStepAfter","curveStepBefore","LineDefaultConfig","globalStyles","linePath","lineSelectionHelper","dim","interpolatedPath","Line","lineWidth","yDomain","isLineThick","isLineVeryThick","lineDataX","lineData","ld","rawValue","def","validGap","gaps","acc","isEndpoint","visible","line$1","linesEnter","linesMerged","elements","linePath$1","lineSelectionHelper$1","lineGaps","isLineVisible","dashArray","hasUndefinedSegments","svgPathD","roundedRectPath","tl","tr","bl","br","roundedR","angularR","StackedBarDefaultConfig","bar","barGroup","barGroupExit","StackedBar","isHorizontalAndFlipped","dataDomain","halfGroupWidth","dataScaleValues","firstDataValue","lastDataValue","firstValuePx","lastValuePx","dataDomainRequiredStart","dataDomainRequiredEnd","bleedPxStart","bleedPxEnd","stacked","barGroups","getBarGroupsTransform","barGroupsMerged","barGroupExit$1","bars","stackIndex","barsMerged","isOrdinal","dataSize","barWidth","groupWidth","halfGroupWidthPx","accessorIndex","isEntering","isNegative","isEnding","cornerRadiusClamped","isNorthDirected","GroupedBarDefaultConfig","GroupedBar","innerBandScaleRange","innerBandScale","valueAxisDirection","dir","dataScale","xHalfGroupWidth","direction","roundedTop","roundedBottom","roundedLeft","roundedRight","entering","orient","tickArguments","tickValues","tickSizeInner","tickSizeOuter","tickPadding","spacing","range0","range1","tickExit","tickEnter","text","axisTop","axisRight","axisBottom","axisLeft","TrimMode","VerticalAlign","FitMode","TextAlign","STATE_PLAINTEXT","STATE_HTML","STATE_COMMENT","ALLOWED_TAGS_REGEX","NORMALIZE_TAG_REGEX","striptags","allowable_tags","tag_replacement","init_context","striptags_internal","init_striptags_stream","parse_allowable_tags","state","tag_buffer","in_quote_char","idx","normalize_tag","tag_set","module","this","getTextAnchorFromTextAlign","textAlign","kebabCase","escapeStringKeepHash","trimStringStart","maxLength","trimStringMiddle","dist","trimStringEnd","trimString","result","splitString","separators","sep","separated","words","word","wrapSVGText","textElement","separator","tspan","tspanContent","tspanText","trimSVGText","svgTextSelection","maxWidth","trimType","fastMode","fontSize","fontWidthToHeightRatio","textLength","textWidth","maxCharacters","estimateStringPixelLength","getPreciseStringLengthPx","fontFamily","svgNS","breakTextIntoLines","textBlock","wordBreak","minCharactersOnLine","breakIndex","subLine","getWrappedText","textArrays","textWrapped","block","firstBlock","blocks","prevBlock","prevBlockMarginBottomPx","marginTopPx","effectiveMarginPx","dh","lineWithEllipsis","textLengthPx","renderTextToTspanStrings","prevBlockMarginBottomEm","marginTopEm","marginEm","attributes","estimateWrappedTextHeight","allowedSvgTextTags","renderTextToSvgTextElement","trimmed","wrappedText","textElementX","textElementY","parser","svgCode","svgCodeSanitized","parsedSvgCode","AxisDefaultConfig","hideTickLine","hideDomain","grid","label","tickLabel","tickLabelHideable","Axis","axisRenderHelperGroup","axisSize","xEnd","bleedY","containerMargin","gridGen","axisGen","tickText","tickValue","textMaxWidth","styleDeclaration","textOptions","textElementSelection","tickTextSelection","label1","label1BoundingRect","label2","label2BoundingRect","numTicks","scaleDomain","tickSize","label$1","labelMargin","labelFontSize","axisPosition","axisWidth","axisHeight","offsetX","offsetY","marginX","marginY","rotation","tickTextAlign","tickTextAngle","textAnchor","translateValue","SymbolType","BulletShape","BulletLegendOrientation","BulletLegendDefaultConfig","BULLET_SIZE","shapeScale","createBullets","updateBullets","colorAccessor","bulletPath","symbolGen","itemVertical","clickable","bullet","BulletLegend","legendItems","legendItemsEnter","legendItemsMerged","onLegendItemClick","CrosshairDefaultConfig","Crosshair","accessors","hasConfig","yAcc","yStacked","containerSvg","easeLinear","circleData","circles","circlesEnter","valueX","xRelative","baselineValue","stackedValues","regularValues","AreaDefaultConfig","Area","curveGen","isSmallerThanPixel","areaDataX","areaMaxIdx","stackedDataReversed","areas","areasEnter","areasMerged","DonutDefaultConfig","createArc","arcNode","angleCenter","angleHalfWidth","updateArc","arcGen","setOpacity","nextAnimState","removeArc","DONUT_HALF_ANGLE_RANGES","DONUT_HALF_ANGLE_RANGE_TOP","DONUT_HALF_ANGLE_RANGE_RIGHT","DONUT_HALF_ANGLE_RANGE_BOTTOM","DONUT_HALF_ANGLE_RANGE_LEFT","background","segment","segmentExit","centralLabel","centralSubLabel","Donut","_j","_k","_l","_m","_o","_p","isHalfDonutTop","isHalfDonutRight","isHalfDonutBottom","isHalfDonutLeft","angleRange","isVerticalHalfDonut","isHorizontalHalfDonut","arcData","arcsSelection","arcsEnter","arcsMerged","labelTextAnchor","labelTranslateX","labelTranslateY","labelTranslate","$","B","M","R","K","A","C","P","O","S","E","__props","generateTooltip","computed","app","createApp","PaginationPositionTop","PaginationPosition","isHalf","wm","componentDiv","omittedData","TooltipComponent","VisTooltip"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,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,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316]}
|