{"version":3,"sources":["webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/bootstrap-vue/esm/components/skeleton/skeleton.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/oc-lnc.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/bootstrap-vue/esm/components/aspect/aspect.js","webpack:///./node_modules/bootstrap-vue/esm/components/skeleton/skeleton-img.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/zh-mo.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/ar-ps.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/tk.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/components/av-skeleton/charts/AvSkeletonChartBar.vue?26d7","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/bootstrap-vue/esm/components/skeleton/skeleton-wrapper.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/ku-kmr.js","webpack:///./src/views/dashboard/kpi/Kpi.vue?cd8b","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/core-js/internals/array-fill.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./src/components/av-skeleton/structures/AvSkeletonBoard.vue?2793","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/bn-bd.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./src/components/av-skeleton/table/AvSkeletonTable.vue?348c","webpack:///./node_modules/moment/locale/gom-deva.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./src/views/dashboard/kpi/Kpi.vue?6fc5","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/es-mx.js","webpack:///./node_modules/moment/locale/en-sg.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/core-js/modules/es.array.fill.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/fil.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./src/components/av-skeleton/cards/AvSkeletonCard.vue","webpack:///./src/components/av-skeleton/cards/AvSkeletonCard.vue?2627","webpack:///./src/components/av-skeleton/cards/AvSkeletonCard.vue?9424","webpack:///./src/components/av-skeleton/cards/AvSkeletonCard.vue?876c","webpack:///./src/components/av-skeleton/inputs/AvSkeletonInput.vue","webpack:///./src/components/av-skeleton/inputs/AvSkeletonInput.vue?4009","webpack:///./src/components/av-skeleton/inputs/AvSkeletonInput.vue?5170","webpack:///./src/components/av-skeleton/inputs/AvSkeletonInput.vue?0d39","webpack:///./src/components/av-skeleton/media-tabs/AvSkeletonMediaTabs.vue","webpack:///./src/components/av-skeleton/media-tabs/AvSkeletonMediaTabs.vue?c6ab","webpack:///./src/components/av-skeleton/media-tabs/AvSkeletonMediaTabs.vue?3496","webpack:///./src/components/av-skeleton/media-tabs/AvSkeletonMediaTabs.vue?f81f","webpack:///./src/components/av-skeleton/structures/AvSkeletonBoard.vue","webpack:///./src/components/av-skeleton/structures/AvSkeletonBoard.vue?22e0","webpack:///./src/components/av-skeleton/structures/AvSkeletonBoard.vue?5410","webpack:///./src/components/av-skeleton/structures/AvSkeletonBoard.vue?b5f4","webpack:///./src/components/av-skeleton/table/AvSkeletonTable.vue","webpack:///src/components/av-skeleton/table/AvSkeletonTable.vue","webpack:///./src/components/av-skeleton/table/AvSkeletonTable.vue?cf7a","webpack:///./src/components/av-skeleton/table/AvSkeletonTable.vue?90fd","webpack:///./src/components/av-skeleton/vertical-nav-menu/AvSkeletonVerticalNavMenu.vue","webpack:///./src/components/av-skeleton/vertical-nav-menu/AvSkeletonVerticalNavMenu.vue?770e","webpack:///./src/components/av-skeleton/vertical-nav-menu/AvSkeletonVerticalNavMenu.vue?f5fd","webpack:///./src/components/av-skeleton/vertical-nav-menu/AvSkeletonVerticalNavMenu.vue?dafe","webpack:///./src/components/av-skeleton/charts/AvSkeletonChartBar.vue","webpack:///./src/components/av-skeleton/charts/AvSkeletonChartBar.vue?4f0b","webpack:///./src/components/av-skeleton/charts/AvSkeletonChartBar.vue?8900","webpack:///./src/components/av-skeleton/charts/AvSkeletonChartBar.vue?c772","webpack:///./src/components/av-skeleton/charts/AvSkeletonChartPie.vue","webpack:///./src/components/av-skeleton/charts/AvSkeletonChartPie.vue?ac76","webpack:///./src/components/av-skeleton/charts/AvSkeletonChartPie.vue?d474","webpack:///./src/components/av-skeleton/charts/AvSkeletonChartPie.vue?14ee","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/en-in.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./src/components/av-skeleton/charts/AvSkeletonChartPie.vue?bba0","webpack:///./src/views/dashboard/kpi/Kpi.vue","webpack:///./src/components/av-charts/bar/AvChartBar.vue","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Percent.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Type.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Array.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Object.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Disposer.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Utils.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Color.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/EventDispatcher.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Animation.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/List.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Children.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Math.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Ease.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/States.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/Registry.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Order.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Entity.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Template.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Sprite.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/patterns/Pattern.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/patterns/PicturePattern.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/backend/Renderer.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Graphics.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Rectangle.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Layout.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/HorizontalLayout.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/VerticalLayout.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/GridLayout.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/TextFormatter.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/PopulateString.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Container.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Text.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/ResizeSensor.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/InterfaceColors.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Label.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/PointedRectangle.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Tooltip.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/NumberFormatter.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Timezone.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/DateFormatter.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/DurationFormatter.js","webpack:///./node_modules/@amcharts/amcharts5/locales/en.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Language.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/Theme.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/themes/DefaultTheme.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Matrix.js","webpack:///./node_modules/svg-arc-to-cubic-bezier/modules/index.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/backend/CanvasRenderer.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/Root.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Modal.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Bullet.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/RoundedRectangle.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Button.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Circle.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Polygon.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Ellipse.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Star.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Data.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Component.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/ZoomableContainer.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/gradients/Gradient.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/gradients/LinearGradient.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/HeatLegend.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/EditableLabel.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Time.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Series.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Legend.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Draw.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Line.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Picture.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/RadialText.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/RadialLabel.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Triangle.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Scrollbar.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Slider.js","webpack:///./node_modules/d3-shape/src/constant.js","webpack:///./node_modules/d3-shape/src/math.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-shape/src/path.js","webpack:///./node_modules/d3-shape/src/arc.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Slice.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Chart.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/SerialChart.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Tick.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/ZoomTools.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/patterns/GrainPattern.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/gradients/RadialGradient.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/patterns/CirclePattern.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/patterns/LinePattern.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/patterns/RectanglePattern.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/patterns/PathPattern.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/PatternSet.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/ColorSet.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/DataParser.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/DataProcessor.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/SpriteResizer.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Net.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/XYChartDefaultTheme.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/XYChart.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/XYChartScrollbar.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/Grid.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/XYCursor.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/XYSeries.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/BaseColumnSeries.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/Axis.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/ValueAxis.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/CategoryAxis.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/CategoryDateAxis.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/DateAxis.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/GaplessDateAxis.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/DurationAxis.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisBullet.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisLabel.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisLabelRadial.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisTick.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisRenderer.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererX.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererY.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/Candlestick.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/ColumnSeries.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/CandlestickSeries.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/OHLC.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/OHLCSeries.js","webpack:///./node_modules/d3-shape/src/array.js","webpack:///./node_modules/d3-shape/src/curve/linear.js","webpack:///./node_modules/d3-shape/src/point.js","webpack:///./node_modules/d3-shape/src/line.js","webpack:///./node_modules/d3-shape/src/area.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/LineSeries.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/MonotoneYTension.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/SmoothedYLineSeries.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/MonotoneXTension.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/SmoothedXLineSeries.js","webpack:///./node_modules/d3-shape/src/curve/cardinal.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/SmoothedXYLineSeries.js","webpack:///./node_modules/d3-shape/src/curve/step.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/StepLineSeries.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/themes/ResponsiveTheme.js","webpack:///./node_modules/@amcharts/amcharts5/themes/Responsive.js","webpack:///./node_modules/@amcharts/amcharts5/locales/pt_PT.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/themes/AnimatedTheme.js","webpack:///./node_modules/@amcharts/amcharts5/themes/Animated.js","webpack:///./src/components/av-charts/bar/AvChartBar.vue?1c60","webpack:///./src/components/av-charts/bar/AvChartBar.vue?c6c5","webpack:///./src/components/av-charts/bar/AvChartBar.vue?0e54","webpack:///./src/components/av-charts/pie/AvChartPie.vue","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/percent/PercentDefaultTheme.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/percent/PercentChart.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/pie/PieChart.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/percent/PercentSeries.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/pie/PieSeries.js","webpack:///./src/components/av-charts/pie/AvChartPie.vue?66da","webpack:///./src/components/av-charts/pie/AvChartPie.vue?93ab","webpack:///./src/components/av-charts/pie/AvChartPie.vue?8884","webpack:///./src/components/av-charts/range/AvChartRange.vue","webpack:///./src/components/av-charts/range/AvChartRange.vue?cc68","webpack:///./src/components/av-charts/range/AvChartRange.vue?c627","webpack:///./src/components/av-charts/range/AvChartRange.vue?d1db","webpack:///./node_modules/@amcharts/amcharts5/.internal/plugins/exporting/Exporting.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/plugins/exporting/ExportingCSS.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/plugins/exporting/ExportingMenu.js","webpack:///./src/views/dashboard/kpi/useExport.ts","webpack:///./src/views/dashboard/kpi/Kpi.vue?5879","webpack:///./src/views/dashboard/kpi/Kpi.vue?63b3","webpack:///./src/views/dashboard/kpi/Kpi.vue?1f58","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/se.js"],"names":["global","factory","this","moment","uzLatn","defineLocale","months","split","monthsShort","weekdays","weekdaysShort","weekdaysMin","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","s","ss","m","mm","h","hh","d","dd","M","MM","y","yy","week","dow","doy","ml","monthsParseExact","meridiemParse","meridiemHour","hour","meridiem","minute","isLower","cv","output","affix","exec","dayOfMonthOrdinalParse","ordinal","plural","n","translate","number","withoutSuffix","key","isFuture","result","is","fo","ja","eras","since","offset","name","narrow","abbr","until","Infinity","eraYearOrdinalRegex","eraYearOrdinalParse","input","match","parseInt","l","ll","lll","llll","isPM","now","period","_defineProperty","obj","value","Object","defineProperty","enumerable","configurable","writable","props","animation","height","size","type","variant","width","BSkeleton","extend","functional","render","_ref","_class","data","staticClass","style","class","concat","monthsShortDot","monthsParse","monthsRegex","esDo","format","test","month","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","weekdaysParseExact","hours","w","ww","arMa","processRelativeTime","gomLatn","standalone","isFormat","frCh","enAu","b","suffixes","1","5","8","70","80","2","7","20","50","3","4","100","6","9","10","30","60","90","tr","minutes","a","c","da","tlPh","eu","th","translator","words","correctGrammaticalCase","wordKey","word","length","srCyrl","day","lastWeekDays","ocLnc","mt","symbolMap","0","pluralForm","plurals","pluralize","u","string","f","str","replace","arLy","preparse","postformat","num","forms","relativeTimeWithPlural","be","ka","$0","$1","$2","ko","token","isUpper","numberMap","ku","bs","units","translateSeconds","translateSingular","special","lt","vi","me","af","uz","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","prototype","toString","call","slice","constructor","Array","from","len","arr2","Symbol","iterator","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","err","isArray","CLASS_NAME","aspect","tag","BAspect","mixins","computed","padding","ratio","_aspect$split$map","map","v","_aspect$split$map2","math","$sizer","paddingBottom","$content","marginLeft","normalizeSlot","cardImg","noAspect","BSkeletonImg","$img","enCa","enGb","relativeTimeMr","mr","ne","zhMo","hm","12","13","40","tg","cs","ta","kn","arKw","processFutureTime","substr","indexOf","eifelerRegelAppliesToNumber","processPastTime","isNaN","lastDigit","firstDigit","lb","webpackContext","req","id","webpackContextResolve","__webpack_require__","e","Error","code","keys","resolve","module","exports","az","zhHk","hr","arPs","reverse","join","ga","days","ur","esUs","tet","dv","tk","weekEndings","hu","charAt","toLowerCase","zhCn","te","sv","ugCn","webpackPolyfill","deprecate","paths","children","get","msMy","eo","sd","relativeTimeWithMutation","mutation","specialMutationForYears","lastNumber","text","softMutation","mutationTable","substring","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","br","weekdaysParse","mi","mk","last2Digits","nb","kk","arTn","it","itCh","enNz","loading","BSkeletonWrapper","slots","scopedSlots","$slots","$scopedSlots","slotScope","attrs","role","monthsShortWithDots","monthsShortWithoutDots","fy","enIl","sw","ezafeNumSuffix","kuKmr","p","includes","sk","yo","sl","toObject","toAbsoluteIndex","lengthOfArrayLike","O","argumentsLength","arguments","index","end","endPos","numbersPast","numbersFuture","verbalNumber","fi","arSa","bg","my","gl","es","invalidDate","isFunction","Function","el","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","apply","monthsNominative","monthsSubjective","pl","fa","ar","bn","zhTw","ru","mn","ky","bnBd","separator","ro","cy","lookup","fr","arDz","bm","gomDeva","weekdaysCaseReplace","nounCase","nominative","accusative","genitive","processHoursFunction","uk","lo","deAt","de","tzmLatn","jv","esMx","enSg","nn","relativeTimeWithSingular","relativeSeconds","lv","deCh","tzm","hookCallback","some","hooks","setHookCallback","callback","isObject","hasOwnProp","hasOwnProperty","isObjectEmpty","getOwnPropertyNames","k","isUndefined","isNumber","isDate","Date","fn","res","arrLen","valueOf","createUTC","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","flags","parsedParts","isNowValid","getTime","invalidWeekday","_strict","bigHour","isFrozen","_isValid","createInvalid","NaN","fun","t","momentProperties","updateInProgress","copyConfig","to","prop","val","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","firstTime","deprecationHandler","arg","args","argLen","stack","deprecations","deprecateSimple","set","_config","_dayOfMonthOrdinalParseLenient","RegExp","_dayOfMonthOrdinalParse","source","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","_calendar","zeroFill","targetLength","forceSign","absNumber","Math","abs","zerosToFill","sign","pow","max","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","func","localeData","removeFormattingTokens","makeFormatFunction","array","formatMoment","expandFormat","replaceLongDateFormatTokens","lastIndex","defaultLongDateFormat","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","_relativeTime","pastFuture","diff","aliases","D","dates","date","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","ms","milliseconds","millisecond","Q","quarters","quarter","seconds","second","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","weeks","W","isoweeks","isoweek","years","year","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","getPrioritizedUnits","unitsObj","unit","priority","sort","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","stringGet","stringSet","prioritized","prioritizedLen","mod","x","daysInMonth","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","min","setUTCMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","createDate","createUTCDate","UTC","firstWeekOffset","fwd","fwdlw","dayOfYearFromWeeks","resYear","resDayOfYear","localWeekday","weekOffset","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","globalLocale","baseConfig","locales","localeFamilies","commonPrefix","arr1","minl","normalizeLocale","chooseLocale","names","j","loadLocale","isLocaleNameSane","oldLocale","_abbr","require","getSetGlobalLocale","values","getLocale","parentLocale","forEach","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","weekdayProvided","weekdayActual","calculateOffset","obsOffset","militaryOffset","numOffset","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","temp","weekdayOverflow","curWeek","createLocal","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","utcOffset","offsetFromString","chunkOffset","matcher","chunk","parts","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","dur","tmp","isAdding","invalid","isString","String","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","filter","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","unix","toJSON","isValid$2","parsingFlags","invalidAt","creationData","localeEras","_eras","localeErasParse","eraName","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","assign","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","he","sq","$","fill","addToUnscopables","target","sr","tzl","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","one","tlh","bo","ptBr","fil","hyAm","ca","_vm","_c","_self","_setupProxy","staticStyle","staticRenderFns","AvSkeletonCard","_Vue","_classCallCheck","_callSuper","_inherits","_createClass","Vue","__decorate","Component","components","BCard","AvIcon","component","AvSkeletonInput","AvSkeletonMediaTabs","_this","quantity","AvSkeletonBoard","Prop","required","AvSkeletonTable","_dec","AvCard","AvSkeletonVerticalNavMenu","columns","generateColumnHeight","AvSkeletonChartBar","random","default","BRow","BCol","AvSkeletonChartPie","frCa","nlBe","hi","gu","enIe","km","et","enIn","si","directives","rawName","expression","modifiers","updatingData","updateDashboard","on","fetchUpdateDashboard","_v","printUnavailable","useExport","exportPdf","loadingTotalMarketShareCurrentMonth","totalMarketShareCurrentMonth","title","handleChartTotalMarketShareCurrentMonth","pie1Data","getBrand","labelVDxVEMarket","handlePie1","loadingTotalMarketShareYearToDate","totalMarketShareYearToDate","handleTotalMarketShareYearToDate","pie2Data","handlePie2","loadingBrandEvolution","brandEvolutionData","handleBrandEvolutionData","loadingDailyBrandEvolution","dailyBrandEvolutionData","handleDailyBrandEvolutionData","loadingLargestEconomicGroupsYearDate","largestEconomicGroupsYearDate","handleLargestEconomicGroupsYearDate","loadingGrowthByBrand","growthByBrand","handleGrowthByBrand","_b","$attrs","Percent","percent","_value","p100","p50","isPercent","Number","getType","assert","condition","message","toNumber","converted","numberToString","negative","parsed","digits","decimals","exponent","zeros","repeat","amount","PLACEHOLDER","PLACEHOLDER2","any","each","eachReverse","eachContinue","shiftLeft","insert","element","splice","setIndex","pushAll","found","removeFirst","move","toIndex","removeIndex","insertIndex","unshift","pushOne","ind","has","start","findIndex","findIndexReverse","find","findReverse","findMap","shuffle","temporaryValue","randomIndex","currentIndex","getSortedIndex","pivot","order","getFirstSortedIndex","keepIf","keep","object","keysOrdered","hasKey","eachOrdered","ord","softCopyProperties","DisposerClass","_disposed","_dispose","Disposer","dispose","super","_disposers","disposers","MutableValueDisposer","_disposer","disposer","CounterDisposer","_counter","ready","document","readyState","listener","removeEventListener","addEventListener","removeElement","parentNode","removeChild","dom","options","onZoom","window","_ev","supports","cap","getPointerId","event","pointerId","activeElement","body","blur","createElement","position","top","left","appendChild","focus","getRendererEvent","isTouchEvent","ev","Touch","PointerEvent","pointerType","MouseEvent","setStyle","getStyle","getEventTarget","composedPath","path","contains","cursor","host","isLocalEvent","root","setInteractive","interactive","pointerEvents","getEventKey","keyCode","getShadowRoot","rootStylesheet","createStylesheet","nonce","setAttribute","textContent","head","getStylesheet","sheet","appendStylesheet","selector","cssRules","insertRule","styles","_root","_rule","selectorText","deleteRule","setProperty","_setVendorPrefixName","_element","addClass","className","classList","classes","currentClassName","getAttribute","removeClass","remove","iOS","navigator","vendor","getSafeResolution","relativeToValue","full","decimalPlaces","padString","char","trimLeft","trimRight","trim","truncateTextWithEllipsis","maxLength","breakWords","ellipsis","lastNonAlphanumericIndex","getFormat","hints","cleanFormat","stripTags","plainText","escapeForRgex","addSpacing","splitString","rtlChar","splitPattern","segments","segment","part","getYearDay","oneDay","getWeek","_utc","firstDay","getWeekYear","getMonthWeek","firstWeek","currentWeek","getDayFromWeek","get12Hours","getTimeZone","long","savings","timezone","d1","toLocaleString","timeZone","d2","timeZoneName","wotz","wtz","utcDate","tzDate","capitalizeFirst","hslToRgb","color","r","g","hue2rgb","q","rgbToHsl","hsvToHsl","hsv","hslToHsv","hsl","rgb","getLightnessStep","step","getBrightnessStep","isLight","saturate","saturation","alternativeColor","lightAlternative","darkAlternative","light","dark","mergeTags","tags1","tags2","self","sameBounds","right","bottom","string2hex","rgba2hex","hex","fromAny","_hex","alpha","fromRGB","toCSSHex","fromString","fromCSS","fromHex","mode","fromHSL","toHSL","_listeners","_killed","_disabled","_iterating","_enabled","killed","once","context","_eachListener","info","hasListenersByType","count","_removeListener","_shouldDispatch","dispatch","shouldClone","_removeExistingListener","_on","_type","onAll","waitForAnimations","animations","promises","_","waitForStop","Promise","all","defaultInterpolate","percentInterpolate","colorInterpolate","interpolate","getInterpolate","AnimationState","checkBounds","initial","_values","newValue","events","isEnabled","oldValue","oldIndex","newIndex","oldValues","_onSetIndex","_onInsertIndex","value_a","value_b","_onRemoveIndex","_onMoveIndex","_onPush","newArray","old","_onClear","setAll","autoDispose","ListTemplate","template","make","container","_container","_events","change","_onRemoved","_onInserted","child","_setParent","childrenDisplay","_childrenDisplay","addChild","_display","addChildAt","markDirtyBounds","markDirty","PI","HALFPI","RADIANS","DEGREES","precision","rounded","getCubicControlPointA","p0","tensionX","tensionY","getCubicControlPointB","fitToRange","angle","sin","tan","cos","normalizeAngle","getArcBounds","cx","startAngle","endAngle","radius","minX","MAX_VALUE","minY","maxX","maxY","bpoints","getArcPoint","fromAngle","toAngle","pt","arc","mergeBounds","bounds","bound","fitAngleToRange","maxEnd","maxStart","inBounds","point","getAngle","point1","point2","diffX","diffY","atan2","getPointOnQuadraticCurve","pointA","pointB","controlPoint","getPointOnLine","referenceValue","reduce","prev","curr","boundsOverlap","bounds1","bounds2","horizontalOverlap","verticalOverlap","spiralPoints","radiusY","innerRadius","radiusStep","points","stepSize","asin","degrees","circlesOverlap","circle1","circle2","hypot","linear","quad","cubic","exp","sine","circle","sqrt","yoyo","ease","inOut","b1","b2","b3","b4","b5","b6","b7","b8","b9","b0","bounce","bounceOut","tau","amplitude","elastic","entity","settings","_entity","_settings","_userSettings","fallback","setRaw","seen","defaultState","states","_eachSetting","stateAnimationDuration","easing","stateAnimationEasing","animate","States","_states","state","newState","_applyState","applyAnimate","_applyStateAnimated","Registry","registry","addLicense","license","licenses","disposeAllRootElements","rootElements","pop","getRootById","compare","compareArray","leftLength","rightLength","compareNumber","callbacks","_callbacks","_markDirtyKey","loops","startingTime","_animation","_from","_to","_duration","_easing","_loops","_interpolate","_oldTime","_playing","_stopped","_startAnimation","_time","_reject","stopped","currentTime","counter","_userProperties","Stopped","isDisposed","playing","paused","_animatingSettings","_stopAnimation","_run","percentage","_checkEnded","_reset","_set","_animatingPrivateSettings","_stopAnimationPrivate","setPrivate","_setPrivate","Playing","Paused","_key","_settingEvents","_privateSettingEvents","getRaw","_prevSettings","_sendKeyEvent","_setRaw","stop","_privateSettings","_prevPrivateSettings","_sendPrivateKeyEvent","_setPrivateRaw","_markDirtyPrivateKey","_animationTime","getPrivate","enableDispose","isReal","templates","_createEvents","_internalTemplates","_registerId","_template","_afterNew","_checkDirty","shouldApply","_setObjectTemplate","_applyTemplates","create","_setDefaults","_applyThemes","classNames","_dirty","_dirtyPrivate","_disposerProperties","_removeObjectTemplate","_addDirtyEntity","_addAnimation","animationTime","_name","adapters","fold","_removeTemplateProperty","_userPrivateProperties","setPrivateRaw","_removeTemplatePrivateProperty","_findTemplateByKey","_findTemplateByPrivateKey","removePrivate","_rootContainer","_eachTemplate","_apply","_templateDisposers","privateSettings","_runSetup","setup","_findStaticTemplate","_templates","_disposeTemplates","_applyTemplate","_findTemplate","force","isConnected","themes","themeTags","Set","tags","_walkParents","_defaultThemes","theme","_removeTemplates","allRules","rules","_lookupRules","rule","every","isDirty","prevId","entitiesById","delay","setTimeout","removeDispose","clearTimeout","hasTag","rest","language","disposeSettings","_stateChanged","_entities","_checkDisposed","_setTemplateProperty","_setTemplatePrivateProperty","onPrivate","copyFrom","_applyStateByKey","sprite","_sprite","originalEvent","simulated","native","_rendererDisposers","increment","rendererEvent","RENDERER_EVENTS","_onRenderer","_dispatchParents","parent","dispatchParents","isDragging","_hasDown","_hasMoved","_makePointerEvent","_getBounds","globalBounds","isType","strokeWidth","_renderer","removeHovering","_addPercentagePositionChildren","markDirtyPosition","_templateField","dataItem","dataContext","new","_removeTemplateField","oldDataItem","_dataItem","_processTemplateField","eventType","newDataItem","_setDataItem","_parent","_percentageSizeChildren","_percentagePositionChildren","_addDirtyPosition","_localBounds","centerX","centerY","_beforeChanged","_handleStates","previous","tooltip","setLayer","markDirtyLayer","tooltipMoveDp","_tooltipMoveDp","tooltipPointerDp","_tooltipPointerDp","isHover","showTooltip","_statesHandled","isHidden","markDirtyAccessibility","_changed","display","draggable","_dragDp","dragStart","dragMove","dragStop","cancelTouch","tooltipText","tooltipHTML","showTooltipOn","_tooltipDp","getTooltip","hideTooltip","toggleKey","_toggleDp","_isDragging","scale","updatePivotPoint","isPrivateDirty","visible","_addPercentageSizeChildren","_prevWidth","_sizeDirty","_updateSize","wheelable","_registerTabindexOrder","_unregisterTabindexOrder","brightness","contrast","sepia","hue","invert","cursorOverStyle","_focusDp","exportable","_hoverDp","_handleOver","_handleOut","_isDown","_handleUp","_handleDown","inactive","_dragEvent","stopParentDispatch","_dragPoint","_downPoint","_downPoints","downPoint","dragEvent","dragPoint","getLocalBounds","depth","_addDirtyBounds","isMeasured","invalidateBounds","isFocus","_invalidateAccessibility","oldBounds","_adjustedLocalBounds","newBounds","_fixMinBounds","getAdjustedBounds","minWidth","minHeight","privateWidth","privateHeight","removeValue","_clearDirty","tooltipPosition","tooltipTarget","_setMatrix","toGlobal","_getTooltipPoint","label","markDirtyText","promise","show","timeout","hide","dx","dy","_x","xx","innerWidth","_y","innerHeight","_removeParent","_removeFocusElement","localBounds","success","_error","_isShowing","_isHidden","_isHiding","_onShow","_onHide","hovering","focused","isVisibleDeep","isVisible","opacity","compositeOpacity","compositeScale","rotation","compositeRotation","maxWidth","maxHeight","_walkParent","updateChildren","prevParent","numberFormatter","dateFormatter","durationFormatter","toLocal","_getDownPointId","moveValue","makeGraphics","_afterNewApplyThemes","_pattern","_clear","_checkDirtyFill","repetition","fillOpacity","backgroundDisplay","_backgroundDisplay","clear","beginFill","drawRect","endFill","_draw","createPattern","_load","canvas","image","_image","patternWidth","patternHeight","fit","centered","src","Image","decode","then","catch","BlendMode","crisp","gradient","gradientTarget","strokeDasharray","setLineDash","strokeDashoffset","setLineDashOffset","blendMode","NORMAL","draw","svgPath","_afterChanged","fillGradient","fillPattern","stroke","strokeGradient","strokePattern","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","shadowOpacity","shadow","stops","colorInherited","opacityInherited","getFill","pattern","strokeOpacity","resolution","lineJoin","lineStyle","endStroke","eachChildren","paddingLeft","availableWidth","totalPercent","childWidth","prevX","adjustedLocalBounds","marginRight","paddingTop","availableHeight","childHeight","prevY","marginTop","marginBottom","_setRawDefault","paddingRight","minCellWidth","maxCellWidth","columnCount","columnWidths","getColumnWidths","column","maxColumnHeight","totalWidth","quotedBlocks","noFormatting","escape","chunks","chunks2","i2","chunk2","cleanUp","unescape","isImage","fontWeight","textDecoration","populateString","getTagValue","tagName","reg","dateFields","getDateFormatter","numericFields","getNumberFormatter","durationFields","getDurationFormatter","method","params","matches2","reg2","getTagValueFromObject","getCustomDataValue","customData","current","formatApplied","numberValue","dateValue","durationValue","encodeURIComponent","formatParts","formatterType","makeContainer","allChildren","_removeHTMLContent","interactiveChildren","_prevHeight","layout","contentMask","_contentMask","mask","updateBackground","background","verticalScrollbar","_contentHeight","_contentWidth","pWidth","pHeight","horizontal","vertical","childBounds","childX","childY","cl","cr","ct","cb","updateContainer","_updateBounds","_addDirtyParent","html","_setHTMLContent","_positionHTMLElement","ch","contentH","_updateHTMLContent","startGrip","endGrip","interfaceColors","_vsbd0","wheelEvent","preventDefault","shiftY","deltaY","_vsbd1","walkChildren","updated","makeTextStyle","makeText","textStyle","_getText","updateTooltip","tooltipElement","_removeTooltipElement","wordWrapWidth","oversizedBehavior","ignoreFormatting","minScale","_textStyles","styleName","ariaLabel","_observer","ResizeObserver","entries","entry","_targets","observe","box","unobserve","_timer","lastTime","loop","newSize","getBoundingClientRect","requestAnimationFrame","cancelAnimationFrame","observer","makeSensor","_sensor","_listener","addTarget","removeTarget","_text","_makeText","_textKeys","propValue","_setMaxDimentions","_updateChildren","_maybeUpdateHTMLColor","textAlign","textVisible","htmlElement","_getAccessibleText","bwh","xtl","ytl","xtr","ytr","xbr","ybr","xbl","ybl","moveTo","stemX","lineTo","arcTo","stemY","closePath","_setDefaultFn","_label","_updateBackground","_updateTextColor","tooltipContainer","_htmlContentHovered","_handleReaderAnnouncement","_tooltips","readerAlert","getAccessibleText","labelText","labelHTML","labelAriaLabel","updateBackgroundColor","keephover","_keepHoverDp","hover","unhover","outEvent","getEvent","_fillDp","_strokeDp","_labelDp","alternative","cw","parentW","parentH","layerMargin","_h","pointTo","pointerOrientation","pointerLength","bgStrokeSizeY","bgStrokeSizeX","pointerX","pointerY","boundsW","boundsH","_fx","_fy","animationDuration","animationEasing","_setDefault","bns","sns","_t","formatted","Intl","NumberFormat","details","parseFormat","positive","zero","active","applyFormat","thousandSeparator","translateEmpty","decimalSeparator","_part","partFormat","mods","modSpacing","thousands","passive","interval","applyPrefix","ol","toPrecision","toExponential","ints","ip","intsr","decs","prefixes","newvalue","applied","parseDate","formatToParts","toUTCDate","Timezone","DateTimeFormat","hour12","fractionalSecondDigits","_dtf","offsetUTC","userOffset","newUserOffset","dtf","ignoreTimezone","convertLocal","fullYear","timestamp","_getMonth","_getShortMonth","translateFunc","_getShortWeekday","_getWeekday","tz","tzh","toUTCString","_shortMonths","_shortWeekdays","parsedIndexes","resValues","indexAdjust","year3","year2","year1","getStringList","monthLong","monthShort","yearDay","weekdayLong","weekdayShort","am","hour12Base1","hourBase0","hour12Base0","hourBase1","millisecondDigits","resolveMonth","resolveShortMonth","isAm","ts","resolveTimezoneOffset","originalOffset","isDefault","translateAll","list","dmillisecond","dsecond","dminute","dhour","dday","dweek","dmonth","dyear","asecond","aminute","ahour","aday","aweek","amonth","ayear","baseUnit","dirs","absolute","_unitAliases","tstamp","toTimeStamp","_toTimeUnit","unitValue","_getUnitValue","maxValue","maxUnit","getValueUnit","currentUnit","_getUnitValues","timeUnit","en","prompt","translation","localeTarget","translations","setTranslationAny","setupDefaultRules","themeClass","_rules","ruleRaw","setColor","ic","horizontalLayout","verticalLayout","bind","primaryButton","primaryButtonHover","primaryButtonDown","primaryButtonActive","primaryButtonDisabled","primaryButtonTextDisabled","primaryButtonText","primaryButtonStroke","secondaryButton","secondaryButtonHover","secondaryButtonDown","secondaryButtonActive","secondaryButtonText","secondaryButtonStroke","grid","alternativeBackground","alternativeText","disabled","passOptions","lightness","colors","reuse","startIndex","interpolationDuration","interpolationEasing","tooltipX","tooltipY","setStateOnChildren","pinchZoom","maxZoomLevel","minZoomLevel","zoomStep","maxPanOut","gap","colorOpacity","checkered","horizontalGap","verticalGap","density","minOpacity","maxOpacity","fillField","strokeField","nameField","layer","clickTarget","ariaChecked","focusable","cornerRadiusBL","cornerRadiusTL","cornerRadiusBR","cornerRadiusTR","populateText","stepCount","fontFamily","fontSize","textType","inside","baseRadius","orientation","editOn","multiLine","pointerBaseWidth","cornerRadius","shiftRadius","dRadius","dInnerRadius","locationX","locationY","getFillFromSprite","getStrokeFromSprite","autoTextColor","forceInactive","ariaValueMin","ariaValueMax","ariaLive","spikes","rotationStep","Matrix","tx","ty","pivotX","pivotY","origin","matrix","a1","c1","tx1","sliceIterator","TAU","mapToEllipse","rx","ry","cosphi","sinphi","centerx","centery","xp","yp","approxUnitArc","ang1","ang2","x1","y1","x2","y2","vectorAngle","ux","uy","vx","vy","dot","acos","getArcCenter","px","py","largeArcFlag","sweepFlag","pxp","pyp","rxsq","rysq","pxpsq","pypsq","radicant","centerxp","centeryp","vx1","vy1","vx2","vy2","arcToBezier","_ref2","_ref2$xAxisRotation","xAxisRotation","_ref2$largeArcFlag","_ref2$sweepFlag","curves","lambda","_getArcCenter","_getArcCenter2","curve","_mapToEllipse","_mapToEllipse2","_mapToEllipse3","checkArgs","actual","expected","checkMinArgs","checkEvenArgs","splitArcFlags","flag","assertBinary","distributeId","eachTargets","hitTarget","onPointerEvent","touches","changedTouches","isTainted","getContext","willReadFrequently","drawImage","getImageData","clearCanvas","view","CanvasPivot","renderer","status","_layer","_removeObject","getLayer","dirty","defaultLayer","margin","_ghostLayer","setMargin","layers","registerChildLayer","resizeLayer","resizeGhost","_bounds","_colorId","paintId","_forceInteractive","_isInteractive","_matrix","applyInverse","_uMatrix","setTransform","_addBounds","getLocalMatrix","_addEvent","_localMatrix","prepend","_transformMargin","_transform","_omitTainted","subStatus","ghostLayer","ghostContext","save","_transformLayer","_runPath","clip","globalAlpha","compoundAlpha","_isInteractiveMask","_render","restore","tainted","_hovering","_dragging","tapToActivate","_touchActive","shouldCancelTouch","_children","_childLayers","deep","setPoint","Op","_context","_forceColor","forceColor","colorize","BeginPath","beginPath","BeginFill","fillStyle","EndFill","clearShadow","EndStroke","LineStyle","strokeStyle","lineWidth","LineDash","dash","LineDashOffset","dashOffset","lineDashOffset","DrawRect","rect","DrawCircle","DrawEllipse","radiusX","ellipse","anticlockwise","arcBounds","ArcTo","LineTo","MoveTo","ClosePath","BezierCurveTo","cpX","cpY","cpX2","cpY2","toX","toY","bezierCurveTo","QuadraticCurveTo","quadraticCurveTo","Shadow","offsetX","offsetY","GraphicsImage","_operations","op","_fillAlpha","_pushOp","toCSS","_hasShadows","_strokeAlpha","cpx","cpy","qcpx","qcpy","SEGMENTS_REGEXP","ARGS_REGEXP","relative","layerDirty","globalCompositeOperation","_getColorId","pathGhost","colorizeGhost","addBounds","_textInfo","textBaseline","ignoreGhost","ignoreFontWeight","fontStyle","_getFontStyle","font","_shared","style2","fontVariant","_measure","_prerender","line","_index","textChunks","fillText","thickness","metrics","_measureText","actualBoundingBoxLeft","actualBoundingBoxRight","getTextStyle","rtl","truncate","wrap","_ignoreFontWeight","refText","lines","currentStyle","styleRestored","lineInfo","ascent","actualBoundingBoxAscent","actualBoundingBoxDescent","currentFormat","currentFill","currentChunkWidth","currentVerticalAlign","currentDecoration","skipFurtherText","firstTextChunk","leftoverChunks","verticalAlign","chunkWidth","ellipsisMetrics","ellipsisWidth","excessWidth","_truncateText","tmpText","leftBoundMod","rightBoundMod","boundsMod","chunkHeight","lineHeight","currentChunkOffset","baselineRatio","_fitRatio","_originalScale","maxW","maxH","fallbackBreakWords","measureText","fakeMetrics","div","innerText","visibility","bbox","fontBoundingBoxAscent","fontBoundingBoxDescent","_renderCircular","deltaAngle","inward","align","kerning","clockwise","shouldReverse","_textReversed","maxAngle","midAngle","textHeight","lineStartAngle","rotate","angleShift","charWidth","_measureCircular","chars","CanvasImage","_imageMask","naturalWidth","naturalHeight","_getMask","imageSmoothingEnabled","fillRect","originalPoint","identifier","_patternCanvas","devicePixelRatio","_layerDom","exportableView","_touchActiveTimeout","_delayTouchDeactivate","prevent","imageArray","tapToActivateTimeout","createLinearGradient","radius1","radius2","createRadialGradient","graphics","_patternContext","clearRect","renderDetached","resize","_calculatedWidth","_calculatedHeight","realWidth","realHeight","calculatedWidth","calculatedHeight","_realWidth","_realHeight","CanvasLayer","existingLayer","getLayerByOrder","createDetachedLayer","layerIndex","insertBefore","_dirtyLayers","_lastPointerMoveEvent","_dispatchGlobalMousemove","_colorMap","DOMRect","adjustPoint","clientX","clientY","widthScale","heightScale","_adjustBoundingBox","pixel","colorId","hit","getImageArray","dispatching","cleanup","disposed","interactionsEnabled","_withEvents","dispatched","originalTarget","button","_getHitTarget","dragged","_mousedown","_dispatchEvent","delete","_replacedCursorStyle","_dispatchEventAll","clickevent","timer","_makeSharedEvent","_onPointerEvent","mouseup","_dispatchGlobalMouseup","pointercancel","mousedown","_dispatchMousedown","mousemove","_dispatchDragMove","_dispatchDragEnd","_dispatchDoubleClick","_dispatchWheel","_initEvent","canvasWidth","canvasHeight","maxScale","maintainPixelRatio","canvases","forceRender","needRerender","exportableContext","extraX","extraY","clientWidth","clientHeight","domWidth","domHeight","_resolution","_width","_height","rAF","fps","accessible","_a11yD","useSafeResolution","HTMLElement","getElementById","inner","tooltipContainerBounds","_tooltipContainerSettings","_inner","_updateComputedStyles","_init","childNodes","_initResizeSensor","_logo","offsetWidth","offsetHeight","logo","open","_handleLogo","calculateSize","tabindex","_getRealSize","_getCalculatedSize","rootContainer","htmlElementContainer","_htmlElementContainer","readerAlertElement","_readerAlertElement","focusElementContainer","_focusElementContainer","tooltipElementContainer","_tooltipElementContainer","eventKey","_isShift","shiftKey","focusedSprite","_focusedSprite","downEvent","dragOffsetX","dragOffsetY","_keyboardDragPoint","moveEvent","upEvent","group","items","_tabindexes","_startTicker","setThemes","_addTooltip","_hasLicense","_showBranding","_resizeSensorDisposer","autoResize","_focusElementDirty","_updateCurrentFocus","_tickers","running","_animations","_runAnimation","_isDirtyAnimation","allParents","_isDirtyParents","_dirtyParents","uid","_prepareChildren","objects","_isDirty","depths","_dirtyBounds","_positionHTMLElements","dirtyPositions","_dirtyPositions","_updatePosition","_updateTick","_checkComputedStyles","_runTickers","animationDone","_runAnimations","_runDirties","resetImageArray","_renderFrame","_ticker","_paused","endTime","performance","_runTicker","markDirtyGlobal","_isDisposed","innerHTML","tooltipContainerSettings","_tooltip","_invalidateTabindexes","aindex","bindex","groups","_moveFocusElement","_makeFocusElement","_decorateFocusElement","_positionFocusElement","focusElement","removeAttribute","ariaCurrent","ariaSelected","ariaOrientation","ariaValueNow","ariaValueText","ariaControls","tabIndex","_handleFocus","_handleBlur","append","focusPadding","_getSpriteByFocusElement","_focusNext","focusableElements","querySelectorAll","_makeTooltipElement","parentElement","scaleWidth","scaleHeight","getComputedStyle","fontHash","changed","_fontHash","_invalidateLabelBounds","debugGhostView","boxSizing","_htmlEnabledContainers","visualSettings","setting","transform","transformOrigin","lw","lh","lr","previousBounds","originX","originY","_makeHTMLElement","modalCSS","_prefix","curtain","cancel","wrapper","content","isOpen","series","_positionBullet","wSign","hSign","minSide","crtl","crtr","crbr","crbl","maxcr","icon","_disposeProperty","drawCircle","coordinates","coord","prevPoints","copy","prevCopy","newCopy","morphAnimation","animatePrivate","previousPoints","morphProgress","first","prevFirst","prevPoint","drawEllipse","ir","processor","processRow","JsonData","markDirtyValues","disposeDataItem","showDataItem","hideDataItem","_dataItems","incrementRef","decrementRef","_updateFields","dataItems","_mainDataItems","_markDirtyGroup","_dataChanged","_onDataClear","_makeDataItem","processDataItem","bullets","_afterDataChange","valueFields","_valueFields","_valueFieldsF","fieldKey","workingKey","fields","_fields","_fieldsF","makeDataItem","_valuesDirty","inited","_dataGrouped","contents","_handleThisDown","_handleThisUp","_handleThisMove","_handleSetWheel","_wheelDp","_handleWheelZoom","delta","zoomLevel","newZoomLevel","zoomToPoint","level","_animateTo","_za","_txa","_tya","_event","_downScale","downPoints","_downX","_downY","downId","movePoint","_movePoints","_handlePinch","movePoints","downPoint0","downPoint1","movePoint0","movePoint1","initialDistance","currentDistance","moveCenter","downCenter","_target","addColorStop","_color","getBounds","longer","lighten","brighten","labelContainer","addDisposer","_new","markers","marker","startValue","endValue","startColor","endColor","markerContainer","startLabel","endLabel","makeMarker","_maybeInitTextarea","editing","_startEditing","_stopEditing","_syncText","_syncStyle","_isInited","textarea","querySelector","computedStyles","backgroundColor","border","outline","scrollHeight","getPropertyValue","oversizeBehavior","whiteSpace","scrollWidth","sleep","timeUnitDurations","getNextUnit","getDuration","getIntervalDuration","getDateIntervalDuration","firstDateOfWeek","checkChange","timeOne","timeTwo","dateOne","dateTwo","timeZoneOffset1","timeZoneOffset2","nextUnit","timeZoneOffset","endDays","startDays","wday","newTimeZoneOffset","roun","firstDate","difference","unitCount","weekDay","tzoffset","parsedDate","offsetDif","newTzoffset","newDiff","chooseInterval","gridCount","intervals","gridInterval","intervalDuration","getUnitValue","_handleBullets","bulletsContainer","bullet","_shouldMakeBullet","bulletFunction","_makeBullet","_makeBulletReal","_aggregatesCalculated","_selectionAggregatesCalculated","endIndex","updateLegendValue","baseValueSeries","calculateAggregates","_dataProcessed","_calculateAggregates","_psi","_pei","markerRectangle","legendDataItem","updateLegendMarker","_makeBullets","sum","absSum","low","high","close","average","changePercent","changePrevious","changePreviousPercent","changeSelection","changeSelectionPercent","openKey","adjustedStartIndex","_getBase","minValue","dataField","neutral","customFunction","propertyValue","logarithmic","log","LOG10E","_hideBullets","_positionBullets","markDirtySize","_bullet","chart","_super","realDuration","valueLabel","txt","itemContainers","themeTagsSelf","labels","valueLabels","markerRectangles","itemContainer","makeItemContainer","useDefaultMarker","makeMarkerRectangle","createLegendMarker","makeLabel","makeValueLabel","clickContainer","_addClickEvents","targetA","targetB","indexA","indexB","hoverDataItem","unhoverDataItem","di","segmentedLine","firstGroup","firstPoint","makePicture","crossOrigin","makeRadialText","radiusPrivate","innerRadiusPrivate","labelAngle","_flipped","_makeThumb","_makeButton","_thumbBusy","_addOrientationClass","thumb","newMiddle","newCoordinate","_handleAnimation","_startDown","_gripDown","_endDown","_thumbDown","_released","_updateThumb","_updateGripsByThumb","updateGrips","grip","valueFunction","fromValue","toValue","x0","y0","thumbSize","epsilon","pi","halfPi","tauEpsilon","strings","appendRound","Path","_x0","_y0","_x1","_y1","_append","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","a0","ccw","withPath","shape","RangeError","arcInnerRadius","arcOuterRadius","outerRadius","arcStartAngle","arcEndAngle","arcPadAngle","padAngle","intersect","x3","y3","x10","y10","x32","y32","cornerTangents","r1","rc","ox","oy","x11","y11","x00","y00","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","constant","padRadius","buffer","r0","t0","t1","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","oc","ax","ay","bx","by","kc","lc","centroid","ix","iy","generator","_generator","middleAngle","seriesContainer","_removeSeries","reset","patterns","_processSeries","_placeBulletsContainer","_removeBulletsContainer","addTag","plusButton","minusButton","homeButton","_targetDisposer","zoomIn","zoomOut","goHome","_clearGrain","patternData","cols","rows","rnd","_setRectData","putImageData","col","row","gc","bc","ac","cellW","cellH","rectW","rectH","getLinePattern","getRectanglePattern","getCirclePattern","adjustedIndex","currentStep","getIndex","pass","generateColors","_applyDefaults","JSON","parse","normalized","CSVToArray","delimiter","skipRows","useColumnNames","skipEmpty","dataPoint","objPattern","arrData","arrMatches","strMatchedValue","strMatchedDelimiter","_checkFeatures","_checkDates","_checkNumbers","_checkColors","_checkEmpty","_checkDeepFeatures","deepFields","where","steps","_checkDeep","lookupKey","_maybeToEmpty","_maybeToNumber","_maybeToDate","_maybeToColor","_createGrip","gripL","_resize","gripR","_resizeStart","gripT","_rotate","gripB","_is","_ix","_iw","spriteTemplate","_updatePositions","themeTag","_positionDP","rectangle","cxr","cyr","load","url","error","isBlob","responseType","xhr","XMLHttpRequest","onload","response","blob","readBlob","getResponseHeader","responseText","onerror","withCredentials","requestHeaders","header","setRequestHeader","send","reader","FileReader","readAsText","panX","panY","wheelStep","arrangeTooltips","pinchZoomX","pinchZoomY","legendLabelText","minGridDistance","minPosition","maxPosition","behavior","snapToSeriesBy","moveThreshold","minZoomCount","maxZoomCount","maxZoomFactor","maxDeviation","snapTooltip","tooltipLocation","zoomX","zoomY","fixAxisSize","location","multiLocation","opposite","inversed","cellStartLocation","cellEndLocation","startLocation","endLocation","fillRule","axisFill","gridIntervals","dateFormats","periodChangeDateFormats","tooltipDateFormats","markUnitChange","strictMinMax","groupData","groupCount","groupIntervals","axis","baseInterval","baseValue","autoZoom","maskBullets","stackToNegative","openValueXGrouped","openValueYGrouped","valueXGrouped","valueYGrouped","seriesTooltipTarget","adjustBulletPosition","clustered","connect","autoGapCount","tension","lowValueXGrouped","lowValueYGrouped","highValueXGrouped","highValueYGrouped","chartContainer","yAxesAndPlotContainer","maskContent","plotsContainer","plotContainer","topPlotContainer","xAxes","yAxes","zoomOutButton","_processAxis","bottomAxesContainer","leftAxesContainer","topGridContainer","_handlePlotDown","_handlePlotUp","_handlePlotMove","_maskGrid","_setUpTouch","gridContainer","_unstack","_posXDp","_posYDp","xAxis","markDirtyExtremes","yAxis","snapToSeries","wheelX","wheelY","plotPoint","shiftX","deltaX","wheelZoomPositionX","wheelZoomPositionY","fixPosition","newStart","newEnd","_handleWheelAnimation","zoom","_getWheelSign","se","_fixWheel","handleWheel","_downStartX","_downEndX","_downStartY","_downEndY","_panStart","_panEnd","_dispatchWheelAnimation","_isPanning","touchEvent","documentPointToRoot","scrollbarX","disableType","panStart","panEnd","enableType","scrollbarY","downStartX","downEndX","downPos0","downPos1","movePos0","movePos1","sa","ea","downStartY","downEndY","cursorPoint","isHiding","tooltipDataItem","closestItem","minDistance","distance","showDataItemTooltip","handleMove","updateCursor","_colorize","_setChart","_addCursor","_pushPropertyDisposer","_handleCursorSelectEnd","topAxesContainer","_handleScrollbar","_handleAxisSelection","getTooltipText","rightAxesContainer","_handleZoomOut","_fixPosition","_markDirtyAxes","_seriesAdded","colorSet","_setSoft","patternSet","downPositionX","downPositionY","positionX","positionY","position0","toAxisPosition","position1","axes","axisStart","axisEnd","zoomAnimation","updateScrollbar","_removeAxis","processChart","axisParent","gridParent","topGridParent","_updateCursor","otherCharts","_otherCharts","chartPlotContainer","documentPoint","rootPointToDocument","chartRoot","plotT","plotB","tooltips","closest","closestPoint","_movePoint","maxTooltipDistance","maxTooltipDistanceBy","tooltipSeries","hidden","inPlot","_tooltipToLocal","prevBottom","overlay","_drawLines","lineX","_handleXLine","lineY","_handleYLine","_handleLineFocus","_handleLineBlur","_handleLineMove","ctrlKey","nextPosition","_alwaysShow","alwaysShow","_tooltipX","_updateXLine","_tooltipY","_updateYLine","syncWith","_handleSyncWith","_getPoint","_toX","_toY","_handleMove","_handleCursorDown","_handleCursorUp","_lastPoint2","selection","rootPoint","_inPlot","_getPosition","lastPoint","_lastPoint","skipEvent","xyPos","userPositionX","userPositionY","xy","_handleCursorPosition","handleCursorShow","_updateLines","_updateSelection","handleCursorHide","axisRanges","axisRange","_removeAxisRange","_processAxisRange","_makeFieldNames","axisDataItem","_seriesAxisRanges","_valueXFields","_valueYFields","_valueXShowFields","_valueYShowFields","__valueXShowFields","__valueYShowFields","valueXFields","valueYFields","_bullets","baseAxis","minBulletDistance","axisLength","_xField","_yField","xName","xCapName","yName","yCapName","xLetter","yLetter","_xOpenField","_xLowField","_xHighField","_yOpenField","_yLowField","_yHighField","hiddenState","sequencedInterpolation","_handleMaskBullets","tooltipPositionX","tooltipFieldX","_tooltipFieldX","tooltipPositionY","tooltipFieldY","_tooltipFieldY","_fixVC","stacked","_stack","getStackedXValue","_min","_max","getStackedYValue","processSeriesDataItem","_seriesValuesDirty","_markStakedDirtyStack","_groupSeriesData","_stackDirty","_showBullets","_selectionProcessed","vcx","vcy","outOfSelection","_calculateTotals","markDirtySelectionExtremes","processYSelectionDataItem","processXSelectionDataItem","selectionMinY","selectionMaxY","selectionMinX","selectionMaxX","mainContainerMask","_mainContainerMask","mainContainer","_makeRangeMask","seriesIndex","_couldStackTo","_stackDataItems","_reallyStackedTo","_stackedSeries","stackToItemKey","stackToSeries","stackToItem","stackValue","getStackedXValueWorking","getStackedYValueWorking","stackedToSeries","_axesDirty","getDataItemPositionX","getDataItemPositionY","getPoint","_shouldShowBullet","realField","positionToPoint","previousBullet","xo","_positionX","_positionY","_dataSets","_handleDataSetChange","_markDataSetDirty","_dataSetId","dataSet","mainDataItems","_sequencedShowHide","stackedSeries","_markDirtyStack","_skipped","itemLocationX","itemLocationY","xPos","_aLocationX0","_aLocationX1","yPos","_aLocationY0","_aLocationY1","_getTooltipTarget","_emptyDataItem","positionToCoordinate","_position","resetExtremes","baseDuration","minSelection","dl","listTemplate","makeColumn","categoryAxis","valueAxis","_createGraphics","_ph","_pw","columnsTemplate","clusterCount","xRenderer","yRenderer","cellLocationX0","cellLocationX1","cellLocationY0","cellLocationY1","_toggleColumn","_updateGraphics","_makeGraphics","ds","graphicsArray","rangeGraphics","createAxisRange","previousDataItem","xField","yField","valueX","valueY","xOpenField","yOpenField","openLocationX","openLocationY","xStart","xEnd","yStart","yEnd","fitW","fitH","stackToItemY","basePosition","stackToItemX","_updateSeriesGraphics","_applyGraphicsStates","ptl","pbr","tooltipPoint","dropFromOpen","riseFromOpen","dropFromPrevious","riseFromPrevious","previousClose","lastDataItem","labelsContainer","axisHeader","processAxis","ghostLabel","disable","_start","_end","_updateFinals","sAnimation","_sAnimation","eAnimation","_eAnimation","maxZoomFactorReal","minZoomFactor","_series","_createAssets","_rangesDirty","_prepareDataItem","above","_inversed","_axisLength","_updateLC","rendererTags","updateTooltipBounds","_updateTooltipBounds","axisHeadersContainer","_toggleFHDataItem","forceHidden","fh","tick","minor","makeGrid","makeTick","ticks","makeAxisFill","_processBullet","axisBullet","_updateChartLayout","axisFills","getCellWidthPosition","gWidth","updateLabel","_cursorPosition","_snapToSeries","getSeriesItem","roundAxisPosition","_updateTooltipText","positionTooltip","_location","coordinate","toGlobalPosition","_nextItem","_autoGapCount","_fieldName","_dirtyExtremes","_dirtySelectionExtremes","previousValue","syncWithAxis","_syncDp","someDirty","_getMinMax","_handleSizeDirty","getMM","letter","_getSelectionMinMax","_groupData","_handleRangeChange","_prepareAxisItems","_updateAxisRanges","_baseValue","_dseHandled","numberFormat","formatter","selectionMin","selectionMax","differencePower","minLog","_minLogAdjusted","_minRealLog","minorLabelsEnabled","minorGridEnabled","stepPower","stepAdjusted","minorGridCount","minorStep","_toggleDataItem","_formatText","nextValue","minorValue","minorMinMaxStep","_adjustMinMax","minorDataItem","minorDataItems","minorLabel","decCount","_updateGhost","valueToPosition","endPosition","fillEndPosition","labelEndPosition","labelEndValue","updateGrid","removeTag","updateTick","updateFill","updateBullet","positionToValue","minMaxStep","stepDecimalPlaces","treatZeroAs","_cellLocation","axisLocation","fixSmallStep","vc","fieldWorking","minDefined","maxDefined","extraMin","extraMax","selectionStrictMinMax","seriesMin","seriesMax","isShowing","range","_minReal","_maxReal","smin","_deltaMinMax","minMaxStep2","selectionMinReal","selectionMaxReal","_syncAxes","LN10","valueToFinalPosition","minDiff","initialMin","initialMax","minAdapted","maxAdapted","_fixMin","_fixMax","_getDelta","strictMinMaxSelection","_fixZoomFactor","_saveMinMax","power","strictMode","extra","stepDivisor","maxPrecision","ceiledStep","maxCount","minCount","_adjustPosition","extraDecimals","oldDiff","fieldName","syncMin","syncMax","syncStep","currentCount","synced","omin","omax","ostep","_checkSync","_itemMap","startCategory","endCategory","otherAxis","startDataItem","endDataItem","hasValue","frequency","_frequency","fillIndex","categoryLocation","endCategoryLocation","categoryToIndex","indexToPosition","fillEndIndex","cellLocation","_axisLocation","category","axisPositionToIndex","seriesDataItem","zoomToIndexes","MAX_SAFE_INTEGER","startTime","nextGridUnit","previousIndex","previousUnitValue","selectedItems","skip","added","shouldAdd","_setBaseInterval","_baseDuration","baseMainDuration","groupInterval","mainDataSetId","setDataSet","resetGrouping","_seriesDataGrouped","groupCallback","groupOriginals","previousTime","dataSetId","groupFieldValues","workingFields","prevNewDataItem","firstItem","roundedTime","groupKey","currentValue","_groupingCalculated","_intervalMax","_intervalMin","modifiedDifference","getGroupInterval","newId","endIndex2","firstDataItem","lastDate","_adjustStartIndex","_strictMode","_intervalDuration","minorGridInterval","minorDuration","_getMinorInterval","_getM","minorTimeUnit","minorCount","mmm","previousMinorValue","minorFormats","minorEndValue","_date","_updateDates","openValue","closeValue","adjustPosition","snap","diValue","nextItem","value1","value2","zoomToValues","futureGroupInterval","baseMin","getIntervalMin","baseMax","getIntervalMax","futureMin","futureMax","dtime","tooltipValue","_nextTime","_customDates","_dates","_getDates","baseCount","itemValue","nextDate","nextItemValue","findex","_updateAllDates","valueToIndex","_getIndexes","_m","_addMinorGrid","timeUnit2","previousLabel","previousX","worse","_pickWorse","dataItemA","dataItemB","valueA","valueB","mTimeUnit","minorSelectedItems","firstValue","fullDuration","originalValue","realValue","_hasDate","_baseInterval","divisors","realDivisor","reducedCount","_handleThumbDown","_handleThumbUp","_handleThumbMove","pan","_thumbDownPoint","_downStart","_downEnd","downStart","downEnd","_getPan","_point1","_point2","updatedStart","updatedEnd","gridTemplate","axisChildren","_markDirtyRedraw","_ls","_lc","toggleVisibility","bulletPosition","previousSprite","fillDrawMethod","_positionTooltip","lx0","lx1","ly0","ly1","hx0","hx1","hy0","hy1","_updateCandleGraphics","pl0","pl1","ph0","ph1","lY","hY","lX","hX","Linear","areaStart","_line","areaEnd","lineStart","_point","lineEnd","defined","defined0","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","strokes","fills","_fillGenerator","_strokeTemplate","_fillTemplate","legendStroke","_legendStroke","legendFill","_legendFill","curveFactory","_strokeGenerator","strokeTemplateField","fillTemplateField","strokeTemplateFound","fillTemplateFound","hasValues","_endIndex","_clearGraphics","_sindex","_dindex","_startSegment","dataItemIndex","currentEndIndex","makeFill","fillTemplate","originalTemplate","makeStroke","strokeTemplate","xOpenFieldValue","yOpenFieldValue","basePosX","basePosY","baseField","fillVisible","getOpen","rangeStrokeTemplate","rangeFillTemplate","_getPoints","shouldGap","_endLine","_drawStroke","_drawFill","_shouldInclude","iPoint","xPos0","yPos0","closeIPoint","_previousPoint","pp0","pp1","pp2","pp3","_points","_firstPoint","disabledColor","legend","MonotoneYTension","_tension","_t0","slope2","slope3","curveMonotoneYTension","monotoneYTension","h0","h1","s0","s1","MonotoneXTension","curveMonotoneXTension","monotoneXTension","_k","_x2","_y2","Cardinal","cardinal","custom","Step","stepAfter","itemLocationX0","itemLocationY0","itemLocationX1","itemLocationY1","xPos1","yPos1","iPoint0","point0","iPoint1","xOpenPos0","yOpenPos0","xOpenPos1","yOpenPos1","closeIPoint0","closeIPoint1","_dp","_isUsed","_maybeApplyRules","XXS","XS","S","XL","XXL","responsiveRules","_maybeApplyRule","_maybeUnapplyRule","relevant","applying","removeAll","removing","addRule","widthXXS","heightXXS","isXS","widthXS","heightXS","maybeXS","widthXXL","heightXXL","maybeXXS","maybeS","widthM","alignLabels","widthL","heightS","widthS","Responsive","_day","Animated","AvChartBar","am5","am5xy","_this$root","am5Read","refreashChart","setUpRoot","setUpChart","setUpAxis","$store","appConfig","skin","setUpSeries","appear","$emit","_this2","Root","am5locales_pt_BR","responsive","am5themes_Responsive","newEmpty","am5themes_Animated","XYChart","_this$config$renderer","_this$config$renderer2","_this$config$renderer3","_this$config$renderer4","_this$config$renderer5","CategoryAxis","categoryField","AxisRendererX","_objectSpread","ValueAxis","AxisRendererY","ColumnSeries","valueYField","categoryXField","templateField","Watch","immediate","legendValueText","expandDistance","valueIs","wr","innerBounds","prevRadius","_maxRadius","seriesRadius","seriesInnerRadius","markDirtyKey","_makeSlices","_makeLabels","_makeTicks","slicesContainer","slices","ticksContainer","_lLabels","_rLabels","_hLabels","valueHigh","valueLow","valueWorking","percentTotal","_arrange","_arrangeDown","_arrangeUp","_arrangeLeft","_arrangeRight","_getNextDown","labelTop","_getNextUp","labelBottom","labelLeft","labelRight","makeSlice","labelsTemplate","currentAngle","currentArc","labelRadius","pr","AvChartPie","setUpLegenda","am5percent","valueField","AvChartRange","configRoot","setUpCursor","onBullet","configBullet","sbseries","setUpSrollBars","configRanges","configLegends","configInitialZoom","initialZoom","_this2$axis","zoomToDates","_this2$axis2","_chart$get","seriesConfig","_this$axis","_this$axis2","openValueYField","valueXField","sbxAxis","sbyAxis","_seriesConfig$bullet","_seriesConfig$bullet2","_seriesConfig$bullet3","_seriesConfig$bullet4","_seriesConfig$bullet5","_seriesConfig$bullet6","_seriesConfig$bullet7","_seriesConfig$bullet8","_this3","getLineIntersection","pointA1","pointA2","pointB1","pointB2","_this$axis3","_this$axis4","rangeDataItem","interateEach","s1DataItem","s1PreviousDataItem","s2PreviousDataItem","s2DataItem","y02","y12","intersection","_this3$axis","_this4","_this4$axis","xs","_this4$axis2","sm","_this4$axis3","md","_this4$axis4","lg","pdfmakePromise","_pdfmake","pdfmake","vfs_fonts","pdfMake","vfs","quality","printMethod","imageFormat","indent","renameFields","addColumnNames","emptyAs","addBOM","addURL","menu","newOptions","customOptions","ext","fileName","_getFormatOptions","uri","export","streamFile","initiatePrint","_runTickerNow","exportImage","exportJSON","exportCSV","exportHTML","exportXLSX","exportPDF","exportPDFData","getCanvas","toDataURL","getContentType","disposeCanvas","mainCanvas","extraImages","middleLeft","middleTop","middleWidth","middleHeight","extraRight","extraBottom","extras","extraRoot","extraCanvas","extraWidth","extraHeight","crop","newCanvas","getDisposableCanvas","ctx","findBackgroundColor","backgroundOpacity","getJSON","stringify","getData","convertToSpecialFormat","getCSV","csv","dataFields","getDataFields","dataFieldsOrder","dataRow","dataValue","getCSVRow","ai","bi","asIs","convertEmptyValue","forceQuotes","search","getHTML","tableClass","getHTMLRow","headerRow","rowClass","charCodeAt","useTag","cellClass","getXLSX","XLSX","getXLSXLib","wbOptions","bookType","bookSST","sheetName","_normalizeExcelSheetName","wb","SheetNames","Sheets","wsData","getXLSXRow","utils","aoa_to_sheet","workbook","workbookOptions","xlsx","write","_xlsx","getPDF","includeImage","includeData","dataOptions","pageOrientation","imageSize","imageOptions","getPdfmake","defaultMargins","doc","pageSize","pageMargins","defaultStyle","extraMargin","bold","href","fitSize","getPageSizeFit","alignment","hasData","table","getPDFData","fonts","addFont","normal","bytes","italics","bolditalics","extraFonts","createPdf","getBase64","getPDFDataRow","headerRows","margins","newMargins","sizes","A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","C0","C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","RA0","RA1","RA2","RA3","RA4","SRA0","SRA1","SRA2","SRA3","SRA4","EXECUTIVE","FOLIO","LEGAL","LETTER","TABLOID","dataSource","newRow","_field","keepOriginal","isDateField","isNumericField","isDurationField","useTimestamps","useLocale","contentType","currentColor","blobDownloadSupport","link","download","decodeURIComponent","Blob","URL","createObjectURL","click","revokeObjectURL","decoded","atob","charCode","Uint8Array","linkDownloadSupport","_printViaCSS","_printViaIframe","originalTitle","scroll","documentElement","scrollTop","rule2","img","clipPath","print","isIOS","userAgent","MSStream","iframe","contentWindow","execCommand","downloadSupport","exportType","sublabel","menuElement","_menuElement","iconElement","_iconElement","_listElement","_applyClassNames","_activeItem","_handleClick","toggle","newItem","_handleItemFocus","stopImmediatePropagation","_isOver","loadDefaultCSS","_itemElements","createItems","_cssDisposer","exporting","_itemDisposers","valign","supportedFormats","supportedExportTypes","li","callbackTarget","_handleItemBlur","totalMarketShareCurrentMonthExporting","am5plugins_exporting","pie1DataExporting","totalMarketShareYearToDateExporting","pie2DataExporting","brandEvolutionDataExporting","dailyBrandEvolutionDataExporting","largestEconomicGroupsYearDateExporting","growthByBrandExporting","_document$querySelect","_document$querySelect2","_document$querySelect3","_document$querySelect4","_document$querySelect5","_document$querySelect6","_document$querySelect7","_document$querySelect8","title1","title2","title3","title4","title5","title6","title7","title8","columnGap","$toast","ToastificationContent","KpiChartBeta","directSaleVsRetailSaleBrandDate","directSaleVsRetailSaleYearDate","reportColor","loadingDirectSaleVsRetailSaleBrand","loadingDirectSaleVsRetailSaleYear","EMP_FABRICANTE","EMP_RELATORIOS_COR","brand","localStorage","getItem","refreshData","_refreshData","_asyncToGenerator","_regeneratorRuntime","mark","_callee","fetchGetTotalMarketShareCurrentMonth","fetchGetTotalMarketShareYearToDate","fetchGetLargestEconomicGroupsYearDate","fetchGetGrowthByBrand","fetchDirectSaleVsRetailSaleBrand","fetchDirectSaleVsRetailSaleYear","fetchGetBrandEvolution","fetchGetDailyBrandEvolution","_fetchGetTotalMarketShareCurrentMonth","_callee2","_context2","Participacoes","participant","columnSettings","FaeNome","Titulo","Grupos","_this5","Variacoes","Nome","_this6","VendaDireta","VendaVarejo","_this7","_this8","Data","EvolucaoMes","evolution","Total","VendaTotal","Varejo","_this9","_this10","finally","AvButton","Ripple","paIn","gd","nl","xPseudo"],"mappings":"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","file":"js/chunk-38982de9.73bf6a86.js","sourcesContent":["//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays:\n 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort:\n 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays:\n 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays:\n 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays:\n 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_SKELETON } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n animation: makeProp(PROP_TYPE_STRING, 'wave'),\n height: makeProp(PROP_TYPE_STRING),\n size: makeProp(PROP_TYPE_STRING),\n type: makeProp(PROP_TYPE_STRING, 'text'),\n variant: makeProp(PROP_TYPE_STRING),\n width: makeProp(PROP_TYPE_STRING)\n}, NAME_SKELETON); // --- Main component ---\n// @vue/component\n\nexport var BSkeleton = /*#__PURE__*/Vue.extend({\n name: NAME_SKELETON,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var data = _ref.data,\n props = _ref.props;\n var size = props.size,\n animation = props.animation,\n variant = props.variant;\n return h('div', mergeData(data, {\n staticClass: 'b-skeleton',\n style: {\n width: size || props.width,\n height: size || props.height\n },\n class: (_class = {}, _defineProperty(_class, \"b-skeleton-\".concat(props.type), true), _defineProperty(_class, \"b-skeleton-animate-\".concat(animation), animation), _defineProperty(_class, \"bg-\".concat(variant), variant), _class)\n }));\n }\n});","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone:\n 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort:\n 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort:\n 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једног минута'],\n mm: ['минут', 'минута', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n d: ['један дан', 'једног дана'],\n dd: ['дан', 'дана', 'дана'],\n M: ['један месец', 'једног месеца'],\n MM: ['месец', 'месеца', 'месеци'],\n y: ['једну годину', 'једне године'],\n yy: ['годину', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n\n return number + ' ' + word;\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort:\n 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone:\n 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays:\n 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone:\n 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort:\n 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone:\n 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone:\n 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(\n /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,\n function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n }\n );\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays:\n 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort:\n 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! author : Rasid Redzic : https://github.com/rasidre\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 'm':\n return withoutSuffix\n ? 'jedna minuta'\n : isFuture\n ? 'jednu minutu'\n : 'jedne minute';\n }\n }\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jedan sat';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: processRelativeTime,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone:\n 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone:\n 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort:\n 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { Vue } from '../../vue';\nimport { NAME_ASPECT } from '../../constants/components';\nimport { PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { RX_ASPECT, RX_ASPECT_SEPARATOR } from '../../constants/regex';\nimport { mathAbs } from '../../utils/math';\nimport { toFloat } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Constants ---\n\nvar CLASS_NAME = 'b-aspect'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // Accepts a number (i.e. `16 / 9`, `1`, `4 / 3`)\n // Or a string (i.e. '16/9', '16:9', '4:3' '1:1')\n aspect: makeProp(PROP_TYPE_NUMBER_STRING, '1:1'),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_ASPECT); // --- Main component ---\n// @vue/component\n\nexport var BAspect = /*#__PURE__*/Vue.extend({\n name: NAME_ASPECT,\n mixins: [normalizeSlotMixin],\n props: props,\n computed: {\n padding: function padding() {\n var aspect = this.aspect;\n var ratio = 1;\n\n if (RX_ASPECT.test(aspect)) {\n // Width and/or Height can be a decimal value below `1`, so\n // we only fallback to `1` if the value is `0` or `NaN`\n var _aspect$split$map = aspect.split(RX_ASPECT_SEPARATOR).map(function (v) {\n return toFloat(v) || 1;\n }),\n _aspect$split$map2 = _slicedToArray(_aspect$split$map, 2),\n width = _aspect$split$map2[0],\n height = _aspect$split$map2[1];\n\n ratio = width / height;\n } else {\n ratio = toFloat(aspect) || 1;\n }\n\n return \"\".concat(100 / mathAbs(ratio), \"%\");\n }\n },\n render: function render(h) {\n var $sizer = h('div', {\n staticClass: \"\".concat(CLASS_NAME, \"-sizer flex-grow-1\"),\n style: {\n paddingBottom: this.padding,\n height: 0\n }\n });\n var $content = h('div', {\n staticClass: \"\".concat(CLASS_NAME, \"-content flex-grow-1 w-100 mw-100\"),\n style: {\n marginLeft: '-100%'\n }\n }, this.normalizeSlot());\n return h(this.tag, {\n staticClass: \"\".concat(CLASS_NAME, \" d-flex\")\n }, [$sizer, $content]);\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_SKELETON_IMG } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BAspect } from '../aspect';\nimport { BSkeleton } from './skeleton'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n animation: makeProp(PROP_TYPE_STRING),\n aspect: makeProp(PROP_TYPE_STRING, '16:9'),\n cardImg: makeProp(PROP_TYPE_STRING),\n height: makeProp(PROP_TYPE_STRING),\n noAspect: makeProp(PROP_TYPE_BOOLEAN, false),\n variant: makeProp(PROP_TYPE_STRING),\n width: makeProp(PROP_TYPE_STRING)\n}, NAME_SKELETON_IMG); // --- Main component ---\n// @vue/component\n\nexport var BSkeletonImg = /*#__PURE__*/Vue.extend({\n name: NAME_SKELETON_IMG,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props;\n var aspect = props.aspect,\n width = props.width,\n height = props.height,\n animation = props.animation,\n variant = props.variant,\n cardImg = props.cardImg;\n var $img = h(BSkeleton, {\n props: {\n type: 'img',\n width: width,\n height: height,\n animation: animation,\n variant: variant\n },\n class: _defineProperty({}, \"card-img-\".concat(cardImg), cardImg)\n });\n return props.noAspect ? $img : h(BAspect, {\n props: {\n aspect: aspect\n }\n }, [$img]);\n }\n});","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort:\n 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort:\n 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone:\n 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = {\n standalone:\n 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n '_'\n ),\n isFormat: /DD?[o.]?(\\[[^\\[\\]]*\\]|\\s)+MMMM/,\n },\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex =\n /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex:\n /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex:\n /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort:\n 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays:\n 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort:\n 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-ps\": \"4c98\",\n\t\"./ar-ps.js\": \"4c98\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku-kmr\": \"7558\",\n\t\"./ku-kmr.js\": \"7558\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf755\",\n\t\"./tlh.js\": \"cf755\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays:\n 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone:\n 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort:\n 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Palestine) [ar-ps]\n//! author : Majd Al-Shihabi : https://github.com/majdal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arPs = moment.defineLocale('ar-ps', {\n months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(\n '_'\n ),\n monthsShort:\n 'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .split('') // reversed since negative lookbehind not supported everywhere\n .reverse()\n .join('')\n .replace(/[١٢](?![\\u062a\\u0643])/g, function (match) {\n return numberMap[match];\n })\n .split('')\n .reverse()\n .join('')\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arPs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays:\n 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings =\n 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort:\n 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort:\n 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonChartBar.vue?vue&type=style&index=0&id=29a124e8&prod&scoped=true&lang=scss\"","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex =\n /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort:\n 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'én time',\n hh: '%d timer',\n d: 'én dag',\n dd: '%d dager',\n w: 'én uke',\n ww: '%d uker',\n M: 'én måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","import { Vue, mergeData } from '../../vue';\nimport { NAME_SKELETON_WRAPPER } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_LOADING } from '../../constants/slots';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n loading: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_SKELETON_WRAPPER); // --- Main component ---\n// @vue/component\n\nexport var BSkeletonWrapper = /*#__PURE__*/Vue.extend({\n name: NAME_SKELETON_WRAPPER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var data = _ref.data,\n props = _ref.props,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var slotScope = {};\n\n if (props.loading) {\n return h('div', mergeData(data, {\n attrs: {\n role: 'alert',\n 'aria-live': 'polite',\n 'aria-busy': true\n },\n staticClass: 'b-skeleton-wrapper',\n key: 'loading'\n }), normalizeSlot(SLOT_NAME_LOADING, slotScope, $scopedSlots, $slots));\n }\n\n return normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots);\n }\n});","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays:\n 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Kurdish [ku-kmr]\n//! authors : Mazlum Özdogan : https://github.com/mergehez\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(num, withoutSuffix, key, isFuture) {\n var format = {\n s: ['çend sanîye', 'çend sanîyeyan'],\n ss: [num + ' sanîye', num + ' sanîyeyan'],\n m: ['deqîqeyek', 'deqîqeyekê'],\n mm: [num + ' deqîqe', num + ' deqîqeyan'],\n h: ['saetek', 'saetekê'],\n hh: [num + ' saet', num + ' saetan'],\n d: ['rojek', 'rojekê'],\n dd: [num + ' roj', num + ' rojan'],\n w: ['hefteyek', 'hefteyekê'],\n ww: [num + ' hefte', num + ' hefteyan'],\n M: ['mehek', 'mehekê'],\n MM: [num + ' meh', num + ' mehan'],\n y: ['salek', 'salekê'],\n yy: [num + ' sal', num + ' salan'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n // function obliqueNumSuffix(num) {\n // if(num.includes(':'))\n // num = parseInt(num.split(':')[0]);\n // else\n // num = parseInt(num);\n // return num == 0 || num % 10 == 1 ? 'ê'\n // : (num > 10 && num % 10 == 0 ? 'î' : 'an');\n // }\n function ezafeNumSuffix(num) {\n num = '' + num;\n var l = num.substring(num.length - 1),\n ll = num.length > 1 ? num.substring(num.length - 2) : '';\n if (\n !(ll == 12 || ll == 13) &&\n (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')\n )\n return 'yê';\n return 'ê';\n }\n\n var kuKmr = moment.defineLocale('ku-kmr', {\n // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)\n // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'\n // But the names below are more well known and handy\n months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(\n '_'\n ),\n monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),\n monthsParseExact: true,\n weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),\n weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),\n weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'bn' : 'BN';\n } else {\n return isLower ? 'pn' : 'PN';\n }\n },\n meridiemParse: /bn|BN|pn|PN/,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[a] YYYY[an]',\n LLL: 'Do MMMM[a] YYYY[an] HH:mm',\n LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',\n ll: 'Do MMM[.] YYYY[an]',\n lll: 'Do MMM[.] YYYY[an] HH:mm',\n llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',\n },\n calendar: {\n sameDay: '[Îro di saet] LT [de]',\n nextDay: '[Sibê di saet] LT [de]',\n nextWeek: 'dddd [di saet] LT [de]',\n lastDay: '[Duh di saet] LT [de]',\n lastWeek: 'dddd[a borî di saet] LT [de]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'di %s de',\n past: 'berî %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(?:yê|ê|\\.)/,\n ordinal: function (num, period) {\n var p = period.toLowerCase();\n if (p.includes('w') || p.includes('m')) return num + '.';\n\n return num + ezafeNumSuffix(num);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return kuKmr;\n\n})));\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Kpi.vue?vue&type=style&index=1&id=5e69fda3&prod&lang=scss&scoped=true\"","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months =\n 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast =\n 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort:\n 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays:\n 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort:\n 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonBoard.vue?vue&type=style&index=0&id=2865710c&prod&scoped=true&lang=scss\"","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl:\n 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl:\n 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative =\n 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective =\n 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays:\n 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort:\n 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone:\n 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone:\n 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone:\n 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex:\n /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex:\n /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort:\n '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort:\n 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays:\n 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonTable.vue?vue&type=style&index=0&id=1629bcbb&prod&lang=scss&scoped=true\"","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone:\n 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative:\n 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative:\n 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive:\n 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone:\n 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort:\n 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Kpi.vue?vue&type=style&index=0&id=5e69fda3&prod&lang=scss\"","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort:\n 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays:\n 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort:\n 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort:\n 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse:\n /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","'use strict';\nvar $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n\n return number + ' ' + word;\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort:\n 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort:\n 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays:\n 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone:\n 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays:\n 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone:\n 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('b-skeleton-wrapper',[_c('b-card',{staticStyle:{\"width\":\"325px\"},attrs:{\"img-top\":\"\",\"no-body\":\"\"}},[_c('b-skeleton-img',{attrs:{\"card-img\":\"top\"}}),_c('div',{staticClass:\"tw-p-5 tw-pt-0\"},[_c('div',{staticClass:\"tw-flex tw-mt-8 items-strecth tw-space-x-10\"},[_c('div',{staticClass:\"tw-flex-col tw-w-2/3 tw-justify-between\"},[_c('b-skeleton',{staticClass:\"tw-flex-grow tw-mb-1\",attrs:{\"height\":\"15px\"}}),_c('b-skeleton',{staticClass:\"tw-flex-grow\",attrs:{\"height\":\"15px\",\"width\":\"80%\"}})],1),_c('div',{staticClass:\"tw-flex tw-w-1/3 tw-justify-between tw-space-x-10\"},[_c('b-skeleton',{staticClass:\"tw-flex-grow\",attrs:{\"height\":\"50%\"}})],1)]),_c('hr',{staticClass:\"tw-m-0\"}),_c('div',{staticClass:\"tw-flex tw-mt-5 tw-justify-between tw-space-x-10\"},[_c('div',{staticClass:\"tw-flex-col tw-w-1/3 tw-justify-between\"},[_c('b-skeleton',{staticClass:\"tw-flex-grow tw-mb-1\",attrs:{\"height\":\"20px\"}}),_c('b-skeleton',{staticClass:\"tw-flex-grow\",attrs:{\"height\":\"8px\",\"width\":\"100%\"}})],1),_c('div',{staticClass:\"tw-flex tw-flex-col tw-w-1/3 tw-justify-between\"},[_c('b-skeleton',{staticClass:\"tw-flex-grow tw-mb-1\",attrs:{\"width\":\"80%\"}}),_c('b-skeleton',{staticClass:\"tw-flex-grow\"})],1)])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { BCard, BSkeletonImg, BSkeleton, BSkeletonWrapper } from \"bootstrap-vue\";\nimport AvIcon from \"@/components/av-icon/AvIcon.vue\";\n\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component( {\n name: \"AvSkeletonCard\",\n components: {\n BCard,\n BSkeletonImg,\n BSkeleton,\n BSkeletonWrapper,\n AvIcon,\n }\n} )\nexport default class AvSkeletonCard extends Vue {}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonCard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonCard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AvSkeletonCard.vue?vue&type=template&id=5d9e84a1\"\nimport script from \"./AvSkeletonCard.vue?vue&type=script&lang=ts\"\nexport * from \"./AvSkeletonCard.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('b-skeleton-wrapper',[_c('div',{staticClass:\"tw-flex tw-flex-col\"},[_c('div',[_c('b-skeleton',{attrs:{\"width\":\"100%\",\"height\":\"32px\"}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\nimport { BSkeletonImg, BSkeleton, BSkeletonWrapper } from \"bootstrap-vue\";\n\n@Component({\n name: \"AvSkeletonInput\",\n components: {\n BSkeletonImg,\n BSkeleton,\n BSkeletonWrapper\n },\n})\nexport default class AvSkeletonInput extends Vue {}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonInput.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonInput.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AvSkeletonInput.vue?vue&type=template&id=27ca8fd7\"\nimport script from \"./AvSkeletonInput.vue?vue&type=script&lang=ts\"\nexport * from \"./AvSkeletonInput.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('b-skeleton-wrapper',[_c('div',{staticClass:\"tw-flex tw-flex-col\"},[_c('b-skeleton',{key:\"fotos\",staticClass:\"tw-w-full tw-p-4 tw-pt-8\",attrs:{\"height\":\"448px\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from \"vue\";\nimport { Component } from \"vue-property-decorator\";\nimport { BSkeletonImg, BSkeleton, BSkeletonWrapper } from \"bootstrap-vue\";\n\n@Component({\n name: \"AvSkeletonMediaTabs\",\n components: {\n BSkeletonImg,\n BSkeleton,\n BSkeletonWrapper,\n },\n})\nexport default class AvSkeletonMediaTabs extends Vue {\n index: number = 0;\n\n classParaMobile(index: number): string {\n return index <= 2 ? \"tw-flex\" : \"hidden\";\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonMediaTabs.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonMediaTabs.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AvSkeletonMediaTabs.vue?vue&type=template&id=0563017e\"\nimport script from \"./AvSkeletonMediaTabs.vue?vue&type=script&lang=ts\"\nexport * from \"./AvSkeletonMediaTabs.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"tw-w-full\"},[_c('div',{staticClass:\"board-avonale\"},_vm._l((_vm.quantity),function(i){return _c('av-skeleton-card',{key:i})}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { AvSkeletonCard } from \"@/components/av-skeleton\";\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\n\n@Component( {\n name: \"AvSkeletonBoard\",\n components: {\n AvSkeletonCard,\n }\n} )\nexport default class AvSkeletonBoard extends Vue {\n @Prop( { required: true } ) quantity!: number;\n};\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonBoard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonBoard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AvSkeletonBoard.vue?vue&type=template&id=2865710c&scoped=true\"\nimport script from \"./AvSkeletonBoard.vue?vue&type=script&lang=ts\"\nexport * from \"./AvSkeletonBoard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AvSkeletonBoard.vue?vue&type=style&index=0&id=2865710c&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2865710c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('av-card',[_c('div',{staticClass:\"table__skeleton-row\"},[_c('b-skeleton',{attrs:{\"height\":\"30px\"}})],1),_c('div',{staticClass:\"tw-flex tw-space-x-5 table__skeleton-row\"},[_c('b-skeleton',{attrs:{\"width\":\"20%\",\"height\":\"30px\"}}),_c('b-skeleton',{staticClass:\"tw-flex-grow\",attrs:{\"height\":\"30px\"}})],1),_c('div',{staticClass:\"tw-flex tw-space-x-10 table__skeleton-row\"},[_c('div',{staticClass:\"tw-flex tw-space-x-2 tw-flex-grow\"},_vm._l((7),function(i){return _c('b-skeleton',{key:i,attrs:{\"width\":\"100%\",\"height\":\"35px\"}})}),1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonTable.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonTable.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AvSkeletonTable.vue?vue&type=template&id=1629bcbb&scoped=true\"\nimport script from \"./AvSkeletonTable.vue?vue&type=script&lang=js\"\nexport * from \"./AvSkeletonTable.vue?vue&type=script&lang=js\"\nimport style0 from \"./AvSkeletonTable.vue?vue&type=style&index=0&id=1629bcbb&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1629bcbb\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('b-skeleton-wrapper',[_c('div',{staticClass:\"tw-w-full tw-p-4 tw-pt-8\"},_vm._l((6),function(index){return _c('b-skeleton',{key:index,staticClass:\"tw-flex-grow tw-mb-10\",attrs:{\"height\":\"50px\"}})}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { BSkeletonImg, BSkeleton, BSkeletonWrapper } from \"bootstrap-vue\";\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component( {\n name: \"AvSkeletonVerticalNavMenu\",\n components: {\n BSkeletonImg,\n BSkeleton,\n BSkeletonWrapper,\n }\n} )\nexport default class AvSkeletonVerticalNavMenu extends Vue {}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonVerticalNavMenu.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonVerticalNavMenu.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AvSkeletonVerticalNavMenu.vue?vue&type=template&id=17e40616\"\nimport script from \"./AvSkeletonVerticalNavMenu.vue?vue&type=script&lang=ts\"\nexport * from \"./AvSkeletonVerticalNavMenu.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('b-skeleton-wrapper',[_c('b-skeleton',{staticClass:\"mb-0\",attrs:{\"height\":\"21px\"}}),_c('hr',{staticClass:\"tw-m-0\"}),_c('b-row',{staticClass:\"skeleton-bar\",style:({ height: _vm.height })},_vm._l((_vm.columns),function(i){return _c('b-col',{key:i,staticClass:\"skeleton-bar-column\",style:({ height: _vm.height })},[_c('b-skeleton',{staticClass:\"w-100\",attrs:{\"height\":_vm.generateColumnHeight(i),\"card-img\":\"top\"}})],1)}),1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { BRow, BCol, BSkeleton, BSkeletonWrapper } from \"bootstrap-vue\";\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\n\n@Component({\n name: \"AvSkeletonChartBar\",\n components: {\n BRow,\n BCol,\n BSkeleton,\n BSkeletonWrapper,\n },\n})\nexport default class AvSkeletonChartBar extends Vue {\n @Prop({ default: \"350px\" }) height!: string;\n @Prop({ default: 3 }) columns!: number;\n\n generateColumnHeight(index: number): string {\n return Math.round(Math.random() * 100) + 1 + \"%\";\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonChartBar.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonChartBar.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AvSkeletonChartBar.vue?vue&type=template&id=29a124e8&scoped=true\"\nimport script from \"./AvSkeletonChartBar.vue?vue&type=script&lang=ts\"\nexport * from \"./AvSkeletonChartBar.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AvSkeletonChartBar.vue?vue&type=style&index=0&id=29a124e8&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"29a124e8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('b-skeleton-wrapper',[_c('b-skeleton',{staticClass:\"mb-0\",attrs:{\"height\":\"21px\"}}),_c('hr',{staticClass:\"tw-m-0\"}),_c('div',{staticClass:\"pie-skeleton-legends\"},[_c('b-skeleton',{staticClass:\"pie-skeleton-legend\",attrs:{\"height\":\"15px\"}}),_c('b-skeleton',{staticClass:\"pie-skeleton-legend\",attrs:{\"height\":\"15px\"}})],1),_c('div',{staticClass:\"pie-skeleton-wrapper\",style:({ height: _vm.height })},[_c('b-skeleton',{staticClass:\"pie-skeleton-item\"}),_c('b-skeleton',{staticClass:\"pie-skeleton-item\"})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { BRow, BCol, BSkeleton, BSkeletonWrapper } from \"bootstrap-vue\";\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\n\n@Component({\n name: \"AvSkeletonChartPie\",\n components: {\n BRow,\n BCol,\n BSkeleton,\n BSkeletonWrapper,\n },\n})\nexport default class AvSkeletonChartPie extends Vue {\n @Prop({ default: \"300px\" }) height!: string;\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonChartPie.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonChartPie.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AvSkeletonChartPie.vue?vue&type=template&id=289921e8&scoped=true\"\nimport script from \"./AvSkeletonChartPie.vue?vue&type=script&lang=ts\"\nexport * from \"./AvSkeletonChartPie.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AvSkeletonChartPie.vue?vue&type=style&index=0&id=289921e8&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"289921e8\",\n null\n \n)\n\nexport default component.exports","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^(maart|mrt\\.?)$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone:\n 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort:\n 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex:\n /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex:\n /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort:\n 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort:\n 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort:\n 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays:\n 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays:\n 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvSkeletonChartPie.vue?vue&type=style&index=0&id=289921e8&prod&scoped=true&lang=scss\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{attrs:{\"id\":\"dashboard-kpi\"}},[_c('b-row',{staticClass:\"kpi-tools\"},[_c('b-col',{staticClass:\"mb-2\"},[_c('av-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(113, 102, 240, 0.15)'),expression:\"'rgba(113, 102, 240, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"variant\":\"outline-secondary\",\"size\":\"sm\",\"disabled\":_vm.updatingData || _vm.updateDashboard},on:{\"click\":_vm.fetchUpdateDashboard}},[_c('feather-icon',{attrs:{\"icon\":\"RepeatIcon\"}}),_vm._v(\" \"+_vm._s(_vm.updateDashboard ? \"Atualizando dashboard\" : \"Atualizar dashboard\")+\" \")],1)],1),_c('b-col',{staticClass:\"text-right\",attrs:{\"xs\":\"12\"}},[_c('av-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],staticClass:\"btn-icon\",attrs:{\"variant\":\"primary\",\"disabled\":_vm.printUnavailable},on:{\"click\":_vm.useExport.exportPdf}},[_c('feather-icon',{attrs:{\"icon\":\"PrinterIcon\"}}),_vm._v(\" Baixar Relatório \")],1)],1)],1),_c('b-row',[_c('b-col',{attrs:{\"sm\":\"12\",\"md\":\"8\"}},[_c('b-card',[(_vm.loadingTotalMarketShareCurrentMonth)?_c('AvSkeletonChartBar',{attrs:{\"columns\":10}}):_vm._e(),(!_vm.loadingTotalMarketShareCurrentMonth)?[_c('div',{attrs:{\"id\":\"chart-total-market-share-current-month-print\"}},[_c('h6',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.totalMarketShareCurrentMonth.title))]),_c('AvChartBar',{staticClass:\"chart-bar\",attrs:{\"data\":_vm.totalMarketShareCurrentMonth.data,\"config\":_vm.totalMarketShareCurrentMonth.config,\"id\":\"chart-total-market-share-current-month\"},on:{\"root\":_vm.handleChartTotalMarketShareCurrentMonth}})],1)]:_vm._e()],2)],1),_c('b-col',{attrs:{\"sm\":\"12\",\"md\":\"4\"}},[_c('b-card',[(_vm.pie1Data.loading)?_c('AvSkeletonChartPie'):_vm._e(),(!_vm.pie1Data.loading)?[_c('div',{attrs:{\"id\":\"chart-venda-direta-vs-venda-varejo-fabricante-print\"}},[_c('h6',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(`${ _vm.getBrand == \"Fiat\" ? \"Venda Direta X Varejo - Acumulado do Ano\" : _vm.pie1Data.title } ${_vm.labelVDxVEMarket != \"\" ? \"- \" : \"\"}`)+\" \"),_c('span',{staticClass:\"text-primary text-uppercase\"},[_vm._v(_vm._s(_vm.labelVDxVEMarket))])]),_c('AvChartPie',{staticClass:\"chart-pie\",attrs:{\"data\":_vm.pie1Data.data,\"config\":_vm.pie1Data.config,\"id\":\"chart-venda-direta-vs-venda-varejo-fabricante\"},on:{\"root\":_vm.handlePie1}})],1)]:_vm._e()],2)],1)],1),_c('b-row',[_c('b-col',{attrs:{\"sm\":\"12\",\"md\":\"8\"}},[_c('b-card',[(_vm.loadingTotalMarketShareYearToDate)?_c('AvSkeletonChartBar',{attrs:{\"columns\":10}}):_vm._e(),(!_vm.loadingTotalMarketShareYearToDate)?[_c('div',{attrs:{\"id\":\"chart-total-market-share-year-to-date-print\"}},[_c('h6',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.totalMarketShareYearToDate.title))]),_c('AvChartBar',{staticClass:\"chart-bar\",attrs:{\"id\":\"chart-total-market-share-year-to-date\",\"data\":_vm.totalMarketShareYearToDate.data,\"config\":_vm.totalMarketShareYearToDate.config},on:{\"root\":_vm.handleTotalMarketShareYearToDate}})],1)]:_vm._e()],2)],1),_c('b-col',{attrs:{\"sm\":\"12\",\"md\":\"4\"}},[_c('b-card',[(_vm.pie2Data.loading)?_c('AvSkeletonChartPie'):_vm._e(),(!_vm.pie2Data.loading)?[_c('div',{attrs:{\"id\":\"chart-venda-direta-vs-venda-varejo-ano-print\"}},[_c('h6',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.pie2Data.title)+\" \"),(_vm.getBrand == 'FIAT')?_c('span',{staticClass:\"text-primary text-uppercase\"},[_vm._v(\" \"+_vm._s(\" - \" + _vm.getBrand)+\" \")]):_vm._e()]),_c('AvChartPie',{staticClass:\"chart-pie\",attrs:{\"id\":\"chart-venda-direta-vs-venda-varejo-ano\",\"data\":_vm.pie2Data.data,\"config\":_vm.pie2Data.config},on:{\"root\":_vm.handlePie2}})],1)]:_vm._e()],2)],1)],1),_c('b-row',[_c('b-col',[_c('b-card',[(_vm.loadingBrandEvolution)?_c('AvSkeletonChartBar',{attrs:{\"columns\":10}}):_vm._e(),(!_vm.loadingBrandEvolution)?[_c('div',{attrs:{\"id\":\"chart-brand-evolution-print\"}},[_c('h6',{staticClass:\"title\"},[_vm._v(\" EVOLUÇÃO DO EMPLACAMENTO \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(_vm.getBrand))]),_vm._v(\" - \"+_vm._s(_vm.brandEvolutionData.title)+\" \")]),_c('AvChartRange',{staticClass:\"chart-range\",attrs:{\"id\":\"chart-brand-evolution\",\"data\":_vm.brandEvolutionData.data,\"date\":_vm.brandEvolutionData.date,\"config\":_vm.brandEvolutionData.config},on:{\"root\":_vm.handleBrandEvolutionData}})],1)]:_vm._e()],2)],1)],1),_c('b-row',[_c('b-col',[_c('b-card',[(_vm.loadingDailyBrandEvolution)?_c('AvSkeletonChartBar',{attrs:{\"columns\":10}}):_vm._e(),(!_vm.loadingDailyBrandEvolution)?[_c('div',{attrs:{\"id\":\"chart-daily-brand-evolution-print\"}},[_c('h6',{staticClass:\"title\"},[_vm._v(\" EVOLUÇÃO DA \"+_vm._s(_vm.dailyBrandEvolutionData.title)+\" - \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(_vm.getBrand))])]),_c('AvChartRange',{staticClass:\"chart-range\",attrs:{\"id\":\"chart-daily-brand-evolution\",\"data\":_vm.dailyBrandEvolutionData.data,\"date\":_vm.dailyBrandEvolutionData.date,\"config\":_vm.dailyBrandEvolutionData.config},on:{\"root\":_vm.handleDailyBrandEvolutionData}})],1)]:_vm._e()],2)],1)],1),_c('b-row',[_c('b-col',{attrs:{\"sm\":\"12\",\"md\":\"6\"}},[_c('b-card',[(_vm.loadingLargestEconomicGroupsYearDate)?_c('AvSkeletonChartBar',{attrs:{\"columns\":10}}):_vm._e(),(!_vm.loadingLargestEconomicGroupsYearDate)?[_c('div',{attrs:{\"id\":\"chart-largest-economic-groups-year-date-print\"}},[_c('h6',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.largestEconomicGroupsYearDate.title))]),_c('AvChartBar',{staticClass:\"chart-bar\",attrs:{\"id\":\"chart-largest-economic-groups-year-date\",\"data\":_vm.largestEconomicGroupsYearDate.data,\"config\":_vm.largestEconomicGroupsYearDate.config},on:{\"root\":_vm.handleLargestEconomicGroupsYearDate}})],1)]:_vm._e()],2)],1),_c('b-col',{attrs:{\"sm\":\"12\",\"md\":\"6\"}},[_c('b-card',[(_vm.loadingGrowthByBrand)?_c('AvSkeletonChartBar',{attrs:{\"columns\":6}}):_vm._e(),(!_vm.loadingGrowthByBrand)?[_c('div',{attrs:{\"id\":\"chart-growth-by-brand-print\"}},[_c('h6',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.growthByBrand.title))]),_c('AvChartBar',{staticClass:\"chart-bar\",attrs:{\"id\":\"chart-growth-by-brand\",\"data\":_vm.growthByBrand.data,\"config\":_vm.growthByBrand.config},on:{\"root\":_vm.handleGrowthByBrand}})],1)]:_vm._e()],2)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',_vm._b({attrs:{\"id\":_vm.id}},'div',_vm.$attrs,false))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Represents a relative value (percent).\r\n *\r\n * The Percent object, can be instantiated using two ways:\r\n *\r\n * * Via `new Percent(X)`.\r\n * * Via `am5.percent(X)`.\r\n *\r\n * You can also use shortcut functions for `0%`, `50%`, and `100%`:\r\n * * `am5.p0`\r\n * * `am5.p50`\r\n * * `am5.p100`\r\n */\r\nexport class Percent {\r\n /**\r\n * Constructor.\r\n *\r\n * @param percent Percent value\r\n */\r\n constructor(percent) {\r\n /**\r\n * Value in percent.\r\n */\r\n Object.defineProperty(this, \"_value\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._value = percent;\r\n }\r\n /**\r\n * Relative value.\r\n *\r\n * E.g. 100% is 1, 50% is 0.5, etc.\r\n *\r\n * This is useful to apply transformations to other values. E.g.:\r\n *\r\n * ```TypeScript\r\n * let value = 256;\r\n * let percent = new am5.p50;\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n * ```JavaScript\r\n * var value = 256;\r\n * var percent = new am5.p50;\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n *\r\n * Alternatively, you can use `am5.percent()` helper function:\r\n *\r\n * ```TypeScript\r\n * let value = 256;\r\n * let percent = am5.p50;\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n * ```JavaScript\r\n * var value = 256;\r\n * var percent = am5.p50;\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n *\r\n * @readonly\r\n * @return Relative value\r\n */\r\n get value() {\r\n return this._value / 100;\r\n }\r\n /**\r\n * Value in percent.\r\n *\r\n * @readonly\r\n * @return Percent\r\n */\r\n get percent() {\r\n return this._value;\r\n }\r\n toString() {\r\n return \"\" + this._value + \"%\";\r\n }\r\n interpolate(min, max) {\r\n return min + (this.value * (max - min));\r\n }\r\n static normalize(percent, min, max) {\r\n if (percent instanceof Percent) {\r\n return percent;\r\n }\r\n else {\r\n if (min === max) {\r\n return new Percent(0);\r\n }\r\n else {\r\n return new Percent(Math.min(Math.max((percent - min) * (1 / (max - min)), 0), 1) * 100);\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * Converts numeric percent value to a proper [[Percent]] object.\r\n *\r\n * ```TypeScript\r\n * pieSeries.set(\"radius\", am5.percent(80));\r\n * ```\r\n * ```JavaScript\r\n * pieSeries.set(\"radius\", am5.percent(80));\r\n * ```\r\n *\r\n * @param value Percent\r\n * @return Percent object\r\n */\r\nexport function percent(value) {\r\n return new Percent(value);\r\n}\r\n/**\r\n * A shortcut function to `am5.percent(0)`.\r\n */\r\nexport const p0 = percent(0);\r\n/**\r\n * A shortcut function to `am5.percent(100)`.\r\n */\r\nexport const p100 = percent(100);\r\n/**\r\n * A shortcut function to `am5.percent(50)`.\r\n */\r\nexport const p50 = percent(50);\r\n/**\r\n * Checks if value is a [[Percent]] object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Input value\r\n * @return Is percent?\r\n */\r\nexport function isPercent(value) {\r\n return value instanceof Percent;\r\n}\r\n//# sourceMappingURL=Percent.js.map","/**\r\n * A collection of utility functions for various type checks and conversion\r\n * @hidden\r\n */\r\n/**\r\n * ============================================================================\r\n * TYPE CHECK\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Returns `true` if value is not a number (NaN).\r\n *\r\n * @param value Input value\r\n * @return Is NaN?\r\n */\r\nexport function isNaN(value) {\r\n return Number(value) !== value;\r\n}\r\n/**\r\n * Returns a type of the value.\r\n *\r\n * @param value Input value\r\n * @return Type of the value\r\n * @ignore\r\n */\r\nexport function getType(value) {\r\n return ({}).toString.call(value);\r\n}\r\n/**\r\n * Asserts that the condition is true.\r\n *\r\n * @param condition Condition to check\r\n * @param message Message to display in the error\r\n * @ignore\r\n */\r\nexport function assert(condition, message = \"Assertion failed\") {\r\n if (!condition) {\r\n throw new Error(message);\r\n }\r\n}\r\n/**\r\n * ============================================================================\r\n * QUICK CONVERSION\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Converts any value into a `number`.\r\n *\r\n * @param value Source value\r\n * @return Number representation of value\r\n */\r\nexport function toNumber(value) {\r\n if (value != null && !isNumber(value)) {\r\n let converted = Number(value);\r\n if (isNaN(converted) && isString(value) && value != \"\") {\r\n return toNumber(value.replace(/[^0-9.\\-]+/g, ''));\r\n }\r\n return converted;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Converts anything to Date object.\r\n *\r\n * @param value A value of any type\r\n * @return Date object representing a value\r\n */\r\nexport function toDate(value) {\r\n if (isDate(value)) {\r\n // TODO maybe don't create a new Date ?\r\n return new Date(value);\r\n }\r\n else if (isNumber(value)) {\r\n return new Date(value);\r\n }\r\n else {\r\n // Try converting to number (assuming timestamp)\r\n let num = Number(value);\r\n if (!isNumber(num)) {\r\n return new Date(value);\r\n }\r\n else {\r\n return new Date(num);\r\n }\r\n }\r\n}\r\n/**\r\n * Converts numeric value into string. Deals with large or small numbers that\r\n * would otherwise use exponents.\r\n *\r\n * @param value Numeric value\r\n * @return Numeric value as string\r\n */\r\nexport function numberToString(value) {\r\n // TODO handle Infinity and -Infinity\r\n if (isNaN(value)) {\r\n return \"NaN\";\r\n }\r\n if (value === Infinity) {\r\n return \"Infinity\";\r\n }\r\n if (value === -Infinity) {\r\n return \"-Infinity\";\r\n }\r\n // Negative 0\r\n if ((value === 0) && (1 / value === -Infinity)) {\r\n return \"-0\";\r\n }\r\n // Preserve negative and deal with absoute values\r\n let negative = value < 0;\r\n value = Math.abs(value);\r\n // TODO test this\r\n let parsed = /^([0-9]+)(?:\\.([0-9]+))?(?:e[\\+\\-]([0-9]+))?$/.exec(\"\" + value);\r\n let digits = parsed[1];\r\n let decimals = parsed[2] || \"\";\r\n let res;\r\n // Leave the nummber as it is if it does not use exponents\r\n if (parsed[3] === undefined) {\r\n res = (decimals === \"\" ? digits : digits + \".\" + decimals);\r\n }\r\n else {\r\n let exponent = +parsed[3];\r\n // Deal with decimals\r\n if (value < 1) {\r\n let zeros = exponent - 1;\r\n res = \"0.\" + repeat(\"0\", zeros) + digits + decimals;\r\n // Deal with integers\r\n }\r\n else {\r\n let zeros = exponent - decimals.length;\r\n if (zeros === 0) {\r\n res = digits + decimals;\r\n }\r\n else if (zeros < 0) {\r\n res = digits + decimals.slice(0, zeros) + \".\" + decimals.slice(zeros);\r\n }\r\n else {\r\n res = digits + decimals + repeat(\"0\", zeros);\r\n }\r\n }\r\n }\r\n return negative ? \"-\" + res : res;\r\n}\r\n/**\r\n * Repeats a `string` number of times as set in `amount`.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Make this faster\r\n * @param string Source string\r\n * @param amount Number of times to repeat string\r\n * @return New string\r\n */\r\nexport function repeat(string, amount) {\r\n return new Array(amount + 1).join(string);\r\n}\r\n/**\r\n * ============================================================================\r\n * TYPE CHECK\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Checks if parameter is `Date`.\r\n *\r\n * @param value Input value\r\n * @return Is Date?\r\n */\r\nexport function isDate(value) {\r\n return getType(value) === \"[object Date]\";\r\n}\r\n/**\r\n * Checks if parameter is `string`.\r\n *\r\n * @param value Input value\r\n * @return Is string?\r\n */\r\nexport function isString(value) {\r\n return typeof value === \"string\";\r\n}\r\n/**\r\n * Checks if parameter is `number`.\r\n *\r\n * @param value Input value\r\n * @return Is number?\r\n */\r\nexport function isNumber(value) {\r\n return typeof value === \"number\" && Number(value) == value;\r\n}\r\n/**\r\n * Checks if parameter is `object`.\r\n *\r\n * @param value Input value\r\n * @return Is object?\r\n */\r\nexport function isObject(value) {\r\n return typeof value === \"object\" && value !== null;\r\n}\r\n/**\r\n * Checks if parameter is `Array`.\r\n *\r\n * @param value Input value\r\n * @return Is Array?\r\n */\r\nexport function isArray(value) {\r\n return Array.isArray(value);\r\n}\r\n/**\r\n * ============================================================================\r\n * STATIC CONSTANTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport const PLACEHOLDER = \"__§§§__\";\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport const PLACEHOLDER2 = \"__§§§§__\";\r\n//# sourceMappingURL=Type.js.map","import * as $type from \"./Type\";\r\n/**\r\n * ============================================================================\r\n * UTILITY FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Searches `array` for `value`.\r\n *\r\n * Returns -1 if not found.\r\n *\r\n * @param array Source array\r\n * @param value Value to search\r\n * @returns Index\r\n */\r\nexport function indexOf(array, value) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n // TODO handle NaN\r\n if (array[i] === value) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Calls `test` for each element in `array`.\r\n *\r\n * If `test` returns `true` then it immediately returns `true`.\r\n *\r\n * If `test` returns `false` for all of the elements in `array` then it returns `false`.\r\n *\r\n * @param array Source array\r\n * @param test Function which is called on each element\r\n * @returns Whether `test` returned true or not\r\n */\r\nexport function any(array, test) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n if (test(array[i])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * Calls `fn` function for every member of array and returns a new array out\r\n * of all outputs.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n * @returns New array\r\n */\r\nexport function map(array, fn) {\r\n const length = array.length;\r\n const output = new Array(length);\r\n for (let i = 0; i < length; ++i) {\r\n output[i] = fn(array[i], i);\r\n }\r\n return output;\r\n}\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function each(array, fn) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n fn(array[i], i);\r\n }\r\n}\r\n/**\r\n * Iterates through all items in array in reverse order and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function eachReverse(array, fn) {\r\n let i = array.length;\r\n while (i > 0) {\r\n --i;\r\n fn(array[i], i);\r\n }\r\n}\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * If `fn` call evaluates to `false`, further iteration is cancelled.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function eachContinue(array, fn) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n if (!fn(array[i], i)) {\r\n break;\r\n }\r\n }\r\n}\r\n/**\r\n * Shifts an item at `index` towards beginning of the array.\r\n *\r\n * @param array Source array\r\n * @param index Target element index\r\n */\r\nexport function shiftLeft(array, index) {\r\n const length = array.length;\r\n for (let i = index; i < length; ++i) {\r\n array[i - index] = array[i];\r\n }\r\n array.length = length - index;\r\n}\r\n/**\r\n * Returns the last item of the array.\r\n *\r\n * @param array Source array\r\n * @returns Last item\r\n */\r\nexport function last(array) {\r\n const length = array.length;\r\n return length ? array[length - 1] : undefined;\r\n}\r\n/**\r\n * Returns the first item of the array.\r\n *\r\n * @param array Source array\r\n * @returns Last item\r\n */\r\nexport function first(array) {\r\n return array[0];\r\n}\r\n/**\r\n * Inserts `element` into `array` at `index`.\r\n *\r\n * Caps `index` to be between `0` and `array.length`\r\n *\r\n * @param array Source array\r\n * @param element Item to insert\r\n * @param array Index to insert item at\r\n */\r\nexport function insert(array, element, index) {\r\n //if (array) {\r\n index = Math.max(0, Math.min(index, array.length));\r\n array.splice(index, 0, element);\r\n //}\r\n}\r\n/**\r\n * Removes all copies of `element` from `array` (if they exist) and then\r\n * inserts `element` at `index`.\r\n *\r\n * @param array Source array\r\n * @param element Item\r\n * @param array Index to move item to\r\n */\r\nexport function setIndex(array, element, index) {\r\n remove(array, element);\r\n insert(array, element, index);\r\n}\r\n/**\r\n * Pushes all of the elements from `input` into `array`.\r\n *\r\n * @param array Output array\r\n * @param input Input array\r\n */\r\nexport function pushAll(array, input) {\r\n const length = input.length;\r\n for (let i = 0; i < length; ++i) {\r\n array.push(input[i]);\r\n }\r\n}\r\n/**\r\n * Removes `element` from `array`.\r\n *\r\n * If there are multiple copies of `element`, they are all removed.\r\n *\r\n * @param array Source array\r\n * @param element Item to remove\r\n */\r\nexport function remove(array, element) {\r\n let found = false;\r\n let index = 0;\r\n for (;;) {\r\n index = array.indexOf(element, index);\r\n if (index === -1) {\r\n return found;\r\n }\r\n else {\r\n found = true;\r\n array.splice(index, 1);\r\n }\r\n }\r\n}\r\nexport function removeFirst(array, element) {\r\n let index = array.indexOf(element);\r\n if (index !== -1) {\r\n array.splice(index, 1);\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Adds an `element` to `array`.\r\n *\r\n * If array already contains and item like this, it is removed before adding\r\n * it again.\r\n *\r\n * Optionally `toIndex` can be specified to add element at specific index.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n * @param array Index to move item to\r\n */\r\nexport function move(array, element, toIndex) {\r\n // @todo this implementation must be the same as the List.moveValue method\r\n // @todo don't do anything if the desired index is the same as the current index\r\n let index = indexOf(array, element);\r\n // @todo remove all old values rather than only the first ?\r\n if (index !== -1) {\r\n removeIndex(array, index);\r\n }\r\n if (toIndex == null) {\r\n array.push(element);\r\n }\r\n else {\r\n insertIndex(array, toIndex, element);\r\n }\r\n}\r\n/**\r\n * Inserts `element` into `array` at `index`.\r\n *\r\n * If `index` is not provided, it will insert `element` at the end of `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n * @param array Index to add item at\r\n */\r\nexport function add(array, element, index) {\r\n // Append to the end if index is not set\r\n if (!$type.isNumber(index)) {\r\n array.push(element);\r\n }\r\n // Add to the beginning of array if index is 0\r\n else if (index === 0) {\r\n array.unshift(element);\r\n }\r\n // Add to indicated place if index is set\r\n else {\r\n array.splice(index, 0, element);\r\n }\r\n}\r\n/**\r\n * Pushes `element` into `array` if it doesn't already exist.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n */\r\nexport function pushOne(array, element) {\r\n if (array.indexOf(element) === -1) {\r\n array.push(element);\r\n }\r\n}\r\n/**\r\n * Removes `element` from `array` (if it exists) and then inserts `element` at\r\n * `index`.\r\n *\r\n * If `index` is not provided, it will insert `element` at the end of `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to remove\r\n * @param array Index to move item to\r\n */\r\nexport function replace(array, element, index) {\r\n // check if exists\r\n let ind = array.indexOf(element);\r\n // remove if exists\r\n if (ind !== -1) {\r\n array.splice(ind, 1);\r\n }\r\n // add to end if index is not set\r\n if (!$type.isNumber(index)) {\r\n array.push(element);\r\n }\r\n // add to indicated place if index is set\r\n else {\r\n array.splice(index, 0, element);\r\n }\r\n}\r\n/**\r\n * Wraps `input` in an array, if it isn't already an array.\r\n *\r\n * @param input Source value\r\n * @return An array\r\n */\r\nexport function toArray(input) {\r\n if (Array.isArray(input)) {\r\n return input;\r\n }\r\n else {\r\n return [input];\r\n }\r\n}\r\n/**\r\n * Returns `true` if `element` exists in `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to search for\r\n * @returns Item in array?\r\n */\r\nexport function has(array, element) {\r\n return indexOf(array, element) !== -1;\r\n}\r\n/**\r\n * Returns a shallow copy of `array`.\r\n *\r\n * @param array Source array\r\n * @returns Copy of the array\r\n */\r\nexport function copy(array) {\r\n const length = array.length;\r\n // It's faster to create the array with a pre-defined length\r\n const output = new Array(length);\r\n for (let i = 0; i < length; ++i) {\r\n // Because the array has a pre-defined length, we have to assign rather than push\r\n // This is also faster than pushing\r\n output[i] = array[i];\r\n }\r\n return output;\r\n}\r\n/**\r\n * Returns a copy of `array` which contains all the elements between `start`\r\n * and `end`. (including `start` and excluding `end`)\r\n *\r\n * If `end` is not provided, it defaults to `array.length`.\r\n *\r\n * @param array Source array\r\n * @param start Start index\r\n * @param end End index\r\n * @returns Part of the array\r\n */\r\nexport function slice(array, start, end = array.length) {\r\n const output = new Array(end - start);\r\n for (let i = start; i < end; ++i) {\r\n output[i - start] = array[i];\r\n }\r\n return output;\r\n}\r\n/**\r\n * Inserts a value into array at specific index.\r\n *\r\n * @param array Source array\r\n * @param index Index\r\n * @param value Value to insert\r\n */\r\nexport function insertIndex(array, index, value) {\r\n array.splice(index, 0, value);\r\n}\r\n/**\r\n * Removes a value from array at specific index.\r\n *\r\n * @param array Source array\r\n * @param index Index\r\n */\r\nexport function removeIndex(array, index) {\r\n array.splice(index, 1);\r\n}\r\n/**\r\n * Searches the array using custom function and returns index of the item if\r\n * found.\r\n *\r\n * Will call `matches` function on all items of the array. If return value\r\n * evaluates to `true`, index is returned.\r\n *\r\n * Otherwise returns -1.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Index of the item if found\r\n */\r\nexport function findIndex(array, matches) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n if (matches(array[i], i)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * This is the same as `findIndex` except it searches from right to left.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Index of the item if found\r\n */\r\nexport function findIndexReverse(array, matches) {\r\n let i = array.length;\r\n while (i > 0) {\r\n --i;\r\n if (matches(array[i], i)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Searches the array using custom function and returns item if found.\r\n *\r\n * Will call `matches` function on all items of the array. If return value\r\n * evaluates to `true`, index is returned.\r\n *\r\n * Otherwise returns `undefined`.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Item if found\r\n */\r\nexport function find(array, matches) {\r\n const index = findIndex(array, matches);\r\n if (index !== -1) {\r\n return array[index];\r\n }\r\n}\r\n/**\r\n * This is the same as `find` except it searches from right to left.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Item if found\r\n */\r\nexport function findReverse(array, matches) {\r\n const index = findIndexReverse(array, matches);\r\n if (index !== -1) {\r\n return array[index];\r\n }\r\n}\r\n/**\r\n * Searches the array using custom function and returns item if found.\r\n *\r\n * Will call `matches` function on all items of the array. If value\r\n * is not `undefined`, it returns it.\r\n *\r\n * Otherwise returns `undefined`.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Item if found\r\n */\r\nexport function findMap(array, matches) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n const value = matches(array[i], i);\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n }\r\n}\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function shuffle(array) {\r\n // https://stackoverflow.com/a/2450976/449477\r\n let currentIndex = array.length, temporaryValue, randomIndex;\r\n // While there remain elements to shuffle...\r\n while (0 !== currentIndex) {\r\n // Pick a remaining element...\r\n randomIndex = Math.floor(Math.random() * currentIndex);\r\n currentIndex -= 1;\r\n // And swap it with the current element.\r\n temporaryValue = array[currentIndex];\r\n array[currentIndex] = array[randomIndex];\r\n array[randomIndex] = temporaryValue;\r\n }\r\n}\r\n/**\r\n * Orders an array using specific `ordering` function and returns right-most index of\r\n * the `value`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param array Source array\r\n * @param ordering An ordering function\r\n * @returns Result of the search\r\n */\r\nexport function getSortedIndex(array, ordering) {\r\n let start = 0;\r\n let end = array.length;\r\n let found = false;\r\n while (start < end) {\r\n // TODO is this faster/slower than using Math.floor ?\r\n const pivot = (start + end) >> 1;\r\n const order = ordering(array[pivot]);\r\n // less\r\n if (order < 0) {\r\n start = pivot + 1;\r\n // equal\r\n }\r\n else if (order === 0) {\r\n found = true;\r\n start = pivot + 1;\r\n // more\r\n }\r\n else {\r\n end = pivot;\r\n }\r\n }\r\n return {\r\n found: found,\r\n index: (found ? start - 1 : start)\r\n };\r\n}\r\n/**\r\n * Orders an array using specific `ordering` function and returns left-most index of\r\n * the `value`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param array Source array\r\n * @param ordering An ordering function\r\n * @returns Result of the search\r\n */\r\nexport function getFirstSortedIndex(array, ordering) {\r\n let start = 0;\r\n let end = array.length;\r\n let found = false;\r\n while (start < end) {\r\n // TODO is this faster/slower than using Math.floor ?\r\n const pivot = (start + end) >> 1;\r\n const order = ordering(array[pivot]);\r\n // less\r\n if (order < 0) {\r\n start = pivot + 1;\r\n // equal\r\n }\r\n else if (order === 0) {\r\n found = true;\r\n end = pivot;\r\n // more\r\n }\r\n else {\r\n end = pivot;\r\n }\r\n }\r\n return {\r\n found: found,\r\n index: start\r\n };\r\n}\r\nexport function keepIf(array, keep) {\r\n let i = array.length;\r\n while (i > 0) {\r\n --i;\r\n if (!keep(array[i])) {\r\n array.splice(i, 1);\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=Array.js.map","import * as $array from \"./Array\";\r\nexport function keys(object) {\r\n return Object.keys(object);\r\n}\r\n/**\r\n * Returns an array of object's property names ordered using specific ordering\r\n * function.\r\n *\r\n * @param object Source object\r\n * @param order Ordering function\r\n * @returns Object property names\r\n */\r\nexport function keysOrdered(object, order) {\r\n return keys(object).sort(order);\r\n}\r\nexport function copy(object) {\r\n return Object.assign({}, object);\r\n}\r\nexport function each(object, f) {\r\n keys(object).forEach((key) => {\r\n f(key, object[key]);\r\n });\r\n}\r\n/**\r\n * Iterates through all properties of the object calling `fn` for each of them.\r\n *\r\n * If return value of the function evaluates to `false` further iteration is\r\n * cancelled.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n */\r\nexport function eachContinue(object, fn) {\r\n for (let key in object) {\r\n if (hasKey(object, key)) {\r\n if (!fn(key, object[key])) {\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * Orders object properties using custom `ord` function and iterates through\r\n * them calling `fn` for each of them.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n * @param order Ordering function\r\n */\r\nexport function eachOrdered(object, fn, ord) {\r\n $array.each(keysOrdered(object, ord), (key) => {\r\n fn(key, object[key]);\r\n });\r\n}\r\n/**\r\n * Checks if `object` has a specific `key`.\r\n *\r\n * @param object Source object\r\n * @param key Property name\r\n * @returns Has key?\r\n */\r\nexport function hasKey(object, key) {\r\n return {}.hasOwnProperty.call(object, key);\r\n}\r\n/**\r\n * Copies all properties of one object to the other, omitting undefined, but only if property in target object doesn't have a value set.\r\n *\r\n * @param fromObject Source object\r\n * @param toObject Target object\r\n * @return Updated target object\r\n * @todo Maybe consolidate with utils.copy?\r\n */\r\nexport function softCopyProperties(source, target) {\r\n each(source, (key, value) => {\r\n // only if value is set\r\n //if ($type.hasValue(value) && !($type.hasValue((target)[key]))) {\r\n if (value != null && target[key] == null) {\r\n target[key] = value;\r\n }\r\n });\r\n return target;\r\n}\r\n//# sourceMappingURL=Object.js.map","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $array from \"./Array\";\r\n/**\r\n * A base class for disposable objects.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport class DisposerClass {\r\n /**\r\n * Constructor.\r\n */\r\n constructor() {\r\n /**\r\n * Is object disposed?\r\n */\r\n Object.defineProperty(this, \"_disposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._disposed = false;\r\n }\r\n /**\r\n * Checks if object is disposed.\r\n *\r\n * @return Disposed?\r\n */\r\n isDisposed() {\r\n return this._disposed;\r\n }\r\n /**\r\n * Disposes the object.\r\n */\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n this._dispose();\r\n }\r\n }\r\n}\r\n/**\r\n * A class for creating an IDisposer.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport class Disposer {\r\n /**\r\n * Constructor.\r\n *\r\n * @param dispose Function that disposes object\r\n */\r\n constructor(dispose) {\r\n /**\r\n * Is object disposed?\r\n */\r\n Object.defineProperty(this, \"_disposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Method that disposes the object.\r\n */\r\n Object.defineProperty(this, \"_dispose\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._disposed = false;\r\n this._dispose = dispose;\r\n }\r\n /**\r\n * Checks if object is disposed.\r\n *\r\n * @return Disposed?\r\n */\r\n isDisposed() {\r\n return this._disposed;\r\n }\r\n /**\r\n * Disposes the object.\r\n */\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n this._dispose();\r\n }\r\n }\r\n}\r\n/**\r\n * This can be extended by other classes to add a `_disposers` property.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport class ArrayDisposer extends DisposerClass {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_disposers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n }\r\n _dispose() {\r\n $array.each(this._disposers, (x) => {\r\n x.dispose();\r\n });\r\n }\r\n}\r\n/**\r\n * A collection of related disposers that can be disposed in one go.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport class MultiDisposer extends DisposerClass {\r\n constructor(disposers) {\r\n super();\r\n Object.defineProperty(this, \"_disposers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._disposers = disposers;\r\n }\r\n _dispose() {\r\n $array.each(this._disposers, (x) => {\r\n x.dispose();\r\n });\r\n }\r\n get disposers() {\r\n return this._disposers;\r\n }\r\n}\r\n/**\r\n * A special kind of Disposer that has attached value set.\r\n *\r\n * If a new value is set using `set()` method, the old disposer value is\r\n * disposed.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport class MutableValueDisposer extends DisposerClass {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * Current disposer.\r\n */\r\n Object.defineProperty(this, \"_disposer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Current value.\r\n */\r\n Object.defineProperty(this, \"_value\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _dispose() {\r\n if (this._disposer != null) {\r\n this._disposer.dispose();\r\n this._disposer = undefined;\r\n }\r\n }\r\n /**\r\n * Returns current value.\r\n *\r\n * @return Value\r\n */\r\n get() {\r\n return this._value;\r\n }\r\n /**\r\n * Sets value and disposes previous disposer if it was set.\r\n *\r\n * @param value New value\r\n * @param disposer Disposer\r\n */\r\n set(value, disposer) {\r\n if (this._disposer != null) {\r\n this._disposer.dispose();\r\n }\r\n this._disposer = disposer;\r\n this._value = value;\r\n }\r\n /**\r\n * Resets the disposer value.\r\n */\r\n reset() {\r\n this.set(undefined, undefined);\r\n }\r\n}\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport class CounterDisposer extends Disposer {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * [_counter description]\r\n *\r\n * @todo Description\r\n */\r\n Object.defineProperty(this, \"_counter\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n }\r\n /**\r\n * [increment description]\r\n *\r\n * @todo Description\r\n */\r\n increment() {\r\n // TODO throw an error if it is disposed\r\n ++this._counter;\r\n // TODO make this more efficient\r\n return new Disposer(() => {\r\n --this._counter;\r\n if (this._counter === 0) {\r\n this.dispose();\r\n }\r\n });\r\n }\r\n}\r\n//# sourceMappingURL=Disposer.js.map","import * as $type from \"./Type\";\r\nimport * as $array from \"./Array\";\r\nimport * as $object from \"./Object\";\r\nimport { Disposer, DisposerClass } from \"./Disposer\";\r\n/**\r\n * ============================================================================\r\n * DOM FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Execute a function when DOM is ready.\r\n *\r\n * @since 5.0.2\r\n * @param f Callback\r\n */\r\nexport function ready(f) {\r\n if (document.readyState !== \"loading\") {\r\n f();\r\n }\r\n else {\r\n const listener = () => {\r\n if (document.readyState !== \"loading\") {\r\n document.removeEventListener(\"readystatechange\", listener);\r\n f();\r\n }\r\n };\r\n document.addEventListener(\"readystatechange\", listener);\r\n }\r\n}\r\n/**\r\n * Removes a DOM element.\r\n * @param el Target element\r\n */\r\nexport function removeElement(el) {\r\n if (el.parentNode) {\r\n el.parentNode.removeChild(el);\r\n }\r\n}\r\n/**\r\n * Function that adds a disposable event listener directly to a DOM element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dom A DOM element to add event to\r\n * @param type Event type\r\n * @param listener Event listener\r\n * @returns Disposable event\r\n */\r\nexport function addEventListener(dom, type, listener, options) {\r\n //@todo proper type check for options: EventListenerOptions | boolean (TS for some reason gives error on passive parameter)\r\n dom.addEventListener(type, listener, options || false);\r\n return new Disposer(() => {\r\n dom.removeEventListener(type, listener, options || false);\r\n });\r\n}\r\n/**\r\n * Function that adds an event listener which is triggered when the browser's zoom changes.\r\n *\r\n * @param listener Event listener\r\n * @returns Disposable event\r\n */\r\nexport function onZoom(listener) {\r\n // TODO use matchMedia instead ?\r\n return addEventListener(window, \"resize\", (_ev) => {\r\n listener();\r\n });\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function supports(cap) {\r\n switch (cap) {\r\n case \"touchevents\":\r\n //return \"ontouchstart\" in document.documentElement;\r\n return window.hasOwnProperty(\"TouchEvent\");\r\n case \"pointerevents\":\r\n return window.hasOwnProperty(\"PointerEvent\");\r\n case \"mouseevents\":\r\n return window.hasOwnProperty(\"MouseEvent\");\r\n case \"wheelevents\":\r\n return window.hasOwnProperty(\"WheelEvent\");\r\n case \"keyboardevents\":\r\n return window.hasOwnProperty(\"KeyboardEvent\");\r\n }\r\n return false;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function getPointerId(event) {\r\n let id = event.pointerId || 0;\r\n return id;\r\n}\r\n/**\r\n * Removes focus from any element by shifting focus to body.\r\n *\r\n * @ignore\r\n */\r\nexport function blur() {\r\n if (document.activeElement && document.activeElement != document.body) {\r\n if (document.activeElement.blur) {\r\n document.activeElement.blur();\r\n }\r\n else {\r\n let input = document.createElement(\"button\");\r\n input.style.position = \"fixed\";\r\n input.style.top = \"0px\";\r\n input.style.left = \"-10000px\";\r\n document.body.appendChild(input);\r\n input.focus();\r\n input.blur();\r\n document.body.removeChild(input);\r\n }\r\n }\r\n}\r\n/**\r\n * Focuses element.\r\n *\r\n * @ignore\r\n */\r\nexport function focus(el) {\r\n if (el) {\r\n el.focus();\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function getRendererEvent(key) {\r\n if (supports(\"pointerevents\")) {\r\n return key;\r\n }\r\n else if (supports(\"touchevents\")) {\r\n switch (key) {\r\n case \"pointerover\": return \"touchstart\";\r\n case \"pointerout\": return \"touchend\";\r\n case \"pointerleave\": return \"touchend\";\r\n case \"pointerdown\": return \"touchstart\";\r\n case \"pointermove\": return \"touchmove\";\r\n case \"pointerup\": return \"touchend\";\r\n case \"click\": return \"click\";\r\n case \"dblclick\": return \"dblclick\";\r\n }\r\n }\r\n else if (supports(\"mouseevents\")) {\r\n switch (key) {\r\n case \"pointerover\": return \"mouseover\";\r\n case \"pointerout\": return \"mouseout\";\r\n case \"pointerleave\": return \"mouseleave\";\r\n case \"pointerdown\": return \"mousedown\";\r\n case \"pointermove\": return \"mousemove\";\r\n case \"pointerup\": return \"mouseup\";\r\n case \"click\": return \"click\";\r\n case \"dblclick\": return \"dblclick\";\r\n }\r\n }\r\n return key;\r\n}\r\n/**\r\n * Determines if pointer event originated from a touch pointer or mouse.\r\n *\r\n * @param ev Original event\r\n * @return Touch pointer?\r\n */\r\nexport function isTouchEvent(ev) {\r\n if (typeof Touch !== \"undefined\" && ev instanceof Touch) {\r\n return true;\r\n }\r\n else if (typeof PointerEvent !== \"undefined\" && ev instanceof PointerEvent && ev.pointerType != null) {\r\n switch (ev.pointerType) {\r\n case \"touch\":\r\n case \"pen\":\r\n case 2:\r\n return true;\r\n case \"mouse\":\r\n case 4:\r\n return false;\r\n default:\r\n return !(ev instanceof MouseEvent);\r\n }\r\n }\r\n else if (ev.type != null) {\r\n if (ev.type.match(/^mouse/)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Sets style property on DOM element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport function setStyle(dom, property, value) {\r\n dom.style[property] = value;\r\n}\r\nexport function getStyle(dom, property) {\r\n return dom.style[property];\r\n}\r\n/**\r\n * Gets the target of the event, works for shadow DOM too.\r\n */\r\nexport function getEventTarget(event) {\r\n if (event.composedPath) {\r\n const path = event.composedPath();\r\n if (path.length === 0) {\r\n return null;\r\n }\r\n else {\r\n return path[0];\r\n }\r\n }\r\n else {\r\n return event.target;\r\n }\r\n}\r\n/**\r\n * Checks of element `a` contains element `b`.\r\n *\r\n * @param a Aleged ascendant\r\n * @param b Aleged descendant\r\n * @return Contains?\r\n */\r\nexport function contains(a, b) {\r\n let cursor = b;\r\n while (true) {\r\n if (a === cursor) {\r\n return true;\r\n }\r\n else if (cursor.parentNode === null) {\r\n // TODO better ShadowRoot detection\r\n if (cursor.host == null) {\r\n return false;\r\n }\r\n else {\r\n cursor = cursor.host;\r\n }\r\n }\r\n else {\r\n cursor = cursor.parentNode;\r\n }\r\n }\r\n}\r\n/**\r\n * Returns `true` if pointer event originated on an element within Root.\r\n *\r\n * @since 5.2.8\r\n * @param event Event\r\n * @param target Target element\r\n */\r\nexport function isLocalEvent(event, target) {\r\n return event.target && contains(target.root.dom, event.target);\r\n}\r\n/**\r\n * Disables or enables interactivity of a DOM element.\r\n *\r\n * @param target Target element\r\n * @param interactive Interactive?\r\n */\r\nexport function setInteractive(target, interactive) {\r\n if (interactive) {\r\n target.style.pointerEvents = \"auto\";\r\n }\r\n else {\r\n target.style.pointerEvents = \"none\";\r\n }\r\n}\r\nexport function getEventKey(event) {\r\n if (event.key !== undefined) {\r\n return event.key;\r\n }\r\n switch (event.keyCode) {\r\n case 9: return \"Tab\";\r\n case 13: return \"Enter\";\r\n case 16: return \"Shift\";\r\n case 17: return \"Control\";\r\n case 27: return \"Escape\";\r\n case 32: return \" \";\r\n case 37: return \"ArrowLeft\";\r\n case 38: return \"ArrowUp\";\r\n case 39: return \"ArrowRight\";\r\n case 40: return \"ArrowDown\";\r\n case 46: return \"Delete\";\r\n }\r\n return \"\" + event.keyCode;\r\n}\r\n/**\r\n * Returns the shadow root of the element or null\r\n *\r\n * @param a Node\r\n * @return Root\r\n */\r\nexport function getShadowRoot(a) {\r\n let cursor = a;\r\n while (true) {\r\n if (cursor.parentNode === null) {\r\n // TODO better ShadowRoot detection\r\n if (cursor.host != null) {\r\n return cursor;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n cursor = cursor.parentNode;\r\n }\r\n }\r\n}\r\n/**\r\n * [rootStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nlet rootStylesheet;\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nfunction createStylesheet(element, text, nonce = \"\") {\r\n // TODO use createElementNS ?\r\n const e = document.createElement(\"style\");\r\n e.type = \"text/css\";\r\n if (nonce != \"\") {\r\n e.setAttribute(\"nonce\", nonce);\r\n }\r\n e.textContent = text;\r\n if (element === null) {\r\n document.head.appendChild(e);\r\n }\r\n else {\r\n element.appendChild(e);\r\n }\r\n return e;\r\n}\r\n/**\r\n * [getStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\nfunction getStylesheet(element, nonce = \"\") {\r\n if (element === null) {\r\n if (rootStylesheet == null) {\r\n // TODO use createElementNS ?\r\n const e = document.createElement(\"style\");\r\n e.type = \"text/css\";\r\n if (nonce != \"\") {\r\n e.setAttribute(\"nonce\", nonce);\r\n }\r\n document.head.appendChild(e);\r\n rootStylesheet = e.sheet;\r\n }\r\n return rootStylesheet;\r\n }\r\n else {\r\n // TODO use createElementNS ?\r\n const e = document.createElement(\"style\");\r\n e.type = \"text/css\";\r\n if (nonce != \"\") {\r\n e.setAttribute(\"nonce\", nonce);\r\n }\r\n element.appendChild(e);\r\n return e.sheet;\r\n }\r\n}\r\n/**\r\n * [makeStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param selector [description]\r\n * @return [description]\r\n */\r\nfunction appendStylesheet(root, selector) {\r\n const index = root.cssRules.length;\r\n root.insertRule(selector + \"{}\", index);\r\n return root.cssRules[index];\r\n}\r\n/**\r\n * Defines a class for a CSS rule.\r\n *\r\n * Can be used to dynamically add CSS to the document.\r\n */\r\nexport class StyleRule extends DisposerClass {\r\n /**\r\n * Constructor.\r\n *\r\n * @param selector CSS selector\r\n * @param styles An object of style attribute - value pairs\r\n */\r\n constructor(element, selector, styles, nonce = \"\") {\r\n super();\r\n Object.defineProperty(this, \"_root\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * CSS rule.\r\n */\r\n Object.defineProperty(this, \"_rule\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._root = getStylesheet(element, nonce);\r\n try {\r\n this._rule = appendStylesheet(this._root, selector);\r\n }\r\n catch (err) {\r\n // Create an empty rule on failed selectors\r\n this._rule = appendStylesheet(this._root, \":not(*)\");\r\n }\r\n $object.each(styles, (key, value) => {\r\n this.setStyle(key, value);\r\n });\r\n }\r\n /**\r\n * A CSS selector text.\r\n *\r\n * E.g.: `.myClass p`\r\n *\r\n * @param selector CSS selector\r\n */\r\n set selector(selector) {\r\n this._rule.selectorText = selector;\r\n }\r\n /**\r\n * @return CSS selector\r\n */\r\n get selector() {\r\n return this._rule.selectorText;\r\n }\r\n // TODO test this\r\n _dispose() {\r\n // TODO a bit hacky\r\n const index = $array.indexOf(this._root.cssRules, this._rule);\r\n if (index === -1) {\r\n throw new Error(\"Could not dispose StyleRule\");\r\n }\r\n else {\r\n // TODO if it's empty remove it from the DOM ?\r\n this._root.deleteRule(index);\r\n }\r\n }\r\n /**\r\n * Sets the same style properties with browser-specific prefixes.\r\n *\r\n * @param name Attribute name\r\n * @param value Attribute value\r\n */\r\n _setVendorPrefixName(name, value) {\r\n const style = this._rule.style;\r\n style.setProperty(\"-webkit-\" + name, value, \"\");\r\n style.setProperty(\"-moz-\" + name, value, \"\");\r\n style.setProperty(\"-ms-\" + name, value, \"\");\r\n style.setProperty(\"-o-\" + name, value, \"\");\r\n style.setProperty(name, value, \"\");\r\n }\r\n /**\r\n * Sets a value for specific style attribute.\r\n *\r\n * @param name Attribute\r\n * @param value Value\r\n */\r\n setStyle(name, value) {\r\n if (name === \"transition\") {\r\n this._setVendorPrefixName(name, value);\r\n }\r\n else {\r\n this._rule.style.setProperty(name, value, \"\");\r\n }\r\n }\r\n}\r\n/**\r\n * Defines a class for an entire CSS style sheet.\r\n *\r\n * Can be used to dynamically add CSS to the document.\r\n */\r\nexport class StyleSheet extends DisposerClass {\r\n /**\r\n * Constructor.\r\n *\r\n * @param text CSS stylesheet\r\n */\r\n constructor(element, text, nonce = \"\") {\r\n super();\r\n Object.defineProperty(this, \"_element\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._element = createStylesheet(element, text, nonce);\r\n }\r\n _dispose() {\r\n if (this._element.parentNode) {\r\n this._element.parentNode.removeChild(this._element);\r\n }\r\n }\r\n}\r\n/**\r\n * Adds a class name to an HTML or SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @param className Class name to add\r\n */\r\nexport function addClass(element, className) {\r\n if (!element) {\r\n return;\r\n }\r\n if (element.classList) {\r\n const classes = className.split(\" \");\r\n $array.each(classes, (name) => {\r\n element.classList.add(name);\r\n });\r\n }\r\n else {\r\n let currentClassName = element.getAttribute(\"class\");\r\n if (currentClassName) {\r\n element.setAttribute(\"class\", currentClassName.split(\" \").filter((item) => {\r\n return item !== className;\r\n }).join(\" \") + \" \" + className);\r\n }\r\n else {\r\n element.setAttribute(\"class\", className);\r\n }\r\n }\r\n}\r\n/**\r\n * Removes a class name from an HTML or SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @param className Class name to add\r\n */\r\nexport function removeClass(element, className) {\r\n if (!element) {\r\n return;\r\n }\r\n if (element.classList) {\r\n element.classList.remove(className);\r\n }\r\n else {\r\n let currentClassName = element.getAttribute(\"class\");\r\n if (currentClassName) {\r\n element.setAttribute(\"class\", currentClassName.split(\" \").filter((item) => {\r\n return item !== className;\r\n }).join(\" \"));\r\n }\r\n }\r\n}\r\n// /**\r\n// * Applies a set of styles to an element. Stores the original styles so they\r\n// * can be restored later.\r\n// *\r\n// * @ignore\r\n// * @param io Element\r\n// */\r\n// export function prepElementForDrag(dom: HTMLElement): void {\r\n// \t// @todo: save current values\r\n// \t// Define possible props\r\n// \tlet props = [\r\n// \t\t\"touchAction\", \"webkitTouchAction\", \"MozTouchAction\", \"MSTouchAction\", \"msTouchAction\", \"oTouchAction\",\r\n// \t\t\"userSelect\", \"webkitUserSelect\", \"MozUserSelect\", \"MSUserSelect\", \"msUserSelect\", \"oUserSelect\",\r\n// \t\t\"touchSelect\", \"webkitTouchSelect\", \"MozTouchSelect\", \"MSTouchSelect\", \"msTouchSelect\", \"oTouchSelect\",\r\n// \t\t\"touchCallout\", \"webkitTouchCallout\", \"MozTouchCallout\", \"MSTouchCallout\", \"msTouchCallout\", \"oTouchCallout\",\r\n// \t\t\"contentZooming\", \"webkitContentZooming\", \"MozContentZooming\", \"MSContentZooming\", \"msContentZooming\", \"oContentZooming\",\r\n// \t\t\"userDrag\", \"webkitUserDrag\", \"MozUserDrag\", \"MSUserDrag\", \"msUserDrag\", \"oUserDrag\"\r\n// \t];\r\n// \tfor (let i = 0; i < props.length; i++) {\r\n// \t\tif (props[i] in dom.style) {\r\n// \t\t\tsetStyle(dom, props[i], \"none\");\r\n// \t\t}\r\n// \t}\r\n// \t// Remove iOS-specific selection;\r\n// \tsetStyle(dom, \"tapHighlightColor\", \"rgba(0, 0, 0, 0)\");\r\n// }\r\n// /**\r\n// * Restores replaced styles\r\n// *\r\n// * @ignore\r\n// * @param io Element\r\n// */\r\n// export function unprepElementForDrag(dom: HTMLElement): void {\r\n// \t// Define possible props\r\n// \tlet props = [\r\n// \t\t\"touchAction\", \"webkitTouchAction\", \"MozTouchAction\", \"MSTouchAction\", \"msTouchAction\", \"oTouchAction\",\r\n// \t\t\"userSelect\", \"webkitUserSelect\", \"MozUserSelect\", \"MSUserSelect\", \"msUserSelect\", \"oUserSelect\",\r\n// \t\t\"touchSelect\", \"webkitTouchSelect\", \"MozTouchSelect\", \"MSTouchSelect\", \"msTouchSelect\", \"oTouchSelect\",\r\n// \t\t\"touchCallout\", \"webkitTouchCallout\", \"MozTouchCallout\", \"MSTouchCallout\", \"msTouchCallout\", \"oTouchCallout\",\r\n// \t\t\"contentZooming\", \"webkitContentZooming\", \"MozContentZooming\", \"MSContentZooming\", \"msContentZooming\", \"oContentZooming\",\r\n// \t\t\"userDrag\", \"webkitUserDrag\", \"MozUserDrag\", \"MSUserDrag\", \"msUserDrag\", \"oUserDrag\"\r\n// \t];\r\n// \tfor (let i = 0; i < props.length; i++) {\r\n// \t\tif (props[i] in dom.style) {\r\n// \t\t\tsetStyle(dom, props[i], \"\");\r\n// \t\t}\r\n// \t}\r\n// \t// Remove iOS-specific selection;\r\n// \tsetStyle(dom, \"tapHighlightColor\", \"\");\r\n// }\r\nexport function iOS() {\r\n return /apple/i.test(navigator.vendor) && \"ontouchend\" in document;\r\n}\r\nexport function getSafeResolution() {\r\n return iOS() ? 1 : undefined;\r\n}\r\nexport function relativeToValue(percent, full) {\r\n if ($type.isNumber(percent)) {\r\n return percent;\r\n }\r\n else if (percent != null && $type.isNumber(percent.value) && $type.isNumber(full)) {\r\n return full * percent.value;\r\n }\r\n else {\r\n return 0;\r\n }\r\n}\r\n/**\r\n * Returns number of decimals\r\n *\r\n * @ignore Exclude from docs\r\n * @param number Input number\r\n * @return Number of decimals\r\n */\r\nexport function decimalPlaces(number) {\r\n let match = ('' + number).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\r\n if (!match) {\r\n return 0;\r\n }\r\n return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0));\r\n}\r\n/**\r\n * ============================================================================\r\n * STRING FORMATTING FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Pads a string with additional characters to certain length.\r\n *\r\n * @param value A numeric value\r\n * @param len Result string length in characters\r\n * @param char A character to use for padding\r\n * @return Padded value as string\r\n */\r\nexport function padString(value, len = 0, char = \"0\") {\r\n if (typeof value !== \"string\") {\r\n value = value.toString();\r\n }\r\n return len > value.length ? Array(len - value.length + 1).join(char) + value : value;\r\n}\r\nexport function trimLeft(text) {\r\n return text.replace(/^[\\s]*/, \"\");\r\n}\r\nexport function trimRight(text) {\r\n return text.replace(/[\\s]*$/, \"\");\r\n}\r\nexport function trim(text) {\r\n return trimLeft(trimRight(text));\r\n}\r\nexport function truncateTextWithEllipsis(text, maxLength, breakWords = false, ellipsis = \"...\") {\r\n if (text.length > maxLength) {\r\n // Find the last non-alphanumeric character before maxLength\r\n let lastNonAlphanumericIndex = maxLength - 1;\r\n while (lastNonAlphanumericIndex >= 0 && text.charAt(lastNonAlphanumericIndex).match(/\\w/)) {\r\n lastNonAlphanumericIndex--;\r\n }\r\n if (lastNonAlphanumericIndex >= 0 && breakWords == false) {\r\n return text.substring(0, lastNonAlphanumericIndex + 1) + '...';\r\n }\r\n else {\r\n // If no non-alphanumeric character found, truncate without breaking words\r\n return text.substring(0, maxLength) + ellipsis;\r\n }\r\n }\r\n else {\r\n return text;\r\n }\r\n}\r\n/**\r\n * Tries to determine format type.\r\n *\r\n * @ignore Exclude from docs\r\n * @param format Format string\r\n * @return Format type (\"string\" | \"number\" | \"date\" | \"duration\")\r\n */\r\nexport function getFormat(format) {\r\n // Undefined?\r\n if (typeof format === \"undefined\") {\r\n return \"string\";\r\n }\r\n // Cleanup and lowercase format\r\n format = format.toLowerCase().replace(/^\\[[^\\]]*\\]/, \"\");\r\n // Remove style tags\r\n format = format.replace(/\\[[^\\]]+\\]/, \"\");\r\n // Trim\r\n format = format.trim();\r\n // Check for any explicit format hints (i.e. /Date)\r\n let hints = format.match(/\\/(date|number|duration)$/);\r\n if (hints) {\r\n return hints[1];\r\n }\r\n // Check for explicit hints\r\n if (format === \"number\") {\r\n return \"number\";\r\n }\r\n if (format === \"date\") {\r\n return \"date\";\r\n }\r\n if (format === \"duration\") {\r\n return \"duration\";\r\n }\r\n // Detect number formatting symbols\r\n if (format.match(/[#0]/)) {\r\n return \"number\";\r\n }\r\n // Detect date formatting symbols\r\n if (format.match(/[ymwdhnsqaxkzgtei]/)) {\r\n return \"date\";\r\n }\r\n // Nothing? Let's display as string\r\n return \"string\";\r\n}\r\n/**\r\n * Cleans up format:\r\n * * Strips out formatter hints\r\n *\r\n * @ignore Exclude from docs\r\n * @param format Format\r\n * @return Cleaned format\r\n */\r\nexport function cleanFormat(format) {\r\n return format.replace(/\\/(date|number|duration)$/i, \"\");\r\n}\r\n/**\r\n * Strips all tags from the string.\r\n *\r\n * @param text Source string\r\n * @return String without tags\r\n */\r\nexport function stripTags(text) {\r\n return text ? text.replace(/<[^>]*>/g, \"\") : text;\r\n}\r\n/**\r\n * Removes new lines and tags from a string.\r\n *\r\n * @param text String to conver\r\n * @return Converted string\r\n */\r\nexport function plainText(text) {\r\n return text ? stripTags((\"\" + text).replace(/[\\n\\r]+/g, \". \")) : text;\r\n}\r\n/**\r\n * Escapes string so it can safely be used in a Regex.\r\n *\r\n * @param value Unsescaped string\r\n * @return Escaped string\r\n */\r\nexport function escapeForRgex(value) {\r\n return value.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\r\n}\r\n/**\r\n * Adds space before each uppercase letter.\r\n *\r\n * @param str Input string\r\n * @return Output string\r\n */\r\nexport function addSpacing(str) {\r\n let result = \"\";\r\n for (let i = 0; i < str.length; i++) {\r\n const char = str.charAt(i);\r\n if (char.toUpperCase() == char && i != 0) {\r\n result += \" \";\r\n }\r\n result += char;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Splits the string into separate characters. Keeps RTL words non-split.\r\n *\r\n * @param source Input\r\n * @return Split text\r\n */\r\nexport function splitString(source) {\r\n // Regular expression to identify RTL characters\r\n const rtlChar = /[\\u0590-\\u05FF\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF]/;\r\n // Regular expression to capture segments ending with specific Arabic characters\r\n const splitPattern = /([^اأدذرزو]*[اأدذرزو])/gi;\r\n // Split input string into array of words or characters, including whitespace\r\n let segments = source.split(/(\\s+)/); // Split by whitespace, capturing it\r\n let result = [];\r\n segments.forEach(segment => {\r\n if (segment.match(/^\\s+$/)) {\r\n // If the segment is purely whitespace\r\n if (segment = \" \") {\r\n segment = \" \";\r\n }\r\n result.push(segment);\r\n }\r\n else if (rtlChar.test(segment)) {\r\n // If the segment contains RTL characters, handle special splits\r\n let parts = segment.split(splitPattern).filter(part => part !== '');\r\n // Concatenate parts processed by the split pattern directly to result\r\n result = result.concat(parts);\r\n }\r\n else {\r\n // Treat this segment as LTR: split into characters\r\n result = result.concat([...segment]);\r\n }\r\n });\r\n return result;\r\n}\r\n/**\r\n * ============================================================================\r\n * DATE-RELATED FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Returns a year day.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Year day\r\n * @todo Account for UTC\r\n */\r\nexport function getYearDay(date, utc = false) {\r\n // TODO: utc needed?\r\n utc;\r\n const start = new Date(date.getFullYear(), 0, 0);\r\n const diff = (date.getTime() - start.getTime()) + ((start.getTimezoneOffset() - date.getTimezoneOffset()) * 60 * 1000);\r\n const oneDay = 1000 * 60 * 60 * 24;\r\n return Math.floor(diff / oneDay);\r\n}\r\n/**\r\n * Returns week number for a given date.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Week number\r\n * @todo Account for UTC\r\n */\r\nexport function getWeek(date, _utc = false) {\r\n const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\r\n const day = d.getUTCDay() || 7;\r\n d.setUTCDate(d.getUTCDate() + 4 - day);\r\n const firstDay = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));\r\n return Math.ceil((((d.getTime() - firstDay.getTime()) / 86400000) + 1) / 7);\r\n}\r\n/**\r\n * Returns a \"week year\" of the given date.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Year of week\r\n * @since 5.3.0\r\n * @todo Account for UTC\r\n */\r\nexport function getWeekYear(date, _utc = false) {\r\n const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\r\n const day = d.getUTCDay() || 7;\r\n d.setUTCDate(d.getUTCDate() + 4 - day);\r\n const firstDay = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));\r\n return firstDay.getFullYear();\r\n}\r\n/**\r\n * Returns a week number in the month.\r\n *\r\n * @param date Source Date\r\n * @param utc Assume UTC dates?\r\n * @return Week number in month\r\n */\r\nexport function getMonthWeek(date, utc = false) {\r\n const firstWeek = getWeek(new Date(date.getFullYear(), date.getMonth(), 1), utc);\r\n let currentWeek = getWeek(date, utc);\r\n if (currentWeek == 1) {\r\n currentWeek = 53;\r\n }\r\n return currentWeek - firstWeek + 1;\r\n}\r\n/**\r\n * Returns a year day out of the given week number.\r\n *\r\n * @param week Week\r\n * @param year Year\r\n * @param weekday Weekday\r\n * @param utc Assume UTC dates\r\n * @return Day in a year\r\n */\r\nexport function getDayFromWeek(week, year, weekday = 1, utc = false) {\r\n let date = new Date(year, 0, 4, 0, 0, 0, 0);\r\n if (utc) {\r\n date.setUTCFullYear(year);\r\n }\r\n let day = week * 7 + weekday - ((date.getDay() || 7) + 3);\r\n return day;\r\n}\r\n/**\r\n * Returns 12-hour representation out of the 24-hour hours.\r\n *\r\n * @param hours 24-hour number\r\n * @return 12-hour number\r\n */\r\nexport function get12Hours(hours, base) {\r\n if (hours > 12) {\r\n hours -= 12;\r\n }\r\n else if (hours === 0) {\r\n hours = 12;\r\n }\r\n return base != null ? hours + (base - 1) : hours;\r\n}\r\n/**\r\n * Returns a string name of the time zone.\r\n *\r\n * @param date Date object\r\n * @param long Should return long (\"Pacific Standard Time\") or short abbreviation (\"PST\")\r\n * @param savings Include information if it's in daylight savings mode\r\n * @param utc Assume UTC dates\r\n * @return Time zone name\r\n */\r\nexport function getTimeZone(date, long = false, savings = false, utc = false, timezone) {\r\n if (utc) {\r\n return long ? \"Coordinated Universal Time\" : \"UTC\";\r\n }\r\n else if (timezone) {\r\n const d1 = date.toLocaleString(\"en-US\", { timeZone: timezone });\r\n const d2 = date.toLocaleString(\"en-US\", { timeZone: timezone, timeZoneName: long ? \"long\" : \"short\" });\r\n return trim(d2.substr(d1.length));\r\n }\r\n let wotz = date.toLocaleString(\"UTC\");\r\n let wtz = date.toLocaleString(\"UTC\", { timeZoneName: long ? \"long\" : \"short\" }).substr(wotz.length);\r\n //wtz = wtz.replace(/[+-]+[0-9]+$/, \"\");\r\n if (savings === false) {\r\n wtz = wtz.replace(/ (standard|daylight|summer|winter) /i, \" \");\r\n }\r\n return trim(wtz);\r\n}\r\nexport function getTimezoneOffset(timezone) {\r\n const date = new Date(Date.UTC(2012, 0, 1, 0, 0, 0, 0));\r\n const utcDate = new Date(date.toLocaleString(\"en-US\", { timeZone: \"UTC\" }));\r\n const tzDate = new Date(date.toLocaleString(\"en-US\", { timeZone: timezone }));\r\n return (tzDate.getTime() - utcDate.getTime()) / 6e4 * -1;\r\n}\r\nexport function capitalizeFirst(text) {\r\n return text.charAt(0).toUpperCase() + text.slice(1);\r\n}\r\n/**\r\n * The functions below are taken and adapted from Garry Tan's blog post:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * The further attributions go mjijackson.com, which now seems to be defunct.\r\n */\r\n/**\r\n * Converts an HSL color value to RGB. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes h, s, and l are contained in the set [0, 1] and\r\n * returns r, g, and b in the set [0, 255].\r\n *\r\n * Function adapted from:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * @param h The hue\r\n * @param s The saturation\r\n * @param l The lightness\r\n * @return The RGB representation\r\n */\r\nexport function hslToRgb(color) {\r\n let r, g, b;\r\n let h = color.h;\r\n let s = color.s;\r\n let l = color.l;\r\n if (s == 0) {\r\n r = g = b = l; // achromatic\r\n }\r\n else {\r\n let hue2rgb = function hue2rgb(p, q, t) {\r\n if (t < 0) {\r\n t += 1;\r\n }\r\n if (t > 1) {\r\n t -= 1;\r\n }\r\n if (t < 1 / 6) {\r\n return p + (q - p) * 6 * t;\r\n }\r\n if (t < 1 / 2) {\r\n return q;\r\n }\r\n if (t < 2 / 3) {\r\n return p + (q - p) * (2 / 3 - t) * 6;\r\n }\r\n return p;\r\n };\r\n let q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n let p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1 / 3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1 / 3);\r\n }\r\n return {\r\n r: Math.round(r * 255),\r\n g: Math.round(g * 255),\r\n b: Math.round(b * 255)\r\n };\r\n}\r\n/**\r\n * Converts an RGB color value to HSL. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes r, g, and b are contained in the set [0, 255] and\r\n * returns h, s, and l in the set [0, 1].\r\n *\r\n * Function adapted from:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * @param r The red color value\r\n * @param g The green color value\r\n * @param b The blue color value\r\n * @return The HSL representation\r\n */\r\nexport function rgbToHsl(color) {\r\n let r = color.r / 255;\r\n let g = color.g / 255;\r\n let b = color.b / 255;\r\n let max = Math.max(r, g, b);\r\n let min = Math.min(r, g, b);\r\n let h = 0;\r\n let s = 0;\r\n let l = (max + min) / 2;\r\n if (max === min) {\r\n h = s = 0; // achromatic\r\n }\r\n else {\r\n let d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n case g:\r\n h = (b - r) / d + 2;\r\n break;\r\n case b:\r\n h = (r - g) / d + 4;\r\n break;\r\n }\r\n h /= 6;\r\n }\r\n return {\r\n h: h,\r\n s: s,\r\n l: l,\r\n };\r\n}\r\n/**\r\n * Converts HSV to HSL.\r\n *\r\n * https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_HSL\r\n */\r\nexport function hsvToHsl(hsv) {\r\n const l = hsv.v * (1 - (hsv.s / 2));\r\n const s = (l === 0 || l === 1\r\n ? 0\r\n : (hsv.v - l) / Math.min(l, 1 - l));\r\n return {\r\n h: hsv.h,\r\n s,\r\n l,\r\n a: hsv.a,\r\n };\r\n}\r\n/**\r\n * Converts HSL to HSV.\r\n *\r\n * https://en.wikipedia.org/wiki/HSL_and_HSV#HSL_to_HSV\r\n */\r\nexport function hslToHsv(hsl) {\r\n const v = hsl.l + (hsl.s * Math.min(hsl.l, 1 - hsl.l));\r\n const s = (v === 0\r\n ? 0\r\n : 2 * (1 - (hsl.l / v)));\r\n return {\r\n h: hsl.h,\r\n s,\r\n v,\r\n a: hsl.a,\r\n };\r\n}\r\n/**\r\n * Returns a color that is `percent` brighter than the reference color.\r\n *\r\n * @param color Reference color\r\n * @param percent Brightness percent\r\n * @return Hex code of the new color\r\n */\r\nexport function lighten(rgb, percent) {\r\n if (rgb) {\r\n return {\r\n r: Math.max(0, Math.min(255, rgb.r + getLightnessStep(rgb.r, percent))),\r\n g: Math.max(0, Math.min(255, rgb.g + getLightnessStep(rgb.g, percent))),\r\n b: Math.max(0, Math.min(255, rgb.b + getLightnessStep(rgb.b, percent))),\r\n a: rgb.a\r\n };\r\n }\r\n else {\r\n // TODO is this correct ?\r\n return rgb;\r\n }\r\n}\r\n;\r\n/**\r\n * Gets lightness step.\r\n *\r\n * @param value Value\r\n * @param percent Percent\r\n * @return Step\r\n */\r\nexport function getLightnessStep(value, percent) {\r\n let base = percent > 0 ? 255 - value : value;\r\n return Math.round(base * percent);\r\n}\r\n/**\r\n * Returns a color that is `percent` brighter than the source `color`.\r\n *\r\n * @param color Source color\r\n * @param percent Brightness percent\r\n * @return New color\r\n */\r\nexport function brighten(rgb, percent) {\r\n if (rgb) {\r\n let base = Math.min(Math.max(rgb.r, rgb.g, rgb.b), 230);\r\n //let base = Math.max(rgb.r, rgb.g, rgb.b);\r\n let step = getLightnessStep(base, percent);\r\n return {\r\n r: Math.max(0, Math.min(255, Math.round(rgb.r + step))),\r\n g: Math.max(0, Math.min(255, Math.round(rgb.g + step))),\r\n b: Math.max(0, Math.min(255, Math.round(rgb.b + step))),\r\n a: rgb.a\r\n };\r\n }\r\n else {\r\n // TODO is this correct ?\r\n return rgb;\r\n }\r\n}\r\n;\r\n/**\r\n * Returns brightness step.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Value\r\n * @param percent Percent\r\n * @return Step\r\n */\r\nexport function getBrightnessStep(_value, percent) {\r\n let base = 255; //percent > 0 ? 255 - value : value;\r\n return Math.round(base * percent);\r\n}\r\n/**\r\n * Returns `true` if color is \"light\". Useful indetermining which contrasting\r\n * color to use for elements over this color. E.g.: you would want to use\r\n * black text over light background, and vice versa.\r\n *\r\n * @param color Source color\r\n * @return Light?\r\n */\r\nexport function isLight(color) {\r\n return ((color.r * 299) + (color.g * 587) + (color.b * 114)) / 1000 >= 128;\r\n}\r\n/**\r\n * Returns a new [[iRGB]] object based on `rgb` parameter with specific\r\n * saturation applied.\r\n *\r\n * `saturation` can be in the range of 0 (fully desaturated) to 1 (fully\r\n * saturated).\r\n *\r\n * @param color Base color\r\n * @param saturation Saturation (0-1)\r\n * @return New color\r\n */\r\nexport function saturate(rgb, saturation) {\r\n if (rgb === undefined || saturation == 1) {\r\n return rgb;\r\n }\r\n let hsl = rgbToHsl(rgb);\r\n hsl.s = saturation;\r\n return hslToRgb(hsl);\r\n}\r\n/**\r\n * Returns a color which contrasts more with the source `color`.\r\n *\r\n * @param color Base color\r\n * @param lightAlternative Light option\r\n * @param darkAlternative Dark option\r\n * @return New color\r\n */\r\nexport function alternativeColor(color, lightAlternative = { r: 255, g: 255, b: 255 }, darkAlternative = { r: 255, g: 255, b: 255 }) {\r\n let light = lightAlternative;\r\n let dark = darkAlternative;\r\n if (isLight(darkAlternative)) {\r\n light = darkAlternative;\r\n dark = lightAlternative;\r\n }\r\n return isLight(color) ? dark : light;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function mergeTags(tags1, tags2) {\r\n if (!tags1) {\r\n tags1 = [];\r\n }\r\n return [...tags1, ...tags2].filter((value, index, self) => {\r\n return self.indexOf(value) === index;\r\n });\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function sameBounds(a, b) {\r\n if (!b) {\r\n return false;\r\n }\r\n if (a.left != b.left) {\r\n return false;\r\n }\r\n if (a.right != b.right) {\r\n return false;\r\n }\r\n if (a.top != b.top) {\r\n return false;\r\n }\r\n if (a.bottom != b.bottom) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n//# sourceMappingURL=Utils.js.map","import { range } from \"./Animation\";\r\nimport * as $utils from \"./Utils\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * @ignore\r\n */\r\nfunction string2hex(string) {\r\n //string = cssColorNames[string.toLowerCase()] || string;\r\n if (string[0] === \"#\") {\r\n string = string.substr(1);\r\n }\r\n if (string.length == 3) {\r\n string = string[0].repeat(2) + string[1].repeat(2) + string[2].repeat(2);\r\n }\r\n return parseInt(string, 16);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function rgba2hex(color) {\r\n color = color.replace(/[ ]/g, \"\");\r\n // Init\r\n let matches = color.match(/^rgb\\(([0-9]*),([0-9]*),([0-9]*)\\)/i);\r\n // Try rgb() format\r\n if (matches) {\r\n matches.push(\"1\");\r\n }\r\n else {\r\n matches = color.match(/^rgba\\(([0-9]*),([0-9]*),([0-9]*),([.0-9]*)\\)/i);\r\n if (!matches) {\r\n return 0x000000;\r\n }\r\n }\r\n let hex = \"\";\r\n for (let i = 1; i <= 3; i++) {\r\n let val = parseInt(matches[i]).toString(16);\r\n if (val.length == 1) {\r\n val = \"0\" + val;\r\n }\r\n hex += val;\r\n }\r\n return string2hex(hex);\r\n}\r\n/**\r\n * Returns a new [[Color]] object base on input.\r\n *\r\n * Accepts parameters in CSS hex or rgb/rtba strings, or hex numbers.\r\n *\r\n * * `\"#f00\"`\r\n * * `\"#ff0000\"`\r\n * * `\"rgb(255, 0, 0)\"`\r\n * * `\"rgba(255, 0, 0, 1)\"`\r\n * * `0xff0000`\r\n *\r\n * @param input Input color\r\n * @return Color\r\n */\r\nexport function color(input) {\r\n return Color.fromAny(input);\r\n}\r\n/**\r\n * Wherever color needs to be specified in amCharts 5, `Color` object needs to\r\n * be used.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/} for more info\r\n * @important\r\n */\r\nexport class Color {\r\n constructor(hex) {\r\n Object.defineProperty(this, \"_hex\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._hex = hex | 0;\r\n }\r\n /**\r\n * Color numeric value.\r\n */\r\n get hex() {\r\n return this._hex;\r\n }\r\n /**\r\n * Value of color's R channel.\r\n * @return R value\r\n */\r\n get r() {\r\n return this._hex >>> 16;\r\n }\r\n /**\r\n * Value of color's G channel.\r\n * @return G value\r\n */\r\n get g() {\r\n return (this._hex >> 8) & 0xFF;\r\n }\r\n /**\r\n * Value of color's B channel.\r\n * @return B value\r\n */\r\n get b() {\r\n return this._hex & 0xFF;\r\n }\r\n /**\r\n * Returns color CSS representation in form of `rgba(r, g, b, a)` string.\r\n *\r\n * @param alpha Opacity\r\n * @return CSS string\r\n */\r\n toCSS(alpha = 1) {\r\n return \"rgba(\" + this.r + \", \" + this.g + \", \" + this.b + \", \" + alpha + \")\";\r\n }\r\n /**\r\n * Returns color CSS representation in form of `#rgb` string.\r\n *\r\n * @return CSS string\r\n */\r\n toCSSHex() {\r\n return \"#\" + $utils.padString(this.r.toString(16), 2) + $utils.padString(this.g.toString(16), 2) + $utils.padString(this.b.toString(16), 2);\r\n }\r\n /**\r\n * Returns color's HSL info.\r\n * @param alpha Opacity\r\n * @return HSL info\r\n */\r\n toHSL(alpha = 1) {\r\n return $utils.rgbToHsl({\r\n r: this.r,\r\n g: this.g,\r\n b: this.b,\r\n a: alpha\r\n });\r\n }\r\n /**\r\n * Converts HSL values into a new [[Color]] object.\r\n *\r\n * @param h H value\r\n * @param s S value\r\n * @param l L value\r\n * @return Color object\r\n */\r\n static fromHSL(h, s, l) {\r\n const rgb = $utils.hslToRgb({\r\n h: h,\r\n s: s,\r\n l: l\r\n });\r\n return this.fromRGB(rgb.r, rgb.g, rgb.b);\r\n }\r\n toString() {\r\n return this.toCSSHex();\r\n }\r\n /**\r\n * Converts hex number into a new [[Color]] object.\r\n *\r\n * ```TypeScript\r\n * Color.fromHex(0xff0000) // red\r\n * ```\r\n * ```JavaScript\r\n * Color.fromHex(0xff0000) // red\r\n * ```\r\n *\r\n * @param hex Hex color\r\n * @return Color\r\n */\r\n static fromHex(hex) {\r\n return new Color(hex);\r\n }\r\n /**\r\n * Converts RGB values to a new [[Color]] object.\r\n *\r\n * @param r R value\r\n * @param g G value\r\n * @param b B value\r\n * @return Color\r\n */\r\n static fromRGB(r, g, b) {\r\n return new Color((b | 0) + (g << 8) + (r << 16));\r\n }\r\n /**\r\n * Converts RGB string to a new [[Color]] object.\r\n *\r\n * ```TypeScript\r\n * Color.fromString(\"#ff0000\") // red\r\n * ```\r\n * ```JavaScript\r\n * Color.fromString(\"#ff0000\") // red\r\n * ```\r\n *\r\n * @param s RGB string\r\n * @return Color\r\n */\r\n static fromString(s) {\r\n return new Color(string2hex(s));\r\n }\r\n /**\r\n * Converts CSS rgba() syntax to a new [[Color]] object.\r\n *\r\n * ```TypeScript\r\n * Color.fromCSS(\"rgba(255, 0, 0, 1)\") // red\r\n * ```\r\n * ```JavaScript\r\n * Color.fromCSS(\"rgba(255, 0, 0, 1)\") // red\r\n * ```\r\n *\r\n * @param {string} s [description]\r\n * @return {Color} [description]\r\n */\r\n static fromCSS(s) {\r\n return new Color(rgba2hex(s));\r\n }\r\n /**\r\n * Convert to color from virtually anything.\r\n *\r\n * Will throw an exception if unable to resolve the color.\r\n *\r\n * @param s Source\r\n * @return Color\r\n */\r\n static fromAny(s) {\r\n if ($type.isString(s)) {\r\n if (s[0] == \"#\") {\r\n return Color.fromString(s);\r\n }\r\n else if (s.substr(0, 3) == \"rgb\") {\r\n return Color.fromCSS(s);\r\n }\r\n }\r\n else if ($type.isNumber(s)) {\r\n return Color.fromHex(s);\r\n }\r\n else if (s instanceof Color) {\r\n return Color.fromHex(s.hex);\r\n }\r\n throw new Error(\"Unknown color syntax: \" + s);\r\n }\r\n /**\r\n * Returns a new [[Color]] object based on either `lightAlternative` or\r\n * `darkAlternative` depending on which one is more contrasting with\r\n * the `color`.\r\n *\r\n * @param color Reference color\r\n * @param lightAlternative Light color\r\n * @param darkAlternative Dark color\r\n * @return Alternative color\r\n */\r\n static alternative(color, lightAlternative, darkAlternative) {\r\n const rgb = $utils.alternativeColor({ r: color.r, g: color.g, b: color.b }, lightAlternative ? { r: lightAlternative.r, g: lightAlternative.g, b: lightAlternative.b } : undefined, darkAlternative ? { r: darkAlternative.r, g: darkAlternative.g, b: darkAlternative.b } : undefined);\r\n return this.fromRGB(rgb.r, rgb.g, rgb.b);\r\n }\r\n /**\r\n * Returns an intermediate Color between two reference colors depending on\r\n * the progress (`diff`) between the two.\r\n *\r\n * @param diff Progress\r\n * @param from Source color\r\n * @param to Target color\r\n * @param mode Interpolation mode\r\n * @return Color\r\n */\r\n static interpolate(diff, from, to, mode = \"rgb\") {\r\n if (mode == \"hsl\") {\r\n const fromHSL = from.toHSL();\r\n const toHSL = to.toHSL();\r\n return Color.fromHSL(range(diff, fromHSL.h, toHSL.h), range(diff, fromHSL.s, toHSL.s), range(diff, fromHSL.l, toHSL.l));\r\n }\r\n else {\r\n return Color.fromRGB(range(diff, from.r, to.r), range(diff, from.g, to.g), range(diff, from.b, to.b));\r\n }\r\n }\r\n /**\r\n * Returns a new [[Color]] lightened by `percent` value.\r\n *\r\n * Use negative value to darken the color.\r\n *\r\n * @param color Source color\r\n * @param percent Percent\r\n * @return New color\r\n */\r\n static lighten(color, percent) {\r\n const rgb = $utils.lighten({ r: color.r, g: color.g, b: color.b }, percent);\r\n return Color.fromRGB(rgb.r, rgb.g, rgb.b);\r\n }\r\n /**\r\n * Returns a new [[Color]] brightened by `percent` value.\r\n *\r\n * Use negative value to dim the color.\r\n *\r\n * @param color Source color\r\n * @param percent Percent\r\n * @return New color\r\n */\r\n static brighten(color, percent) {\r\n const rgb = $utils.brighten({ r: color.r, g: color.g, b: color.b }, percent);\r\n return Color.fromRGB(rgb.r, rgb.g, rgb.b);\r\n }\r\n /**\r\n * Returns a new [[Color]] saturated by `percent` value.\r\n *\r\n * Value range is between `0` (fully desaturated), to `1` (full color).\r\n *\r\n * @param color Source color\r\n * @param percent Percent\r\n * @return New color\r\n */\r\n static saturate(color, percent) {\r\n const rgb = $utils.saturate({ r: color.r, g: color.g, b: color.b }, percent);\r\n return Color.fromRGB(rgb.r, rgb.g, rgb.b);\r\n }\r\n}\r\n//# sourceMappingURL=Color.js.map","/**\r\n * Event Dispatcher module is used for registering listeners and dispatching\r\n * events across amCharts system.\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Disposer, MultiDisposer } from \"./Disposer\";\r\nimport * as $array from \"./Array\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * Universal Event Dispatcher.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/} for more info\r\n */\r\nexport class EventDispatcher {\r\n /**\r\n * Constructor\r\n */\r\n constructor() {\r\n Object.defineProperty(this, \"_listeners\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_killed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_disabled\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_iterating\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_enabled\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_disposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._listeners = [];\r\n this._killed = [];\r\n this._disabled = {};\r\n this._iterating = 0;\r\n this._enabled = true;\r\n this._disposed = false;\r\n }\r\n /**\r\n * Returns if this object has been already disposed.\r\n *\r\n * @return Disposed?\r\n */\r\n isDisposed() {\r\n return this._disposed;\r\n }\r\n /**\r\n * Dispose (destroy) this object.\r\n */\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n const a = this._listeners;\r\n this._iterating = 1;\r\n this._listeners = null;\r\n this._disabled = null;\r\n try {\r\n $array.each(a, (x) => {\r\n x.disposer.dispose();\r\n });\r\n }\r\n finally {\r\n this._killed = null;\r\n this._iterating = null;\r\n }\r\n }\r\n }\r\n /**\r\n * Checks if this particular event dispatcher has any listeners set.\r\n *\r\n * @return Has listeners?\r\n */\r\n hasListeners() {\r\n return this._listeners.length !== 0;\r\n }\r\n /**\r\n * Checks if this particular event dispatcher has any particular listeners set.\r\n *\r\n * @return Has particular event listeners?\r\n */\r\n hasListenersByType(type) {\r\n return $array.any(this._listeners, (x) => (x.type === null || x.type === type) && !x.killed);\r\n }\r\n /**\r\n * Enable dispatching of events if they were previously disabled by\r\n * `disable()`.\r\n */\r\n enable() {\r\n this._enabled = true;\r\n }\r\n /**\r\n * Disable dispatching of events until re-enabled by `enable()`.\r\n */\r\n disable() {\r\n this._enabled = false;\r\n }\r\n /**\r\n * Enable dispatching particular event, if it was disabled before by\r\n * `disableType()`.\r\n *\r\n * @param type Event type\r\n */\r\n enableType(type) {\r\n delete this._disabled[type];\r\n }\r\n /**\r\n * Disable dispatching of events for a certain event type.\r\n *\r\n * Optionally, can set how many dispatches to skip before automatically\r\n * re-enabling the dispatching.\r\n *\r\n * @param type Event type\r\n * @param amount Number of event dispatches to skip\r\n */\r\n disableType(type, amount = Infinity) {\r\n this._disabled[type] = amount;\r\n }\r\n /**\r\n * Removes listener from dispatcher.\r\n *\r\n * Will throw an exception if such listener does not exists.\r\n *\r\n * @param listener Listener to remove\r\n */\r\n _removeListener(listener) {\r\n if (this._iterating === 0) {\r\n const index = this._listeners.indexOf(listener);\r\n if (index === -1) {\r\n throw new Error(\"Invalid state: could not remove listener\");\r\n }\r\n this._listeners.splice(index, 1);\r\n }\r\n else {\r\n this._killed.push(listener);\r\n }\r\n }\r\n /**\r\n * Removes existing listener by certain parameters.\r\n *\r\n * @param once Listener's once setting\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n */\r\n _removeExistingListener(once, type, callback, context) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n this._eachListener((info) => {\r\n if (info.once === once && // TODO is this correct ?\r\n info.type === type &&\r\n (callback === undefined || info.callback === callback) &&\r\n info.context === context) {\r\n info.disposer.dispose();\r\n }\r\n });\r\n }\r\n /**\r\n * Checks if dispatching for particular event type is enabled.\r\n *\r\n * @param type Event type\r\n * @return Enabled?\r\n */\r\n isEnabled(type) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n // TODO is this check correct ?\r\n return this._enabled && this._listeners.length > 0 && this.hasListenersByType(type) && this._disabled[type] === undefined;\r\n }\r\n /**\r\n * Removes all listeners of a particular event type\r\n *\r\n * @param type Listener's type\r\n */\r\n removeType(type) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n this._eachListener((info) => {\r\n if (info.type === type) {\r\n info.disposer.dispose();\r\n }\r\n });\r\n }\r\n /**\r\n * Checks if there's already a listener with specific parameters.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @return Has listener?\r\n */\r\n has(type, callback, context) {\r\n const index = $array.findIndex(this._listeners, (info) => {\r\n return info.once !== true && // Ignoring \"once\" listeners\r\n info.type === type &&\r\n (callback === undefined || info.callback === callback) &&\r\n info.context === context;\r\n });\r\n return index !== -1;\r\n }\r\n /**\r\n * Checks whether event of the particular type should be dispatched.\r\n *\r\n * @param type Event type\r\n * @return Dispatch?\r\n */\r\n _shouldDispatch(type) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n const count = this._disabled[type];\r\n if (!$type.isNumber(count)) {\r\n return this._enabled;\r\n }\r\n else {\r\n if (count <= 1) {\r\n delete this._disabled[type];\r\n }\r\n else {\r\n --this._disabled[type];\r\n }\r\n return false;\r\n }\r\n }\r\n /**\r\n * [_eachListener description]\r\n *\r\n * All of this extra code is needed when a listener is removed while iterating\r\n *\r\n * @todo Description\r\n * @param fn [description]\r\n */\r\n _eachListener(fn) {\r\n ++this._iterating;\r\n try {\r\n $array.each(this._listeners, fn);\r\n }\r\n finally {\r\n --this._iterating;\r\n // TODO should this be inside or outside the finally ?\r\n if (this._iterating === 0 && this._killed.length !== 0) {\r\n // Remove killed listeners\r\n $array.each(this._killed, (killed) => {\r\n this._removeListener(killed);\r\n });\r\n this._killed.length = 0;\r\n }\r\n }\r\n }\r\n /**\r\n * Dispatches an event immediately without waiting for next cycle.\r\n *\r\n * @param type Event type\r\n * @param event Event object\r\n * @todo automatically add in type and target properties if they are missing\r\n */\r\n dispatch(type, event) {\r\n if (this._shouldDispatch(type)) {\r\n // TODO check if it's faster to use an object of listeners rather than a single big array\r\n // TODO if the function throws, maybe it should keep going ?\r\n this._eachListener((listener) => {\r\n if (!listener.killed && (listener.type === null || listener.type === type)) {\r\n listener.dispatch(type, event);\r\n }\r\n });\r\n }\r\n }\r\n /**\r\n * Shelves the event to be dispatched within next update cycle.\r\n *\r\n * @param type Event type\r\n * @param event Event object\r\n * @todo automatically add in type and target properties if they are missing\r\n */\r\n /*public dispatchLater(type: Key, event: T[Key]): void {\r\n if (this._shouldDispatch(type)) {\r\n this._eachListener((listener) => {\r\n // TODO check if it's faster to use an object of listeners rather than a single big array\r\n if (!listener.killed && (listener.type === null || listener.type === type)) {\r\n // TODO if the function throws, maybe it should keep going ?\r\n // TODO dispatch during the update cycle, rather than using whenIdle\r\n $async.whenIdle(() => {\r\n if (!listener.killed) {\r\n listener.dispatch(type, event);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }*/\r\n /**\r\n * Creates, catalogs and returns an [[EventListener]].\r\n *\r\n * Event listener can be disposed.\r\n *\r\n * @param once Listener's once setting\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @param dispatch\r\n * @returns An event listener\r\n */\r\n _on(once, type, callback, context, shouldClone, dispatch) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n this._removeExistingListener(once, type, callback, context);\r\n const info = {\r\n type: type,\r\n callback: callback,\r\n context: context,\r\n shouldClone: shouldClone,\r\n dispatch: dispatch,\r\n killed: false,\r\n once: once,\r\n disposer: new Disposer(() => {\r\n info.killed = true;\r\n this._removeListener(info);\r\n })\r\n };\r\n this._listeners.push(info);\r\n return info;\r\n }\r\n /**\r\n * Creates an event listener to be invoked on **any** event.\r\n *\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n */\r\n onAll(callback, context, shouldClone = true) {\r\n return this._on(false, null, callback, context, shouldClone, (_type, event) => callback.call(context, event)).disposer;\r\n }\r\n /**\r\n * Creates an event listener to be invoked on a specific event type.\r\n *\r\n * ```TypeScript\r\n * button.events.once(\"click\", (ev) => {\r\n * console.log(\"Button clicked\");\r\n * }, this);\r\n * ```\r\n * ```JavaScript\r\n * button.events.once(\"click\", (ev) => {\r\n * console.log(\"Button clicked\");\r\n * }, this);\r\n * ```\r\n *\r\n * The above will invoke our custom event handler whenever series we put\r\n * event on is hidden.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n */\r\n on(type, callback, context, shouldClone = true) {\r\n return this._on(false, type, callback, context, shouldClone, (_type, event) => callback.call(context, event)).disposer;\r\n }\r\n /**\r\n * Creates an event listener to be invoked on a specific event type once.\r\n *\r\n * Once the event listener is invoked, it is automatically disposed.\r\n *\r\n * ```TypeScript\r\n * button.events.once(\"click\", (ev) => {\r\n * console.log(\"Button clicked\");\r\n * }, this);\r\n * ```\r\n * ```JavaScript\r\n * button.events.once(\"click\", (ev) => {\r\n * console.log(\"Button clicked\");\r\n * }, this);\r\n * ```\r\n *\r\n * The above will invoke our custom event handler the first time series we\r\n * put event on is hidden.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n */\r\n once(type, callback, context, shouldClone = true) {\r\n const x = this._on(true, type, callback, context, shouldClone, (_type, event) => {\r\n x.disposer.dispose();\r\n callback.call(context, event);\r\n });\r\n // TODO maybe this should return a different Disposer ?\r\n return x.disposer;\r\n }\r\n /**\r\n * Removes the event listener with specific parameters.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n */\r\n off(type, callback, context) {\r\n this._removeExistingListener(false, type, callback, context);\r\n }\r\n /**\r\n * Copies all dispatcher parameters, including listeners, from another event\r\n * dispatcher.\r\n *\r\n * @param source Source event dispatcher\r\n * @ignore\r\n */\r\n copyFrom(source) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n if (source === this) {\r\n throw new Error(\"Cannot copyFrom the same TargetedEventDispatcher\");\r\n }\r\n const disposers = [];\r\n $array.each(source._listeners, (x) => {\r\n // TODO is this correct ?\r\n if (!x.killed && x.shouldClone) {\r\n if (x.type === null) {\r\n disposers.push(this.onAll(x.callback, x.context));\r\n }\r\n else if (x.once) {\r\n disposers.push(this.once(x.type, x.callback, x.context));\r\n }\r\n else {\r\n disposers.push(this.on(x.type, x.callback, x.context));\r\n }\r\n }\r\n });\r\n return new MultiDisposer(disposers);\r\n }\r\n}\r\n/**\r\n * A version of the [[EventDispatcher]] that dispatches events for a specific\r\n * target object.\r\n *\r\n * @ignore\r\n */\r\nexport class TargetedEventDispatcher extends EventDispatcher {\r\n /**\r\n * Constructor\r\n *\r\n * @param target Event dispatcher target\r\n */\r\n constructor(target) {\r\n super();\r\n /**\r\n * A target object which is originating events using this dispatcher.\r\n */\r\n Object.defineProperty(this, \"target\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this.target = target;\r\n }\r\n /**\r\n * Copies all dispatcher parameters, including listeners, from another event\r\n * dispatcher.\r\n *\r\n * @param source Source event dispatcher\r\n * @ignore\r\n */\r\n copyFrom(source) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n if (source === this) {\r\n throw new Error(\"Cannot copyFrom the same TargetedEventDispatcher\");\r\n }\r\n const disposers = [];\r\n $array.each(source._listeners, (x) => {\r\n // TODO very hacky\r\n if (x.context === source.target) {\r\n return;\r\n }\r\n // TODO is this correct ?\r\n if (!x.killed && x.shouldClone) {\r\n if (x.type === null) {\r\n disposers.push(this.onAll(x.callback, x.context));\r\n }\r\n else if (x.once) {\r\n disposers.push(this.once(x.type, x.callback, x.context));\r\n }\r\n else {\r\n disposers.push(this.on(x.type, x.callback, x.context));\r\n }\r\n }\r\n });\r\n return new MultiDisposer(disposers);\r\n }\r\n}\r\n//# sourceMappingURL=EventDispatcher.js.map","import { __awaiter } from \"tslib\";\r\nimport { Percent } from \"./Percent\";\r\nimport { Color } from \"./Color\";\r\nimport { EventDispatcher } from \"./EventDispatcher\";\r\nimport * as $object from \"./Object\";\r\n/**\r\n * @ignore\r\n */\r\nexport function waitForAnimations(animations) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (animations !== undefined) {\r\n const promises = [];\r\n $object.each(animations, (_, animation) => {\r\n promises.push(animation.waitForStop());\r\n });\r\n yield Promise.all(promises);\r\n }\r\n });\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function normalize(value, min, max) {\r\n if (min === max) {\r\n return 0;\r\n }\r\n else {\r\n return Math.min(Math.max((value - min) * (1 / (max - min)), 0), 1);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function range(diff, from, to) {\r\n return from + (diff * (to - from));\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function defaultInterpolate(diff, from, to) {\r\n if (diff >= 1) {\r\n return to;\r\n }\r\n else {\r\n return from;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function percentInterpolate(diff, from, to) {\r\n return new Percent(range(diff, from.percent, to.percent));\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function colorInterpolate(diff, from, to) {\r\n return Color.interpolate(diff, from, to);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function getInterpolate(from, to) {\r\n if (typeof from === \"number\" && typeof to === \"number\") {\r\n return range;\r\n }\r\n if (from instanceof Percent && to instanceof Percent) {\r\n return percentInterpolate;\r\n }\r\n if (from instanceof Color && to instanceof Color) {\r\n return colorInterpolate;\r\n }\r\n return defaultInterpolate;\r\n}\r\nexport var AnimationState;\r\n(function (AnimationState) {\r\n AnimationState[AnimationState[\"Stopped\"] = 0] = \"Stopped\";\r\n AnimationState[AnimationState[\"Playing\"] = 1] = \"Playing\";\r\n AnimationState[AnimationState[\"Paused\"] = 2] = \"Paused\";\r\n})(AnimationState || (AnimationState = {}));\r\n/**\r\n * @ignore\r\n */\r\nexport class AnimationTime {\r\n constructor(entity, duration) {\r\n Object.defineProperty(this, \"_entity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_duration\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_playingDuration\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(this, \"_startingTime\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(this, \"_current\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_from\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_to\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new EventDispatcher()\r\n });\r\n Object.defineProperty(this, \"easing\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._entity = entity;\r\n this._duration = duration;\r\n }\r\n _stopEvent() {\r\n const type = \"stopped\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this });\r\n }\r\n }\r\n _runAnimation(currentTime) {\r\n if (this._playingDuration !== null) {\r\n if (this._startingTime === null) {\r\n this._startingTime = currentTime;\r\n return AnimationState.Playing;\r\n }\r\n else {\r\n const diff = (currentTime - this._startingTime) / this._playingDuration;\r\n if (diff >= 1) {\r\n this._playingDuration = null;\r\n this._startingTime = null;\r\n this._from = this._to;\r\n this._current = this._to;\r\n this._entity.markDirty();\r\n this._stopEvent();\r\n const type = \"ended\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this });\r\n }\r\n return AnimationState.Stopped;\r\n }\r\n else {\r\n this._current = range(diff, this._from, this._to);\r\n this._entity.markDirty();\r\n const type = \"progress\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this, progress: diff });\r\n }\r\n return AnimationState.Playing;\r\n }\r\n }\r\n }\r\n else {\r\n return AnimationState.Stopped;\r\n }\r\n }\r\n _play() {\r\n this._from = this._current;\r\n if (this._playingDuration === null) {\r\n this._entity._root._addAnimation(this);\r\n const type = \"started\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this });\r\n }\r\n }\r\n else {\r\n this._startingTime = null;\r\n }\r\n this._playingDuration = Math.abs(this._to - this._from) * this._duration;\r\n }\r\n get duration() {\r\n return this._duration;\r\n }\r\n set duration(value) {\r\n if (this._duration !== value) {\r\n this._duration = value;\r\n if (value === 0) {\r\n this.jumpTo(this._to);\r\n }\r\n else if (this._current !== this._to) {\r\n this._play();\r\n }\r\n }\r\n }\r\n get current() {\r\n if (this.easing) {\r\n return this.easing(this._current);\r\n }\r\n else {\r\n return this._current;\r\n }\r\n }\r\n stop() {\r\n this.jumpTo(this._current);\r\n }\r\n jumpTo(value) {\r\n if (this._current !== value) {\r\n this._entity.markDirty();\r\n }\r\n if (this._playingDuration !== null) {\r\n this._stopEvent();\r\n }\r\n this._playingDuration = null;\r\n this._startingTime = null;\r\n this._current = value;\r\n this._from = value;\r\n this._to = value;\r\n }\r\n tweenTo(value) {\r\n if (this._current === value || this._duration === 0) {\r\n this.jumpTo(value);\r\n }\r\n else {\r\n if (this._to !== value) {\r\n this._to = value;\r\n this._play();\r\n }\r\n }\r\n }\r\n}\r\n/*export class AnimationValue extends AnimationTime {\r\n public _min: number;\r\n public _max: number;\r\n\r\n constructor(entity: Entity, duration: number, min: number, max: number) {\r\n super(entity, duration);\r\n this._min = min;\r\n this._max = max;\r\n }\r\n\r\n public get min(): number {\r\n return this._min;\r\n }\r\n\r\n public set min(value: number) {\r\n if (this._min !== value) {\r\n this._min = value;\r\n this._entity.markDirty();\r\n }\r\n }\r\n\r\n public get max(): number {\r\n return this._max;\r\n }\r\n\r\n public set max(value: number) {\r\n if (this._max !== value) {\r\n this._max = value;\r\n this._entity.markDirty();\r\n }\r\n }\r\n\r\n public currentValue(): number {\r\n return range(super.currentTime(), this._min, this._max);\r\n }\r\n\r\n public jumpToValue(value: number) {\r\n super.jumpToTime(normalize(value, this._min, this._max));\r\n }\r\n\r\n public tweenToValue(value: number) {\r\n super.tweenToTime(normalize(value, this._min, this._max));\r\n }\r\n}\r\n*/\r\n//# sourceMappingURL=Animation.js.map","import { EventDispatcher } from \"./EventDispatcher\";\r\nimport * as $array from \"./Array\";\r\n/**\r\n * Checks if specific index fits into length.\r\n *\r\n * @param index Index\r\n * @param len Length\r\n * @ignore\r\n */\r\nfunction checkBounds(index, len) {\r\n if (!(index >= 0 && index < len)) {\r\n throw new Error(\"Index out of bounds: \" + index);\r\n }\r\n}\r\n/**\r\n * A List class is used to hold a number of indexed items of the same type.\r\n */\r\nexport class List {\r\n /**\r\n * Constructor\r\n *\r\n * @param initial Inital list of values to add to list\r\n */\r\n constructor(initial = []) {\r\n /**\r\n * List values.\r\n */\r\n Object.defineProperty(this, \"_values\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new EventDispatcher()\r\n });\r\n this._values = initial;\r\n }\r\n /**\r\n * An array of values in the list.\r\n *\r\n * Do not use this property to add values. Rather use dedicated methods, like\r\n * `push()`, `removeIndex()`, etc.\r\n *\r\n * @readonly\r\n * @return List values\r\n */\r\n get values() {\r\n return this._values;\r\n }\r\n /**\r\n * Checks if list contains specific item reference.\r\n *\r\n * @param item Item to search for\r\n * @return `true` if found, `false` if not found\r\n */\r\n contains(value) {\r\n return this._values.indexOf(value) !== -1;\r\n }\r\n /**\r\n * Removes specific item from the list.\r\n *\r\n * @param item An item to remove\r\n */\r\n removeValue(value) {\r\n let i = 0;\r\n let length = this._values.length;\r\n while (i < length) {\r\n // TODO handle NaN\r\n if (this._values[i] === value) {\r\n this.removeIndex(i);\r\n --length;\r\n }\r\n else {\r\n ++i;\r\n }\r\n }\r\n }\r\n /**\r\n * Searches the list for specific item and returns its index.\r\n *\r\n * @param item An item to search for\r\n * @return Index or -1 if not found\r\n */\r\n indexOf(value) {\r\n return $array.indexOf(this._values, value);\r\n }\r\n /**\r\n * Number of items in list.\r\n *\r\n * @readonly\r\n * @return Number of items\r\n */\r\n get length() {\r\n return this._values.length;\r\n }\r\n /**\r\n * Checks if there's a value at specific index.\r\n *\r\n * @param index Index\r\n * @return Value exists?\r\n */\r\n hasIndex(index) {\r\n return index >= 0 && index < this._values.length;\r\n }\r\n /**\r\n * Returns an item at specified index.\r\n *\r\n * @param index Index\r\n * @return List item\r\n */\r\n getIndex(index) {\r\n return this._values[index];\r\n }\r\n _onPush(newValue) {\r\n if (this.events.isEnabled(\"push\")) {\r\n this.events.dispatch(\"push\", {\r\n type: \"push\",\r\n target: this,\r\n newValue\r\n });\r\n }\r\n }\r\n _onInsertIndex(index, newValue) {\r\n if (this.events.isEnabled(\"insertIndex\")) {\r\n this.events.dispatch(\"insertIndex\", {\r\n type: \"insertIndex\",\r\n target: this,\r\n index,\r\n newValue\r\n });\r\n }\r\n }\r\n _onSetIndex(index, oldValue, newValue) {\r\n if (this.events.isEnabled(\"setIndex\")) {\r\n this.events.dispatch(\"setIndex\", {\r\n type: \"setIndex\",\r\n target: this,\r\n index,\r\n oldValue,\r\n newValue\r\n });\r\n }\r\n }\r\n _onRemoveIndex(index, oldValue) {\r\n if (this.events.isEnabled(\"removeIndex\")) {\r\n this.events.dispatch(\"removeIndex\", {\r\n type: \"removeIndex\",\r\n target: this,\r\n index,\r\n oldValue\r\n });\r\n }\r\n }\r\n _onMoveIndex(oldIndex, newIndex, value) {\r\n if (this.events.isEnabled(\"moveIndex\")) {\r\n this.events.dispatch(\"moveIndex\", {\r\n type: \"moveIndex\",\r\n target: this,\r\n oldIndex,\r\n newIndex,\r\n value,\r\n });\r\n }\r\n }\r\n _onClear(oldValues) {\r\n if (this.events.isEnabled(\"clear\")) {\r\n this.events.dispatch(\"clear\", {\r\n type: \"clear\",\r\n target: this,\r\n oldValues\r\n });\r\n }\r\n }\r\n /**\r\n * Sets value at specific index.\r\n *\r\n * If there's already a value at the index, it is overwritten.\r\n *\r\n * @param index Index\r\n * @param value New value\r\n * @return New value\r\n */\r\n setIndex(index, value) {\r\n checkBounds(index, this._values.length);\r\n const oldValue = this._values[index];\r\n // Do nothing if the old value and the new value are the same\r\n if (oldValue !== value) {\r\n this._values[index] = value;\r\n this._onSetIndex(index, oldValue, value);\r\n }\r\n return oldValue;\r\n }\r\n /**\r\n * Adds an item to the list at a specific index, which pushes all the other\r\n * items further down the list.\r\n *\r\n * @param index Index\r\n * @param item An item to add\r\n */\r\n insertIndex(index, value) {\r\n checkBounds(index, this._values.length + 1);\r\n $array.insertIndex(this._values, index, value);\r\n this._onInsertIndex(index, value);\r\n return value;\r\n }\r\n /**\r\n * Swaps indexes of two items in the list.\r\n *\r\n * @param a Item 1\r\n * @param b Item 2\r\n */\r\n swap(a, b) {\r\n const len = this._values.length;\r\n checkBounds(a, len);\r\n checkBounds(b, len);\r\n if (a !== b) {\r\n const value_a = this._values[a];\r\n const value_b = this._values[b];\r\n this._values[a] = value_b;\r\n this._onSetIndex(a, value_a, value_b);\r\n this._values[b] = value_a;\r\n this._onSetIndex(b, value_b, value_a);\r\n }\r\n }\r\n /**\r\n * Removes a value at specific index.\r\n *\r\n * @param index Index of value to remove\r\n * @return Removed value\r\n */\r\n removeIndex(index) {\r\n checkBounds(index, this._values.length);\r\n const oldValue = this._values[index];\r\n $array.removeIndex(this._values, index);\r\n this._onRemoveIndex(index, oldValue);\r\n return oldValue;\r\n }\r\n /**\r\n * Moves an item to a specific index within the list.\r\n *\r\n * If the index is not specified it will move the item to the end of the\r\n * list.\r\n *\r\n * @param value Item to move\r\n * @param index Index to place item at\r\n */\r\n moveValue(value, toIndex) {\r\n // TODO don't do anything if the desired index is the same as the current index\r\n let index = this.indexOf(value);\r\n // TODO remove all old values rather than only the first ?\r\n if (index !== -1) {\r\n $array.removeIndex(this._values, index);\r\n if (toIndex == null) {\r\n const toIndex = this._values.length;\r\n this._values.push(value);\r\n this._onMoveIndex(index, toIndex, value);\r\n }\r\n else {\r\n $array.insertIndex(this._values, toIndex, value);\r\n this._onMoveIndex(index, toIndex, value);\r\n }\r\n }\r\n else if (toIndex == null) {\r\n this._values.push(value);\r\n this._onPush(value);\r\n }\r\n else {\r\n $array.insertIndex(this._values, toIndex, value);\r\n this._onInsertIndex(toIndex, value);\r\n }\r\n return value;\r\n }\r\n /**\r\n * Adds an item to the end of the list.\r\n *\r\n * @param item An item to add\r\n */\r\n push(value) {\r\n this._values.push(value);\r\n this._onPush(value);\r\n return value;\r\n }\r\n /**\r\n * Adds an item as a first item in the list.\r\n *\r\n * @param item An item to add\r\n */\r\n unshift(value) {\r\n this.insertIndex(0, value);\r\n return value;\r\n }\r\n /**\r\n * Adds multiple items to the list.\r\n *\r\n * @param items An Array of items to add\r\n */\r\n pushAll(values) {\r\n $array.each(values, (value) => {\r\n this.push(value);\r\n });\r\n }\r\n /**\r\n * Copies and adds items from abother list.\r\n *\r\n * @param source A list top copy items from\r\n */\r\n copyFrom(source) {\r\n this.pushAll(source._values);\r\n }\r\n /**\r\n * Returns the last item from the list, and removes it.\r\n *\r\n * @return Item\r\n */\r\n pop() {\r\n let index = this._values.length - 1;\r\n return index < 0 ? undefined : this.removeIndex(this._values.length - 1);\r\n }\r\n /**\r\n * Returns the first item from the list, and removes it.\r\n *\r\n * @return Item\r\n */\r\n shift() {\r\n return this._values.length ? this.removeIndex(0) : undefined;\r\n }\r\n /**\r\n * Sets multiple items to the list.\r\n *\r\n * All current items are removed.\r\n *\r\n * @param newArray New items\r\n */\r\n setAll(newArray) {\r\n const old = this._values;\r\n this._values = [];\r\n this._onClear(old);\r\n $array.each(newArray, (value) => {\r\n this._values.push(value);\r\n this._onPush(value);\r\n });\r\n }\r\n /**\r\n * Removes all items from the list.\r\n */\r\n clear() {\r\n this.setAll([]);\r\n }\r\n /**\r\n * Returns an ES6 iterator for the list.\r\n */\r\n *[Symbol.iterator]() {\r\n const length = this._values.length;\r\n for (let i = 0; i < length; ++i) {\r\n yield this._values[i];\r\n }\r\n }\r\n /**\r\n * Calls `f` for each element in the list.\r\n *\r\n * `f` should have at least one parameter defined which will get a current\r\n * item, with optional second argument - index.\r\n */\r\n each(f) {\r\n $array.each(this._values, f);\r\n }\r\n /**\r\n * Calls `f` for each element in the list, from right to left.\r\n *\r\n * `f` should have at least one parameter defined which will get a current\r\n * item, with optional second argument - index.\r\n */\r\n eachReverse(f) {\r\n $array.eachReverse(this._values, f);\r\n }\r\n}\r\n/**\r\n * A version of a [[List]] where the elements are disposed automatically when\r\n * removed from the list, unless `autoDispose` is set to `false`.\r\n */\r\nexport class ListAutoDispose extends List {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * Automatically disposes elements that are removed from the list.\r\n *\r\n * @default true\r\n */\r\n Object.defineProperty(this, \"autoDispose\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"_disposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n }\r\n _onSetIndex(index, oldValue, newValue) {\r\n if (this.autoDispose) {\r\n oldValue.dispose();\r\n }\r\n super._onSetIndex(index, oldValue, newValue);\r\n }\r\n _onRemoveIndex(index, oldValue) {\r\n if (this.autoDispose) {\r\n oldValue.dispose();\r\n }\r\n super._onRemoveIndex(index, oldValue);\r\n }\r\n _onClear(oldValues) {\r\n if (this.autoDispose) {\r\n $array.each(oldValues, (x) => {\r\n x.dispose();\r\n });\r\n }\r\n super._onClear(oldValues);\r\n }\r\n _dispose() {\r\n if (this.autoDispose) {\r\n $array.each(this._values, (x) => {\r\n x.dispose();\r\n });\r\n }\r\n }\r\n isDisposed() {\r\n return this._disposed;\r\n }\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n this._dispose();\r\n }\r\n }\r\n}\r\n/**\r\n * A version of a [[List]] that is able to create new elements as well as\r\n * apply additional settings to newly created items.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/list-templates/} for more info\r\n */\r\nexport class ListTemplate extends ListAutoDispose {\r\n constructor(template, make) {\r\n super();\r\n Object.defineProperty(this, \"template\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"make\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this.template = template;\r\n this.make = make;\r\n }\r\n _dispose() {\r\n super._dispose();\r\n if (this.autoDispose) {\r\n this.template.dispose();\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=List.js.map","import { List } from \"./List\";\r\nimport * as $array from \"./Array\";\r\n/**\r\n * A version of [[List]] to hold children of the [[Container]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/} for more info\r\n */\r\nexport class Children extends List {\r\n constructor(container) {\r\n super();\r\n Object.defineProperty(this, \"_disposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_container\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._container = container;\r\n this._events = this.events.onAll((change) => {\r\n if (change.type === \"clear\") {\r\n $array.each(change.oldValues, (x) => {\r\n this._onRemoved(x);\r\n });\r\n }\r\n else if (change.type === \"push\") {\r\n this._onInserted(change.newValue);\r\n }\r\n else if (change.type === \"setIndex\") {\r\n this._onRemoved(change.oldValue);\r\n this._onInserted(change.newValue, change.index);\r\n }\r\n else if (change.type === \"insertIndex\") {\r\n this._onInserted(change.newValue, change.index);\r\n }\r\n else if (change.type === \"removeIndex\") {\r\n this._onRemoved(change.oldValue);\r\n }\r\n else if (change.type === \"moveIndex\") {\r\n this._onRemoved(change.value);\r\n this._onInserted(change.value, change.newIndex);\r\n }\r\n else {\r\n throw new Error(\"Unknown IListEvent type\");\r\n }\r\n });\r\n }\r\n _onInserted(child, index) {\r\n child._setParent(this._container, true);\r\n const childrenDisplay = this._container._childrenDisplay;\r\n if (index === undefined) {\r\n childrenDisplay.addChild(child._display);\r\n }\r\n else {\r\n childrenDisplay.addChildAt(child._display, index);\r\n }\r\n }\r\n _onRemoved(child) {\r\n this._container._childrenDisplay.removeChild(child._display);\r\n this._container.markDirtyBounds();\r\n this._container.markDirty();\r\n }\r\n /**\r\n * Returns `true` if obejct is disposed.\r\n */\r\n isDisposed() {\r\n return this._disposed;\r\n }\r\n /**\r\n * Permanently dispose this object.\r\n */\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n this._events.dispose();\r\n $array.each(this.values, (child) => {\r\n child.dispose();\r\n });\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=Children.js.map","import { isNumber } from \"./Type\";\r\n/**\r\n * ============================================================================\r\n * CONSTANTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nexport const PI = Math.PI;\r\nexport const HALFPI = PI / 2;\r\nexport const RADIANS = PI / 180;\r\nexport const DEGREES = 180 / PI;\r\n/**\r\n * Rounds the numeric value to whole number or specific precision of set.\r\n *\r\n * @param value Value\r\n * @param precision Precision (number of decimal points)\r\n * @param floor In case value ends with 0.5 and precision is 0, we might need to floor the value instead of ceiling it.\r\n * @return Rounded value\r\n */\r\nexport function round(value, precision, floor) {\r\n if (!isNumber(precision) || precision <= 0) {\r\n let rounded = Math.round(value);\r\n if (floor) {\r\n if (rounded - value == 0.5) {\r\n rounded--;\r\n }\r\n }\r\n return rounded;\r\n }\r\n else {\r\n let d = Math.pow(10, precision);\r\n return Math.round(value * d) / d;\r\n }\r\n}\r\n/**\r\n * Ceils the numeric value to whole number or specific precision of set.\r\n *\r\n * @param value Value\r\n * @param precision Precision (number of decimal points)\r\n * @return Rounded value\r\n */\r\nexport function ceil(value, precision) {\r\n if (!isNumber(precision) || precision <= 0) {\r\n return Math.ceil(value);\r\n }\r\n else {\r\n let d = Math.pow(10, precision);\r\n return Math.ceil(value * d) / d;\r\n }\r\n}\r\n/**\r\n * [getCubicControlPointA description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param p0 [description]\r\n * @param p1 [description]\r\n * @param p2 [description]\r\n * @param p3 [description]\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n * @return [description]\r\n */\r\nexport function getCubicControlPointA(p0, p1, p2, tensionX, tensionY) {\r\n return { x: ((-p0.x + p1.x / tensionX + p2.x) * tensionX), y: ((-p0.y + p1.y / tensionY + p2.y) * tensionY) };\r\n}\r\n/**\r\n * [getCubicControlPointB description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param p0 [description]\r\n * @param p1 [description]\r\n * @param p2 [description]\r\n * @param p3 [description]\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n * @return [description]\r\n */\r\nexport function getCubicControlPointB(p1, p2, p3, tensionX, tensionY) {\r\n return { x: ((p1.x + p2.x / tensionX - p3.x) * tensionX), y: ((p1.y + p2.y / tensionY - p3.y) * tensionY) };\r\n}\r\nexport function fitToRange(value, min, max) {\r\n return Math.min(Math.max(value, min), max);\r\n}\r\n/**\r\n * Returns sine of an angle specified in degrees.\r\n *\r\n * @param value Value\r\n * @return Sine\r\n */\r\nexport function sin(angle) {\r\n return Math.sin(RADIANS * angle);\r\n}\r\n/**\r\n * Returns tan of an angle specified in degrees.\r\n *\r\n * @param value Value\r\n * @return Sine\r\n */\r\nexport function tan(angle) {\r\n return Math.tan(RADIANS * angle);\r\n}\r\n/**\r\n * Returns cosine of an angle specified in degrees.\r\n *\r\n * @param value Value\r\n * @return Cosine\r\n */\r\nexport function cos(angle) {\r\n return Math.cos(RADIANS * angle);\r\n}\r\n// 0 to 360\r\nexport function normalizeAngle(value) {\r\n value = value % 360;\r\n if (value < 0) {\r\n value += 360;\r\n }\r\n return value;\r\n}\r\n// TODO this doesn't work properly for skewing, and it's probably broken for rotation too\r\nexport function getArcBounds(cx, cy, startAngle, endAngle, radius) {\r\n let minX = Number.MAX_VALUE;\r\n let minY = Number.MAX_VALUE;\r\n let maxX = -Number.MAX_VALUE;\r\n let maxY = -Number.MAX_VALUE;\r\n let bpoints = [];\r\n bpoints.push(getArcPoint(radius, startAngle));\r\n bpoints.push(getArcPoint(radius, endAngle));\r\n let fromAngle = Math.min(Math.floor(startAngle / 90) * 90, Math.floor(endAngle / 90) * 90);\r\n let toAngle = Math.max(Math.ceil(startAngle / 90) * 90, Math.ceil(endAngle / 90) * 90);\r\n for (let angle = fromAngle; angle <= toAngle; angle += 90) {\r\n if (angle >= startAngle && angle <= endAngle) {\r\n bpoints.push(getArcPoint(radius, angle));\r\n }\r\n }\r\n for (let i = 0; i < bpoints.length; i++) {\r\n let pt = bpoints[i];\r\n if (pt.x < minX) {\r\n minX = pt.x;\r\n }\r\n if (pt.y < minY) {\r\n minY = pt.y;\r\n }\r\n if (pt.x > maxX) {\r\n maxX = pt.x;\r\n }\r\n if (pt.y > maxY) {\r\n maxY = pt.y;\r\n }\r\n }\r\n return ({ left: cx + minX, top: cy + minY, right: cx + maxX, bottom: cy + maxY });\r\n}\r\n/**\r\n * Returns point on arc\r\n *\r\n * @param center point\r\n * @param radius\r\n * @param arc\r\n * @return {boolean}\r\n */\r\nexport function getArcPoint(radius, arc) {\r\n return ({ x: radius * cos(arc), y: radius * sin(arc) });\r\n}\r\nexport function mergeBounds(bounds) {\r\n const len = bounds.length;\r\n if (len > 0) {\r\n let bound = bounds[0];\r\n let left = bound.left;\r\n let top = bound.top;\r\n let right = bound.right;\r\n let bottom = bound.bottom;\r\n if (len > 1) {\r\n for (let i = 1; i < len; i++) {\r\n bound = bounds[i];\r\n left = Math.min(bound.left, left);\r\n right = Math.max(bound.right, right);\r\n top = Math.min(bound.top, top);\r\n bottom = Math.max(bound.bottom, bottom);\r\n }\r\n }\r\n return { left, right, top, bottom };\r\n }\r\n return { left: 0, right: 0, top: 0, bottom: 0 };\r\n}\r\nexport function fitAngleToRange(value, startAngle, endAngle) {\r\n if (startAngle > endAngle) {\r\n let temp = startAngle;\r\n startAngle = endAngle;\r\n endAngle = temp;\r\n }\r\n value = normalizeAngle(value);\r\n let count = (startAngle - normalizeAngle(startAngle)) / 360;\r\n if (value < startAngle) {\r\n value += 360 * (count + 1);\r\n }\r\n let maxEnd = startAngle + (endAngle - startAngle) / 2 + 180;\r\n let maxStart = startAngle + (endAngle - startAngle) / 2 - 180;\r\n if (value > endAngle) {\r\n if (value - 360 > startAngle) {\r\n value -= 360;\r\n }\r\n else {\r\n if (value < maxEnd) {\r\n value = endAngle;\r\n }\r\n else {\r\n value = startAngle;\r\n }\r\n }\r\n }\r\n if (value < startAngle) {\r\n if (value > maxStart) {\r\n value = startAngle;\r\n }\r\n else {\r\n value = endAngle;\r\n }\r\n }\r\n return value;\r\n}\r\nexport function inBounds(point, bounds) {\r\n if (point.x >= bounds.left && point.y >= bounds.top && point.x <= bounds.right && point.y <= bounds.bottom) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function getAngle(point1, point2) {\r\n if (!point2) {\r\n point2 = { x: point1.x * 2, y: point1.y * 2 };\r\n }\r\n let diffX = point2.x - point1.x;\r\n let diffY = point2.y - point1.y;\r\n let angle = Math.atan2(diffY, diffX) * DEGREES;\r\n if (angle < 0) {\r\n angle += 360;\r\n }\r\n return normalizeAngle(angle);\r\n}\r\n/**\r\n * [getPointOnQuadraticCurve description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param pointA [description]\r\n * @param pointB [description]\r\n * @param controlPoint [description]\r\n * @param position [description]\r\n * @return [description]\r\n */\r\nexport function getPointOnQuadraticCurve(pointA, pointB, controlPoint, position) {\r\n let x = (1 - position) * (1 - position) * pointA.x + 2 * (1 - position) * position * controlPoint.x + position * position * pointB.x;\r\n let y = (1 - position) * (1 - position) * pointA.y + 2 * (1 - position) * position * controlPoint.y + position * position * pointB.y;\r\n return { x: x, y: y };\r\n}\r\nexport function getPointOnLine(pointA, pointB, position) {\r\n return { x: pointA.x + (pointB.x - pointA.x) * position, y: pointA.y + (pointB.y - pointA.y) * position };\r\n}\r\n/**\r\n * Returns the closest value from the array of values to the reference value.\r\n *\r\n * @param values Array of values\r\n * @param value Reference value\r\n * @return Closes value from the array\r\n */\r\nexport function closest(values, referenceValue) {\r\n return values.reduce(function (prev, curr) {\r\n return (Math.abs(curr - referenceValue) < Math.abs(prev - referenceValue) ? curr : prev);\r\n });\r\n}\r\n/**\r\n * Returns true if bounds overlap\r\n * @param bounds1 IBounds\r\n * @param bounds2 IBounds\r\n * @returns boolean\r\n */\r\nexport function boundsOverlap(bounds1, bounds2) {\r\n const horizontalOverlap = bounds1.left < bounds2.right && bounds1.right > bounds2.left;\r\n const verticalOverlap = bounds1.top < bounds2.bottom && bounds1.bottom > bounds2.top;\r\n return horizontalOverlap && verticalOverlap;\r\n}\r\n/**\r\n * Generates points of a spiral\r\n * @param cx\r\n * @param cy\r\n * @param radius\r\n * @param radiusY\r\n * @param innerRadius\r\n * @param step\r\n * @param radiusStep\r\n * @param startAngle\r\n * @param endAngle\r\n * @returns IPoint[]\r\n */\r\nexport function spiralPoints(cx, cy, radius, radiusY, innerRadius, step, radiusStep, startAngle, endAngle) {\r\n let r = innerRadius + 0.01;\r\n let angle = startAngle * RADIANS;\r\n let points = [];\r\n while (r < radius + radiusStep) {\r\n let stepSize = step;\r\n if (stepSize / 2 > r) {\r\n stepSize = 2 * r;\r\n }\r\n angle += 2 * Math.asin(stepSize / 2 / r);\r\n if (angle * DEGREES > endAngle + ((radius - innerRadius) / radiusStep) * 360) {\r\n break;\r\n }\r\n let degrees = angle * DEGREES;\r\n let point = { x: cx + r * Math.cos(angle), y: cy + r * radiusY / radius * Math.sin(angle) };\r\n points.push(point);\r\n r = innerRadius + degrees / 360 * radiusStep;\r\n }\r\n points.shift();\r\n return points;\r\n}\r\n/**\r\n * Returns true if circles overlap\r\n * @param circle1\r\n * @param circle2\r\n * @returns boolean\r\n */\r\nexport function circlesOverlap(circle1, circle2) {\r\n return Math.hypot(circle1.x - circle2.x, circle1.y - circle2.y) <= circle1.radius + circle2.radius;\r\n}\r\n//# sourceMappingURL=Math.js.map","/**\r\n * A collection of easing functions\r\n *\r\n * Parts of this collection are taken from D3.js library (https://d3js.org/)\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $math from \"./Math\";\r\n/**\r\n * The functions below are from D3.js library (https://d3js.org/)\r\n *\r\n * ----------------------------------------------------------------------------\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n *\tthis list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n *\tthis list of conditions and the following disclaimer in the documentation\r\n *\tand/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n *\tcontributors may be used to endorse or promote products derived from this\r\n *\tsoftware without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * ----------------------------------------------------------------------------\r\n * @hidden\r\n */\r\n/**\r\n */\r\nexport function linear(t) {\r\n return t;\r\n}\r\nexport function quad(t) {\r\n return t * t;\r\n}\r\nexport function cubic(t) {\r\n return t * t * t;\r\n}\r\nexport function pow(t, e) {\r\n return Math.pow(t, e);\r\n}\r\nexport function exp(t) {\r\n return Math.pow(2, 10 * t - 10);\r\n}\r\nexport function sine(t) {\r\n return 1 - Math.cos(t * $math.HALFPI);\r\n}\r\nexport function circle(t) {\r\n return 1 - Math.sqrt(1 - t * t);\r\n}\r\n/**\r\n * ============================================================================\r\n * TRANSFORMERS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n */\r\nexport function yoyo(ease) {\r\n return function (t) {\r\n if (t < 0.5) {\r\n return ease(t * 2.0);\r\n }\r\n else {\r\n return ease((1.0 - t) * 2.0);\r\n }\r\n };\r\n}\r\nexport function out(ease) {\r\n return function (t) {\r\n return 1.0 - ease(1.0 - t);\r\n };\r\n}\r\nexport function inOut(ease) {\r\n return function (t) {\r\n if (t <= 0.5) {\r\n return ease(t * 2.0) / 2.0;\r\n }\r\n else {\r\n return 1.0 - (ease((1.0 - t) * 2.0) / 2.0);\r\n }\r\n };\r\n}\r\n/**\r\n * ============================================================================\r\n * BOUNCE\r\n * ============================================================================\r\n * @hidden\r\n */\r\nlet b1 = 4 / 11, b2 = 6 / 11, b3 = 8 / 11, b4 = 3 / 4, b5 = 9 / 11, b6 = 10 / 11, b7 = 15 / 16, b8 = 21 / 22, b9 = 63 / 64, b0 = 1 / b1 / b1;\r\nexport function bounce(t) {\r\n return 1 - bounceOut(1 - t);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction bounceOut(t) {\r\n t = t;\r\n if (t < b1) {\r\n return b0 * t * t;\r\n }\r\n else if (t < b3) {\r\n return b0 * (t -= b2) * t + b4;\r\n }\r\n else if (t < b6) {\r\n return b0 * (t -= b5) * t + b7;\r\n }\r\n else {\r\n return b0 * (t -= b8) * t + b9;\r\n }\r\n}\r\n/**\r\n * ============================================================================\r\n * ELASTIC\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * @ignore\r\n */\r\nlet tau = 2 * Math.PI;\r\n/**\r\n * @ignore\r\n */\r\nlet amplitude = 1;\r\n/**\r\n * @ignore\r\n */\r\nlet period = 0.3 / tau;\r\n/**\r\n * @ignore\r\n */\r\nlet s = Math.asin(1 / amplitude) * period;\r\nexport function elastic(t) {\r\n let v = t;\r\n return amplitude * Math.pow(2, 10 * --v) * Math.sin((s - v) / period);\r\n}\r\n//# sourceMappingURL=Ease.js.map","import * as $object from \"./Object\";\r\nimport * as $ease from \"./Ease\";\r\n/**\r\n * An object representing a collection of setting values to apply as required.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/states/} for more info\r\n */\r\nexport class State {\r\n constructor(entity, settings) {\r\n Object.defineProperty(this, \"_entity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_settings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_userSettings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n this._entity = entity;\r\n this._settings = settings;\r\n $object.each(settings, (key) => {\r\n this._userSettings[key] = true;\r\n });\r\n }\r\n get(key, fallback) {\r\n const value = this._settings[key];\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n else {\r\n return fallback;\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n setRaw(key, value) {\r\n this._settings[key] = value;\r\n }\r\n /**\r\n * Sets a setting `value` for the specified `key` to be set when the state\r\n * is applied.\r\n *\r\n * @param key Setting key\r\n * @param value Setting value\r\n * @return Setting value\r\n */\r\n set(key, value) {\r\n this._userSettings[key] = true;\r\n this.setRaw(key, value);\r\n }\r\n /**\r\n * Removes a setting value for the specified `key`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n */\r\n remove(key) {\r\n delete this._userSettings[key];\r\n delete this._settings[key];\r\n }\r\n /**\r\n * Sets multiple settings at once.\r\n *\r\n * `settings` must be an object with key: value pairs.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param settings Settings\r\n */\r\n setAll(settings) {\r\n $object.keys(settings).forEach((key) => {\r\n this.set(key, settings[key]);\r\n });\r\n }\r\n _eachSetting(f) {\r\n $object.each(this._settings, f);\r\n }\r\n /**\r\n * Applies the state to the target element.\r\n *\r\n * All setting values are set immediately.\r\n */\r\n apply() {\r\n const seen = {};\r\n seen[\"stateAnimationEasing\"] = true;\r\n seen[\"stateAnimationDuration\"] = true;\r\n const defaultState = this._entity.states.lookup(\"default\");\r\n this._eachSetting((key, value) => {\r\n if (!seen[key]) {\r\n seen[key] = true;\r\n // save values to default state\r\n if (this !== defaultState) {\r\n if (!(key in defaultState._settings)) {\r\n defaultState._settings[key] = this._entity.get(key);\r\n }\r\n }\r\n this._entity.set(key, value);\r\n }\r\n });\r\n }\r\n /**\r\n * Applies the state to the target element.\r\n *\r\n * Returns an object representing all [[Animation]] objects created for\r\n * each setting key transition.\r\n *\r\n * @return Animations\r\n */\r\n applyAnimate(duration) {\r\n if (duration == null) {\r\n duration = this._settings.stateAnimationDuration;\r\n }\r\n if (duration == null) {\r\n duration = this.get(\"stateAnimationDuration\", this._entity.get(\"stateAnimationDuration\", 0));\r\n }\r\n let easing = this._settings.stateAnimationEasing;\r\n if (easing == null) {\r\n easing = this.get(\"stateAnimationEasing\", this._entity.get(\"stateAnimationEasing\", $ease.cubic));\r\n }\r\n const defaultState = this._entity.states.lookup(\"default\");\r\n const seen = {};\r\n seen[\"stateAnimationEasing\"] = true;\r\n seen[\"stateAnimationDuration\"] = true;\r\n const animations = {};\r\n this._eachSetting((key, value) => {\r\n if (!seen[key]) {\r\n seen[key] = true;\r\n // save values to default state\r\n if (this != defaultState) {\r\n if (!(key in defaultState._settings)) {\r\n defaultState._settings[key] = this._entity.get(key);\r\n }\r\n }\r\n const animation = this._entity.animate({\r\n key: key,\r\n to: value,\r\n duration: duration,\r\n easing: easing\r\n });\r\n if (animation) {\r\n animations[key] = animation;\r\n }\r\n }\r\n });\r\n return animations;\r\n }\r\n}\r\n/**\r\n * Collection of [[State]] objects for an element.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/states/} for more info\r\n */\r\nexport class States {\r\n constructor(entity) {\r\n Object.defineProperty(this, \"_states\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_entity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._entity = entity;\r\n }\r\n /**\r\n * Checks if a state by `name` exists. Returns it there is one.\r\n *\r\n * @param name State name\r\n * @return State\r\n */\r\n lookup(name) {\r\n return this._states[name];\r\n }\r\n /**\r\n * Sets supplied `settings` on a state by the `name`.\r\n *\r\n * If such state does not yet exists, it is created.\r\n *\r\n * @param name State name\r\n * @param settings Settings\r\n * @return New State\r\n */\r\n create(name, settings) {\r\n const state = this._states[name];\r\n if (state) {\r\n state.setAll(settings);\r\n return state;\r\n }\r\n else {\r\n const state = new State(this._entity, settings);\r\n this._states[name] = state;\r\n return state;\r\n }\r\n }\r\n /**\r\n * Removes the state called `name`.\r\n *\r\n * @param name State name\r\n */\r\n remove(name) {\r\n delete this._states[name];\r\n }\r\n /**\r\n * Applies a named state to the target element.\r\n *\r\n * @param newState State name\r\n */\r\n apply(newState) {\r\n const state = this._states[newState];\r\n if (state) {\r\n state.apply();\r\n }\r\n this._entity._applyState(newState);\r\n }\r\n /**\r\n * Applies a named state to the element.\r\n *\r\n * Returns an object representing all [[Animation]] objects created for\r\n * each setting key transition.\r\n *\r\n * @param newState State name\r\n * @return Animations\r\n */\r\n applyAnimate(newState, duration) {\r\n let animations;\r\n const state = this._states[newState];\r\n if (state) {\r\n animations = state.applyAnimate(duration);\r\n }\r\n this._entity._applyStateAnimated(newState, duration);\r\n return animations;\r\n }\r\n}\r\n//# sourceMappingURL=States.js.map","/**\r\n * @ignore\r\n */\r\nexport class Registry {\r\n constructor() {\r\n /**\r\n * Currently running version of amCharts.\r\n */\r\n Object.defineProperty(this, \"version\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"5.10.7\"\r\n });\r\n /**\r\n * List of applied licenses.\r\n * @ignore\r\n */\r\n Object.defineProperty(this, \"licenses\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n /**\r\n * Entities that have their `id` setting set.\r\n */\r\n Object.defineProperty(this, \"entitiesById\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n /**\r\n * All created [[Root]] elements.\r\n */\r\n Object.defineProperty(this, \"rootElements\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport const registry = new Registry();\r\n/**\r\n * Adds a license, e.g.:\r\n *\r\n * ```TypeScript\r\n * am5.addLicense(\"xxxxxxxx\");\r\n * ```\r\n * ```JavaScript\r\n * am5.addLicense(\"xxxxxxxx\");\r\n * ```\r\n *\r\n * Multiple licenses can be added to cover for multiple products.\r\n *\r\n * @param license License key\r\n */\r\nexport function addLicense(license) {\r\n registry.licenses.push(license);\r\n}\r\n/**\r\n * Disposes all [[Root]] elements.\r\n */\r\nexport function disposeAllRootElements() {\r\n let root;\r\n while (root = registry.rootElements.pop()) {\r\n root.dispose();\r\n }\r\n}\r\n/**\r\n * Finds and returns a `Root` element assigned to a container with `id`.\r\n *\r\n * @param id Container ID\r\n * @return Root\r\n * @since 5.9.2\r\n */\r\nexport function getRootById(id) {\r\n let found;\r\n registry.rootElements.forEach((item) => {\r\n if (item.dom.id == id) {\r\n found = item;\r\n }\r\n });\r\n return found;\r\n}\r\n//# sourceMappingURL=Registry.js.map","/**\r\n * @ignore\r\n */\r\nexport function compare(left, right) {\r\n if (left === right) {\r\n return 0;\r\n }\r\n else if (left < right) {\r\n return -1;\r\n }\r\n else {\r\n return 1;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function compareArray(left, right, f) {\r\n const leftLength = left.length;\r\n const rightLength = right.length;\r\n const length = Math.min(leftLength, rightLength);\r\n for (let i = 0; i < length; ++i) {\r\n const order = f(left[i], right[i]);\r\n if (order !== 0) {\r\n return order;\r\n }\r\n }\r\n return compare(leftLength, rightLength);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function reverse(order) {\r\n if (order < 0) {\r\n return 1;\r\n }\r\n else if (order > 0) {\r\n return -1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function compareNumber(a, b) {\r\n if (a === b) {\r\n return 0;\r\n }\r\n else if (a < b) {\r\n return -1;\r\n }\r\n else {\r\n return 1;\r\n }\r\n}\r\n//# sourceMappingURL=Order.js.map","import { Disposer } from \"./Disposer\";\r\nimport { EventDispatcher } from \"./EventDispatcher\";\r\nimport { AnimationState, getInterpolate } from \"./Animation\";\r\nimport { States } from \"./States\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $object from \"./Object\";\r\nimport * as $ease from \"./Ease\";\r\nimport * as $array from \"./Array\";\r\nimport * as $order from \"./Order\";\r\n/**\r\n * Allows to dynamically modify setting value of its target element.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/adapters/} for more info\r\n */\r\nexport class Adapters {\r\n constructor(entity) {\r\n Object.defineProperty(this, \"_entity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_callbacks\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_disabled\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n this._entity = entity;\r\n }\r\n /**\r\n * Add a function (`callback`) that will modify value for setting `key`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/adapters/} for more info\r\n */\r\n add(key, callback) {\r\n let callbacks = this._callbacks[key];\r\n if (callbacks === undefined) {\r\n callbacks = this._callbacks[key] = [];\r\n }\r\n callbacks.push(callback);\r\n this._entity._markDirtyKey(key);\r\n return new Disposer(() => {\r\n if ($array.removeFirst(callbacks, callback)) {\r\n this._entity._markDirtyKey(key);\r\n }\r\n });\r\n }\r\n /**\r\n * Removes all adapters for the specific key.\r\n *\r\n * @since 5.1.0\r\n */\r\n remove(key) {\r\n const callbacks = this._callbacks[key];\r\n if (callbacks !== undefined) {\r\n delete this._callbacks[key];\r\n if (callbacks.length !== 0) {\r\n this._entity._markDirtyKey(key);\r\n }\r\n }\r\n }\r\n /**\r\n * Enables (previously disabled) adapters for specific key.\r\n *\r\n * @since 5.1.0\r\n */\r\n enable(key) {\r\n if (this._disabled[key]) {\r\n delete this._disabled[key];\r\n this._entity._markDirtyKey(key);\r\n }\r\n }\r\n /**\r\n * Disables all adapters for specific key.\r\n *\r\n * @since 5.1.0\r\n */\r\n disable(key) {\r\n if (!this._disabled[key]) {\r\n this._disabled[key] = true;\r\n this._entity._markDirtyKey(key);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n fold(key, value) {\r\n if (!this._disabled[key]) {\r\n const callbacks = this._callbacks[key];\r\n if (callbacks !== undefined) {\r\n for (let i = 0, len = callbacks.length; i < len; ++i) {\r\n value = callbacks[i](value, this._entity, key);\r\n }\r\n }\r\n }\r\n return value;\r\n }\r\n}\r\n/**\r\n * Animation object.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/animations/} for more info\r\n */\r\nexport class Animation {\r\n constructor(animation, from, to, duration, easing, loops, startingTime) {\r\n Object.defineProperty(this, \"_animation\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_from\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_to\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_duration\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_easing\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_loops\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_interpolate\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_oldTime\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_time\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_stopped\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_playing\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new EventDispatcher()\r\n });\r\n this._animation = animation;\r\n this._from = from;\r\n this._to = to;\r\n this._duration = duration;\r\n this._easing = easing;\r\n this._loops = loops;\r\n this._interpolate = getInterpolate(from, to);\r\n this._oldTime = startingTime;\r\n }\r\n get to() {\r\n return this._to;\r\n }\r\n get from() {\r\n return this._from;\r\n }\r\n get playing() {\r\n return this._playing;\r\n }\r\n get stopped() {\r\n return this._stopped;\r\n }\r\n stop() {\r\n if (!this._stopped) {\r\n this._stopped = true;\r\n this._playing = false;\r\n if (this.events.isEnabled(\"stopped\")) {\r\n this.events.dispatch(\"stopped\", {\r\n type: \"stopped\",\r\n target: this,\r\n });\r\n }\r\n }\r\n }\r\n pause() {\r\n this._playing = false;\r\n this._oldTime = null;\r\n }\r\n play() {\r\n if (!this._stopped && !this._playing) {\r\n this._playing = true;\r\n this._animation._startAnimation();\r\n }\r\n }\r\n get percentage() {\r\n return this._time / this._duration;\r\n }\r\n waitForStop() {\r\n return new Promise((resolve, _reject) => {\r\n if (this._stopped) {\r\n resolve();\r\n }\r\n else {\r\n const listener = () => {\r\n stopped.dispose();\r\n resolve();\r\n };\r\n const stopped = this.events.on(\"stopped\", listener);\r\n }\r\n });\r\n }\r\n _checkEnded() {\r\n if (this._loops > 1) {\r\n --this._loops;\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n _run(currentTime) {\r\n if (this._oldTime !== null) {\r\n this._time += currentTime - this._oldTime;\r\n if (this._time > this._duration) {\r\n this._time = this._duration;\r\n }\r\n }\r\n this._oldTime = currentTime;\r\n }\r\n _reset(currentTime) {\r\n this._oldTime = currentTime;\r\n this._time = 0;\r\n }\r\n _value(diff) {\r\n return this._interpolate(this._easing(diff), this._from, this._to);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nlet counter = 0;\r\n/**\r\n * Base class for [[Entity]] objects that support Settings.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n */\r\nexport class Settings {\r\n constructor(settings) {\r\n /**\r\n * Unique ID.\r\n */\r\n Object.defineProperty(this, \"uid\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: ++counter\r\n });\r\n Object.defineProperty(this, \"_settings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_privateSettings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_settingEvents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_privateSettingEvents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_prevSettings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_prevPrivateSettings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_animatingSettings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_animatingPrivateSettings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_disposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n // TODO move this into Entity\r\n Object.defineProperty(this, \"_userProperties\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n /**\r\n * If this is set to `false` then disposing does nothing, it's a no-op.\r\n */\r\n Object.defineProperty(this, \"enableDispose\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n this._settings = settings;\r\n }\r\n _checkDirty() {\r\n $object.keys(this._settings).forEach((key) => {\r\n this._userProperties[key] = true;\r\n this._markDirtyKey(key);\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n resetUserSettings() {\r\n this._userProperties = {};\r\n }\r\n _runAnimation(currentTime) {\r\n let state = AnimationState.Stopped;\r\n if (!this.isDisposed()) {\r\n let playing = false;\r\n let paused = false;\r\n $object.each(this._animatingSettings, (key, animation) => {\r\n if (animation.stopped) {\r\n this._stopAnimation(key);\r\n }\r\n else if (animation.playing) {\r\n animation._run(currentTime);\r\n const diff = animation.percentage;\r\n if (diff >= 1) {\r\n if (animation._checkEnded()) {\r\n this.set(key, animation._value(1));\r\n }\r\n else {\r\n playing = true;\r\n animation._reset(currentTime);\r\n this._set(key, animation._value(1));\r\n }\r\n }\r\n else {\r\n playing = true;\r\n this._set(key, animation._value(diff));\r\n }\r\n }\r\n else {\r\n paused = true;\r\n }\r\n });\r\n $object.each(this._animatingPrivateSettings, (key, animation) => {\r\n if (animation.stopped) {\r\n this._stopAnimationPrivate(key);\r\n }\r\n else if (animation.playing) {\r\n animation._run(currentTime);\r\n const diff = animation.percentage;\r\n if (diff >= 1) {\r\n if (animation._checkEnded()) {\r\n this.setPrivate(key, animation._value(1));\r\n }\r\n else {\r\n playing = true;\r\n animation._reset(currentTime);\r\n this._setPrivate(key, animation._value(1));\r\n }\r\n }\r\n else {\r\n playing = true;\r\n this._setPrivate(key, animation._value(diff));\r\n }\r\n }\r\n else {\r\n paused = true;\r\n }\r\n });\r\n if (playing) {\r\n state = AnimationState.Playing;\r\n }\r\n else if (paused) {\r\n state = AnimationState.Paused;\r\n }\r\n }\r\n return state;\r\n }\r\n _markDirtyKey(_key) {\r\n this.markDirty();\r\n }\r\n _markDirtyPrivateKey(_key) {\r\n this.markDirty();\r\n }\r\n /**\r\n * Sets a callback function to invoke when specific key of settings changes\r\n * or is set.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/#Settings_value_change} for more info\r\n * @param key Settings key\r\n * @param callback Callback\r\n * @return Disposer for event\r\n */\r\n on(key, callback) {\r\n let events = this._settingEvents[key];\r\n if (events === undefined) {\r\n events = this._settingEvents[key] = [];\r\n }\r\n events.push(callback);\r\n return new Disposer(() => {\r\n $array.removeFirst(events, callback);\r\n if (events.length === 0) {\r\n delete this._settingEvents[key];\r\n }\r\n });\r\n }\r\n /**\r\n * Removes a callback for when value of a setting changes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/#Settings_value_change} for more info\r\n * @param key Private settings key\r\n * @param callback Callback\r\n * @since 5.9.2\r\n */\r\n off(key, callback) {\r\n let events = this._settingEvents[key];\r\n if (events !== undefined && callback !== undefined) {\r\n $array.removeFirst(events, callback);\r\n }\r\n else {\r\n delete this._settingEvents[key];\r\n }\r\n }\r\n /**\r\n * Sets a callback function to invoke when specific key of private settings\r\n * changes or is set.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/#Settings_value_change} for more info\r\n * @param key Private settings key\r\n * @param callback Callback\r\n * @return Disposer for event\r\n */\r\n onPrivate(key, callback) {\r\n let events = this._privateSettingEvents[key];\r\n if (events === undefined) {\r\n events = this._privateSettingEvents[key] = [];\r\n }\r\n events.push(callback);\r\n return new Disposer(() => {\r\n $array.removeFirst(events, callback);\r\n if (events.length === 0) {\r\n delete this._privateSettingEvents[key];\r\n }\r\n });\r\n }\r\n /**\r\n * Removes a callback for when value of a private setting changes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/#Settings_value_change} for more info\r\n * @param key Private settings key\r\n * @param callback Callback\r\n * @since 5.9.2\r\n */\r\n offPrivate(key, callback) {\r\n let events = this._privateSettingEvents[key];\r\n if (events !== undefined && callback !== undefined) {\r\n $array.removeFirst(events, callback);\r\n }\r\n else {\r\n delete this._privateSettingEvents[key];\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getRaw(key, fallback) {\r\n const value = this._settings[key];\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n else {\r\n return fallback;\r\n }\r\n }\r\n /**\r\n * Returns `true` if the setting exists.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Settings key\r\n * @return {boolean} Key exists\r\n */\r\n has(key) {\r\n return key in this._settings;\r\n }\r\n get(key, fallback) {\r\n return this.getRaw(key, fallback);\r\n }\r\n _sendKeyEvent(key, value) {\r\n const events = this._settingEvents[key];\r\n if (events !== undefined) {\r\n $array.each(events, (callback) => {\r\n callback(value, this, key);\r\n });\r\n }\r\n }\r\n _sendPrivateKeyEvent(key, value) {\r\n const events = this._privateSettingEvents[key];\r\n if (events !== undefined) {\r\n $array.each(events, (callback) => {\r\n callback(value, this, key);\r\n });\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _setRaw(key, old, value) {\r\n this._prevSettings[key] = old;\r\n this._sendKeyEvent(key, value);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n setRaw(key, value) {\r\n const old = this._settings[key];\r\n this._settings[key] = value;\r\n if (old !== value) {\r\n this._setRaw(key, old, value);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _set(key, value) {\r\n const old = this._settings[key];\r\n this._settings[key] = value;\r\n if (old !== value) {\r\n this._setRaw(key, old, value);\r\n this._markDirtyKey(key);\r\n }\r\n }\r\n _stopAnimation(key) {\r\n const animation = this._animatingSettings[key];\r\n if (animation) {\r\n delete this._animatingSettings[key];\r\n animation.stop();\r\n }\r\n }\r\n /**\r\n * Sets a setting `value` for the specified `key`, and returns the same `value`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n * @param value Setting value\r\n * @return Setting value\r\n */\r\n set(key, value) {\r\n this._set(key, value);\r\n this._stopAnimation(key);\r\n return value;\r\n }\r\n /**\r\n * Removes a setting value for the specified `key`;\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n */\r\n remove(key) {\r\n if (key in this._settings) {\r\n this._prevSettings[key] = this._settings[key];\r\n delete this._settings[key];\r\n this._sendKeyEvent(key, undefined);\r\n this._markDirtyKey(key);\r\n }\r\n this._stopAnimation(key);\r\n }\r\n /**\r\n * Removes all keys;\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n */\r\n removeAll() {\r\n $array.each($object.keys(this._settings), (key) => {\r\n this.remove(key);\r\n });\r\n }\r\n /**\r\n * Returns a value of a private setting.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/#Private_settings} for more info\r\n */\r\n getPrivate(key, fallback) {\r\n const value = this._privateSettings[key];\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n else {\r\n return fallback;\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _setPrivateRaw(key, old, value) {\r\n this._prevPrivateSettings[key] = old;\r\n this._sendPrivateKeyEvent(key, value);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n setPrivateRaw(key, value) {\r\n const old = this._privateSettings[key];\r\n this._privateSettings[key] = value;\r\n if (old !== value) {\r\n this._setPrivateRaw(key, old, value);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _setPrivate(key, value) {\r\n const old = this._privateSettings[key];\r\n this._privateSettings[key] = value;\r\n if (old !== value) {\r\n this._setPrivateRaw(key, old, value);\r\n this._markDirtyPrivateKey(key);\r\n }\r\n }\r\n _stopAnimationPrivate(key) {\r\n const animation = this._animatingPrivateSettings[key];\r\n if (animation) {\r\n animation.stop();\r\n delete this._animatingPrivateSettings[key];\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n setPrivate(key, value) {\r\n this._setPrivate(key, value);\r\n this._stopAnimationPrivate(key);\r\n return value;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n removePrivate(key) {\r\n if (key in this._privateSettings) {\r\n this._prevPrivateSettings[key] = this._privateSettings[key];\r\n delete this._privateSettings[key];\r\n this._markDirtyPrivateKey(key);\r\n }\r\n this._stopAnimationPrivate(key);\r\n }\r\n /**\r\n * Sets multiple settings at once.\r\n *\r\n * `settings` must be an object with key: value pairs.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param settings Settings\r\n */\r\n setAll(settings) {\r\n $object.each(settings, (key, value) => {\r\n this.set(key, value);\r\n });\r\n }\r\n /**\r\n * Animates setting values from current/start values to new ones.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/animations/#Animating_settings} for more info\r\n * @param options Animation options\r\n * @return Animation object\r\n */\r\n animate(options) {\r\n const key = options.key;\r\n const to = options.to;\r\n const duration = options.duration || 0;\r\n const loops = options.loops || 1;\r\n const from = (options.from === undefined ? this.get(key) : options.from);\r\n const easing = (options.easing === undefined ? $ease.linear : options.easing);\r\n if (duration === 0) {\r\n this.set(key, to);\r\n }\r\n else {\r\n if (from === undefined || from === to) {\r\n this.set(key, to);\r\n }\r\n else {\r\n this.set(key, from);\r\n const animation = this._animatingSettings[key] = new Animation(this, from, to, duration, easing, loops, this._animationTime());\r\n this._startAnimation();\r\n return animation;\r\n }\r\n }\r\n const animation = new Animation(this, from, to, duration, easing, loops, null);\r\n animation.stop();\r\n return animation;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n animatePrivate(options) {\r\n const key = options.key;\r\n const to = options.to;\r\n const duration = options.duration || 0;\r\n const loops = options.loops || 1;\r\n const from = (options.from === undefined ? this.getPrivate(key) : options.from);\r\n const easing = (options.easing === undefined ? $ease.linear : options.easing);\r\n if (duration === 0) {\r\n this.setPrivate(key, to);\r\n }\r\n else {\r\n if (from === undefined || from === to) {\r\n this.setPrivate(key, to);\r\n }\r\n else {\r\n this.setPrivate(key, from);\r\n const animation = this._animatingPrivateSettings[key] = new Animation(this, from, to, duration, easing, loops, this._animationTime());\r\n this._startAnimation();\r\n return animation;\r\n }\r\n }\r\n const animation = new Animation(this, from, to, duration, easing, loops, null);\r\n animation.stop();\r\n return animation;\r\n }\r\n _dispose() { }\r\n /**\r\n * Returns `true` if this element is disposed.\r\n *\r\n * @return Disposed\r\n */\r\n isDisposed() {\r\n return this._disposed;\r\n }\r\n /**\r\n * Disposes this object.\r\n */\r\n dispose() {\r\n if (this.enableDispose && !this._disposed) {\r\n this._disposed = true;\r\n this._dispose();\r\n }\r\n }\r\n}\r\n/**\r\n * Base class.\r\n *\r\n * @important\r\n */\r\nexport class Entity extends Settings {\r\n /**\r\n * IMPORTANT! Do not instantiate this class via `new Class()` syntax.\r\n *\r\n * Use static method `Class.new()` instead.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\r\n * @ignore\r\n */\r\n constructor(root, settings, isReal, templates = []) {\r\n super(settings);\r\n Object.defineProperty(this, \"_root\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_user_id\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n }); // for testing purposes\r\n Object.defineProperty(this, \"states\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new States(this)\r\n });\r\n Object.defineProperty(this, \"adapters\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new Adapters(this)\r\n });\r\n Object.defineProperty(this, \"events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._createEvents()\r\n });\r\n Object.defineProperty(this, \"_userPrivateProperties\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_dirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_dirtyPrivate\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_template\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n // Templates for the themes\r\n Object.defineProperty(this, \"_templates\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n // Internal templates which can be overridden by the user's templates\r\n Object.defineProperty(this, \"_internalTemplates\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n // Default themes which can be overridden by the user's themes\r\n Object.defineProperty(this, \"_defaultThemes\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n // Disposers for all of the templates\r\n Object.defineProperty(this, \"_templateDisposers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_disposers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n // Whether the template setup function should be run\r\n Object.defineProperty(this, \"_runSetup\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"_disposerProperties\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n if (!isReal) {\r\n throw new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\r\n }\r\n this._root = root;\r\n this._internalTemplates = templates;\r\n if (settings.id) {\r\n this._registerId(settings.id);\r\n }\r\n }\r\n /**\r\n * Use this method to create an instance of this class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\r\n * @param root Root element\r\n * @param settings Settings\r\n * @param template Template\r\n * @return Instantiated object\r\n */\r\n static new(root, settings, template) {\r\n const x = (new this(root, settings, true));\r\n x._template = template;\r\n x._afterNew();\r\n return x;\r\n }\r\n static _new(root, settings, templates = []) {\r\n const x = (new this(root, settings, true, templates));\r\n x._afterNew();\r\n return x;\r\n }\r\n _afterNew() {\r\n this._checkDirty();\r\n let shouldApply = false;\r\n const template = this._template;\r\n if (template) {\r\n shouldApply = true;\r\n template._setObjectTemplate(this);\r\n }\r\n $array.each(this._internalTemplates, (template) => {\r\n shouldApply = true;\r\n template._setObjectTemplate(this);\r\n });\r\n if (shouldApply) {\r\n this._applyTemplates(false);\r\n }\r\n this.states.create(\"default\", {});\r\n this._setDefaults();\r\n }\r\n // This is the same as _afterNew, except it also applies the themes.\r\n // This should only be used for classes which don't have a parent (because they extend from Entity and not Sprite).\r\n _afterNewApplyThemes() {\r\n this._checkDirty();\r\n const template = this._template;\r\n if (template) {\r\n template._setObjectTemplate(this);\r\n }\r\n $array.each(this._internalTemplates, (template) => {\r\n template._setObjectTemplate(this);\r\n });\r\n this.states.create(\"default\", {});\r\n this._setDefaults();\r\n this._applyThemes();\r\n }\r\n _createEvents() {\r\n return new EventDispatcher();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n get classNames() {\r\n return this.constructor.classNames;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n get className() {\r\n return this.constructor.className;\r\n }\r\n _setDefaults() {\r\n }\r\n _setDefaultFn(key, f) {\r\n const value = this.get(key);\r\n if (value) {\r\n return value;\r\n }\r\n else {\r\n const value = f();\r\n this.set(key, value);\r\n return value;\r\n }\r\n }\r\n _setDefault(key, value) {\r\n if (!this.has(key)) {\r\n super.set(key, value);\r\n }\r\n }\r\n _setRawDefault(key, value) {\r\n if (!this.has(key)) {\r\n super.setRaw(key, value);\r\n }\r\n }\r\n _clearDirty() {\r\n $object.keys(this._dirty).forEach((key) => {\r\n this._dirty[key] = false;\r\n });\r\n $object.keys(this._dirtyPrivate).forEach((key) => {\r\n this._dirtyPrivate[key] = false;\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n isDirty(key) {\r\n return !!this._dirty[key];\r\n }\r\n /**\r\n * @ignore\r\n */\r\n isPrivateDirty(key) {\r\n return !!this._dirtyPrivate[key];\r\n }\r\n _markDirtyKey(key) {\r\n this._dirty[key] = true;\r\n super._markDirtyKey(key);\r\n }\r\n _markDirtyPrivateKey(key) {\r\n this._dirtyPrivate[key] = true;\r\n super._markDirtyKey(key);\r\n }\r\n /**\r\n * Checks if element is of certain class (or inherits one).\r\n *\r\n * @param type Class name to check\r\n * @return {boolean} Is of class?\r\n */\r\n isType(type) {\r\n return this.classNames.indexOf(type) !== -1;\r\n }\r\n _pushPropertyDisposer(key, disposer) {\r\n let disposers = this._disposerProperties[key];\r\n if (disposers === undefined) {\r\n disposers = this._disposerProperties[key] = [];\r\n }\r\n disposers.push(disposer);\r\n return disposer;\r\n }\r\n _disposeProperty(key) {\r\n const disposers = this._disposerProperties[key];\r\n if (disposers !== undefined) {\r\n $array.each(disposers, (disposer) => {\r\n disposer.dispose();\r\n });\r\n delete this._disposerProperties[key];\r\n }\r\n }\r\n /**\r\n * @todo needs description\r\n * @param value Template\r\n */\r\n set template(value) {\r\n const template = this._template;\r\n if (template !== value) {\r\n this._template = value;\r\n if (template) {\r\n template._removeObjectTemplate(this);\r\n }\r\n if (value) {\r\n value._setObjectTemplate(this);\r\n }\r\n this._applyTemplates();\r\n }\r\n }\r\n get template() {\r\n return this._template;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirty() {\r\n this._root._addDirtyEntity(this);\r\n }\r\n _startAnimation() {\r\n this._root._addAnimation(this);\r\n }\r\n _animationTime() {\r\n return this._root.animationTime;\r\n }\r\n _applyState(_name) { }\r\n _applyStateAnimated(_name, _duration) { }\r\n get(key, fallback) {\r\n const value = this.adapters.fold(key, this._settings[key]);\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n else {\r\n return fallback;\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n isUserSetting(key) {\r\n return this._userProperties[key] || false;\r\n }\r\n /**\r\n * Sets a setting `value` for the specified `key`, and returns the same `value`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n * @param value Setting value\r\n * @return Setting value\r\n */\r\n set(key, value) {\r\n this._userProperties[key] = true;\r\n return super.set(key, value);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n setRaw(key, value) {\r\n this._userProperties[key] = true;\r\n super.setRaw(key, value);\r\n }\r\n /**\r\n * Sets a setting `value` for the specified `key` only if the value for this key was not set previously using set method, and returns the same `value`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n * @param value Setting value\r\n * @return Setting value\r\n */\r\n _setSoft(key, value) {\r\n if (!this._userProperties[key]) {\r\n return super.set(key, value);\r\n }\r\n return value;\r\n }\r\n /**\r\n * Removes a setting value for the specified `key`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n */\r\n remove(key) {\r\n delete this._userProperties[key];\r\n this._removeTemplateProperty(key);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n setPrivate(key, value) {\r\n this._userPrivateProperties[key] = true;\r\n return super.setPrivate(key, value);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n setPrivateRaw(key, value) {\r\n this._userPrivateProperties[key] = true;\r\n super.setPrivateRaw(key, value);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n removePrivate(key) {\r\n delete this._userPrivateProperties[key];\r\n this._removeTemplatePrivateProperty(key);\r\n }\r\n _setTemplateProperty(template, key, value) {\r\n if (!this._userProperties[key]) {\r\n const match = this._findTemplateByKey(key);\r\n if (template === match) {\r\n super.set(key, value);\r\n }\r\n }\r\n }\r\n _setTemplatePrivateProperty(template, key, value) {\r\n if (!this._userPrivateProperties[key]) {\r\n const match = this._findTemplateByPrivateKey(key);\r\n if (template === match) {\r\n super.setPrivate(key, value);\r\n }\r\n }\r\n }\r\n _removeTemplateProperty(key) {\r\n if (!this._userProperties[key]) {\r\n const match = this._findTemplateByKey(key);\r\n if (match) {\r\n // TODO don't stop the animation if the property didn't change\r\n super.set(key, match._settings[key]);\r\n }\r\n else {\r\n super.remove(key);\r\n }\r\n }\r\n }\r\n _removeTemplatePrivateProperty(key) {\r\n if (!this._userPrivateProperties[key]) {\r\n const match = this._findTemplateByPrivateKey(key);\r\n if (match) {\r\n // TODO don't stop the animation if the property didn't change\r\n super.setPrivate(key, match._privateSettings[key]);\r\n }\r\n else {\r\n super.removePrivate(key);\r\n }\r\n }\r\n }\r\n _walkParents(f) {\r\n f(this._root._rootContainer);\r\n f(this);\r\n }\r\n // TODO faster version of this method which is specialized to just 1 key\r\n _applyStateByKey(name) {\r\n const other = this.states.create(name, {});\r\n const seen = {};\r\n this._eachTemplate((template) => {\r\n const state = template.states.lookup(name);\r\n if (state) {\r\n state._apply(other, seen);\r\n }\r\n });\r\n $object.each(other._settings, (key) => {\r\n if (!seen[key] && !other._userSettings[key]) {\r\n other.remove(key);\r\n }\r\n });\r\n }\r\n _applyTemplate(template, state) {\r\n this._templateDisposers.push(template._apply(this, state));\r\n $object.each(template._settings, (key, value) => {\r\n if (!state.settings[key] && !this._userProperties[key]) {\r\n state.settings[key] = true;\r\n super.set(key, value);\r\n }\r\n });\r\n $object.each(template._privateSettings, (key, value) => {\r\n if (!state.privateSettings[key] && !this._userPrivateProperties[key]) {\r\n state.privateSettings[key] = true;\r\n super.setPrivate(key, value);\r\n }\r\n });\r\n if (this._runSetup && template.setup) {\r\n this._runSetup = false;\r\n template.setup(this);\r\n }\r\n }\r\n /**\r\n * Calls the closure with each template and returns the first template which is true\r\n */\r\n _findStaticTemplate(f) {\r\n if (this._template) {\r\n if (f(this._template)) {\r\n return this._template;\r\n }\r\n }\r\n }\r\n _eachTemplate(f) {\r\n this._findStaticTemplate((template) => {\r\n f(template);\r\n return false;\r\n });\r\n // _internalTemplates is sorted with most specific to the right\r\n $array.eachReverse(this._internalTemplates, f);\r\n // _templates is sorted with most specific to the left\r\n $array.each(this._templates, f);\r\n }\r\n _applyTemplates(remove = true) {\r\n if (remove) {\r\n this._disposeTemplates();\r\n }\r\n const state = {\r\n settings: {},\r\n privateSettings: {},\r\n states: {},\r\n };\r\n this._eachTemplate((template) => {\r\n this._applyTemplate(template, state);\r\n });\r\n if (remove) {\r\n $object.each(this._settings, (key) => {\r\n if (!this._userProperties[key] && !state.settings[key]) {\r\n super.remove(key);\r\n }\r\n });\r\n $object.each(this._privateSettings, (key) => {\r\n if (!this._userPrivateProperties[key] && !state.privateSettings[key]) {\r\n super.removePrivate(key);\r\n }\r\n });\r\n }\r\n }\r\n _findTemplate(f) {\r\n const value = this._findStaticTemplate(f);\r\n if (value === undefined) {\r\n // _internalTemplates is sorted with most specific to the right\r\n const value = $array.findReverse(this._internalTemplates, f);\r\n if (value === undefined) {\r\n // _templates is sorted with most specific to the left\r\n return $array.find(this._templates, f);\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n _findTemplateByKey(key) {\r\n return this._findTemplate((template) => {\r\n return key in template._settings;\r\n });\r\n }\r\n _findTemplateByPrivateKey(key) {\r\n return this._findTemplate((template) => {\r\n return key in template._privateSettings;\r\n });\r\n }\r\n _disposeTemplates() {\r\n $array.each(this._templateDisposers, (disposer) => {\r\n disposer.dispose();\r\n });\r\n this._templateDisposers.length = 0;\r\n }\r\n _removeTemplates() {\r\n $array.each(this._templates, (template) => {\r\n template._removeObjectTemplate(this);\r\n });\r\n this._templates.length = 0;\r\n }\r\n _applyThemes(force = false) {\r\n let isConnected = false;\r\n const defaults = [];\r\n let themes = [];\r\n const themeTags = new Set();\r\n const tags = this.get(\"themeTagsSelf\");\r\n if (tags) {\r\n $array.each(tags, (tag) => {\r\n themeTags.add(tag);\r\n });\r\n }\r\n this._walkParents((entity) => {\r\n if (entity === this._root._rootContainer) {\r\n isConnected = true;\r\n }\r\n if (entity._defaultThemes.length > 0) {\r\n defaults.push(entity._defaultThemes);\r\n }\r\n const theme = entity.get(\"themes\");\r\n if (theme) {\r\n themes.push(theme);\r\n }\r\n const tags = entity.get(\"themeTags\");\r\n if (tags) {\r\n $array.each(tags, (tag) => {\r\n themeTags.add(tag);\r\n });\r\n }\r\n });\r\n themes = defaults.concat(themes);\r\n this._removeTemplates();\r\n if (isConnected || force) {\r\n $array.eachReverse(this.classNames, (name) => {\r\n const allRules = [];\r\n $array.each(themes, (themes) => {\r\n $array.each(themes, (theme) => {\r\n const rules = theme._lookupRules(name);\r\n if (rules) {\r\n $array.eachReverse(rules, (rule) => {\r\n const matches = rule.tags.every((tag) => {\r\n return themeTags.has(tag);\r\n });\r\n if (matches) {\r\n const result = $array.getFirstSortedIndex(allRules, (x) => {\r\n const order = $order.compare(rule.tags.length, x.tags.length);\r\n if (order === 0) {\r\n return $order.compareArray(rule.tags, x.tags, $order.compare);\r\n }\r\n else {\r\n return order;\r\n }\r\n });\r\n allRules.splice(result.index, 0, rule);\r\n }\r\n });\r\n }\r\n });\r\n });\r\n $array.each(allRules, (rule) => {\r\n this._templates.push(rule.template);\r\n rule.template._setObjectTemplate(this);\r\n });\r\n });\r\n }\r\n this._applyTemplates();\r\n if (isConnected || force) {\r\n // This causes it to only run the setup function the first time that the themes are applied\r\n this._runSetup = false;\r\n }\r\n return isConnected || force;\r\n }\r\n _changed() { }\r\n _beforeChanged() {\r\n if (this.isDirty(\"id\")) {\r\n const id = this.get(\"id\");\r\n if (id) {\r\n this._registerId(id);\r\n }\r\n const prevId = this._prevSettings.id;\r\n if (prevId) {\r\n delete registry.entitiesById[prevId];\r\n }\r\n }\r\n }\r\n _registerId(id) {\r\n if (registry.entitiesById[id] && registry.entitiesById[id] !== this) {\r\n throw new Error(\"An entity with id \\\"\" + id + \"\\\" already exists.\");\r\n }\r\n registry.entitiesById[id] = this;\r\n }\r\n _afterChanged() { }\r\n /**\r\n * @ignore\r\n */\r\n addDisposer(disposer) {\r\n this._disposers.push(disposer);\r\n return disposer;\r\n }\r\n _dispose() {\r\n super._dispose();\r\n const template = this._template;\r\n if (template) {\r\n template._removeObjectTemplate(this);\r\n }\r\n $array.each(this._internalTemplates, (template) => {\r\n template._removeObjectTemplate(this);\r\n });\r\n this._removeTemplates();\r\n this._disposeTemplates();\r\n this.events.dispose();\r\n this._disposers.forEach((x) => {\r\n x.dispose();\r\n });\r\n $object.each(this._disposerProperties, (_, disposers) => {\r\n $array.each(disposers, (disposer) => {\r\n disposer.dispose();\r\n });\r\n });\r\n const id = this.get(\"id\");\r\n if (id) {\r\n delete registry.entitiesById[id];\r\n }\r\n }\r\n /**\r\n * Creates and returns a \"disposable\" timeout.\r\n *\r\n * @param fn Callback\r\n * @param delay Delay in milliseconds\r\n * @return Timeout disposer\r\n */\r\n setTimeout(fn, delay) {\r\n const id = setTimeout(() => {\r\n this.removeDispose(disposer);\r\n fn();\r\n }, delay);\r\n const disposer = new Disposer(() => {\r\n clearTimeout(id);\r\n });\r\n this._disposers.push(disposer);\r\n return disposer;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n removeDispose(target) {\r\n if (!this.isDisposed()) {\r\n let index = $array.indexOf(this._disposers, target);\r\n if (index > -1) {\r\n this._disposers.splice(index, 1);\r\n }\r\n }\r\n target.dispose();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n hasTag(tag) {\r\n return $array.indexOf(this.get(\"themeTags\", []), tag) !== -1;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n addTag(tag) {\r\n if (!this.hasTag(tag)) {\r\n const tags = this.get(\"themeTags\", []);\r\n tags.push(tag);\r\n this.set(\"themeTags\", tags);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n removeTag(tag) {\r\n if (this.hasTag(tag)) {\r\n const tags = this.get(\"themeTags\", []);\r\n $array.remove(tags, tag);\r\n this.set(\"themeTags\", tags);\r\n }\r\n }\r\n _t(text, locale, ...rest) {\r\n return this._root.language.translate(text, locale, ...rest);\r\n }\r\n /**\r\n * An instance of [[Root]] object.\r\n *\r\n * @readonly\r\n * @since 5.0.6\r\n * @return Root object\r\n */\r\n get root() {\r\n return this._root;\r\n }\r\n}\r\nObject.defineProperty(Entity, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Entity\"\r\n});\r\nObject.defineProperty(Entity, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: [\"Entity\"]\r\n});\r\n//# sourceMappingURL=Entity.js.map","import { EventDispatcher } from \"./EventDispatcher\";\r\nimport { Disposer, MultiDisposer } from \"./Disposer\";\r\nimport * as $array from \"./Array\";\r\nimport * as $object from \"./Object\";\r\nimport * as $type from \"./Type\";\r\nfunction disposeSettings(settings) {\r\n $object.each(settings, (_key, value) => {\r\n if ($type.isObject(value) && typeof value.dispose === \"function\") {\r\n value.enableDispose = true;\r\n value.dispose();\r\n }\r\n });\r\n}\r\nexport class TemplateState {\r\n constructor(name, template, settings) {\r\n Object.defineProperty(this, \"_settings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_name\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_template\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._name = name;\r\n this._template = template;\r\n this._settings = settings;\r\n }\r\n _dispose() {\r\n disposeSettings(this._settings);\r\n }\r\n get(key, fallback) {\r\n const value = this._settings[key];\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n else {\r\n return fallback;\r\n }\r\n }\r\n set(key, value) {\r\n this._settings[key] = value;\r\n // TODO maybe only do this if the value changed ?\r\n this._template._stateChanged(this._name);\r\n }\r\n remove(key) {\r\n delete this._settings[key];\r\n // TODO maybe only do this if the value changed ?\r\n this._template._stateChanged(this._name);\r\n }\r\n setAll(settings) {\r\n $object.keys(settings).forEach((key) => {\r\n this._settings[key] = settings[key];\r\n });\r\n this._template._stateChanged(this._name);\r\n }\r\n _apply(other, seen) {\r\n $object.each(this._settings, (key, value) => {\r\n if (!seen[key] && !other._userSettings[key]) {\r\n seen[key] = true;\r\n other.setRaw(key, value);\r\n }\r\n });\r\n }\r\n}\r\nexport class TemplateStates {\r\n constructor(template) {\r\n Object.defineProperty(this, \"_template\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_states\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n this._template = template;\r\n }\r\n _dispose() {\r\n $object.each(this._states, (_key, state) => {\r\n state._dispose();\r\n });\r\n }\r\n lookup(name) {\r\n return this._states[name];\r\n }\r\n create(name, settings) {\r\n const state = this._states[name];\r\n if (state) {\r\n state.setAll(settings);\r\n return state;\r\n }\r\n else {\r\n const state = new TemplateState(name, this._template, settings);\r\n this._states[name] = state;\r\n this._template._stateChanged(name);\r\n return state;\r\n }\r\n }\r\n remove(name) {\r\n delete this._states[name];\r\n this._template._stateChanged(name);\r\n }\r\n _apply(entity, state) {\r\n $object.each(this._states, (key, value) => {\r\n let seen = state.states[key];\r\n if (seen == null) {\r\n seen = state.states[key] = {};\r\n }\r\n const other = entity.states.create(key, {});\r\n value._apply(other, seen);\r\n });\r\n }\r\n}\r\nexport class TemplateAdapters {\r\n constructor() {\r\n Object.defineProperty(this, \"_callbacks\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n }\r\n add(key, callback) {\r\n let callbacks = this._callbacks[key];\r\n if (callbacks === undefined) {\r\n callbacks = this._callbacks[key] = [];\r\n }\r\n callbacks.push(callback);\r\n return new Disposer(() => {\r\n $array.removeFirst(callbacks, callback);\r\n if (callbacks.length === 0) {\r\n delete this._callbacks[key];\r\n }\r\n });\r\n }\r\n remove(key) {\r\n const callbacks = this._callbacks[key];\r\n if (callbacks !== undefined) {\r\n delete this._callbacks[key];\r\n }\r\n }\r\n _apply(entity) {\r\n const disposers = [];\r\n $object.each(this._callbacks, (key, callbacks) => {\r\n $array.each(callbacks, (callback) => {\r\n disposers.push(entity.adapters.add(key, callback));\r\n });\r\n });\r\n return new MultiDisposer(disposers);\r\n }\r\n}\r\n// TODO maybe extend from Properties ?\r\nexport class Template {\r\n constructor(settings, isReal) {\r\n Object.defineProperty(this, \"_disposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_settings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_privateSettings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n // TODO code duplication with Properties\r\n Object.defineProperty(this, \"_settingEvents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_privateSettingEvents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_entities\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"states\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new TemplateStates(this)\r\n });\r\n Object.defineProperty(this, \"adapters\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new TemplateAdapters()\r\n });\r\n Object.defineProperty(this, \"events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new EventDispatcher()\r\n });\r\n Object.defineProperty(this, \"setup\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n if (!isReal) {\r\n throw new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\r\n }\r\n this._settings = settings;\r\n }\r\n /**\r\n * Use this method to create an instance of this class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\r\n * @param root Root element\r\n * @param settings Settings\r\n * @param template Template\r\n * @return Instantiated object\r\n */\r\n static new(settings) {\r\n return new Template(settings, true);\r\n }\r\n _dispose() {\r\n disposeSettings(this._settings);\r\n disposeSettings(this._privateSettings);\r\n }\r\n /**\r\n * Returns `true` if this element is disposed.\r\n *\r\n * @return Disposed\r\n */\r\n isDisposed() {\r\n return this._disposed;\r\n }\r\n /**\r\n * Disposes this object.\r\n */\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n this._dispose();\r\n }\r\n }\r\n _checkDisposed() {\r\n if (this._disposed) {\r\n throw new Error(\"Template is disposed\");\r\n }\r\n }\r\n /**\r\n * Array of all entities using this template.\r\n */\r\n get entities() {\r\n return this._entities;\r\n }\r\n get(key, fallback) {\r\n this._checkDisposed();\r\n const value = this._settings[key];\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n else {\r\n return fallback;\r\n }\r\n }\r\n setRaw(key, value) {\r\n this._checkDisposed();\r\n this._settings[key] = value;\r\n }\r\n set(key, value) {\r\n this._checkDisposed();\r\n if (this._settings[key] !== value) {\r\n this.setRaw(key, value);\r\n this._entities.forEach((entity) => {\r\n entity._setTemplateProperty(this, key, value);\r\n });\r\n }\r\n }\r\n remove(key) {\r\n this._checkDisposed();\r\n if (key in this._settings) {\r\n delete this._settings[key];\r\n this._entities.forEach((entity) => {\r\n entity._removeTemplateProperty(key);\r\n });\r\n }\r\n }\r\n removeAll() {\r\n this._checkDisposed();\r\n $object.each(this._settings, (key, _value) => {\r\n this.remove(key);\r\n });\r\n }\r\n getPrivate(key, fallback) {\r\n this._checkDisposed();\r\n const value = this._privateSettings[key];\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n else {\r\n return fallback;\r\n }\r\n }\r\n setPrivateRaw(key, value) {\r\n this._checkDisposed();\r\n this._privateSettings[key] = value;\r\n return value;\r\n }\r\n setPrivate(key, value) {\r\n this._checkDisposed();\r\n if (this._privateSettings[key] !== value) {\r\n this.setPrivateRaw(key, value);\r\n this._entities.forEach((entity) => {\r\n entity._setTemplatePrivateProperty(this, key, value);\r\n });\r\n }\r\n return value;\r\n }\r\n removePrivate(key) {\r\n this._checkDisposed();\r\n if (key in this._privateSettings) {\r\n delete this._privateSettings[key];\r\n this._entities.forEach((entity) => {\r\n entity._removeTemplatePrivateProperty(key);\r\n });\r\n }\r\n }\r\n setAll(value) {\r\n this._checkDisposed();\r\n $object.each(value, (key, value) => {\r\n this.set(key, value);\r\n });\r\n }\r\n // TODO code duplication with Properties\r\n on(key, callback) {\r\n this._checkDisposed();\r\n let events = this._settingEvents[key];\r\n if (events === undefined) {\r\n events = this._settingEvents[key] = [];\r\n }\r\n events.push(callback);\r\n return new Disposer(() => {\r\n $array.removeFirst(events, callback);\r\n if (events.length === 0) {\r\n delete this._settingEvents[key];\r\n }\r\n });\r\n }\r\n // TODO code duplication with Properties\r\n onPrivate(key, callback) {\r\n this._checkDisposed();\r\n let events = this._privateSettingEvents[key];\r\n if (events === undefined) {\r\n events = this._privateSettingEvents[key] = [];\r\n }\r\n events.push(callback);\r\n return new Disposer(() => {\r\n $array.removeFirst(events, callback);\r\n if (events.length === 0) {\r\n delete this._privateSettingEvents[key];\r\n }\r\n });\r\n }\r\n _apply(entity, state) {\r\n this._checkDisposed();\r\n const disposers = [];\r\n $object.each(this._settingEvents, (key, events) => {\r\n $array.each(events, (event) => {\r\n disposers.push(entity.on(key, event));\r\n });\r\n });\r\n $object.each(this._privateSettingEvents, (key, events) => {\r\n $array.each(events, (event) => {\r\n disposers.push(entity.onPrivate(key, event));\r\n });\r\n });\r\n this.states._apply(entity, state);\r\n disposers.push(this.adapters._apply(entity));\r\n disposers.push(entity.events.copyFrom(this.events));\r\n return new MultiDisposer(disposers);\r\n }\r\n _setObjectTemplate(entity) {\r\n this._checkDisposed();\r\n this._entities.push(entity);\r\n }\r\n _removeObjectTemplate(entity) {\r\n //this._checkDisposed();\r\n $array.remove(this._entities, entity);\r\n }\r\n _stateChanged(name) {\r\n this._checkDisposed();\r\n this._entities.forEach((entity) => {\r\n entity._applyStateByKey(name);\r\n });\r\n }\r\n}\r\n//# sourceMappingURL=Template.js.map","import { __awaiter } from \"tslib\";\r\nimport { Entity } from \"../util/Entity\";\r\nimport { Template } from \"../util/Template\";\r\nimport { Percent } from \"../util/Percent\";\r\nimport { EventDispatcher } from \"../util/EventDispatcher\";\r\nimport { MultiDisposer, CounterDisposer } from \"../util/Disposer\";\r\nimport { waitForAnimations } from \"../util/Animation\";\r\nimport * as $utils from \"../util/Utils\";\r\nimport * as $array from \"../util/Array\";\r\nimport * as $type from \"../util/Type\";\r\nimport * as $object from \"../util/Object\";\r\nimport * as $math from \"../util/Math\";\r\n//import { populateString } from \"../util/PopulateString\";\r\n/**\r\n * An [[EventDispatcher]] for [[Sprite]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/} for more info\r\n */\r\nclass SpriteEventDispatcher extends EventDispatcher {\r\n constructor(sprite) {\r\n super();\r\n Object.defineProperty(this, \"_sprite\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_rendererDisposers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_dispatchParents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n this._sprite = sprite;\r\n }\r\n _makePointerEvent(key, event) {\r\n return {\r\n type: key,\r\n originalEvent: event.event,\r\n point: event.point,\r\n simulated: event.simulated,\r\n native: event.native,\r\n target: this._sprite\r\n };\r\n }\r\n _onRenderer(key, dispatch) {\r\n // TODO: is this OK? it'd be good not to require to set this on each individual element\r\n this._sprite.set(\"interactive\", true);\r\n this._sprite._display.interactive = true;\r\n let events = this._rendererDisposers[key];\r\n if (events === undefined) {\r\n const disposer = this._sprite._display.on(key, (e) => {\r\n dispatch.call(this, e);\r\n });\r\n events = this._rendererDisposers[key] = new CounterDisposer(() => {\r\n delete this._rendererDisposers[key];\r\n disposer.dispose();\r\n });\r\n }\r\n return events.increment();\r\n }\r\n _on(once, type, callback, context, shouldClone, dispatch) {\r\n const info = super._on(once, type, callback, context, shouldClone, dispatch);\r\n const rendererEvent = SpriteEventDispatcher.RENDERER_EVENTS[type];\r\n if (rendererEvent !== undefined) {\r\n info.disposer = new MultiDisposer([\r\n info.disposer,\r\n this._onRenderer(type, rendererEvent),\r\n ]);\r\n }\r\n return info;\r\n }\r\n /**\r\n * Will stop any bubbling up of the event to element's parents.\r\n *\r\n * Should be called in an event handler, e.g.:\r\n *\r\n * ```TypeScript\r\n * element.events.on(\"pointerdown\", function(ev) {\r\n * // Do something here and prevent from \"pointerdown\" bubbling up\r\n * // ...\r\n * ev.target.events.stopParentDispatch();\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * element.events.on(\"pointerdown\", function(ev) {\r\n * // Do something here and prevent from \"pointerdown\" bubbling up\r\n * // ...\r\n * ev.target.events.stopParentDispatch();\r\n * });\r\n * ```\r\n */\r\n stopParentDispatch() {\r\n this._dispatchParents = false;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n dispatchParents(type, event) {\r\n const old = this._dispatchParents;\r\n this._dispatchParents = true;\r\n try {\r\n this.dispatch(type, event);\r\n if (this._dispatchParents && this._sprite.parent) {\r\n this._sprite.parent.events.dispatchParents(type, event);\r\n }\r\n }\r\n finally {\r\n this._dispatchParents = old;\r\n }\r\n }\r\n}\r\nObject.defineProperty(SpriteEventDispatcher, \"RENDERER_EVENTS\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {\r\n \"click\": function (event) {\r\n if (this.isEnabled(\"click\") && !this._sprite.isDragging() && this._sprite._hasDown() && !this._sprite._hasMoved(this._makePointerEvent(\"click\", event))) {\r\n this.dispatch(\"click\", this._makePointerEvent(\"click\", event));\r\n }\r\n },\r\n \"rightclick\": function (event) {\r\n if (this.isEnabled(\"rightclick\")) {\r\n this.dispatch(\"rightclick\", this._makePointerEvent(\"rightclick\", event));\r\n }\r\n },\r\n \"middleclick\": function (event) {\r\n if (this.isEnabled(\"middleclick\")) {\r\n this.dispatch(\"middleclick\", this._makePointerEvent(\"middleclick\", event));\r\n }\r\n },\r\n \"dblclick\": function (event) {\r\n this.dispatchParents(\"dblclick\", this._makePointerEvent(\"dblclick\", event));\r\n },\r\n \"pointerover\": function (event) {\r\n const sprite = this._sprite;\r\n let dispatch = true;\r\n if (sprite.getPrivate(\"trustBounds\")) {\r\n sprite._getBounds();\r\n const bounds = sprite.globalBounds();\r\n if (sprite.isType(\"Graphics\")) {\r\n const strokeWidth = sprite.get(\"strokeWidth\", 1) / 2;\r\n if (strokeWidth >= 1) {\r\n bounds.left -= strokeWidth;\r\n bounds.right += strokeWidth;\r\n bounds.top -= strokeWidth;\r\n bounds.bottom += strokeWidth;\r\n }\r\n }\r\n if (!$math.inBounds(event.point, bounds)) {\r\n dispatch = false;\r\n sprite._root._renderer.removeHovering(sprite._display);\r\n }\r\n }\r\n if (dispatch && this.isEnabled(\"pointerover\")) {\r\n this.dispatch(\"pointerover\", this._makePointerEvent(\"pointerover\", event));\r\n }\r\n },\r\n \"pointerout\": function (event) {\r\n if (this.isEnabled(\"pointerout\")) {\r\n this.dispatch(\"pointerout\", this._makePointerEvent(\"pointerout\", event));\r\n }\r\n },\r\n \"pointerdown\": function (event) {\r\n this.dispatchParents(\"pointerdown\", this._makePointerEvent(\"pointerdown\", event));\r\n },\r\n \"pointerup\": function (event) {\r\n if (this.isEnabled(\"pointerup\")) {\r\n this.dispatch(\"pointerup\", this._makePointerEvent(\"pointerup\", event));\r\n }\r\n },\r\n \"globalpointerup\": function (event) {\r\n if (this.isEnabled(\"globalpointerup\")) {\r\n this.dispatch(\"globalpointerup\", this._makePointerEvent(\"globalpointerup\", event));\r\n }\r\n },\r\n \"globalpointermove\": function (event) {\r\n if (this.isEnabled(\"globalpointermove\")) {\r\n this.dispatch(\"globalpointermove\", this._makePointerEvent(\"globalpointermove\", event));\r\n }\r\n },\r\n \"wheel\": function (event) {\r\n this.dispatchParents(\"wheel\", {\r\n type: \"wheel\",\r\n target: this._sprite,\r\n originalEvent: event.event,\r\n point: event.point,\r\n });\r\n },\r\n }\r\n});\r\n/**\r\n * A base class for all visual elements.\r\n *\r\n * @important\r\n */\r\nexport class Sprite extends Entity {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_adjustedLocalBounds\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: { left: 0, right: 0, top: 0, bottom: 0 }\r\n });\r\n Object.defineProperty(this, \"_localBounds\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: { left: 0, right: 0, top: 0, bottom: 0 }\r\n });\r\n Object.defineProperty(this, \"_parent\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_dataItem\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_templateField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_sizeDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n // Will be true only when dragging\r\n Object.defineProperty(this, \"_isDragging\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n // The event when the dragging starts\r\n Object.defineProperty(this, \"_dragEvent\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n // The position when dragging starts\r\n Object.defineProperty(this, \"_dragPoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_isHidden\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_isShowing\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_isHiding\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_isDown\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_downPoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_downPoints\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_toggleDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_dragDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_hoverDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_focusDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipMoveDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipPointerDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_statesHandled\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n }\r\n _afterNew() {\r\n this.setPrivateRaw(\"visible\", true);\r\n super._afterNew();\r\n }\r\n /**\r\n * Marks some setting as dirty. Could be used to trigger adapter.\r\n * @param key\r\n */\r\n markDirtyKey(key) {\r\n this._markDirtyKey(key);\r\n }\r\n _markDirtyKey(key) {\r\n super._markDirtyKey(key);\r\n if (key == \"x\" || key == \"y\" || key == \"dx\" || key == \"dy\") {\r\n this.markDirtyBounds();\r\n this._addPercentagePositionChildren();\r\n this.markDirtyPosition();\r\n }\r\n }\r\n _markDirtyPrivateKey(key) {\r\n super._markDirtyPrivateKey(key);\r\n if (key == \"x\" || key == \"y\") {\r\n this.markDirtyPosition();\r\n }\r\n }\r\n _removeTemplateField() {\r\n if (this._templateField) {\r\n this._templateField._removeObjectTemplate(this);\r\n }\r\n }\r\n _createEvents() {\r\n return new SpriteEventDispatcher(this);\r\n }\r\n _processTemplateField() {\r\n let template;\r\n const field = this.get(\"templateField\");\r\n if (field) {\r\n const dataItem = this.dataItem;\r\n if (dataItem) {\r\n const context = dataItem.dataContext;\r\n if (context) {\r\n template = context[field];\r\n if (!(template instanceof Template) && template) {\r\n template = Template.new(template);\r\n }\r\n }\r\n }\r\n }\r\n if (this._templateField !== template) {\r\n this._removeTemplateField();\r\n this._templateField = template;\r\n if (template) {\r\n template._setObjectTemplate(this);\r\n }\r\n this._applyTemplates();\r\n }\r\n }\r\n // TODO change this to run before the element is added to the parent, so that way\r\n // it doesn't need to apply the themes twice\r\n _setDataItem(dataItem) {\r\n const oldDataItem = this._dataItem;\r\n this._dataItem = dataItem;\r\n this._processTemplateField();\r\n const eventType = \"dataitemchanged\";\r\n if (dataItem != oldDataItem) {\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, {\r\n type: eventType,\r\n target: this,\r\n oldDataItem: oldDataItem,\r\n newDataItem: dataItem\r\n });\r\n }\r\n }\r\n }\r\n /**\r\n * A [[DataItem]] used for this element.\r\n *\r\n * NOTE: data item is being assigned automatically in most cases where it\r\n * matters. Use this accessor to set data item only if you know what you're\r\n * doing.\r\n *\r\n * @param value Data item\r\n */\r\n set dataItem(value) {\r\n this._setDataItem(value);\r\n }\r\n /**\r\n * @return DataItem\r\n */\r\n get dataItem() {\r\n if (this._dataItem) {\r\n return this._dataItem;\r\n }\r\n else {\r\n let parent = this._parent;\r\n while (parent) {\r\n if (parent._dataItem) {\r\n return parent._dataItem;\r\n }\r\n else {\r\n parent = parent._parent;\r\n }\r\n }\r\n }\r\n }\r\n _addPercentageSizeChildren() {\r\n let parent = this.parent;\r\n if (parent) {\r\n if (this.get(\"width\") instanceof Percent || this.get(\"height\") instanceof Percent) {\r\n $array.pushOne(parent._percentageSizeChildren, this);\r\n }\r\n else {\r\n $array.removeFirst(parent._percentageSizeChildren, this);\r\n }\r\n }\r\n }\r\n _addPercentagePositionChildren() {\r\n let parent = this.parent;\r\n if (parent) {\r\n if (this.get(\"x\") instanceof Percent || this.get(\"y\") instanceof Percent) {\r\n $array.pushOne(parent._percentagePositionChildren, this);\r\n }\r\n else {\r\n $array.removeFirst(parent._percentagePositionChildren, this);\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtyPosition() {\r\n this._root._addDirtyPosition(this);\r\n }\r\n updatePivotPoint() {\r\n const bounds = this._localBounds;\r\n if (bounds) {\r\n const centerX = this.get(\"centerX\");\r\n if (centerX != null) {\r\n this._display.pivot.x = bounds.left + $utils.relativeToValue(centerX, bounds.right - bounds.left);\r\n }\r\n const centerY = this.get(\"centerY\");\r\n if (centerY != null) {\r\n this._display.pivot.y = bounds.top + $utils.relativeToValue(centerY, bounds.bottom - bounds.top);\r\n }\r\n }\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n // handling states in beforeChanged, otherwise states is not applied without animated theme\r\n this._handleStates();\r\n if (this.isDirty(\"tooltip\")) {\r\n const previous = this._prevSettings.tooltip;\r\n if (previous) {\r\n previous.dispose();\r\n }\r\n }\r\n if (this.isDirty(\"layer\") || this.isDirty(\"layerMargin\")) {\r\n this._display.setLayer(this.get(\"layer\"), this.get(\"layerMargin\"));\r\n this.markDirtyLayer();\r\n }\r\n if (this.isDirty(\"tooltipPosition\")) {\r\n const tooltipMoveDp = this._tooltipMoveDp;\r\n if (tooltipMoveDp) {\r\n tooltipMoveDp.dispose();\r\n this._tooltipMoveDp = undefined;\r\n }\r\n const tooltipPointerDp = this._tooltipPointerDp;\r\n if (tooltipPointerDp) {\r\n tooltipPointerDp.dispose();\r\n this._tooltipPointerDp = undefined;\r\n }\r\n if (this.get(\"tooltipPosition\") == \"pointer\") {\r\n if (this.isHover()) {\r\n this._tooltipMoveDp = this.events.on(\"globalpointermove\", (e) => {\r\n this.showTooltip(e.point);\r\n });\r\n }\r\n this._tooltipPointerDp = new MultiDisposer([\r\n this.events.on(\"pointerover\", () => {\r\n this._tooltipMoveDp = this.events.on(\"globalpointermove\", (e) => {\r\n this.showTooltip(e.point);\r\n });\r\n }),\r\n this.events.on(\"pointerout\", () => {\r\n const tooltipMoveDp = this._tooltipMoveDp;\r\n if (tooltipMoveDp) {\r\n tooltipMoveDp.dispose();\r\n this._tooltipMoveDp = undefined;\r\n }\r\n })\r\n ]);\r\n }\r\n }\r\n }\r\n _handleStates() {\r\n if (!this._statesHandled) {\r\n if (this.isDirty(\"active\")) {\r\n if (this.get(\"active\")) {\r\n this.states.applyAnimate(\"active\");\r\n this.set(\"ariaChecked\", true);\r\n }\r\n else {\r\n if (!this.isHidden()) {\r\n this.states.applyAnimate(\"default\");\r\n }\r\n this.set(\"ariaChecked\", false);\r\n }\r\n this.markDirtyAccessibility();\r\n }\r\n if (this.isDirty(\"disabled\")) {\r\n if (this.get(\"disabled\")) {\r\n this.states.applyAnimate(\"disabled\");\r\n this.set(\"ariaChecked\", false);\r\n }\r\n else {\r\n if (!this.isHidden()) {\r\n this.states.applyAnimate(\"default\");\r\n }\r\n this.set(\"ariaChecked\", true);\r\n }\r\n this.markDirtyAccessibility();\r\n }\r\n this._statesHandled = true;\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n const display = this._display;\r\n const events = this.events;\r\n if (this.isDirty(\"draggable\")) {\r\n const draggable = this.get(\"draggable\");\r\n if (draggable) {\r\n this.set(\"interactive\", true);\r\n this._dragDp = new MultiDisposer([\r\n events.on(\"pointerdown\", (ev) => {\r\n this.dragStart(ev);\r\n }),\r\n events.on(\"globalpointermove\", (ev) => {\r\n this.dragMove(ev);\r\n }),\r\n events.on(\"globalpointerup\", (ev) => {\r\n this.dragStop(ev);\r\n })\r\n ]);\r\n }\r\n else {\r\n if (this._dragDp) {\r\n this._dragDp.dispose();\r\n this._dragDp = undefined;\r\n }\r\n }\r\n display.cancelTouch = draggable ? true : false;\r\n }\r\n if (this.isDirty(\"tooltipText\") || this.isDirty(\"tooltipHTML\") || this.isDirty(\"showTooltipOn\")) {\r\n const tooltipText = this.get(\"tooltipText\");\r\n const tooltipHTML = this.get(\"tooltipHTML\");\r\n const showTooltipOn = this.get(\"showTooltipOn\", \"hover\");\r\n if (this._tooltipDp) {\r\n this._tooltipDp.dispose();\r\n this._tooltipDp = undefined;\r\n }\r\n if (tooltipText || tooltipHTML) {\r\n if (showTooltipOn == \"click\") {\r\n this._tooltipDp = new MultiDisposer([\r\n events.on(\"click\", () => {\r\n this.setTimeout(() => {\r\n const tooltip = this.getTooltip();\r\n if (tooltip && !tooltip.isHidden() && tooltip.get(\"tooltipTarget\") === this) {\r\n this.hideTooltip();\r\n }\r\n else {\r\n this.showTooltip();\r\n }\r\n }, 10);\r\n }),\r\n $utils.addEventListener(document, \"click\", (_ev) => {\r\n this.hideTooltip();\r\n })\r\n ]);\r\n this._disposers.push(this._tooltipDp);\r\n }\r\n else if (showTooltipOn == \"always\") {\r\n // nothing\r\n }\r\n else {\r\n this._tooltipDp = new MultiDisposer([\r\n events.on(\"pointerover\", () => {\r\n this.showTooltip();\r\n }),\r\n events.on(\"pointerout\", () => {\r\n this.hideTooltip();\r\n })\r\n ]);\r\n this._disposers.push(this._tooltipDp);\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"toggleKey\")) {\r\n let toggleKey = this.get(\"toggleKey\");\r\n if (toggleKey && toggleKey != \"none\") {\r\n this._toggleDp = events.on(\"click\", () => {\r\n if (!this._isDragging) {\r\n this.set(toggleKey, !this.get(toggleKey));\r\n }\r\n });\r\n }\r\n else {\r\n if (this._toggleDp) {\r\n this._toggleDp.dispose();\r\n this._toggleDp = undefined;\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"opacity\")) {\r\n display.alpha = Math.max(0, this.get(\"opacity\", 1));\r\n if (this.get(\"focusable\")) {\r\n this.markDirtyAccessibility();\r\n }\r\n }\r\n if (this.isDirty(\"rotation\")) {\r\n this.markDirtyBounds();\r\n display.angle = this.get(\"rotation\", 0);\r\n }\r\n if (this.isDirty(\"scale\")) {\r\n this.markDirtyBounds();\r\n display.scale = this.get(\"scale\", 0);\r\n }\r\n if (this.isDirty(\"centerX\") || this.isDirty(\"centerY\")) {\r\n this.markDirtyBounds();\r\n this.updatePivotPoint();\r\n }\r\n if (this.isDirty(\"visible\") || this.isPrivateDirty(\"visible\") || this.isDirty(\"forceHidden\")) {\r\n if (!this.get(\"visible\") || !this.getPrivate(\"visible\") || this.get(\"forceHidden\")) {\r\n display.visible = false;\r\n this.hideTooltip();\r\n }\r\n else {\r\n display.visible = true;\r\n }\r\n this.markDirtyBounds();\r\n if (this.get(\"focusable\")) {\r\n this.markDirtyAccessibility();\r\n }\r\n }\r\n if (this.isDirty(\"width\") || this.isDirty(\"height\")) {\r\n this.markDirtyBounds();\r\n this._addPercentageSizeChildren();\r\n const parent = this.parent;\r\n if (parent) {\r\n if ((this.isDirty(\"width\") && this.get(\"width\") instanceof Percent) || (this.isDirty(\"height\") && this.get(\"height\") instanceof Percent)) {\r\n parent.markDirty();\r\n parent._prevWidth = 0;\r\n }\r\n }\r\n this._sizeDirty = true;\r\n }\r\n if (this.isDirty(\"maxWidth\") || this.isDirty(\"maxHeight\") || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\") || this.isDirty(\"minWidth\") || this.isDirty(\"minHeight\") || this.isPrivateDirty(\"maxWidth\") || this.isPrivateDirty(\"maxHeight\") || this.isPrivateDirty(\"minWidth\") || this.isPrivateDirty(\"minHeight\") || this.isDirty(\"marginLeft\") || this.isDirty(\"marginTop\") || this.isDirty(\"marginRight\") || this.isDirty(\"marginBottom\")) {\r\n this.markDirtyBounds();\r\n this._sizeDirty = true;\r\n }\r\n if (this._sizeDirty) {\r\n this._updateSize();\r\n }\r\n if (this.isDirty(\"wheelable\")) {\r\n const wheelable = this.get(\"wheelable\");\r\n if (wheelable) {\r\n this.set(\"interactive\", true);\r\n }\r\n display.wheelable = wheelable ? true : false;\r\n }\r\n // Accessibility\r\n if (this.isDirty(\"tabindexOrder\") || this.isDirty(\"focusableGroup\")) {\r\n if (this.get(\"focusable\")) {\r\n this._root._registerTabindexOrder(this);\r\n }\r\n else {\r\n this._root._unregisterTabindexOrder(this);\r\n }\r\n }\r\n if (this.isDirty(\"filter\")) {\r\n //this.markDirtyBounds();\r\n display.filter = this.get(\"filter\");\r\n }\r\n let filter = this.get(\"filter\", \"\");\r\n if (this.isDirty(\"blur\")) {\r\n const blur = this.get(\"blur\", 0);\r\n if (blur != 0) {\r\n filter += \" blur(\" + blur + \"px)\";\r\n }\r\n }\r\n if (this.isDirty(\"saturate\")) {\r\n const saturate = this.get(\"saturate\", 1);\r\n if (saturate != 1) {\r\n filter += \" saturate(\" + saturate + \")\";\r\n }\r\n }\r\n if (this.isDirty(\"brightness\")) {\r\n const brightness = this.get(\"brightness\", 1);\r\n if (brightness != 1) {\r\n filter += \" brightness(\" + brightness + \")\";\r\n }\r\n }\r\n if (this.isDirty(\"contrast\")) {\r\n const contrast = this.get(\"contrast\", 1);\r\n if (contrast != 1) {\r\n filter += \" contrast(\" + contrast + \")\";\r\n }\r\n }\r\n if (this.isDirty(\"sepia\")) {\r\n const sepia = this.get(\"sepia\", 0);\r\n if (sepia != 0) {\r\n filter += \" sepia(\" + sepia + \")\";\r\n }\r\n }\r\n if (this.isDirty(\"hue\")) {\r\n const hue = this.get(\"hue\", 0);\r\n if (hue != 0) {\r\n filter += \" hue-rotate(\" + hue + \"deg)\";\r\n }\r\n }\r\n if (this.isDirty(\"invert\")) {\r\n const invert = this.get(\"invert\", 0);\r\n if (invert != 0) {\r\n filter += \" invert(\" + invert + \")\";\r\n }\r\n }\r\n if (filter) {\r\n display.filter = filter;\r\n }\r\n if (this.isDirty(\"cursorOverStyle\")) {\r\n display.cursorOverStyle = this.get(\"cursorOverStyle\");\r\n }\r\n if (this.isDirty(\"hoverOnFocus\")) {\r\n if (this.get(\"hoverOnFocus\")) {\r\n this._focusDp = new MultiDisposer([\r\n events.on(\"focus\", () => {\r\n // TODO: proper hover, not just tooltip\r\n this.showTooltip();\r\n }),\r\n events.on(\"blur\", () => {\r\n // TODO: proper hover, not just tooltip\r\n this.hideTooltip();\r\n })\r\n ]);\r\n }\r\n else {\r\n if (this._focusDp) {\r\n this._focusDp.dispose();\r\n this._focusDp = undefined;\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"focusable\")) {\r\n if (this.get(\"focusable\")) {\r\n this._root._registerTabindexOrder(this);\r\n }\r\n else {\r\n this._root._unregisterTabindexOrder(this);\r\n }\r\n this.markDirtyAccessibility();\r\n this._disposers.push(events.on(\"blur\", () => {\r\n this.setPrivateRaw(\"touchHovering\", false);\r\n }));\r\n }\r\n if (this.isPrivateDirty(\"focusable\")) {\r\n this.markDirtyAccessibility();\r\n }\r\n if (this.isDirty(\"role\") || this.isDirty(\"ariaLive\") || this.isDirty(\"ariaChecked\") || this.isDirty(\"ariaHidden\") || this.isDirty(\"ariaOrientation\") || this.isDirty(\"ariaValueNow\") || this.isDirty(\"ariaValueMin\") || this.isDirty(\"ariaValueMax\") || this.isDirty(\"ariaValueText\") || this.isDirty(\"ariaLabel\") || this.isDirty(\"ariaControls\")) {\r\n // display.accessibility.ariaLabel = populateString(this, this.get(\"ariaLabel\", \"\"));\r\n // @todo make sure ariaLabel gets populated in Root\r\n this.markDirtyAccessibility();\r\n }\r\n if (this.isDirty(\"exportable\")) {\r\n display.exportable = this.get(\"exportable\");\r\n }\r\n if (this.isDirty(\"interactive\")) {\r\n const events = this.events;\r\n if (this.get(\"interactive\") && !events.isDisposed()) {\r\n this._hoverDp = new MultiDisposer([\r\n events.on(\"click\", (ev) => {\r\n if ($utils.isTouchEvent(ev.originalEvent)) {\r\n if (!this.getPrivate(\"touchHovering\")) {\r\n this.setTimeout(() => {\r\n this._handleOver();\r\n if (this.get(\"tooltipText\") || this.get(\"tooltipHTML\")) {\r\n this.showTooltip();\r\n }\r\n this.setPrivateRaw(\"touchHovering\", true);\r\n this.events.dispatch(\"pointerover\", {\r\n type: \"pointerover\",\r\n target: ev.target,\r\n originalEvent: ev.originalEvent,\r\n point: ev.point,\r\n simulated: ev.simulated\r\n });\r\n }, 10);\r\n }\r\n }\r\n }),\r\n events.on(\"globalpointerup\", (ev) => {\r\n if ($utils.isTouchEvent(ev.originalEvent)) {\r\n if (this.getPrivate(\"touchHovering\")) {\r\n this._handleOut();\r\n if (this.get(\"tooltipText\") || this.get(\"tooltipHTML\")) {\r\n this.hideTooltip();\r\n }\r\n this.setPrivateRaw(\"touchHovering\", false);\r\n this.events.dispatch(\"pointerout\", {\r\n type: \"pointerout\",\r\n target: ev.target,\r\n originalEvent: ev.originalEvent,\r\n point: ev.point,\r\n simulated: ev.simulated\r\n });\r\n }\r\n }\r\n if (this._isDown) {\r\n this._handleUp(ev);\r\n }\r\n //this._isDown = false;\r\n }),\r\n events.on(\"pointerover\", () => {\r\n this._handleOver();\r\n }),\r\n events.on(\"pointerout\", () => {\r\n this._handleOut();\r\n }),\r\n events.on(\"pointerdown\", (e) => {\r\n this._handleDown(e);\r\n })\r\n ]);\r\n }\r\n else {\r\n this._display.interactive = false;\r\n if (this._hoverDp) {\r\n this._hoverDp.dispose();\r\n this._hoverDp = undefined;\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"forceInactive\")) {\r\n this._display.inactive = this.get(\"forceInactive\", null);\r\n }\r\n if (this.get(\"showTooltipOn\") == \"always\" && this._display.visible) {\r\n this.showTooltip();\r\n }\r\n }\r\n /**\r\n * @ignore\r\n * @todo should this be user-accessible?\r\n */\r\n dragStart(e) {\r\n this._dragEvent = e;\r\n this.events.stopParentDispatch();\r\n }\r\n /**\r\n * @ignore\r\n * @todo should this be user-accessible?\r\n */\r\n dragStop(e) {\r\n this._dragEvent = undefined;\r\n this._dragPoint = undefined;\r\n this.events.stopParentDispatch();\r\n if (this._isDragging) {\r\n this._isDragging = false;\r\n const type = \"dragstop\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, {\r\n type: type,\r\n target: this,\r\n originalEvent: e.originalEvent,\r\n point: e.point,\r\n simulated: e.simulated,\r\n });\r\n }\r\n }\r\n }\r\n _handleOver() {\r\n if (!this.isHidden()) {\r\n if (this.get(\"active\") && this.states.lookup(\"hoverActive\")) {\r\n this.states.applyAnimate(\"hoverActive\");\r\n }\r\n else if (this.get(\"disabled\") && this.states.lookup(\"hoverDisabled\")) {\r\n this.states.applyAnimate(\"hoverDisabled\");\r\n }\r\n else {\r\n this.states.applyAnimate(\"hover\");\r\n }\r\n if (this.get(\"draggable\") && this._isDown && this.states.lookup(\"down\")) {\r\n this.states.applyAnimate(\"down\");\r\n }\r\n }\r\n }\r\n _handleOut() {\r\n if (!this.isHidden()) {\r\n if (this.get(\"active\") && this.states.lookup(\"active\")) {\r\n this.states.applyAnimate(\"active\");\r\n }\r\n else if (this.get(\"disabled\") && this.states.lookup(\"disabled\")) {\r\n this.states.applyAnimate(\"disabled\");\r\n }\r\n else {\r\n if (this.states.lookup(\"hover\") || this.states.lookup(\"hoverActive\")) {\r\n this.states.applyAnimate(\"default\");\r\n }\r\n }\r\n if (this.get(\"draggable\") && this._isDown && this.states.lookup(\"down\")) {\r\n this.states.applyAnimate(\"down\");\r\n }\r\n }\r\n }\r\n _handleUp(e) {\r\n if (!this.isHidden()) {\r\n if (this.get(\"active\") && this.states.lookup(\"active\")) {\r\n this.states.applyAnimate(\"active\");\r\n }\r\n else if (this.get(\"disabled\") && this.states.lookup(\"disabled\")) {\r\n this.states.applyAnimate(\"disabled\");\r\n }\r\n else if (this.states.lookup(\"down\")) {\r\n if (this.isHover()) {\r\n this.states.applyAnimate(\"hover\");\r\n }\r\n else {\r\n this.states.applyAnimate(\"default\");\r\n }\r\n }\r\n // @todo remove this once migrated to _downPoints\r\n this._downPoint = undefined;\r\n const pointerId = $utils.getPointerId(e.originalEvent);\r\n delete this._downPoints[pointerId];\r\n if ($object.keys(this._downPoints).length == 0) {\r\n this._isDown = false;\r\n }\r\n }\r\n }\r\n _hasMoved(e) {\r\n // @todo remove this once migrated to _downPoints\r\n // if (this._downPoint) {\r\n // \tconst x = Math.abs(this._downPoint.x - e.point.x);\r\n // \tconst y = Math.abs(this._downPoint.y - e.point.y);\r\n // \treturn (x > 5) || (y > 5);\r\n // }\r\n const pointerId = $utils.getPointerId(e.originalEvent);\r\n const downPoint = this._downPoints[pointerId];\r\n if (downPoint) {\r\n const x = Math.abs(downPoint.x - e.point.x);\r\n const y = Math.abs(downPoint.y - e.point.y);\r\n return (x > 5) || (y > 5);\r\n }\r\n return false;\r\n }\r\n _hasDown() {\r\n return $object.keys(this._downPoints).length > 0;\r\n }\r\n _handleDown(e) {\r\n const parent = this.parent;\r\n if (parent && !this.get(\"draggable\")) {\r\n parent._handleDown(e);\r\n }\r\n if (this.get(\"interactive\") && !this.isHidden()) {\r\n if (this.states.lookup(\"down\")) {\r\n this.states.applyAnimate(\"down\");\r\n }\r\n this._downPoint = {\r\n x: e.point.x,\r\n y: e.point.y\r\n };\r\n // @todo remove this once migrated to _downPoints\r\n this._isDown = true;\r\n const pointerId = $utils.getPointerId(e.originalEvent);\r\n this._downPoints[pointerId] = {\r\n x: e.point.x,\r\n y: e.point.y\r\n };\r\n }\r\n }\r\n /**\r\n * @ignore\r\n * @todo should this be user-accessible?\r\n */\r\n dragMove(e) {\r\n let dragEvent = this._dragEvent;\r\n if (dragEvent) {\r\n if (dragEvent.simulated && !e.simulated) {\r\n return true;\r\n }\r\n let angle = 0;\r\n let parent = this.parent;\r\n let scale = 1;\r\n while (parent != null) {\r\n angle += parent.get(\"rotation\", 0);\r\n parent = parent.parent;\r\n if (parent) {\r\n scale *= parent.get(\"scale\", 1);\r\n }\r\n }\r\n let x = (e.point.x - dragEvent.point.x) / scale;\r\n let y = (e.point.y - dragEvent.point.y) / scale;\r\n const events = this.events;\r\n if (dragEvent.simulated && !this._isDragging) {\r\n this._isDragging = true;\r\n this._dragEvent = e;\r\n this._dragPoint = {\r\n x: this.x(),\r\n y: this.y()\r\n };\r\n const type = \"dragstart\";\r\n if (events.isEnabled(type)) {\r\n events.dispatch(type, {\r\n type: type,\r\n target: this,\r\n originalEvent: e.originalEvent,\r\n point: e.point,\r\n simulated: e.simulated,\r\n });\r\n }\r\n }\r\n if (this._isDragging) {\r\n let dragPoint = this._dragPoint;\r\n this.set(\"x\", dragPoint.x + x * $math.cos(angle) + y * $math.sin(angle));\r\n this.set(\"y\", dragPoint.y + y * $math.cos(angle) - x * $math.sin(angle));\r\n const type = \"dragged\";\r\n if (events.isEnabled(type)) {\r\n events.dispatch(type, {\r\n type: type,\r\n target: this,\r\n originalEvent: e.originalEvent,\r\n point: e.point,\r\n simulated: e.simulated,\r\n });\r\n }\r\n }\r\n else {\r\n if (Math.hypot(x, y) > 5) {\r\n this._isDragging = true;\r\n this._dragEvent = e;\r\n this._dragPoint = {\r\n x: this.x(),\r\n y: this.y()\r\n };\r\n const type = \"dragstart\";\r\n if (events.isEnabled(type)) {\r\n events.dispatch(type, {\r\n type: type,\r\n target: this,\r\n originalEvent: e.originalEvent,\r\n point: e.point,\r\n simulated: e.simulated\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _updateSize() {\r\n }\r\n _getBounds() {\r\n this._localBounds = this._display.getLocalBounds();\r\n }\r\n /**\r\n * Returns depth (how deep in the hierachy of the content tree) of this\r\n * element.\r\n *\r\n * @return Depth\r\n */\r\n depth() {\r\n let self = this.parent;\r\n let depth = 0;\r\n while (true) {\r\n if (self) {\r\n ++depth;\r\n self = self.parent;\r\n }\r\n else {\r\n return depth;\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtySize() {\r\n this._sizeDirty = true;\r\n this.markDirty();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtyBounds() {\r\n const display = this._display;\r\n if (this.get(\"isMeasured\")) {\r\n this._root._addDirtyBounds(this);\r\n display.isMeasured = true;\r\n display.invalidateBounds();\r\n const parent = this.parent;\r\n if (parent && this.get(\"position\") != \"absolute\") {\r\n if (parent.get(\"width\") == null || parent.get(\"height\") == null || parent.get(\"layout\")) {\r\n parent.markDirtyBounds();\r\n }\r\n }\r\n if (this.get(\"focusable\") && this.isFocus()) {\r\n this.markDirtyAccessibility();\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtyAccessibility() {\r\n //if (this._root.focused(this)) {\r\n this._root._invalidateAccessibility(this);\r\n //}\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtyLayer() {\r\n //this._display.markDirtyLayer(this.isDirty(\"opacity\") || this.isDirty(\"visible\")); https://codepen.io/team/amcharts/pen/gOWZPmP <- problems\r\n this._display.markDirtyLayer(true);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirty() {\r\n super.markDirty();\r\n this.markDirtyLayer();\r\n }\r\n _updateBounds() {\r\n const oldBounds = this._adjustedLocalBounds;\r\n let newBounds;\r\n // if display.visible == false, it still returns bounds\r\n if (!this.get(\"visible\") || !this.getPrivate(\"visible\") || this.get(\"forceHidden\")) {\r\n newBounds = {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0\r\n };\r\n this._localBounds = newBounds;\r\n this._adjustedLocalBounds = newBounds;\r\n }\r\n else {\r\n this._getBounds();\r\n this._fixMinBounds(this._localBounds);\r\n this.updatePivotPoint();\r\n this._adjustedLocalBounds = this._display.getAdjustedBounds(this._localBounds);\r\n newBounds = this._adjustedLocalBounds;\r\n }\r\n if (!oldBounds || (oldBounds.left !== newBounds.left || oldBounds.top !== newBounds.top || oldBounds.right !== newBounds.right || oldBounds.bottom !== newBounds.bottom)) {\r\n const eventType = \"boundschanged\";\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, { type: eventType, target: this });\r\n }\r\n if (this.parent) {\r\n this.parent.markDirty();\r\n this.parent.markDirtyBounds();\r\n }\r\n // Update tooltip position together with the Sprite\r\n if (this.getPrivate(\"showingTooltip\")) {\r\n this.showTooltip();\r\n }\r\n }\r\n }\r\n _fixMinBounds(bounds) {\r\n let minWidth = this.get(\"minWidth\", this.getPrivate(\"minWidth\"));\r\n let minHeight = this.get(\"minHeight\", this.getPrivate(\"minHeight\"));\r\n if ($type.isNumber(minWidth)) {\r\n if (bounds.right - bounds.left < minWidth) {\r\n bounds.right = bounds.left + minWidth;\r\n }\r\n }\r\n if ($type.isNumber(minHeight)) {\r\n if (bounds.bottom - bounds.top < minHeight) {\r\n bounds.bottom = bounds.top + minHeight;\r\n }\r\n }\r\n let privateWidth = this.getPrivate(\"width\");\r\n let privateHeight = this.getPrivate(\"height\");\r\n if ($type.isNumber(privateWidth)) {\r\n if (privateWidth > 0) {\r\n bounds.right = bounds.left + privateWidth;\r\n }\r\n else {\r\n bounds.left = bounds.right + privateWidth;\r\n }\r\n }\r\n if ($type.isNumber(privateHeight)) {\r\n if (privateHeight > 0) {\r\n bounds.bottom = bounds.top + privateHeight;\r\n }\r\n else {\r\n bounds.top = bounds.bottom + privateHeight;\r\n }\r\n }\r\n }\r\n _removeParent(parent) {\r\n if (parent) {\r\n parent.children.removeValue(this);\r\n $array.removeFirst(parent._percentageSizeChildren, this);\r\n $array.removeFirst(parent._percentagePositionChildren, this);\r\n }\r\n }\r\n _clearDirty() {\r\n super._clearDirty();\r\n this._sizeDirty = false;\r\n this._statesHandled = false;\r\n }\r\n /**\r\n * Simulate hover over element.\r\n */\r\n hover() {\r\n if (!this.isDisposed()) {\r\n this.showTooltip();\r\n this._handleOver();\r\n }\r\n }\r\n /**\r\n * Simulate unhover over element.\r\n */\r\n unhover() {\r\n if (!this.isDisposed()) {\r\n this.hideTooltip();\r\n this._handleOut();\r\n }\r\n }\r\n /**\r\n * Shows element's [[Tooltip]].\r\n */\r\n showTooltip(point) {\r\n if (!this.isDisposed()) {\r\n const tooltip = this.getTooltip();\r\n const tooltipText = this.get(\"tooltipText\");\r\n const tooltipHTML = this.get(\"tooltipHTML\");\r\n if ((tooltipText || tooltipHTML) && tooltip) {\r\n const tooltipPosition = this.get(\"tooltipPosition\");\r\n const tooltipTarget = this.getPrivate(\"tooltipTarget\", this);\r\n if (tooltipPosition == \"fixed\" || !point) {\r\n this._display._setMatrix();\r\n point = this.toGlobal(tooltipTarget._getTooltipPoint());\r\n }\r\n tooltip.set(\"pointTo\", point);\r\n tooltip.set(\"tooltipTarget\", tooltipTarget);\r\n if (!tooltip.get(\"x\")) {\r\n tooltip.set(\"x\", point.x);\r\n }\r\n if (!tooltip.get(\"y\")) {\r\n tooltip.set(\"y\", point.y);\r\n }\r\n if (tooltipText) {\r\n tooltip.label.set(\"text\", tooltipText);\r\n }\r\n if (tooltipHTML) {\r\n tooltip.label.set(\"html\", tooltipHTML);\r\n }\r\n const dataItem = this.dataItem;\r\n if (dataItem) {\r\n tooltip.label._setDataItem(dataItem);\r\n }\r\n if (this.get(\"showTooltipOn\") == \"always\" && (point.x < 0 || point.x > this._root.width() || point.y < 0 || point.y > this._root.height())) {\r\n this.hideTooltip();\r\n return;\r\n }\r\n tooltip.label.text.markDirtyText();\r\n const promise = tooltip.show();\r\n this.setPrivateRaw(\"showingTooltip\", true);\r\n return promise;\r\n }\r\n }\r\n }\r\n /**\r\n * Hides element's [[Tooltip]].\r\n */\r\n hideTooltip() {\r\n const tooltip = this.getTooltip();\r\n if (tooltip) {\r\n if (tooltip.get(\"tooltipTarget\") == this.getPrivate(\"tooltipTarget\", this) || this.get(\"tooltip\") == tooltip) {\r\n let timeout = tooltip.get(\"keepTargetHover\") && tooltip.get(\"stateAnimationDuration\", 0) == 0 ? 400 : undefined;\r\n const promise = tooltip.hide(timeout);\r\n this.setPrivateRaw(\"showingTooltip\", false);\r\n return promise;\r\n }\r\n }\r\n }\r\n _getTooltipPoint() {\r\n const bounds = this._localBounds;\r\n if (bounds) {\r\n let x = 0;\r\n let y = 0;\r\n if (!this.get(\"isMeasured\")) {\r\n x = $utils.relativeToValue(this.get(\"tooltipX\", 0), this.width());\r\n y = $utils.relativeToValue(this.get(\"tooltipY\", 0), this.height());\r\n }\r\n else {\r\n x = bounds.left + $utils.relativeToValue(this.get(\"tooltipX\", 0), bounds.right - bounds.left);\r\n y = bounds.top + $utils.relativeToValue(this.get(\"tooltipY\", 0), bounds.bottom - bounds.top);\r\n }\r\n return { x, y };\r\n }\r\n return { x: 0, y: 0 };\r\n }\r\n /**\r\n * Returns [[Tooltip]] used for this element.\r\n *\r\n * @return Tooltip\r\n */\r\n getTooltip() {\r\n let tooltip = this.get(\"tooltip\");\r\n if (!tooltip) {\r\n let parent = this.parent;\r\n if (parent) {\r\n return parent.getTooltip();\r\n }\r\n }\r\n else {\r\n return tooltip;\r\n }\r\n }\r\n _updatePosition() {\r\n const parent = this.parent;\r\n let dx = this.get(\"dx\", 0);\r\n let dy = this.get(\"dy\", 0);\r\n let x = this.get(\"x\");\r\n let _x = this.getPrivate(\"x\");\r\n let xx = 0;\r\n let yy = 0;\r\n const position = this.get(\"position\");\r\n if (x instanceof Percent) {\r\n if (parent) {\r\n x = parent.innerWidth() * x.value + parent.get(\"paddingLeft\", 0);\r\n }\r\n else {\r\n x = 0;\r\n }\r\n }\r\n if ($type.isNumber(x)) {\r\n xx = x + dx;\r\n }\r\n else {\r\n if (_x != null) {\r\n xx = _x;\r\n }\r\n else if (parent) {\r\n if (position == \"relative\") {\r\n xx = parent.get(\"paddingLeft\", 0) + dx;\r\n }\r\n }\r\n }\r\n let y = this.get(\"y\");\r\n let _y = this.getPrivate(\"y\");\r\n if (y instanceof Percent) {\r\n if (parent) {\r\n y = parent.innerHeight() * y.value + parent.get(\"paddingTop\", 0);\r\n }\r\n else {\r\n y = 0;\r\n }\r\n }\r\n if ($type.isNumber(y)) {\r\n yy = y + dy;\r\n }\r\n else {\r\n if (_y != null) {\r\n yy = _y;\r\n }\r\n else if (parent) {\r\n if (position == \"relative\") {\r\n yy = parent.get(\"paddingTop\", 0) + dy;\r\n }\r\n }\r\n }\r\n const display = this._display;\r\n if (display.x != xx || display.y != yy) {\r\n display.invalidateBounds();\r\n display.x = xx;\r\n display.y = yy;\r\n const eventType = \"positionchanged\";\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, { type: eventType, target: this });\r\n }\r\n }\r\n // Update tooltip position together with the Sprite\r\n if (this.getPrivate(\"showingTooltip\")) {\r\n this.showTooltip();\r\n }\r\n }\r\n /**\r\n * Returns element's actual X position in pixels.\r\n *\r\n * @return X (px)\r\n */\r\n x() {\r\n let x = this.get(\"x\");\r\n let _x = this.getPrivate(\"x\");\r\n const parent = this.parent;\r\n if (parent) {\r\n if (x instanceof Percent) {\r\n return $utils.relativeToValue(x, parent.innerWidth()) + parent.get(\"paddingLeft\", 0);\r\n }\r\n else {\r\n if (!$type.isNumber(x)) {\r\n if (_x != null) {\r\n return _x;\r\n }\r\n else {\r\n return parent.get(\"paddingLeft\", this._display.x);\r\n }\r\n }\r\n else {\r\n return x;\r\n }\r\n }\r\n }\r\n return this._display.x;\r\n }\r\n /**\r\n * Returns element's actual Y position in pixels.\r\n *\r\n * @return Y (px)\r\n */\r\n y() {\r\n let _y = this.getPrivate(\"y\");\r\n if (_y != null) {\r\n return _y;\r\n }\r\n let y = this.get(\"y\");\r\n const parent = this.parent;\r\n if (parent) {\r\n if (y instanceof Percent) {\r\n return $utils.relativeToValue(y, parent.innerHeight()) + parent.get(\"paddingTop\", 0);\r\n }\r\n else {\r\n if (!$type.isNumber(y)) {\r\n if (_y != null) {\r\n return _y;\r\n }\r\n else {\r\n return parent.get(\"paddingTop\", this._display.y);\r\n }\r\n }\r\n else {\r\n return y;\r\n }\r\n }\r\n }\r\n return this._display.y;\r\n }\r\n _dispose() {\r\n super._dispose();\r\n this._display.dispose();\r\n this._removeTemplateField();\r\n this._removeParent(this.parent);\r\n this._root._removeFocusElement(this);\r\n const tooltip = this.get(\"tooltip\");\r\n if (tooltip) {\r\n tooltip.dispose();\r\n }\r\n this.markDirty();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n adjustedLocalBounds() {\r\n this._fixMinBounds(this._adjustedLocalBounds);\r\n return this._adjustedLocalBounds;\r\n }\r\n /**\r\n * Returns local coordinates of the element's bounds.\r\n *\r\n * @ignore\r\n * @return Global bounds\r\n */\r\n localBounds() {\r\n return this._localBounds;\r\n }\r\n /**\r\n * Returns adjusted local coordinates of the element's bounds.\r\n *\r\n * @ignore\r\n * @return Global bounds\r\n */\r\n bounds() {\r\n const bounds = this._adjustedLocalBounds;\r\n const x = this.x();\r\n const y = this.y();\r\n return { left: bounds.left + x, right: bounds.right + x, top: bounds.top + y, bottom: bounds.bottom + y };\r\n }\r\n /**\r\n * Returns global coordinates of the element's bounds.\r\n *\r\n * @ignore\r\n * @return Global bounds\r\n */\r\n globalBounds() {\r\n const bounds = this.localBounds();\r\n const p0 = this.toGlobal({ x: bounds.left, y: bounds.top });\r\n const p1 = this.toGlobal({ x: bounds.right, y: bounds.top });\r\n const p2 = this.toGlobal({ x: bounds.right, y: bounds.bottom });\r\n const p3 = this.toGlobal({ x: bounds.left, y: bounds.bottom });\r\n return {\r\n left: Math.min(p0.x, p1.x, p2.x, p3.x),\r\n top: Math.min(p0.y, p1.y, p2.y, p3.y),\r\n right: Math.max(p0.x, p1.x, p2.x, p3.x),\r\n bottom: Math.max(p0.y, p1.y, p2.y, p3.y)\r\n };\r\n }\r\n _onShow(_duration) {\r\n }\r\n _onHide(_duration) {\r\n }\r\n /**\r\n * Plays initial reveal animation regardless if element is currently hidden\r\n * or visible.\r\n *\r\n * @param duration Duration of the animation in milliseconds\r\n * @param delay Delay showing of the element by X milliseconds\r\n * @return Promise\r\n */\r\n appear(duration, delay) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.hide(0);\r\n if (delay) {\r\n return new Promise((success, _error) => {\r\n this.setTimeout(() => {\r\n success(this.show(duration));\r\n }, delay);\r\n });\r\n }\r\n else {\r\n return this.show(duration);\r\n }\r\n });\r\n }\r\n /**\r\n * Shows currently hidden element and returns a `Promise` which completes\r\n * when all showing animations are finished.\r\n *\r\n * ```TypeScript\r\n * series.show().then(function(ev) {\r\n * console.log(\"Series is now fully visible\");\r\n * })\r\n * ```\r\n * ```JavaScript\r\n * series.show().then(function(ev) {\r\n * console.log(\"Series is now fully visible\");\r\n * })\r\n * ```\r\n *\r\n * @return Promise\r\n */\r\n show(duration) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._isShowing) {\r\n this._isHidden = false;\r\n this._isShowing = true;\r\n this._isHiding = false;\r\n if (this.states.lookup(\"default\").get(\"visible\")) {\r\n this.set(\"visible\", true);\r\n }\r\n this._onShow(duration);\r\n const animations = this.states.applyAnimate(\"default\", duration);\r\n yield waitForAnimations(animations);\r\n this._isShowing = false;\r\n }\r\n });\r\n }\r\n /**\r\n * Hides the element and returns a `Promise` which completes when all hiding\r\n * animations are finished.\r\n *\r\n * ```TypeScript\r\n * series.hide().then(function(ev) {\r\n * console.log(\"Series finished hiding\");\r\n * })\r\n * ```\r\n * ```JavaScript\r\n * series.hide().then(function(ev) {\r\n * console.log(\"Series finished hiding\");\r\n * })\r\n * ```\r\n *\r\n * @return Promise\r\n */\r\n hide(duration) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._isHiding && !this._isHidden) {\r\n this._isHiding = true;\r\n this._isShowing = false;\r\n let state = this.states.lookup(\"hidden\");\r\n if (!state) {\r\n state = this.states.create(\"hidden\", {\r\n \"opacity\": 0,\r\n \"visible\": false\r\n });\r\n }\r\n this._isHidden = true;\r\n this._onHide(duration);\r\n const animations = this.states.applyAnimate(\"hidden\", duration);\r\n yield waitForAnimations(animations);\r\n this._isHiding = false;\r\n }\r\n });\r\n }\r\n /**\r\n * Returns `true` if this element is currently hidden.\r\n *\r\n * @return Is hidden?\r\n */\r\n isHidden() {\r\n return this._isHidden;\r\n }\r\n /**\r\n * Returns `true` if this element is currently animating to a default state.\r\n *\r\n * @return Is showing?\r\n */\r\n isShowing() {\r\n return this._isShowing;\r\n }\r\n /**\r\n * Returns `true` if this element is currently animating to a hidden state.\r\n *\r\n * @return Is hiding?\r\n */\r\n isHiding() {\r\n return this._isHiding;\r\n }\r\n /**\r\n * Returns `true` if this element is currently hovered by a pointer.\r\n *\r\n * @return Is hovered?\r\n */\r\n isHover() {\r\n return this._display.hovering();\r\n }\r\n /**\r\n * Returns `true` if this element does currently have focus.\r\n *\r\n * @return Is focused?\r\n */\r\n isFocus() {\r\n return this._root.focused(this);\r\n }\r\n /**\r\n * Returns `true` if this element is currently being dragged.\r\n *\r\n * @return Is dragged?\r\n */\r\n isDragging() {\r\n return this._isDragging;\r\n }\r\n /**\r\n * Returns `false` if if either public or private setting `visible` is set\r\n * to `false`, or `forceHidden` is set to `true`.\r\n *\r\n * @return Visible?\r\n */\r\n isVisible() {\r\n if (this.get(\"visible\") && this.getPrivate(\"visible\") && !this.get(\"forceHidden\")) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Same as `isVisible()`, except it checks all ascendants, too.\r\n *\r\n * @since 5.2.7\r\n * @return Visible?\r\n */\r\n isVisibleDeep() {\r\n return this._parent ? (this._parent.isVisibleDeep() && this.isVisible()) : this.isVisible();\r\n }\r\n /**\r\n * Returns an actual opacity of the element, taking into account all parents.\r\n *\r\n * @return Opacity\r\n * @since 5.2.11\r\n */\r\n compositeOpacity() {\r\n const opacity = this.get(\"opacity\", 1);\r\n return this._parent ? (this._parent.compositeOpacity() * opacity) : opacity;\r\n }\r\n /**\r\n * Returns an actual scale of the element, taking into account all parents.\r\n *\r\n * @return Opacity\r\n * @since 5.9.2\r\n */\r\n compositeScale() {\r\n const scale = this.get(\"scale\", 1);\r\n return this._parent ? (this._parent.compositeScale() * scale) : scale;\r\n }\r\n /**\r\n * Returns an actual roation of the element, taking into account all parents.\r\n *\r\n * @return Opacity\r\n * @since 5.9.2\r\n */\r\n compositeRotation() {\r\n const rotation = this.get(\"rotation\", 0);\r\n return this._parent ? (this._parent.compositeRotation() + rotation) : rotation;\r\n }\r\n /**\r\n * Returns width of this element in pixels.\r\n *\r\n * @return Width (px)\r\n */\r\n width() {\r\n let width = this.get(\"width\");\r\n let maxWidth = this.get(\"maxWidth\", this.getPrivate(\"maxWidth\"));\r\n let minWidth = this.get(\"minWidth\", this.getPrivate(\"minWidth\"));\r\n let privateWidth = this.getPrivate(\"width\");\r\n let w = 0;\r\n if ($type.isNumber(privateWidth)) {\r\n w = privateWidth;\r\n }\r\n else {\r\n if (width == null) {\r\n if (this._adjustedLocalBounds) {\r\n w = this._adjustedLocalBounds.right - this._adjustedLocalBounds.left;\r\n }\r\n }\r\n else {\r\n if (width instanceof Percent) {\r\n const parent = this.parent;\r\n if (parent) {\r\n w = parent.innerWidth() * width.value;\r\n }\r\n else {\r\n w = this._root.width() * width.value;\r\n }\r\n }\r\n else if ($type.isNumber(width)) {\r\n w = width;\r\n }\r\n }\r\n }\r\n if ($type.isNumber(minWidth)) {\r\n w = Math.max(minWidth, w);\r\n }\r\n if ($type.isNumber(maxWidth)) {\r\n w = Math.min(maxWidth, w);\r\n }\r\n return w;\r\n }\r\n /**\r\n * Returns maximum allowed width of this element in pixels.\r\n *\r\n * @return Maximum width (px)\r\n */\r\n maxWidth() {\r\n let maxWidth = this.get(\"maxWidth\", this.getPrivate(\"maxWidth\"));\r\n if ($type.isNumber(maxWidth)) {\r\n return maxWidth;\r\n }\r\n else {\r\n let width = this.get(\"width\");\r\n if ($type.isNumber(width)) {\r\n return width;\r\n }\r\n }\r\n const parent = this.parent;\r\n if (parent) {\r\n return parent.innerWidth();\r\n }\r\n return this._root.width();\r\n }\r\n /**\r\n * Returns maximum allowed height of this element in pixels.\r\n *\r\n * @return Maximum height (px)\r\n */\r\n maxHeight() {\r\n let maxHeight = this.get(\"maxHeight\", this.getPrivate(\"maxHeight\"));\r\n if ($type.isNumber(maxHeight)) {\r\n return maxHeight;\r\n }\r\n else {\r\n let height = this.get(\"height\");\r\n if ($type.isNumber(height)) {\r\n return height;\r\n }\r\n }\r\n const parent = this.parent;\r\n if (parent) {\r\n return parent.innerHeight();\r\n }\r\n return this._root.height();\r\n }\r\n /**\r\n * Returns height of this element in pixels.\r\n *\r\n * @return Height (px)\r\n */\r\n height() {\r\n let height = this.get(\"height\");\r\n let maxHeight = this.get(\"maxHeight\", this.getPrivate(\"maxHeight\"));\r\n let minHeight = this.get(\"minHeight\", this.getPrivate(\"minHeight\"));\r\n let privateHeight = this.getPrivate(\"height\");\r\n let h = 0;\r\n if ($type.isNumber(privateHeight)) {\r\n h = privateHeight;\r\n }\r\n else {\r\n if (height == null) {\r\n if (this._adjustedLocalBounds) {\r\n h = this._adjustedLocalBounds.bottom - this._adjustedLocalBounds.top;\r\n }\r\n }\r\n else {\r\n if (height instanceof Percent) {\r\n const parent = this.parent;\r\n if (parent) {\r\n h = parent.innerHeight() * height.value;\r\n }\r\n else {\r\n h = this._root.height() * height.value;\r\n }\r\n }\r\n else if ($type.isNumber(height)) {\r\n h = height;\r\n }\r\n }\r\n }\r\n if ($type.isNumber(minHeight)) {\r\n h = Math.max(minHeight, h);\r\n }\r\n if ($type.isNumber(maxHeight)) {\r\n h = Math.min(maxHeight, h);\r\n }\r\n return h;\r\n }\r\n _findStaticTemplate(f) {\r\n // templateField overrides template\r\n if (this._templateField && f(this._templateField)) {\r\n return this._templateField;\r\n }\r\n return super._findStaticTemplate(f);\r\n }\r\n _walkParents(f) {\r\n if (this._parent) {\r\n this._walkParent(f);\r\n }\r\n }\r\n _walkParent(f) {\r\n if (this._parent) {\r\n this._parent._walkParent(f);\r\n }\r\n f(this);\r\n }\r\n /**\r\n * Parent [[Container]] of this element.\r\n *\r\n * @return Parent container\r\n */\r\n get parent() {\r\n return this._parent;\r\n }\r\n _setParent(parent, updateChildren = false) {\r\n const prevParent = this._parent;\r\n if (parent !== prevParent) {\r\n this.markDirtyBounds();\r\n parent.markDirty();\r\n this._parent = parent;\r\n if (updateChildren) {\r\n this._removeParent(prevParent);\r\n if (parent) {\r\n this._addPercentageSizeChildren();\r\n this._addPercentagePositionChildren();\r\n }\r\n }\r\n this.markDirtyPosition();\r\n this._applyThemes();\r\n }\r\n }\r\n /**\r\n * Returns an instance of [[NumberFormatter]] used in this element.\r\n *\r\n * If this element does not have it set, global one form [[Root]] is used.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/using-formatters/} for more info\r\n * @return NumberFormatter instace\r\n */\r\n getNumberFormatter() {\r\n return this.get(\"numberFormatter\", this._root.numberFormatter);\r\n }\r\n /**\r\n * Returns an instance of [[DateFormatter]] used in this element.\r\n *\r\n * If this element does not have it set, global one form [[Root]] is used.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/using-formatters/} for more info\r\n * @return DateFormatter instace\r\n */\r\n getDateFormatter() {\r\n return this.get(\"dateFormatter\", this._root.dateFormatter);\r\n }\r\n /**\r\n * Returns an instance of [[DurationFormatter]] used in this element.\r\n *\r\n * If this element does not have it set, global one form [[Root]] is used.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/using-formatters/} for more info\r\n * @return DurationFormatter instace\r\n */\r\n getDurationFormatter() {\r\n return this.get(\"durationFormatter\", this._root.durationFormatter);\r\n }\r\n /**\r\n * Converts X/Y coordinate within this element to a global coordinate.\r\n *\r\n * @param point Local coordinate\r\n * @return Global coordinate\r\n */\r\n toGlobal(point) {\r\n return this._display.toGlobal(point);\r\n }\r\n /**\r\n * Converts global X/Y coordinate to a coordinate within this element.\r\n *\r\n * @param point Global coordinate\r\n * @return Local coordinate\r\n */\r\n toLocal(point) {\r\n return this._display.toLocal(point);\r\n }\r\n _getDownPoint() {\r\n const id = this._getDownPointId();\r\n if (id) {\r\n return this._downPoints[id];\r\n }\r\n }\r\n _getDownPointId() {\r\n if (this._downPoints) {\r\n return $object.keysOrdered(this._downPoints, (a, b) => {\r\n if (a > b) {\r\n return 1;\r\n }\r\n if (a < b) {\r\n return -1;\r\n }\r\n return 0;\r\n })[0];\r\n }\r\n }\r\n /**\r\n * Moves sprite to the end of the parent's children array.\r\n *\r\n * Depending on `layout` setting of the parten container, it may effect the\r\n * positioning or overlapping order of the elements.\r\n */\r\n toFront() {\r\n const parent = this.parent;\r\n if (parent) {\r\n parent.children.moveValue(this, parent.children.length - 1);\r\n }\r\n }\r\n /**\r\n * Moves sprite to the beginning of the parent's children array.\r\n *\r\n * Depending on `layout` setting of the parten container, it may effect the\r\n * positioning or overlapping order of the elements.\r\n */\r\n toBack() {\r\n const parent = this.parent;\r\n if (parent) {\r\n parent.children.moveValue(this, 0);\r\n }\r\n }\r\n}\r\nObject.defineProperty(Sprite, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Sprite\"\r\n});\r\nObject.defineProperty(Sprite, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Entity.classNames.concat([Sprite.className])\r\n});\r\n//# sourceMappingURL=Sprite.js.map","import { Entity } from \"../../util/Entity\";\r\n/**\r\n * Base class for patterns.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/patterns/} for more info\r\n */\r\nexport class Pattern extends Entity {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_display\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._root._renderer.makeGraphics()\r\n });\r\n Object.defineProperty(this, \"_backgroundDisplay\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._root._renderer.makeGraphics()\r\n });\r\n Object.defineProperty(this, \"_clear\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_pattern\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _afterNew() {\r\n // Applying themes because pattern will not have parent\r\n super._afterNewApplyThemes();\r\n }\r\n get pattern() {\r\n return this._pattern;\r\n }\r\n _draw() { }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"repetition\") || this.isDirty(\"width\") || this.isDirty(\"height\") || this.isDirty(\"rotation\") || this.isDirty(\"strokeWidth\") || this.isDirty(\"strokeDasharray\") || this.isDirty(\"strokeDashoffset\") || this.isDirty(\"colorOpacity\") || this.isDirty(\"fillOpacity\")) {\r\n this._clear = true;\r\n }\r\n this._checkDirtyFill();\r\n }\r\n _checkDirtyFill() {\r\n if (this.isDirty(\"color\") || this.isDirty(\"fill\")) {\r\n this._clear = true;\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this._clear) {\r\n const repetition = this.get(\"repetition\", \"\");\r\n const width = this.get(\"width\", 100);\r\n const height = this.get(\"height\", 100);\r\n const fill = this.get(\"fill\");\r\n const fillOpacity = this.get(\"fillOpacity\", 1);\r\n const backgroundDisplay = this._backgroundDisplay;\r\n const display = this._display;\r\n display.clear();\r\n backgroundDisplay.clear();\r\n if (fill && (fillOpacity > 0)) {\r\n backgroundDisplay.beginFill(fill, fillOpacity);\r\n backgroundDisplay.drawRect(0, 0, width, height);\r\n backgroundDisplay.endFill();\r\n }\r\n display.angle = this.get(\"rotation\", 0);\r\n //display.pivot = { x: width / 2, y: height / 2 };\r\n this._draw();\r\n this._pattern = this._root._renderer.createPattern(display, backgroundDisplay, repetition, width, height);\r\n }\r\n this._clear = false;\r\n }\r\n}\r\nObject.defineProperty(Pattern, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Pattern\"\r\n});\r\nObject.defineProperty(Pattern, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Entity.classNames.concat([Pattern.className])\r\n});\r\n//# sourceMappingURL=Pattern.js.map","import { Pattern } from \"./Pattern\";\r\n/**\r\n * Picture pattern.\r\n *\r\n * @since 5.2.15\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/patterns/} for more info\r\n */\r\nexport class PicturePattern extends Pattern {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_image\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n this._clear = true;\r\n if (this.isDirty(\"src\")) {\r\n this._load();\r\n }\r\n const canvas = this.get(\"canvas\");\r\n if (canvas) {\r\n this.set(\"width\", canvas.width);\r\n this.set(\"height\", canvas.height);\r\n }\r\n }\r\n _draw() {\r\n super._draw();\r\n const image = this._image;\r\n if (image) {\r\n const patternWidth = this.get(\"width\", 100);\r\n const patternHeight = this.get(\"height\", 100);\r\n // Fit\r\n const fit = this.get(\"fit\", \"image\");\r\n let width = 0;\r\n let height = 0;\r\n if (fit == \"pattern\") {\r\n width = patternWidth;\r\n height = patternHeight;\r\n }\r\n else {\r\n width = image.width;\r\n height = image.height;\r\n if (fit == \"image\") {\r\n this.set(\"width\", width);\r\n this.set(\"height\", height);\r\n }\r\n }\r\n // Position\r\n const centered = this.get(\"centered\", true);\r\n let x = 0;\r\n let y = 0;\r\n if (centered) {\r\n x = patternWidth / 2 - width / 2;\r\n y = patternHeight / 2 - height / 2;\r\n }\r\n this._display.image(image, width, height, x, y);\r\n }\r\n const canvas = this.get(\"canvas\");\r\n if (canvas) {\r\n this._display.image(canvas, canvas.width, canvas.height, 0, 0);\r\n }\r\n }\r\n _load() {\r\n const src = this.get(\"src\");\r\n if (src) {\r\n const image = new Image();\r\n //image.crossOrigin = \"Anonymous\";\r\n image.src = src;\r\n image.decode().then(() => {\r\n this._image = image;\r\n this._draw();\r\n if (this.events.isEnabled(\"loaded\")) {\r\n this.events.dispatch(\"loaded\", { type: \"loaded\", target: this });\r\n }\r\n }).catch((_error) => {\r\n // TODO: maybe raise error?\r\n });\r\n }\r\n }\r\n}\r\nObject.defineProperty(PicturePattern, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"PicturePattern\"\r\n});\r\nObject.defineProperty(PicturePattern, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Pattern.classNames.concat([PicturePattern.className])\r\n});\r\n//# sourceMappingURL=PicturePattern.js.map","/**\r\n * From https://github.com/pixijs/pixi.js/blob/3dd0ff9a935f0bc13a09aefff9eb2872f02c51b9/packages/canvas/canvas-renderer/src/utils/mapCanvasBlendModesToPixi.ts#L13\r\n */\r\nexport var BlendMode;\r\n(function (BlendMode) {\r\n BlendMode[\"ADD\"] = \"lighter\";\r\n BlendMode[\"COLOR\"] = \"color\";\r\n BlendMode[\"COLOR_BURN\"] = \"color-burn\";\r\n BlendMode[\"COLOR_DODGE\"] = \"color-dodge\";\r\n BlendMode[\"DARKEN\"] = \"darken\";\r\n BlendMode[\"DIFFERENCE\"] = \"difference\";\r\n BlendMode[\"DST_OVER\"] = \"destination-over\";\r\n BlendMode[\"EXCLUSION\"] = \"exclusion\";\r\n BlendMode[\"HARD_LIGHT\"] = \"hard-light\";\r\n BlendMode[\"HUE\"] = \"hue\";\r\n BlendMode[\"LIGHTEN\"] = \"lighten\";\r\n BlendMode[\"LUMINOSITY\"] = \"luminosity\";\r\n BlendMode[\"MULTIPLY\"] = \"multiply\";\r\n BlendMode[\"NORMAL\"] = \"source-over\";\r\n BlendMode[\"OVERLAY\"] = \"overlay\";\r\n BlendMode[\"SATURATION\"] = \"saturation\";\r\n BlendMode[\"SCREEN\"] = \"screen\";\r\n BlendMode[\"SOFT_LIGHT\"] = \"soft-light\";\r\n BlendMode[\"SRC_ATOP\"] = \"source-atop\";\r\n BlendMode[\"XOR\"] = \"xor\";\r\n})(BlendMode || (BlendMode = {}));\r\n//# sourceMappingURL=Renderer.js.map","import { PicturePattern } from \"../render/patterns/PicturePattern\";\r\nimport { Sprite } from \"./Sprite\";\r\nimport { BlendMode } from \"./backend/Renderer\";\r\nimport * as $type from \"../util/Type\";\r\nimport * as $array from \"../util/Array\";\r\nexport const visualSettings = [\"fill\", \"fillOpacity\", \"stroke\", \"strokeWidth\", \"strokeOpacity\", \"fillPattern\", \"strokePattern\", \"fillGradient\", \"strokeGradient\", \"strokeDasharray\", \"strokeDashoffset\", \"shadowBlur\", \"shadowColor\", \"shadowOpacity\", \"shadowOffsetX\", \"shadowOffsetY\", \"blur\", \"sepia\", \"invert\", \"brightness\", \"hue\", \"contrast\", \"saturate\"];\r\n/**\r\n * Base class used for drawing shapes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\r\nexport class Graphics extends Sprite {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_display\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._root._renderer.makeGraphics()\r\n });\r\n Object.defineProperty(this, \"_clear\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"draw\") || this.isDirty(\"svgPath\")) {\r\n this.markDirtyBounds();\r\n }\r\n if (this.isDirty(\"fill\") || this.isDirty(\"stroke\") || this.isDirty(\"visible\") || this.isDirty(\"forceHidden\") || this.isDirty(\"scale\") || this.isDirty(\"fillGradient\") || this.isDirty(\"strokeGradient\") || this.isDirty(\"fillPattern\") || this.isDirty(\"strokePattern\") || this.isDirty(\"fillOpacity\") || this.isDirty(\"strokeOpacity\") || this.isDirty(\"strokeWidth\") || this.isDirty(\"draw\") || this.isDirty(\"blendMode\") || this.isDirty(\"strokeDasharray\") || this.isDirty(\"strokeDashoffset\") || this.isDirty(\"svgPath\") || this.isDirty(\"lineJoin\") || this.isDirty(\"shadowColor\") || this.isDirty(\"shadowBlur\") || this.isDirty(\"shadowOffsetX\") || this.isDirty(\"shadowOffsetY\")) {\r\n this._clear = true;\r\n }\r\n this._display.crisp = this.get(\"crisp\", false);\r\n if (this.isDirty(\"fillGradient\")) {\r\n const gradient = this.get(\"fillGradient\");\r\n if (gradient) {\r\n this._display.isMeasured = true;\r\n const gradientTarget = gradient.get(\"target\");\r\n if (gradientTarget) {\r\n this._disposers.push(gradientTarget.events.on(\"boundschanged\", () => {\r\n this._markDirtyKey(\"fill\");\r\n }));\r\n this._disposers.push(gradientTarget.events.on(\"positionchanged\", () => {\r\n this._markDirtyKey(\"fill\");\r\n }));\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"strokeGradient\")) {\r\n const gradient = this.get(\"strokeGradient\");\r\n if (gradient) {\r\n this._display.isMeasured = true;\r\n const gradientTarget = gradient.get(\"target\");\r\n if (gradientTarget) {\r\n this._disposers.push(gradientTarget.events.on(\"boundschanged\", () => {\r\n this._markDirtyKey(\"stroke\");\r\n }));\r\n this._disposers.push(gradientTarget.events.on(\"positionchanged\", () => {\r\n this._markDirtyKey(\"stroke\");\r\n }));\r\n }\r\n }\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this._clear) {\r\n this.markDirtyBounds();\r\n this.markDirtyLayer();\r\n this._display.clear();\r\n let strokeDasharray = this.get(\"strokeDasharray\");\r\n if ($type.isNumber(strokeDasharray)) {\r\n if (strokeDasharray < 0.5) {\r\n strokeDasharray = [0];\r\n }\r\n else {\r\n strokeDasharray = [strokeDasharray];\r\n }\r\n }\r\n this._display.setLineDash(strokeDasharray);\r\n const strokeDashoffset = this.get(\"strokeDashoffset\");\r\n if (strokeDashoffset) {\r\n this._display.setLineDashOffset(strokeDashoffset);\r\n }\r\n const blendMode = this.get(\"blendMode\", BlendMode.NORMAL);\r\n this._display.blendMode = blendMode;\r\n const draw = this.get(\"draw\");\r\n if (draw && typeof draw === \"function\") {\r\n draw(this._display, this);\r\n }\r\n const svgPath = this.get(\"svgPath\");\r\n if (svgPath != null) {\r\n this._display.svgPath(svgPath);\r\n }\r\n }\r\n }\r\n _afterChanged() {\r\n super._afterChanged();\r\n if (this._clear) {\r\n const fill = this.get(\"fill\");\r\n const fillGradient = this.get(\"fillGradient\");\r\n const fillPattern = this.get(\"fillPattern\");\r\n const fillOpacity = this.get(\"fillOpacity\");\r\n const stroke = this.get(\"stroke\");\r\n const strokeGradient = this.get(\"strokeGradient\");\r\n const strokePattern = this.get(\"strokePattern\");\r\n const shadowColor = this.get(\"shadowColor\");\r\n const shadowBlur = this.get(\"shadowBlur\");\r\n const shadowOffsetX = this.get(\"shadowOffsetX\");\r\n const shadowOffsetY = this.get(\"shadowOffsetY\");\r\n const shadowOpacity = this.get(\"shadowOpacity\");\r\n if (shadowColor && (shadowBlur || shadowOffsetX || shadowOffsetY)) {\r\n this._display.shadow(shadowColor, shadowBlur, shadowOffsetX, shadowOffsetY, shadowOpacity);\r\n }\r\n if (fill && !fillGradient) {\r\n this._display.beginFill(fill, fillOpacity);\r\n this._display.endFill();\r\n }\r\n if (fillGradient) {\r\n if (fill) {\r\n const stops = fillGradient.get(\"stops\", []);\r\n if (stops.length) {\r\n $array.each(stops, (stop) => {\r\n if ((!stop.color || stop.colorInherited) && fill) {\r\n stop.color = fill;\r\n stop.colorInherited = true;\r\n }\r\n if (stop.opacity == null || stop.opacityInherited) {\r\n stop.opacity = fillOpacity;\r\n stop.opacityInherited = true;\r\n }\r\n });\r\n }\r\n }\r\n const gradient = fillGradient.getFill(this);\r\n if (gradient) {\r\n this._display.beginFill(gradient, fillOpacity);\r\n this._display.endFill();\r\n }\r\n }\r\n if (fillPattern) {\r\n const pattern = fillPattern.pattern;\r\n if (pattern) {\r\n this._display.beginFill(pattern, fillOpacity);\r\n this._display.endFill();\r\n if (fillPattern instanceof PicturePattern) {\r\n fillPattern.events.once(\"loaded\", () => {\r\n this._clear = true;\r\n this.markDirty();\r\n });\r\n }\r\n }\r\n }\r\n if (stroke || strokeGradient || strokePattern) {\r\n const strokeOpacity = this.get(\"strokeOpacity\");\r\n let strokeWidth = this.get(\"strokeWidth\", 1);\r\n if (this.get(\"nonScalingStroke\")) {\r\n strokeWidth = strokeWidth / this.get(\"scale\", 1);\r\n }\r\n if (this.get(\"crisp\")) {\r\n strokeWidth /= this._root._renderer.resolution;\r\n }\r\n const lineJoin = this.get(\"lineJoin\");\r\n if (stroke && !strokeGradient) {\r\n this._display.lineStyle(strokeWidth, stroke, strokeOpacity, lineJoin);\r\n this._display.endStroke();\r\n }\r\n if (strokeGradient) {\r\n const stops = strokeGradient.get(\"stops\", []);\r\n if (stops.length) {\r\n $array.each(stops, (stop) => {\r\n if ((!stop.color || stop.colorInherited) && stroke) {\r\n stop.color = stroke;\r\n stop.colorInherited = true;\r\n }\r\n if (stop.opacity == null || stop.opacityInherited) {\r\n stop.opacity = strokeOpacity;\r\n stop.opacityInherited = true;\r\n }\r\n });\r\n }\r\n const gradient = strokeGradient.getFill(this);\r\n if (gradient) {\r\n this._display.lineStyle(strokeWidth, gradient, strokeOpacity, lineJoin);\r\n this._display.endStroke();\r\n }\r\n }\r\n if (strokePattern) {\r\n /*\r\n let changed = false;\r\n \r\n if (stroke && (!strokePattern.get(\"color\") || strokePattern.get(\"colorInherited\"))) {\r\n strokePattern.set(\"color\", stroke);\r\n strokePattern.set(\"colorInherited\", true);\r\n changed = true;\r\n }\r\n if (changed) {\r\n // @todo: is this OK?\r\n strokePattern._changed();\r\n }\r\n */\r\n let pattern = strokePattern.pattern;\r\n if (pattern) {\r\n this._display.lineStyle(strokeWidth, pattern, strokeOpacity, lineJoin);\r\n this._display.endStroke();\r\n if (strokePattern instanceof PicturePattern) {\r\n strokePattern.events.once(\"loaded\", () => {\r\n this._clear = true;\r\n this.markDirty();\r\n });\r\n }\r\n }\r\n }\r\n }\r\n if (this.getPrivate(\"showingTooltip\")) {\r\n this.showTooltip();\r\n }\r\n }\r\n this._clear = false;\r\n }\r\n}\r\nObject.defineProperty(Graphics, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Graphics\"\r\n});\r\nObject.defineProperty(Graphics, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Sprite.classNames.concat([Graphics.className])\r\n});\r\n//# sourceMappingURL=Graphics.js.map","import { Graphics } from \"./Graphics\";\r\n/**\r\n * Draws a rectangle.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\r\nexport class Rectangle extends Graphics {\r\n _afterNew() {\r\n super._afterNew();\r\n this._display.isMeasured = true;\r\n this.setPrivateRaw(\"trustBounds\", true);\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"width\") || this.isDirty(\"height\") || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\")) {\r\n this._clear = true;\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this._clear && !this.get(\"draw\")) {\r\n this._draw();\r\n }\r\n }\r\n _draw() {\r\n this._display.drawRect(0, 0, this.width(), this.height());\r\n }\r\n _updateSize() {\r\n this.markDirty();\r\n this._clear = true;\r\n }\r\n}\r\nObject.defineProperty(Rectangle, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Rectangle\"\r\n});\r\nObject.defineProperty(Rectangle, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Graphics.classNames.concat([Rectangle.className])\r\n});\r\n//# sourceMappingURL=Rectangle.js.map","import { Entity } from \"../util/Entity\";\r\nexport function eachChildren(container, f) {\r\n if (container.get(\"reverseChildren\", false)) {\r\n container.children.eachReverse(f);\r\n }\r\n else {\r\n container.children.each(f);\r\n }\r\n}\r\n/**\r\n * Base class for [[Container]] layouts.\r\n */\r\nexport class Layout extends Entity {\r\n}\r\nObject.defineProperty(Layout, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Layout\"\r\n});\r\nObject.defineProperty(Layout, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Entity.classNames.concat([Layout.className])\r\n});\r\n//# sourceMappingURL=Layout.js.map","import { Layout, eachChildren } from \"./Layout\";\r\nimport * as $type from \"../util/Type\";\r\nimport { Percent } from \"../util/Percent\";\r\n/**\r\n * A horizontal children layout for [[Container]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/#Layout} for more info\r\n */\r\nexport class HorizontalLayout extends Layout {\r\n /**\r\n * @ignore\r\n */\r\n updateContainer(container) {\r\n let paddingLeft = container.get(\"paddingLeft\", 0);\r\n let availableWidth = container.innerWidth();\r\n let totalPercent = 0;\r\n eachChildren(container, (child) => {\r\n if (child.isVisible()) {\r\n if (child.get(\"position\") == \"relative\") {\r\n let childWidth = child.get(\"width\");\r\n if (childWidth instanceof Percent) {\r\n totalPercent += childWidth.value;\r\n let w = availableWidth * childWidth.value;\r\n let minWidth = child.get(\"minWidth\", child.getPrivate(\"minWidth\", -Infinity));\r\n if (minWidth > w) {\r\n availableWidth -= minWidth;\r\n totalPercent -= childWidth.value;\r\n }\r\n let maxWidth = child.get(\"maxWidth\", child.getPrivate(\"maxWidth\", Infinity));\r\n if (w > maxWidth) {\r\n availableWidth -= maxWidth;\r\n totalPercent -= childWidth.value;\r\n }\r\n }\r\n else {\r\n if (!$type.isNumber(childWidth)) {\r\n childWidth = child.width();\r\n }\r\n availableWidth -= childWidth + child.get(\"marginLeft\", 0) + child.get(\"marginRight\", 0);\r\n }\r\n }\r\n }\r\n });\r\n if (availableWidth <= 0 || availableWidth == Infinity) {\r\n availableWidth = .1;\r\n }\r\n //if (availableWidth > 0) {\r\n eachChildren(container, (child) => {\r\n if (child.isVisible()) {\r\n if (child.get(\"position\") == \"relative\") {\r\n let childWidth = child.get(\"width\");\r\n if (childWidth instanceof Percent) {\r\n let privateWidth = availableWidth * childWidth.value / totalPercent - child.get(\"marginLeft\", 0) - child.get(\"marginRight\", 0);\r\n let minWidth = child.get(\"minWidth\", child.getPrivate(\"minWidth\", -Infinity));\r\n let maxWidth = child.get(\"maxWidth\", child.getPrivate(\"maxWidth\", Infinity));\r\n privateWidth = Math.min(Math.max(minWidth, privateWidth), maxWidth);\r\n child.setPrivate(\"width\", privateWidth);\r\n }\r\n else {\r\n if (child._prevSettings.width instanceof Percent) {\r\n child.setPrivate(\"width\", undefined);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n //}\r\n let prevX = paddingLeft;\r\n eachChildren(container, (child) => {\r\n if (child.get(\"position\") == \"relative\") {\r\n if (child.isVisible()) {\r\n let bounds = child.adjustedLocalBounds();\r\n let marginLeft = child.get(\"marginLeft\", 0);\r\n let marginRight = child.get(\"marginRight\", 0);\r\n let maxWidth = child.get(\"maxWidth\");\r\n let left = bounds.left;\r\n let right = bounds.right;\r\n if (maxWidth) {\r\n if (right - left > maxWidth) {\r\n right = left + maxWidth;\r\n }\r\n }\r\n let x = prevX + marginLeft - left;\r\n child.setPrivate(\"x\", x);\r\n prevX = x + right + marginRight;\r\n }\r\n else {\r\n child.setPrivate(\"x\", undefined);\r\n }\r\n }\r\n });\r\n }\r\n}\r\nObject.defineProperty(HorizontalLayout, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"HorizontalLayout\"\r\n});\r\nObject.defineProperty(HorizontalLayout, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Layout.classNames.concat([HorizontalLayout.className])\r\n});\r\n//# sourceMappingURL=HorizontalLayout.js.map","import { Layout, eachChildren } from \"./Layout\";\r\nimport * as $type from \"../util/Type\";\r\nimport { Percent } from \"../util/Percent\";\r\n/**\r\n * A vertical children layout for [[Container]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/#Layout} for more info\r\n */\r\nexport class VerticalLayout extends Layout {\r\n /**\r\n * @ignore\r\n */\r\n updateContainer(container) {\r\n let paddingTop = container.get(\"paddingTop\", 0);\r\n let availableHeight = container.innerHeight();\r\n let totalPercent = 0;\r\n eachChildren(container, (child) => {\r\n if (child.isVisible()) {\r\n if (child.get(\"position\") == \"relative\") {\r\n let childHeight = child.get(\"height\");\r\n if (childHeight instanceof Percent) {\r\n totalPercent += childHeight.value;\r\n let h = availableHeight * childHeight.value;\r\n let minHeight = child.get(\"minHeight\", child.getPrivate(\"minHeight\", -Infinity));\r\n if (minHeight > h) {\r\n availableHeight -= minHeight;\r\n totalPercent -= childHeight.value;\r\n }\r\n let maxHeight = child.get(\"maxHeight\", child.getPrivate(\"maxHeight\", Infinity));\r\n if (h > maxHeight) {\r\n availableHeight -= maxHeight;\r\n totalPercent -= childHeight.value;\r\n }\r\n }\r\n else {\r\n if (!$type.isNumber(childHeight)) {\r\n childHeight = child.height();\r\n }\r\n availableHeight -= childHeight + child.get(\"marginTop\", 0) + child.get(\"marginBottom\", 0);\r\n }\r\n }\r\n }\r\n });\r\n if (availableHeight <= 0 || availableHeight == Infinity) {\r\n availableHeight = .1;\r\n }\r\n //if (availableHeight > 0) {\r\n eachChildren(container, (child) => {\r\n if (child.isVisible()) {\r\n if (child.get(\"position\") == \"relative\") {\r\n let childHeight = child.get(\"height\");\r\n if (childHeight instanceof Percent) {\r\n let privateHeight = availableHeight * childHeight.value / totalPercent - child.get(\"marginTop\", 0) - child.get(\"marginBottom\", 0);\r\n let minHeight = child.get(\"minHeight\", child.getPrivate(\"minHeight\", -Infinity));\r\n let maxHeight = child.get(\"maxHeight\", child.getPrivate(\"maxHeight\", Infinity));\r\n privateHeight = Math.min(Math.max(minHeight, privateHeight), maxHeight);\r\n child.setPrivate(\"height\", privateHeight);\r\n }\r\n else {\r\n if (child._prevSettings.height instanceof Percent) {\r\n child.setPrivate(\"height\", undefined);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n //}\r\n let prevY = paddingTop;\r\n eachChildren(container, (child) => {\r\n if (child.get(\"position\") == \"relative\") {\r\n if (child.isVisible()) {\r\n let bounds = child.adjustedLocalBounds();\r\n let marginTop = child.get(\"marginTop\", 0);\r\n let top = bounds.top;\r\n let bottom = bounds.bottom;\r\n let maxHeight = child.get(\"maxHeight\");\r\n if (maxHeight) {\r\n if (bottom - top > maxHeight) {\r\n bottom = top + maxHeight;\r\n }\r\n }\r\n let marginBottom = child.get(\"marginBottom\", 0);\r\n let y = prevY + marginTop - top;\r\n child.setPrivate(\"y\", y);\r\n prevY = y + bottom + marginBottom;\r\n }\r\n else {\r\n child.setPrivate(\"y\", undefined);\r\n }\r\n }\r\n });\r\n }\r\n}\r\nObject.defineProperty(VerticalLayout, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"VerticalLayout\"\r\n});\r\nObject.defineProperty(VerticalLayout, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Layout.classNames.concat([VerticalLayout.className])\r\n});\r\n//# sourceMappingURL=VerticalLayout.js.map","import { Layout, eachChildren } from \"./Layout\";\r\nimport * as $array from \"../util/Array\";\r\nimport * as $math from \"../util/Math\";\r\n/**\r\n * A grid children layout for [[Container]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/#Layout} for more info\r\n */\r\nexport class GridLayout extends Layout {\r\n _afterNew() {\r\n this._setRawDefault(\"maxColumns\", Number.MAX_VALUE);\r\n super._afterNew();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateContainer(container) {\r\n let paddingLeft = container.get(\"paddingLeft\", 0);\r\n let paddingRight = container.get(\"paddingRight\", 0);\r\n let paddingTop = container.get(\"paddingTop\", 0);\r\n let availableWidth = container.maxWidth() - paddingLeft - paddingRight;\r\n let minCellWidth = availableWidth;\r\n let maxCellWidth = 1;\r\n eachChildren(container, (child) => {\r\n if (child.get(\"visible\") && child.getPrivate(\"visible\") && !child.get(\"forceHidden\")) {\r\n if (child.get(\"position\") != \"absolute\") {\r\n let childWidth = child.width();\r\n if (childWidth < minCellWidth) {\r\n minCellWidth = childWidth;\r\n }\r\n if (childWidth > maxCellWidth) {\r\n maxCellWidth = childWidth;\r\n }\r\n }\r\n }\r\n });\r\n minCellWidth = $math.fitToRange(minCellWidth, 1, availableWidth);\r\n maxCellWidth = $math.fitToRange(maxCellWidth, 1, availableWidth);\r\n let columnCount = 1;\r\n if (this.get(\"fixedWidthGrid\")) {\r\n columnCount = availableWidth / maxCellWidth;\r\n }\r\n else {\r\n columnCount = availableWidth / minCellWidth;\r\n }\r\n columnCount = Math.max(1, Math.floor(columnCount));\r\n columnCount = Math.min(this.get(\"maxColumns\", Number.MAX_VALUE), columnCount);\r\n let columnWidths = this.getColumnWidths(container, columnCount, maxCellWidth, availableWidth);\r\n let prevY = paddingTop;\r\n let column = 0;\r\n let maxColumnHeight = 0;\r\n columnCount = columnWidths.length;\r\n let prevX = paddingLeft;\r\n eachChildren(container, (child) => {\r\n if (child.get(\"position\") == \"relative\" && child.isVisible()) {\r\n const marginTop = child.get(\"marginTop\", 0);\r\n const marginBottom = child.get(\"marginBottom\", 0);\r\n let bounds = child.adjustedLocalBounds();\r\n let marginLeft = child.get(\"marginLeft\", 0);\r\n let marginRight = child.get(\"marginRight\", 0);\r\n let x = prevX + marginLeft - bounds.left;\r\n let y = prevY + marginTop - bounds.top;\r\n child.setPrivate(\"x\", x);\r\n child.setPrivate(\"y\", y);\r\n prevX += columnWidths[column] + marginRight;\r\n maxColumnHeight = Math.max(maxColumnHeight, child.height() + marginTop + marginBottom);\r\n column++;\r\n if (column >= columnCount) {\r\n column = 0;\r\n prevX = paddingLeft;\r\n prevY += maxColumnHeight;\r\n }\r\n }\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getColumnWidths(container, columnCount, maxCellWidth, availableWidth) {\r\n let totalWidth = 0;\r\n let columnWidths = [];\r\n let column = 0;\r\n eachChildren(container, (child) => {\r\n let bounds = child.adjustedLocalBounds();\r\n if (child.get(\"position\") != \"absolute\" && child.isVisible()) {\r\n if (this.get(\"fixedWidthGrid\")) {\r\n columnWidths[column] = maxCellWidth;\r\n }\r\n else {\r\n columnWidths[column] = Math.max(columnWidths[column] | 0, bounds.right - bounds.left + child.get(\"marginLeft\", 0) + child.get(\"marginRight\", 0));\r\n }\r\n if (column < container.children.length - 1) {\r\n column++;\r\n if (column == columnCount) {\r\n column = 0;\r\n }\r\n }\r\n }\r\n });\r\n $array.each(columnWidths, (w) => {\r\n totalWidth += w;\r\n });\r\n if (totalWidth > availableWidth) {\r\n if (columnCount > 2) {\r\n columnCount -= 1;\r\n return this.getColumnWidths(container, columnCount, maxCellWidth, availableWidth);\r\n }\r\n else {\r\n return [availableWidth];\r\n }\r\n }\r\n return columnWidths;\r\n }\r\n}\r\nObject.defineProperty(GridLayout, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"GridLayout\"\r\n});\r\nObject.defineProperty(GridLayout, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Layout.classNames.concat([GridLayout.className])\r\n});\r\n//# sourceMappingURL=GridLayout.js.map","import { Color } from \"./Color\";\r\nimport * as $type from \"./Type\";\r\nexport class TextFormatter {\r\n /**\r\n * Replaces brackets with temporary placeholders.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Escaped text\r\n */\r\n static escape(text) {\r\n return text.\r\n replace(/\\[\\[/g, this.prefix + \"1\").\r\n replace(/([^\\/\\]]{1})\\]\\]/g, \"$1\" + this.prefix + \"2\").\r\n replace(/\\]\\]/g, this.prefix + \"2\").\r\n replace(/\\{\\{/g, this.prefix + \"3\").\r\n replace(/\\}\\}/g, this.prefix + \"4\").\r\n replace(/\\'\\'/g, this.prefix + \"5\");\r\n }\r\n /**\r\n * Replaces placeholders back to brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Escaped text\r\n * @return Unescaped text\r\n */\r\n static unescape(text) {\r\n return text.\r\n replace(new RegExp(this.prefix + \"1\", \"g\"), \"[[\").\r\n replace(new RegExp(this.prefix + \"2\", \"g\"), \"]]\").\r\n replace(new RegExp(this.prefix + \"3\", \"g\"), \"{{\").\r\n replace(new RegExp(this.prefix + \"4\", \"g\"), \"}}\").\r\n replace(new RegExp(this.prefix + \"5\", \"g\"), \"''\");\r\n }\r\n /**\r\n * Cleans up the text text for leftover double square brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Cleaned up text\r\n */\r\n static cleanUp(text) {\r\n return text.\r\n replace(/\\[\\[/g, \"[\").\r\n replace(/\\]\\]/g, \"]\").\r\n replace(/\\{\\{/g, \"{\").\r\n replace(/\\}\\}/g, \"}\").\r\n replace(/\\'\\'/g, \"'\");\r\n }\r\n /**\r\n * Splits string into chunks. (style blocks, quoted blocks, regular blocks)\r\n *\r\n * If the second parameter `quotedBlocks` is set to `true` this method will\r\n * also single out text blocks enclosed within single quotes that no\r\n * formatting should be applied to, and they should be displayed as is.\r\n *\r\n * Default for the above is `false`, so that you can use single quote in text\r\n * without escaping it.\r\n *\r\n * If enabled, single quotes can be escaped by doubling it - adding two\r\n * single quotes, which will be replaced by a one single quote in the final\r\n * output.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to chunk\r\n * @param quotedBlocks Use quoted blocks\r\n * @param noFormatting Formatting blocks will be treated as regular text\r\n * @return Array of string chunks\r\n */\r\n static chunk(text, quotedBlocks = false, noFormatting = false) {\r\n // Init result\r\n let res = [];\r\n // Replace double (escaped) square spaces and quotes with temporary codes\r\n text = this.escape(text);\r\n // Deal with style blocks\r\n let chunks = quotedBlocks ? text.split(\"'\") : [text];\r\n for (let i = 0; i < chunks.length; i++) {\r\n let chunk = chunks[i];\r\n // Empty?\r\n if (chunk === \"\") {\r\n continue;\r\n }\r\n if ((i % 2) === 0) {\r\n // Text outside quotes\r\n // Parse for style blocks which are \"text\" chunks, the rest chunks are\r\n // \"value\"\r\n chunk = chunk.replace(/\\]\\[/g, \"]\" + $type.PLACEHOLDER + \"[\");\r\n chunk = chunk.replace(/\\[\\]/g, \"[ ]\");\r\n let chunks2 = chunk.split(/[\\[\\]]+/);\r\n for (let i2 = 0; i2 < chunks2.length; i2++) {\r\n let chunk2 = this.cleanUp(this.unescape(chunks2[i2]));\r\n // Placeholder?\r\n if (chunk2 === $type.PLACEHOLDER) {\r\n continue;\r\n }\r\n // Empty?\r\n if (chunk2 === \"\") {\r\n continue;\r\n }\r\n // Block or value\r\n if ((i2 % 2) === 0) {\r\n res.push({\r\n \"type\": \"value\",\r\n \"text\": chunk2\r\n });\r\n }\r\n else {\r\n res.push({\r\n \"type\": noFormatting ? \"value\" : \"format\",\r\n \"text\": \"[\" + chunk2 + \"]\"\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n // A text within doublequotes\r\n // All chunks are \"text\"\r\n let chunks2 = chunk.split(/[\\[\\]]+/);\r\n for (let i2 = 0; i2 < chunks2.length; i2++) {\r\n let chunk2 = this.cleanUp(this.unescape(chunks2[i2]));\r\n // Empty?\r\n if (chunk2 === \"\") {\r\n continue;\r\n }\r\n // Block or text\r\n if ((i2 % 2) === 0) {\r\n res.push({\r\n \"type\": \"text\",\r\n \"text\": chunk2\r\n });\r\n }\r\n else if (this.isImage(chunk2)) {\r\n res.push({\r\n \"type\": \"image\",\r\n \"text\": \"[\" + chunk2 + \"]\"\r\n });\r\n }\r\n else {\r\n res.push({\r\n \"type\": \"format\",\r\n \"text\": \"[\" + chunk2 + \"]\"\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n /**\r\n * Checks if supplied format contains image information and should be\r\n * formatted as such.\r\n * I.e.: `[img: myImage.png]`\r\n *\r\n * @ignore\r\n * @param text Format\r\n * @return true if it is an image\r\n */\r\n static isImage(text) {\r\n return text.match(/img[ ]?:/) ? true : false;\r\n }\r\n static getTextStyle(style) {\r\n // let textStyle: string[] = [];\r\n // let textFill: string | undefined;\r\n let format = {};\r\n if (style == \"\" || style == \"[ ]\") {\r\n return {};\r\n }\r\n // Pre-process quoted text\r\n const q = style.match(/('[^']*')|(\"[^\"]*\")/gi);\r\n if (q) {\r\n for (let i = 0; i < q.length; i++) {\r\n style = style.replace(q[i], q[i].replace(/['\"]*/g, \"\").replace(/[ ]+/g, \"+\"));\r\n }\r\n }\r\n // Get style parts\r\n let b = style.match(/([\\w\\-]*:[\\s]?[^;\\s\\]]*)|(\\#[\\w]{1,6})|([\\w\\-]+)|(\\/)/gi);\r\n // Empty?\r\n if (!b) {\r\n return {};\r\n }\r\n // Check each part\r\n for (let i = 0; i < b.length; i++) {\r\n if (b[i].match(/^(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)$/i)) {\r\n format.fontWeight = b[i];\r\n }\r\n else if (b[i].match(/^(underline|line-through)$/i)) {\r\n format.textDecoration = b[i];\r\n }\r\n else if (b[i] == \"/\") {\r\n // Just closing tag\r\n // Do nothing\r\n }\r\n else if (!b[i].match(/:/)) {\r\n // Color\r\n format.fill = Color.fromString(b[i]);\r\n }\r\n else {\r\n const p = b[i].replace(\"+\", \" \").split(/:[ ]*/);\r\n format[p[0]] = p[1];\r\n //textStyle.push(b[i].replace(/^[a-zA-Z]:[ ]*/, \"\"));\r\n //b[i] = b[i].replace(/\\+/g, \" \");\r\n }\r\n }\r\n return format;\r\n }\r\n}\r\nObject.defineProperty(TextFormatter, \"prefix\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"__amcharts__\"\r\n});\r\n//# sourceMappingURL=TextFormatter.js.map","/** @ignore */ /** */\r\nimport * as $type from \"./Type\";\r\nimport * as $utils from \"./Utils\";\r\nimport { Sprite } from \"../render/Sprite\";\r\nimport { TextFormatter } from \"./TextFormatter\";\r\n/**\r\n * @ignore\r\n */\r\nexport function populateString(target, string) {\r\n if (string != null) {\r\n string = \"\" + string;\r\n string = TextFormatter.escape(string);\r\n let tags = string.match(/\\{([^}]+)\\}/g);\r\n let i;\r\n if (tags) {\r\n for (i = 0; i < tags.length; i++) {\r\n let tag = tags[i].replace(/\\{([^}]+)\\}/, \"$1\");\r\n let value = getTagValue(target, tag, \"\");\r\n if (value == null) {\r\n value = \"\";\r\n }\r\n string = string.split(tags[i]).join(value);\r\n }\r\n }\r\n string = TextFormatter.unescape(string);\r\n }\r\n else {\r\n string = \"\";\r\n }\r\n // TODO: apply adapter?\r\n return string;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction getTagValue(target, tagName, format) {\r\n let value;\r\n const dataItem = target.dataItem;\r\n // Parse parts\r\n let parts = [];\r\n let reg = /(format[a-zA-Z]*)\\((.*)\\)|([^.]+)/g;\r\n let matches;\r\n while (true) {\r\n matches = reg.exec(tagName);\r\n if (matches === null) {\r\n break;\r\n }\r\n if (matches[3]) {\r\n // Simple property\r\n parts.push({\r\n prop: matches[3]\r\n });\r\n // Check if maybe we should force a formatter on this value\r\n const dateFields = target.getDateFormatter().get(\"dateFields\", []);\r\n const numericFields = target.getNumberFormatter().get(\"numericFields\", []);\r\n const durationFields = target.getDurationFormatter().get(\"durationFields\", []);\r\n if (dateFields.indexOf(matches[3]) !== -1) {\r\n parts.push({\r\n method: \"formatDate\",\r\n params: []\r\n });\r\n }\r\n else if (numericFields.indexOf(matches[3]) !== -1) {\r\n parts.push({\r\n method: \"formatNumber\",\r\n params: []\r\n });\r\n }\r\n else if (durationFields.indexOf(matches[3]) !== -1) {\r\n parts.push({\r\n method: \"formatDuration\",\r\n params: []\r\n });\r\n }\r\n }\r\n else {\r\n // Method\r\n // Parse parameters\r\n let params = [];\r\n if ($utils.trim(matches[2]) != \"\") {\r\n let reg2 = /'([^']*)'|\"([^\"]*)\"|([0-9\\-]+)/g;\r\n let matches2;\r\n while (true) {\r\n matches2 = reg2.exec(matches[2]);\r\n if (matches2 === null) {\r\n break;\r\n }\r\n params.push(matches2[1] || matches2[2] || matches2[3]);\r\n }\r\n }\r\n parts.push({\r\n method: matches[1],\r\n params: params\r\n });\r\n }\r\n }\r\n // Check if we can retrieve the value from data item\r\n if (dataItem) {\r\n // Check values\r\n value = getTagValueFromObject(target, parts, dataItem._settings);\r\n // Check properties\r\n if (value == null || $type.isObject(value)) { // isObject helps to solve problem with date axis, as for example dateX will get dateX from values object and won't get to the dateX date.\r\n value = getTagValueFromObject(target, parts, dataItem);\r\n }\r\n // Check data context\r\n let dataContext = dataItem.dataContext;\r\n if (value == null && dataContext) {\r\n value = getTagValueFromObject(target, parts, dataContext);\r\n // Maybe it's a literal dot-separated name of the key in dataContext?\r\n if (value == null) {\r\n value = getTagValueFromObject(target, [{\r\n prop: tagName\r\n }], dataContext);\r\n }\r\n // scond data context level sometimes exist (tree map)\r\n if (value == null && dataContext.dataContext) {\r\n value = getTagValueFromObject(target, parts, dataContext.dataContext);\r\n }\r\n }\r\n // Check component's data item\r\n if (value == null && dataItem.component && dataItem.component.dataItem !== dataItem) {\r\n value = getTagValue(dataItem.component, tagName, format);\r\n }\r\n }\r\n // Check sprite's properties\r\n if (value == null) {\r\n value = getTagValueFromObject(target, parts, target);\r\n }\r\n // Finally, check the parent\r\n if (value == null && target.parent) {\r\n value = getTagValue(target.parent, tagName, format);\r\n }\r\n return value;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction getCustomDataValue(target, prop) {\r\n const customData = target.getPrivate(\"customData\");\r\n if ($type.isObject(customData)) {\r\n return customData[prop];\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function getTagValueFromObject(target, parts, object, format) {\r\n let current = object;\r\n let formatApplied = false;\r\n for (let i = 0, len = parts.length; i < len; i++) {\r\n let part = parts[i];\r\n if (part.prop) {\r\n // Regular property\r\n if (current instanceof Sprite) {\r\n let tmp = current.get(part.prop);\r\n if (tmp == null)\r\n tmp = current.getPrivate(part.prop);\r\n if (tmp == null)\r\n tmp = getCustomDataValue(current, part.prop);\r\n if (tmp == null)\r\n tmp = current[part.prop];\r\n current = tmp;\r\n }\r\n else if (current.get) {\r\n let tmp = current.get(part.prop);\r\n if (tmp == null)\r\n tmp = current[part.prop];\r\n current = tmp;\r\n }\r\n else {\r\n current = current[part.prop];\r\n }\r\n if (current == null) {\r\n // Not set, return undefined\r\n return;\r\n }\r\n }\r\n else {\r\n // Method\r\n switch (part.method) {\r\n case \"formatNumber\":\r\n let numberValue = $type.toNumber(current);\r\n if (numberValue != null) {\r\n current = target.getNumberFormatter().format(numberValue, format || part.params[0] || undefined);\r\n formatApplied = true;\r\n }\r\n break;\r\n case \"formatDate\":\r\n let dateValue = $type.toDate(current);\r\n if (!$type.isDate(dateValue) || $type.isNaN(dateValue.getTime())) {\r\n // Was not able to get date out of value, quitting and letting\r\n // calling method try another value\r\n return;\r\n }\r\n if (dateValue != null) {\r\n current = target.getDateFormatter().format(dateValue, format || part.params[0] || undefined);\r\n formatApplied = true;\r\n }\r\n break;\r\n case \"formatDuration\":\r\n let durationValue = $type.toNumber(current);\r\n if (durationValue != null) {\r\n current = target.getDurationFormatter().format(durationValue, format || part.params[0] || undefined, part.params[1] || undefined);\r\n formatApplied = true;\r\n }\r\n break;\r\n case \"urlEncode\":\r\n case \"encodeURIComponent\":\r\n current = encodeURIComponent(current);\r\n break;\r\n default:\r\n if (current[part.method]) {\r\n current[part.method].apply(object, part.params);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n // Apply default format if it wasn't applied explicitly\r\n if (!formatApplied) {\r\n let formatParts = [{\r\n method: \"\",\r\n params: format\r\n }];\r\n if (format == null) {\r\n // Format is not set\r\n // Determine from the type of the value\r\n if ($type.isNumber(current)) {\r\n formatParts[0].method = \"formatNumber\";\r\n formatParts[0].params = \"\";\r\n }\r\n else if ($type.isDate(current)) {\r\n formatParts[0].method = \"formatDate\";\r\n formatParts[0].params = \"\";\r\n }\r\n }\r\n else {\r\n // Format set\r\n // Try to determine formatter based on the format\r\n let formatterType = $utils.getFormat(format);\r\n // format\r\n if (formatterType === \"number\") {\r\n formatParts[0].method = \"formatNumber\";\r\n }\r\n else if (formatterType === \"date\") {\r\n formatParts[0].method = \"formatDate\";\r\n }\r\n else if (formatterType === \"duration\") {\r\n formatParts[0].method = \"formatDuration\";\r\n }\r\n }\r\n // Apply format\r\n if (formatParts[0].method) {\r\n current = getTagValueFromObject(target, formatParts, current);\r\n }\r\n }\r\n return current;\r\n}\r\n//# sourceMappingURL=PopulateString.js.map","import { Children } from \"../util/Children\";\r\nimport { Percent } from \"../util/Percent\";\r\nimport { Sprite } from \"./Sprite\";\r\nimport { Rectangle } from \"./Rectangle\";\r\nimport { HorizontalLayout } from \"./HorizontalLayout\";\r\nimport { VerticalLayout } from \"./VerticalLayout\";\r\nimport { GridLayout } from \"./GridLayout\";\r\nimport { populateString } from \"../util/PopulateString\";\r\nimport * as $array from \"../util/Array\";\r\nimport * as $type from \"../util/Type\";\r\nimport * as $utils from \"../util/Utils\";\r\n/**\r\n * A basic element that can have child elements, maintain their layout, and\r\n * have a background.\r\n *\r\n * It can have any [[Sprite]] element as a child, from very basic shapes, to\r\n * full-fledged charts.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/} for more info\r\n * @important\r\n */\r\nexport class Container extends Sprite {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_display\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._root._renderer.makeContainer()\r\n });\r\n Object.defineProperty(this, \"_childrenDisplay\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._root._renderer.makeContainer()\r\n });\r\n /**\r\n * List of Container's child elements.\r\n */\r\n Object.defineProperty(this, \"children\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new Children(this)\r\n });\r\n Object.defineProperty(this, \"_percentageSizeChildren\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_percentagePositionChildren\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_prevWidth\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_prevHeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_contentWidth\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_contentHeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_contentMask\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_vsbd0\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_vsbd1\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _afterNew() {\r\n super._afterNew();\r\n this._display.addChild(this._childrenDisplay);\r\n }\r\n _dispose() {\r\n $array.eachReverse(this.allChildren(), (child) => {\r\n child.dispose();\r\n });\r\n if (this.getPrivate(\"htmlElement\")) {\r\n this._root._removeHTMLContent(this);\r\n }\r\n super._dispose();\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this.isDirty(\"interactiveChildren\")) {\r\n this._display.interactiveChildren = this.get(\"interactiveChildren\", false);\r\n }\r\n if (this.isDirty(\"layout\")) {\r\n this._prevWidth = 0;\r\n this._prevHeight = 0;\r\n this.markDirtyBounds();\r\n if (this._prevSettings.layout) {\r\n this.children.each((child) => {\r\n child.removePrivate(\"x\");\r\n child.removePrivate(\"y\");\r\n });\r\n }\r\n }\r\n if (this.isDirty(\"paddingTop\") || this.isDirty(\"paddingBottom\") || this.isDirty(\"paddingLeft\") || this.isDirty(\"paddingRight\")) {\r\n this.children.each((child) => {\r\n child.markDirtyPosition();\r\n });\r\n }\r\n if (this.isDirty(\"maskContent\")) {\r\n const childrenDisplay = this._childrenDisplay;\r\n let contentMask = this._contentMask;\r\n if (this.get(\"maskContent\")) {\r\n if (!contentMask) {\r\n contentMask = Rectangle.new(this._root, {\r\n x: -.5,\r\n y: -.5,\r\n width: this.width() + 1,\r\n height: this.height() + 1\r\n });\r\n this._contentMask = contentMask;\r\n childrenDisplay.addChildAt(contentMask._display, 0);\r\n childrenDisplay.mask = contentMask._display;\r\n }\r\n }\r\n else {\r\n if (contentMask) {\r\n childrenDisplay.removeChild(contentMask._display);\r\n childrenDisplay.mask = null;\r\n contentMask.dispose();\r\n this._contentMask = undefined;\r\n }\r\n }\r\n }\r\n }\r\n _updateSize() {\r\n super._updateSize();\r\n $array.each(this._percentageSizeChildren, (child) => {\r\n child._updateSize();\r\n });\r\n $array.each(this._percentagePositionChildren, (child) => {\r\n child.markDirtyPosition();\r\n child._updateSize();\r\n });\r\n this.updateBackground();\r\n }\r\n updateBackground() {\r\n const background = this.get(\"background\");\r\n let bounds = this._localBounds;\r\n if (bounds && !this.isHidden()) {\r\n let x = bounds.left;\r\n let y = bounds.top;\r\n let w = bounds.right - x;\r\n let h = bounds.bottom - y;\r\n let maxWidth = this.get(\"maxWidth\");\r\n let maxHeight = this.get(\"maxHeight\");\r\n if (maxHeight) {\r\n if (h > maxHeight) {\r\n h = maxHeight;\r\n }\r\n }\r\n if (maxWidth) {\r\n if (w > maxWidth) {\r\n w = maxWidth;\r\n }\r\n }\r\n let width = this.width();\r\n let height = this.height();\r\n if (background) {\r\n background.setAll({ width: w, height: h, x: x, y: y });\r\n if (this._display.interactive) {\r\n background._display.interactive = true;\r\n }\r\n }\r\n const contentMask = this._contentMask;\r\n if (contentMask) {\r\n contentMask.setAll({ width: width + 1, height: height + 1 });\r\n }\r\n const verticalScrollbar = this.get(\"verticalScrollbar\");\r\n if (verticalScrollbar) {\r\n verticalScrollbar.set(\"height\", height);\r\n verticalScrollbar.set(\"x\", width - verticalScrollbar.width() - verticalScrollbar.get(\"marginRight\", 0));\r\n verticalScrollbar.set(\"end\", verticalScrollbar.get(\"start\", 0) + height / this._contentHeight);\r\n const bg = verticalScrollbar.get(\"background\");\r\n if (bg) {\r\n bg.setAll({ width: verticalScrollbar.width(), height: height });\r\n }\r\n let visible = true;\r\n if (this._contentHeight <= height) {\r\n visible = false;\r\n }\r\n verticalScrollbar.setPrivate(\"visible\", visible);\r\n }\r\n }\r\n }\r\n _applyThemes(force = false) {\r\n if (super._applyThemes(force)) {\r\n this.eachChildren((child) => {\r\n child._applyThemes(force);\r\n });\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n _applyState(name) {\r\n super._applyState(name);\r\n if (this.get(\"setStateOnChildren\")) {\r\n this.eachChildren((child) => {\r\n child.states.apply(name);\r\n });\r\n }\r\n }\r\n _applyStateAnimated(name, duration) {\r\n super._applyStateAnimated(name, duration);\r\n if (this.get(\"setStateOnChildren\")) {\r\n this.eachChildren((child) => {\r\n child.states.applyAnimate(name, duration);\r\n });\r\n }\r\n }\r\n /**\r\n * Returns container's inner width (width without padding) in pixels.\r\n *\r\n * @return Inner width (px)\r\n */\r\n innerWidth() {\r\n return this.width() - this.get(\"paddingRight\", 0) - this.get(\"paddingLeft\", 0);\r\n }\r\n /**\r\n * Returns container's inner height (height without padding) in pixels.\r\n *\r\n * @return Inner height (px)\r\n */\r\n innerHeight() {\r\n return this.height() - this.get(\"paddingTop\", 0) - this.get(\"paddingBottom\", 0);\r\n }\r\n _getBounds() {\r\n if (!this.get(\"html\")) {\r\n let width = this.get(\"width\");\r\n let height = this.get(\"height\");\r\n let pWidth = this.getPrivate(\"width\");\r\n let pHeight = this.getPrivate(\"height\");\r\n let bounds = {\r\n left: 0,\r\n top: 0,\r\n right: this.width(),\r\n bottom: this.height()\r\n };\r\n let layout = this.get(\"layout\");\r\n let horizontal = false;\r\n let vertical = false;\r\n if (layout instanceof HorizontalLayout || layout instanceof GridLayout) {\r\n horizontal = true;\r\n }\r\n if (layout instanceof VerticalLayout) {\r\n vertical = true;\r\n }\r\n if ((width != null || pWidth != null) && (height != null || pHeight != null) && !this.get(\"verticalScrollbar\")) {\r\n // void\r\n }\r\n else {\r\n let m = Number.MAX_VALUE;\r\n let l = m;\r\n let r = -m;\r\n let t = m;\r\n let b = -m;\r\n const paddingLeft = this.get(\"paddingLeft\", 0);\r\n const paddingTop = this.get(\"paddingTop\", 0);\r\n const paddingRight = this.get(\"paddingRight\", 0);\r\n const paddingBottom = this.get(\"paddingBottom\", 0);\r\n this.children.each((child) => {\r\n if (child.get(\"position\") != \"absolute\" && child.get(\"isMeasured\")) {\r\n let childBounds = child.adjustedLocalBounds();\r\n let childX = child.x();\r\n let childY = child.y();\r\n let cl = childX + childBounds.left;\r\n let cr = childX + childBounds.right;\r\n let ct = childY + childBounds.top;\r\n let cb = childY + childBounds.bottom;\r\n if (horizontal) {\r\n cl -= child.get(\"marginLeft\", 0);\r\n cr += child.get(\"marginRight\", 0);\r\n }\r\n if (vertical) {\r\n ct -= child.get(\"marginTop\", 0);\r\n cb += child.get(\"marginBottom\", 0);\r\n }\r\n if (cl < l) {\r\n l = cl;\r\n }\r\n if (cr > r) {\r\n r = cr;\r\n }\r\n if (ct < t) {\r\n t = ct;\r\n }\r\n if (cb > b) {\r\n b = cb;\r\n }\r\n }\r\n });\r\n if (l == m) {\r\n l = 0;\r\n }\r\n if (r == -m) {\r\n r = 0;\r\n }\r\n if (t == m) {\r\n t = 0;\r\n }\r\n if (b == -m) {\r\n b = 0;\r\n }\r\n bounds.left = l - paddingLeft;\r\n bounds.top = t - paddingTop;\r\n bounds.right = r + paddingRight;\r\n bounds.bottom = b + paddingBottom;\r\n const minWidth = this.get(\"minWidth\");\r\n if ($type.isNumber(minWidth) && minWidth > 0) {\r\n if (bounds.right - bounds.left < minWidth) {\r\n if (bounds.right >= minWidth) {\r\n bounds.left = bounds.right - minWidth;\r\n }\r\n else {\r\n bounds.right = bounds.left + minWidth;\r\n }\r\n }\r\n }\r\n const minHeight = this.get(\"minHeight\");\r\n if ($type.isNumber(minHeight) && minHeight > 0) {\r\n if (bounds.bottom - bounds.top < minHeight) {\r\n if (bounds.bottom >= minHeight) {\r\n bounds.top = bounds.bottom - minHeight;\r\n }\r\n else {\r\n bounds.bottom = bounds.top + minHeight;\r\n }\r\n }\r\n }\r\n }\r\n this._contentWidth = bounds.right - bounds.left;\r\n this._contentHeight = bounds.bottom - bounds.top;\r\n if ($type.isNumber(width)) {\r\n bounds.left = 0;\r\n bounds.right = width;\r\n }\r\n if ($type.isNumber(pWidth)) {\r\n bounds.left = 0;\r\n bounds.right = pWidth;\r\n }\r\n if ($type.isNumber(height)) {\r\n bounds.top = 0;\r\n bounds.bottom = height;\r\n }\r\n if ($type.isNumber(pHeight)) {\r\n bounds.top = 0;\r\n bounds.bottom = pHeight;\r\n }\r\n this._localBounds = bounds;\r\n }\r\n else {\r\n let bounds = this._localBounds;\r\n if (bounds) {\r\n this._contentWidth = bounds.right - bounds.left;\r\n this._contentHeight = bounds.bottom - bounds.top;\r\n }\r\n }\r\n }\r\n _updateBounds() {\r\n const layout = this.get(\"layout\");\r\n if (layout) {\r\n layout.updateContainer(this);\r\n }\r\n super._updateBounds();\r\n this.updateBackground();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirty() {\r\n super.markDirty();\r\n this._root._addDirtyParent(this);\r\n }\r\n _prepareChildren() {\r\n const innerWidth = this.innerWidth();\r\n const innerHeight = this.innerHeight();\r\n if (innerWidth != this._prevWidth || innerHeight != this._prevHeight) {\r\n let layout = this.get(\"layout\");\r\n let horizontal = false;\r\n let vertical = false;\r\n if (layout) {\r\n if (layout instanceof HorizontalLayout || layout instanceof GridLayout) {\r\n horizontal = true;\r\n }\r\n if (layout instanceof VerticalLayout) {\r\n vertical = true;\r\n }\r\n }\r\n $array.each(this._percentageSizeChildren, (child) => {\r\n if (!horizontal) {\r\n let width = child.get(\"width\");\r\n if (width instanceof Percent) {\r\n child.setPrivate(\"width\", width.value * innerWidth);\r\n }\r\n }\r\n if (!vertical) {\r\n let height = child.get(\"height\");\r\n if (height instanceof Percent) {\r\n child.setPrivate(\"height\", height.value * innerHeight);\r\n }\r\n }\r\n });\r\n $array.each(this._percentagePositionChildren, (child) => {\r\n child.markDirtyPosition();\r\n child.markDirtyBounds();\r\n });\r\n this._prevWidth = innerWidth;\r\n this._prevHeight = innerHeight;\r\n this._sizeDirty = true;\r\n this.updateBackground();\r\n }\r\n this._handleStates();\r\n }\r\n _updateHTMLContent() {\r\n const html = this.get(\"html\");\r\n if (html && html !== \"\") {\r\n this._root._setHTMLContent(this, populateString(this, this.get(\"html\", \"\")));\r\n }\r\n else {\r\n this._root._removeHTMLContent(this);\r\n }\r\n this._root._positionHTMLElement(this);\r\n }\r\n /**\r\n * If scrolling is enabled on the Container (by adding `verticalScrollbar`)\r\n * the Container will scroll in such way so that target element becomes\r\n * visible if its currently outside of view.\r\n *\r\n * @param child Target child\r\n * @since 5.10.5\r\n */\r\n scrollToChild(child) {\r\n const verticalScrollbar = this.get(\"verticalScrollbar\");\r\n if (verticalScrollbar) {\r\n let y = child.y();\r\n let h = this.innerHeight();\r\n let ch = child.height();\r\n let contentH = this._contentHeight;\r\n let max = 1 - (h - ch / 2) / contentH;\r\n if (y + ch * .7 + this._childrenDisplay.y > h || y - ch * .3 + this._childrenDisplay.y < 0) {\r\n let pos = Math.max(0, Math.min(max, (y - ch / 2) / contentH));\r\n verticalScrollbar.animate({ key: \"start\", to: pos, duration: verticalScrollbar.get(\"animationDuration\", 0), easing: verticalScrollbar.get(\"animationEasing\") });\r\n }\r\n }\r\n }\r\n _updateChildren() {\r\n if (this.isDirty(\"html\")) {\r\n this._updateHTMLContent();\r\n }\r\n if (this.isDirty(\"verticalScrollbar\")) {\r\n const verticalScrollbar = this.get(\"verticalScrollbar\");\r\n if (verticalScrollbar) {\r\n verticalScrollbar._setParent(this);\r\n verticalScrollbar.startGrip.setPrivate(\"visible\", false);\r\n verticalScrollbar.endGrip.setPrivate(\"visible\", false);\r\n this.set(\"maskContent\", true);\r\n this.set(\"paddingRight\", verticalScrollbar.width() + verticalScrollbar.get(\"marginRight\", 0) + verticalScrollbar.get(\"marginLeft\", 0));\r\n let background = this.get(\"background\");\r\n if (!background) {\r\n background = this.set(\"background\", Rectangle.new(this._root, {\r\n themeTags: [\"background\"],\r\n fillOpacity: 0,\r\n fill: this._root.interfaceColors.get(\"alternativeBackground\")\r\n }));\r\n }\r\n this._vsbd0 = this.events.on(\"wheel\", (event) => {\r\n const wheelEvent = event.originalEvent;\r\n // Ignore wheel event if it is happening on a non-chart element, e.g. if\r\n // some page element is over the chart.\r\n if ($utils.isLocalEvent(wheelEvent, this)) {\r\n wheelEvent.preventDefault();\r\n }\r\n else {\r\n return;\r\n }\r\n let shiftY = wheelEvent.deltaY / 5000;\r\n const start = verticalScrollbar.get(\"start\", 0);\r\n const end = verticalScrollbar.get(\"end\", 1);\r\n if (start + shiftY <= 0) {\r\n shiftY = -start;\r\n }\r\n if (end + shiftY >= 1) {\r\n shiftY = 1 - end;\r\n }\r\n if (start + shiftY >= 0 && end + shiftY <= 1) {\r\n verticalScrollbar.set(\"start\", start + shiftY);\r\n verticalScrollbar.set(\"end\", end + shiftY);\r\n }\r\n });\r\n this._disposers.push(this._vsbd0);\r\n this._vsbd1 = verticalScrollbar.events.on(\"rangechanged\", () => {\r\n let h = this._contentHeight;\r\n const childrenDisplay = this._childrenDisplay;\r\n const contentMask = this._contentMask;\r\n childrenDisplay.y = -verticalScrollbar.get(\"start\", 0) * h;\r\n childrenDisplay.markDirtyLayer();\r\n if (contentMask) {\r\n contentMask._display.y = -childrenDisplay.y;\r\n childrenDisplay.mask = contentMask._display;\r\n }\r\n });\r\n this._disposers.push(this._vsbd1);\r\n this._display.addChild(verticalScrollbar._display);\r\n }\r\n else {\r\n const previous = this._prevSettings.verticalScrollbar;\r\n if (previous) {\r\n this._display.removeChild(previous._display);\r\n if (this._vsbd0) {\r\n this._vsbd0.dispose();\r\n }\r\n if (this._vsbd1) {\r\n this._vsbd1.dispose();\r\n }\r\n const childrenDisplay = this._childrenDisplay;\r\n childrenDisplay.y = 0;\r\n this.setPrivate(\"height\", undefined);\r\n this.set(\"maskContent\", false);\r\n this.set(\"paddingRight\", undefined);\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"background\")) {\r\n // TODO maybe this should dispose ?\r\n const previous = this._prevSettings[\"background\"];\r\n if (previous) {\r\n this._display.removeChild(previous._display);\r\n }\r\n const background = this.get(\"background\");\r\n if (background instanceof Sprite) {\r\n background.set(\"isMeasured\", false);\r\n background._setParent(this);\r\n this._display.addChildAt(background._display, 0);\r\n }\r\n }\r\n if (this.isDirty(\"mask\")) {\r\n const mask = this.get(\"mask\");\r\n const previous = this._prevSettings[\"mask\"];\r\n if (previous) {\r\n this._display.removeChild(previous._display);\r\n if (previous != mask) {\r\n previous.dispose();\r\n }\r\n }\r\n if (mask) {\r\n const parent = mask.parent;\r\n if (parent) {\r\n parent.children.removeValue(mask);\r\n }\r\n mask._setParent(this);\r\n this._display.addChildAt(mask._display, 0);\r\n this._childrenDisplay.mask = mask._display;\r\n }\r\n }\r\n }\r\n _processTemplateField() {\r\n super._processTemplateField();\r\n this.children.each((child) => {\r\n child._processTemplateField();\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n walkChildren(f) {\r\n this.children.each((child) => {\r\n if (child instanceof Container) {\r\n child.walkChildren(f);\r\n }\r\n f(child);\r\n });\r\n }\r\n eachChildren(f) {\r\n const background = this.get(\"background\");\r\n if (background) {\r\n f(background);\r\n }\r\n const verticalScrollbar = this.get(\"verticalScrollbar\");\r\n if (verticalScrollbar) {\r\n f(verticalScrollbar);\r\n }\r\n const mask = this.get(\"mask\");\r\n if (mask) {\r\n f(mask);\r\n }\r\n this.children.values.forEach((child) => {\r\n f(child);\r\n });\r\n }\r\n allChildren() {\r\n const output = [];\r\n this.eachChildren((x) => {\r\n output.push(x);\r\n });\r\n return output;\r\n }\r\n _setDataItem(dataItem) {\r\n const updated = (dataItem !== this._dataItem);\r\n super._setDataItem(dataItem);\r\n const html = this.get(\"html\", \"\");\r\n if (html && html !== \"\" && updated) {\r\n this._root._setHTMLContent(this, populateString(this, html));\r\n }\r\n }\r\n}\r\nObject.defineProperty(Container, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Container\"\r\n});\r\nObject.defineProperty(Container, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Sprite.classNames.concat([Container.className])\r\n});\r\n//# sourceMappingURL=Container.js.map","import { Sprite } from \"./Sprite\";\r\nimport { populateString } from \"../util/PopulateString\";\r\nimport * as $array from \"../util/Array\";\r\nimport * as $utils from \"../util/Utils\";\r\nimport { Disposer } from \"../util/Disposer\";\r\n/**\r\n * @ignore Text is an internal class. Use Label instead.\r\n */\r\nexport class Text extends Sprite {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"textStyle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._root._renderer.makeTextStyle()\r\n });\r\n Object.defineProperty(this, \"_display\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._root._renderer.makeText(\"\", this.textStyle)\r\n });\r\n Object.defineProperty(this, \"_textStyles\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: [\r\n \"textAlign\",\r\n \"fontFamily\",\r\n \"fontSize\",\r\n \"fontStyle\",\r\n \"fontWeight\",\r\n \"fontStyle\",\r\n \"fontVariant\",\r\n \"textDecoration\",\r\n \"shadowColor\",\r\n \"shadowBlur\",\r\n \"shadowOffsetX\",\r\n \"shadowOffsetY\",\r\n \"shadowOpacity\",\r\n // \"leading\",\r\n // \"letterSpacing\",\r\n \"lineHeight\",\r\n \"baselineRatio\",\r\n //\"padding\",\r\n // \"stroke\",\r\n // \"strokeThickness\",\r\n // \"trim\",\r\n // \"wordWrap\",\r\n \"direction\",\r\n \"textBaseline\",\r\n \"oversizedBehavior\",\r\n \"breakWords\",\r\n \"ellipsis\",\r\n \"minScale\",\r\n \"maxChars\"\r\n ]\r\n });\r\n Object.defineProperty(this, \"_originalScale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _updateBounds() {\r\n if (!this.get(\"text\")) {\r\n let newBounds = {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0,\r\n };\r\n this._adjustedLocalBounds = newBounds;\r\n }\r\n else {\r\n super._updateBounds();\r\n let fillGradient = this.get(\"fillGradient\");\r\n if (fillGradient) {\r\n this._display.style.fill = fillGradient.getFill(this);\r\n }\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n this._display.clear();\r\n let textStyle = this.textStyle;\r\n if (this.isDirty(\"opacity\")) {\r\n let opacity = this.get(\"opacity\", 1);\r\n this._display.alpha = opacity;\r\n }\r\n if (this.isDirty(\"text\") || this.isDirty(\"populateText\")) {\r\n this._display.text = this._getText();\r\n this.markDirtyBounds();\r\n if (this.get(\"role\") == \"tooltip\") {\r\n this._root.updateTooltip(this);\r\n }\r\n }\r\n if (this.isPrivateDirty(\"tooltipElement\")) {\r\n const tooltipElement = this.getPrivate(\"tooltipElement\");\r\n if (tooltipElement) {\r\n this._disposers.push(new Disposer(() => {\r\n this._root._removeTooltipElement(this);\r\n }));\r\n }\r\n }\r\n if (this.isDirty(\"width\")) {\r\n textStyle.wordWrapWidth = this.width();\r\n this.markDirtyBounds();\r\n }\r\n if (this.isDirty(\"oversizedBehavior\")) {\r\n textStyle.oversizedBehavior = this.get(\"oversizedBehavior\", \"none\");\r\n this.markDirtyBounds();\r\n }\r\n if (this.isDirty(\"breakWords\")) {\r\n textStyle.breakWords = this.get(\"breakWords\", false);\r\n this.markDirtyBounds();\r\n }\r\n if (this.isDirty(\"ellipsis\")) {\r\n textStyle.ellipsis = this.get(\"ellipsis\");\r\n this.markDirtyBounds();\r\n }\r\n if (this.isDirty(\"ignoreFormatting\")) {\r\n textStyle.ignoreFormatting = this.get(\"ignoreFormatting\", false);\r\n this.markDirtyBounds();\r\n }\r\n if (this.isDirty(\"minScale\")) {\r\n textStyle.minScale = this.get(\"minScale\", 0);\r\n this.markDirtyBounds();\r\n }\r\n if (this.isDirty(\"fill\") || this.isDirty(\"fillGradient\")) {\r\n const fill = this.get(\"fill\");\r\n const fillGradient = this.get(\"fillGradient\");\r\n const fillOpacity = this.get(\"fillOpacity\");\r\n if (fillGradient) {\r\n if (fill) {\r\n const stops = fillGradient.get(\"stops\", []);\r\n if (stops.length) {\r\n $array.each(stops, (stop) => {\r\n if ((!stop.color || stop.colorInherited) && fill) {\r\n stop.color = fill;\r\n stop.colorInherited = true;\r\n }\r\n if (stop.opacity == null || stop.opacityInherited) {\r\n stop.opacity = fillOpacity;\r\n stop.opacityInherited = true;\r\n }\r\n });\r\n }\r\n }\r\n textStyle.fill = fillGradient.getFill(this);\r\n }\r\n else if (fill) {\r\n textStyle.fill = fill;\r\n }\r\n }\r\n if (this.isDirty(\"fillOpacity\")) {\r\n let fillOpacity = this.get(\"fillOpacity\", 1);\r\n if (fillOpacity) {\r\n textStyle.fillOpacity = fillOpacity;\r\n }\r\n }\r\n if (this.isDirty(\"maxWidth\") || this.isPrivateDirty(\"maxWidth\")) {\r\n textStyle.maxWidth = this.get(\"maxWidth\", this.getPrivate(\"maxWidth\"));\r\n this.markDirtyBounds();\r\n }\r\n if (this.isDirty(\"maxHeight\") || this.isPrivateDirty(\"maxHeight\")) {\r\n textStyle.maxHeight = this.get(\"maxHeight\", this.getPrivate(\"maxHeight\"));\r\n this.markDirtyBounds();\r\n }\r\n $array.each(this._textStyles, (styleName) => {\r\n if (this._dirty[styleName]) {\r\n textStyle[styleName] = this.get(styleName);\r\n this.markDirtyBounds();\r\n }\r\n });\r\n textStyle[\"fontSize\"] = this.get(\"fontSize\");\r\n textStyle[\"fontFamily\"] = this.get(\"fontFamily\");\r\n this._display.style = textStyle;\r\n if (this.isDirty(\"role\") && this.get(\"role\") == \"tooltip\") {\r\n this._root.updateTooltip(this);\r\n }\r\n }\r\n _getText() {\r\n let text = this.get(\"text\", \"\");\r\n if (this.get(\"maxChars\")) {\r\n text = $utils.truncateTextWithEllipsis(text, this.get(\"maxChars\", 100000000), this.get(\"breakWords\"), this.get(\"ellipsis\"));\r\n }\r\n return this.get(\"populateText\") ? populateString(this, text) : text;\r\n }\r\n _getAccessibleText() {\r\n const ariaLabel = this.get(\"ariaLabel\");\r\n if (ariaLabel !== undefined) {\r\n return this.get(\"populateText\") ? populateString(this, ariaLabel) : ariaLabel;\r\n }\r\n return this._getText();\r\n }\r\n /**\r\n * Forces the text to be re-evaluated and re-populated.\r\n */\r\n markDirtyText() {\r\n this._display.text = this._getText();\r\n if (this.get(\"role\") == \"tooltip\") {\r\n this._root.updateTooltip(this);\r\n }\r\n this.markDirtyBounds();\r\n this.markDirty();\r\n }\r\n _setDataItem(dataItem) {\r\n super._setDataItem(dataItem);\r\n if (this.get(\"populateText\")) {\r\n this.markDirtyText();\r\n }\r\n }\r\n getNumberFormatter() {\r\n if (this.parent) {\r\n return this.parent.getNumberFormatter();\r\n }\r\n else {\r\n return super.getNumberFormatter();\r\n }\r\n }\r\n getDateFormatter() {\r\n if (this.parent) {\r\n return this.parent.getDateFormatter();\r\n }\r\n else {\r\n return super.getDateFormatter();\r\n }\r\n }\r\n getDurationFormatter() {\r\n if (this.parent) {\r\n return this.parent.getDurationFormatter();\r\n }\r\n else {\r\n return super.getDurationFormatter();\r\n }\r\n }\r\n}\r\nObject.defineProperty(Text, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Text\"\r\n});\r\nObject.defineProperty(Text, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Sprite.classNames.concat([Text.className])\r\n});\r\n//# sourceMappingURL=Text.js.map","/** @ignore */ /** */\r\nimport * as $array from \"./Array\";\r\nimport * as $utils from \"./Utils\";\r\n/**\r\n * @ignore\r\n */\r\nclass Native {\r\n constructor() {\r\n Object.defineProperty(this, \"_observer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_targets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n this._observer = new ResizeObserver((entries) => {\r\n $array.each(entries, (entry) => {\r\n $array.each(this._targets, (x) => {\r\n if (x.target === entry.target) {\r\n x.callback();\r\n }\r\n });\r\n });\r\n });\r\n }\r\n addTarget(target, callback) {\r\n this._observer.observe(target, { box: \"border-box\" });\r\n this._targets.push({ target, callback });\r\n }\r\n removeTarget(target) {\r\n this._observer.unobserve(target);\r\n $array.keepIf(this._targets, (x) => {\r\n return x.target !== target;\r\n });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass Raf {\r\n constructor() {\r\n Object.defineProperty(this, \"_timer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(this, \"_targets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n }\r\n addTarget(target, callback) {\r\n if (this._timer === null) {\r\n let lastTime = null;\r\n const loop = () => {\r\n const currentTime = Date.now();\r\n if (lastTime === null || currentTime > (lastTime + Raf.delay)) {\r\n lastTime = currentTime;\r\n $array.each(this._targets, (x) => {\r\n let newSize = x.target.getBoundingClientRect();\r\n if (newSize.width !== x.size.width || newSize.height !== x.size.height) {\r\n x.size = newSize;\r\n x.callback();\r\n }\r\n });\r\n }\r\n if (this._targets.length === 0) {\r\n this._timer = null;\r\n }\r\n else {\r\n this._timer = requestAnimationFrame(loop);\r\n }\r\n };\r\n this._timer = requestAnimationFrame(loop);\r\n }\r\n // We start off with fake bounds so that sensor always kicks in\r\n let size = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0, x: 0, y: 0 };\r\n this._targets.push({ target, callback, size });\r\n }\r\n removeTarget(target) {\r\n $array.keepIf(this._targets, (x) => {\r\n return x.target !== target;\r\n });\r\n if (this._targets.length === 0) {\r\n if (this._timer !== null) {\r\n cancelAnimationFrame(this._timer);\r\n this._timer = null;\r\n }\r\n }\r\n }\r\n}\r\nObject.defineProperty(Raf, \"delay\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 200\r\n});\r\n/**\r\n * @ignore\r\n */\r\nlet observer = null;\r\n/**\r\n * @ignore\r\n */\r\nfunction makeSensor() {\r\n if (observer === null) {\r\n if (typeof ResizeObserver !== \"undefined\") {\r\n observer = new Native();\r\n }\r\n else {\r\n observer = new Raf();\r\n }\r\n }\r\n return observer;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class ResizeSensor {\r\n constructor(element, callback) {\r\n Object.defineProperty(this, \"_sensor\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_element\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_listener\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_disposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n this._sensor = makeSensor();\r\n this._element = element;\r\n // This is needed because we need to know when the window is zoomed\r\n this._listener = $utils.onZoom(callback);\r\n this._sensor.addTarget(element, callback);\r\n }\r\n isDisposed() {\r\n return this._disposed;\r\n }\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n this._sensor.removeTarget(this._element);\r\n this._listener.dispose();\r\n }\r\n }\r\n get sensor() {\r\n return this._sensor;\r\n }\r\n}\r\n//# sourceMappingURL=ResizeSensor.js.map","import { Entity } from \"./Entity\";\r\n/**\r\n * Presets for common UI elements.\r\n */\r\nexport class InterfaceColors extends Entity {\r\n}\r\nObject.defineProperty(InterfaceColors, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"InterfaceColors\"\r\n});\r\nObject.defineProperty(InterfaceColors, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Entity.classNames.concat([InterfaceColors.className])\r\n});\r\n//# sourceMappingURL=InterfaceColors.js.map","import { Text } from \"../render/Text\";\r\nimport { p50, p100 } from \"../util/Percent\";\r\nimport { Container } from \"./Container\";\r\nimport * as $array from \"../../core/util/Array\";\r\nimport * as $type from \"../../core/util/Type\";\r\n/**\r\n * Creates a label with support for in-line styling and data bindings.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/labels/} for more info\r\n */\r\nexport class Label extends Container {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_text\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_textKeys\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: [\r\n \"text\",\r\n \"fill\",\r\n \"fillGradient\",\r\n \"fillOpacity\",\r\n \"textAlign\",\r\n \"fontFamily\",\r\n \"fontSize\",\r\n \"fontStyle\",\r\n \"fontWeight\",\r\n \"fontStyle\",\r\n \"fontVariant\",\r\n \"textDecoration\",\r\n \"shadowColor\",\r\n \"shadowBlur\",\r\n \"shadowOffsetX\",\r\n \"shadowOffsetY\",\r\n \"shadowOpacity\",\r\n // \"leading\",\r\n // \"letterSpacing\",\r\n \"lineHeight\",\r\n \"baselineRatio\",\r\n //\"padding\",\r\n // \"stroke\",\r\n // \"strokeThickness\",\r\n // \"trim\",\r\n // \"wordWrap\",\r\n \"direction\",\r\n \"textBaseline\",\r\n \"oversizedBehavior\",\r\n \"breakWords\",\r\n \"ellipsis\",\r\n \"minScale\",\r\n \"populateText\",\r\n \"role\",\r\n \"ignoreFormatting\",\r\n \"maxChars\",\r\n \"ariaLabel\"\r\n ]\r\n });\r\n }\r\n /**\r\n * @ignore Text is not to be used directly\r\n */\r\n get text() {\r\n return this._text;\r\n }\r\n _afterNew() {\r\n super._afterNew();\r\n this._makeText();\r\n $array.each(this._textKeys, (property) => {\r\n const propValue = this.get(property);\r\n if (propValue != undefined) {\r\n this._text.set(property, propValue);\r\n }\r\n });\r\n if (this.get(\"html\", \"\") !== \"\") {\r\n this._text.set(\"text\", \"\");\r\n }\r\n this.onPrivate(\"maxWidth\", () => {\r\n this._setMaxDimentions();\r\n });\r\n this.onPrivate(\"maxHeight\", () => {\r\n this._setMaxDimentions();\r\n });\r\n }\r\n _makeText() {\r\n this._text = this.children.push(Text.new(this._root, {}));\r\n }\r\n _updateChildren() {\r\n super._updateChildren();\r\n const text = this._text;\r\n $array.each(this._textKeys, (property) => {\r\n this._text.set(property, this.get(property));\r\n });\r\n if (this.isDirty(\"maxWidth\") || this.isDirty(\"maxHeight\") || this.isDirty(\"rotation\")) {\r\n this._setMaxDimentions();\r\n }\r\n // Do not show regular text if HTML is used\r\n if (this.get(\"html\", \"\") !== \"\") {\r\n text.set(\"text\", \"\");\r\n }\r\n else {\r\n text.set(\"text\", this.get(\"text\"));\r\n this._maybeUpdateHTMLColor();\r\n }\r\n if (this.isDirty(\"fill\") || this.isDirty(\"fillGradient\")) {\r\n this._maybeUpdateHTMLColor();\r\n }\r\n if (this.isDirty(\"textAlign\") || this.isDirty(\"width\")) {\r\n const textAlign = this.get(\"textAlign\");\r\n let x;\r\n if (this.get(\"width\") != null) {\r\n if (textAlign == \"right\") {\r\n x = p100;\r\n }\r\n else if (textAlign == \"center\") {\r\n x = p50;\r\n }\r\n else {\r\n x = 0;\r\n }\r\n }\r\n else {\r\n if (textAlign == \"left\" || textAlign == \"start\") {\r\n x = this.get(\"paddingLeft\", 0);\r\n }\r\n else if (textAlign == \"right\" || textAlign == \"end\") {\r\n x = -this.get(\"paddingRight\", 0);\r\n }\r\n }\r\n text.set(\"x\", x);\r\n }\r\n const background = this.get(\"background\");\r\n if (background) {\r\n background.setPrivate(\"visible\", text._display.textVisible);\r\n }\r\n }\r\n _maybeUpdateHTMLColor() {\r\n const htmlElement = this.getPrivate(\"htmlElement\");\r\n if (htmlElement && this.get(\"fill\")) {\r\n htmlElement.style.color = this.get(\"fill\").toCSSHex();\r\n //@todo support gradient\r\n }\r\n }\r\n _setMaxDimentions() {\r\n const rotation = this.get(\"rotation\");\r\n const vertical = rotation == 90 || rotation == 270 || rotation == -90;\r\n const text = this._text;\r\n const maxWidth = this.get(\"maxWidth\", this.getPrivate(\"maxWidth\", Infinity));\r\n if ($type.isNumber(maxWidth)) {\r\n text.set(vertical ? \"maxHeight\" : \"maxWidth\", maxWidth - this.get(\"paddingLeft\", 0) - this.get(\"paddingRight\", 0));\r\n }\r\n else {\r\n text.set(vertical ? \"maxHeight\" : \"maxWidth\", undefined);\r\n }\r\n const maxHeight = this.get(\"maxHeight\", this.getPrivate(\"maxHeight\", Infinity));\r\n if ($type.isNumber(maxHeight)) {\r\n text.set(vertical ? \"maxWidth\" : \"maxHeight\", maxHeight - this.get(\"paddingTop\", 0) - this.get(\"paddingBottom\", 0));\r\n }\r\n else {\r\n text.set(vertical ? \"maxWidth\" : \"maxHeight\", undefined);\r\n }\r\n this.root.events.once(\"frameended\", () => {\r\n text.markDirtyBounds();\r\n });\r\n }\r\n _setDataItem(dataItem) {\r\n super._setDataItem(dataItem);\r\n this._markDirtyKey(\"text\");\r\n const text = this._text;\r\n if (text.get(\"populateText\")) {\r\n text.markDirtyText();\r\n }\r\n const html = this.get(\"html\");\r\n if (html && html !== \"\") {\r\n this._updateHTMLContent();\r\n }\r\n }\r\n /**\r\n * Returns text with populated placeholders and formatting if `populateText` is\r\n * set to `true`.\r\n *\r\n * @return Populated text\r\n */\r\n getText() {\r\n return this._text._getText();\r\n }\r\n /**\r\n * Returns \"aria-label\" text with populated placeholders and formatting\r\n * if `populateText` is set to `true`.\r\n *\r\n * @return Populated text\r\n */\r\n getAccessibleText() {\r\n return this._text._getAccessibleText();\r\n }\r\n}\r\nObject.defineProperty(Label, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Label\"\r\n});\r\nObject.defineProperty(Label, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.classNames.concat([Label.className])\r\n});\r\n//# sourceMappingURL=Label.js.map","import { Graphics } from \"./Graphics\";\r\nimport * as $math from \"../util/Math\";\r\n/**\r\n * Draws a rectangle with a pointer.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\r\nexport class PointedRectangle extends Graphics {\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"pointerBaseWidth\") || this.isDirty(\"cornerRadius\") || this.isDirty(\"pointerLength\") || this.isDirty(\"pointerX\") || this.isDirty(\"pointerY\") || this.isDirty(\"width\") || this.isDirty(\"height\")) {\r\n this._clear = true;\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this._clear) {\r\n this.markDirtyBounds();\r\n let w = this.width();\r\n let h = this.height();\r\n if (w > 0 && h > 0) {\r\n let cr = this.get(\"cornerRadius\", 8);\r\n cr = $math.fitToRange(cr, 0, Math.min(w / 2, h / 2));\r\n let x = this.get(\"pointerX\", 0);\r\n let y = this.get(\"pointerY\", 0);\r\n let bwh = this.get(\"pointerBaseWidth\", 15) / 2;\r\n // corner coordinates\r\n // top left\r\n let xtl = 0;\r\n let ytl = 0;\r\n // top right\r\n let xtr = w;\r\n let ytr = 0;\r\n // bottom right\r\n let xbr = w;\r\n let ybr = h;\r\n // bottom left\r\n let xbl = 0;\r\n let ybl = h;\r\n // find stem base side: http://$math.stackexchange.com/questions/274712/calculate-on-which-side-of-straign-line-is-dot-located\r\n // d=(x−x1)(y2−y1)−(y−y1)(x2−x1)\r\n let d1 = (x - xtl) * (ybr - ytl) - (y - ytl) * (xbr - xtl);\r\n let d2 = (x - xbl) * (ytr - ybl) - (y - ybl) * (xtr - xbl);\r\n const display = this._display;\r\n // top\r\n display.moveTo(cr, 0);\r\n if (d1 > 0 && d2 > 0) {\r\n let stemX = Math.round($math.fitToRange(x, cr + bwh, w - bwh - cr));\r\n y = $math.fitToRange(y, -Infinity, 0);\r\n display.lineTo(stemX - bwh, 0);\r\n display.lineTo(x, y);\r\n display.lineTo(stemX + bwh, 0);\r\n }\r\n display.lineTo(w - cr, 0);\r\n display.arcTo(w, 0, w, cr, cr);\r\n // right\r\n if (d1 > 0 && d2 < 0) {\r\n let stemY = Math.round($math.fitToRange(y, cr + bwh, h - bwh - cr));\r\n x = $math.fitToRange(x, w, Infinity);\r\n display.lineTo(w, cr);\r\n display.lineTo(w, Math.max(stemY - bwh, cr));\r\n display.lineTo(x, y);\r\n display.lineTo(w, stemY + bwh);\r\n }\r\n display.lineTo(w, h - cr);\r\n display.arcTo(w, h, w - cr, h, cr);\r\n // bottom\r\n if (d1 < 0 && d2 < 0) {\r\n let stemX = Math.round($math.fitToRange(x, cr + bwh, w - bwh - cr));\r\n y = $math.fitToRange(y, h, Infinity);\r\n display.lineTo(w - cr, h);\r\n display.lineTo(stemX + bwh, h);\r\n display.lineTo(x, y);\r\n display.lineTo(stemX - bwh, h);\r\n }\r\n display.lineTo(cr, h);\r\n display.arcTo(0, h, 0, h - cr, cr);\r\n // left\r\n if (d1 < 0 && d2 > 0) {\r\n let stemY = Math.round($math.fitToRange(y, cr + bwh, h - cr - bwh));\r\n x = $math.fitToRange(x, -Infinity, 0);\r\n display.lineTo(0, h - cr);\r\n display.lineTo(0, stemY + bwh);\r\n display.lineTo(x, y);\r\n display.lineTo(0, Math.max(stemY - bwh, cr));\r\n }\r\n display.lineTo(0, cr);\r\n display.arcTo(0, 0, cr, 0, cr);\r\n display.closePath();\r\n }\r\n }\r\n }\r\n}\r\nObject.defineProperty(PointedRectangle, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"PointedRectangle\"\r\n});\r\nObject.defineProperty(PointedRectangle, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Graphics.classNames.concat([PointedRectangle.className])\r\n});\r\n//# sourceMappingURL=PointedRectangle.js.map","import { MultiDisposer } from \"../util/Disposer\";\r\nimport { Label } from \"../render/Label\";\r\nimport { PointedRectangle } from \"../render/PointedRectangle\";\r\nimport { Container } from \"./Container\";\r\nimport { Percent } from \"../util/Percent\";\r\nimport { Color } from \"../util/Color\";\r\nimport * as $math from \"../util/Math\";\r\nimport * as $array from \"../util/Array\";\r\nimport * as $utils from \"../util/Utils\";\r\n/**\r\n * Creates a tooltip.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/tooltips/} for more info\r\n * @important\r\n */\r\nexport class Tooltip extends Container {\r\n constructor(root, settings, isReal, templates = []) {\r\n super(root, settings, isReal, templates);\r\n Object.defineProperty(this, \"_fx\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_fy\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_label\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_fillDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_strokeDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_labelDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_w\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_h\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_keepHoverDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_htmlContentHovered\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n }\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"tooltip\"]);\r\n super._afterNew();\r\n const background = this._setDefaultFn(\"background\", () => {\r\n return PointedRectangle.new(this._root, {});\r\n });\r\n background.set(\"themeTags\", [\"tooltip\", \"background\"]);\r\n this._label = this.children.push(Label.new(this._root, {}));\r\n this._disposers.push(this._label.events.on(\"boundschanged\", () => {\r\n this._updateBackground();\r\n }));\r\n this._disposers.push(this.on(\"bounds\", () => {\r\n this._updateBackground();\r\n }));\r\n this._updateTextColor();\r\n this._root.tooltipContainer.children.push(this);\r\n this.hide(0);\r\n this._disposers.push(this.label.onPrivate(\"htmlElement\", (htmlElement) => {\r\n if (htmlElement) {\r\n this._disposers.push($utils.addEventListener(htmlElement, \"pointerover\", (_ev) => {\r\n this._htmlContentHovered = true;\r\n }));\r\n this._disposers.push($utils.addEventListener(htmlElement, \"pointerout\", (_ev) => {\r\n this._htmlContentHovered = false;\r\n }));\r\n }\r\n }));\r\n this.on(\"visible\", (_ev) => {\r\n this._handleReaderAnnouncement();\r\n });\r\n this.label.events.on(\"dataitemchanged\", (_ev) => {\r\n this._handleReaderAnnouncement();\r\n });\r\n this._root._tooltips.push(this);\r\n }\r\n _handleReaderAnnouncement() {\r\n if (this.get(\"readerAnnounce\") && this.isVisibleDeep()) {\r\n this._root.readerAlert(this.label.getAccessibleText());\r\n }\r\n }\r\n /**\r\n * A [[Label]] element for the tooltip.\r\n *\r\n * @readonly\r\n * @return Label\r\n */\r\n get label() {\r\n return this._label;\r\n }\r\n /**\r\n * Permanently disposes the tooltip.\r\n */\r\n _dispose() {\r\n super._dispose();\r\n $array.remove(this._root._tooltips, this);\r\n }\r\n _updateChildren() {\r\n super._updateChildren();\r\n if (this.isDirty(\"pointerOrientation\") || this.isPrivateDirty(\"minWidth\") || this.isPrivateDirty(\"minHeight\")) {\r\n this.get(\"background\")._markDirtyKey(\"width\");\r\n }\r\n const labelText = this.get(\"labelText\");\r\n if (labelText != null) {\r\n this.label.set(\"text\", this.get(\"labelText\"));\r\n }\r\n const labelHTML = this.get(\"labelHTML\");\r\n if (labelHTML != null) {\r\n this.label.set(\"html\", this.get(\"labelHTML\"));\r\n }\r\n const labelAriaLabel = this.get(\"labelAriaLabel\");\r\n if (labelAriaLabel != null) {\r\n this.label.set(\"ariaLabel\", this.get(\"labelAriaLabel\"));\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this.isDirty(\"pointTo\") || this.isDirty(\"pointerOrientation\")) {\r\n // can't compare to previous, as sometimes pointTo is set twice (when pointer moves, so the position won't be udpated)\r\n this._updateBackground();\r\n }\r\n if (this.isDirty(\"tooltipTarget\")) {\r\n this.updateBackgroundColor();\r\n }\r\n if (this.isDirty(\"keepTargetHover\")) {\r\n const keephover = this.get(\"keepTargetHover\");\r\n if (keephover) {\r\n const bg = this.get(\"background\");\r\n this._keepHoverDp = new MultiDisposer([\r\n bg.events.on(\"pointerover\", (_ev) => {\r\n let target = this.get(\"tooltipTarget\");\r\n if (target) {\r\n if (target.parent && target.parent.getPrivate(\"tooltipTarget\") == target) {\r\n target = target.parent;\r\n }\r\n target.hover();\r\n }\r\n }),\r\n bg.events.on(\"pointerout\", (_ev) => {\r\n let target = this.get(\"tooltipTarget\");\r\n if (target) {\r\n if (target.parent && target.parent.getPrivate(\"tooltipTarget\") == target) {\r\n target = target.parent;\r\n }\r\n if (!this._htmlContentHovered) {\r\n target.unhover();\r\n }\r\n }\r\n })\r\n ]);\r\n this.label.onPrivate(\"htmlElement\", (htmlElement) => {\r\n if (this._keepHoverDp && htmlElement) {\r\n this._keepHoverDp.disposers.push($utils.addEventListener(htmlElement, \"pointerleave\", (ev) => {\r\n const outEvent = this.root._renderer.getEvent(ev);\r\n bg.events.dispatch(\"pointerout\", {\r\n type: \"pointerout\",\r\n originalEvent: outEvent.event,\r\n point: outEvent.point,\r\n simulated: false,\r\n target: bg\r\n });\r\n }));\r\n }\r\n });\r\n }\r\n else {\r\n if (this._keepHoverDp) {\r\n this._keepHoverDp.dispose();\r\n this._keepHoverDp = undefined;\r\n }\r\n }\r\n }\r\n }\r\n _onShow() {\r\n super._onShow();\r\n this.updateBackgroundColor();\r\n }\r\n updateBackgroundColor() {\r\n let tooltipTarget = this.get(\"tooltipTarget\");\r\n const background = this.get(\"background\");\r\n let fill;\r\n let stroke;\r\n if (tooltipTarget && background) {\r\n fill = tooltipTarget.get(\"fill\");\r\n stroke = tooltipTarget.get(\"stroke\");\r\n if (fill == null) {\r\n fill = stroke;\r\n }\r\n if (this.get(\"getFillFromSprite\")) {\r\n if (this._fillDp) {\r\n this._fillDp.dispose();\r\n }\r\n if (fill != null) {\r\n background.set(\"fill\", fill);\r\n }\r\n this._fillDp = tooltipTarget.on(\"fill\", (fill) => {\r\n if (fill != null) {\r\n background.set(\"fill\", fill);\r\n this._updateTextColor(fill);\r\n }\r\n });\r\n this._disposers.push(this._fillDp);\r\n }\r\n if (this.get(\"getStrokeFromSprite\")) {\r\n if (this._strokeDp) {\r\n this._strokeDp.dispose();\r\n }\r\n if (fill != null) {\r\n background.set(\"stroke\", fill);\r\n }\r\n this._strokeDp = tooltipTarget.on(\"fill\", (fill) => {\r\n if (fill != null) {\r\n background.set(\"stroke\", fill);\r\n }\r\n });\r\n this._disposers.push(this._strokeDp);\r\n }\r\n if (this.get(\"getLabelFillFromSprite\")) {\r\n if (this._labelDp) {\r\n this._labelDp.dispose();\r\n }\r\n if (fill != null) {\r\n this.label.set(\"fill\", fill);\r\n }\r\n this._labelDp = tooltipTarget.on(\"fill\", (fill) => {\r\n if (fill != null) {\r\n this.label.set(\"fill\", fill);\r\n }\r\n });\r\n this._disposers.push(this._labelDp);\r\n }\r\n }\r\n this._updateTextColor(fill);\r\n }\r\n _updateTextColor(fill) {\r\n if (this.get(\"autoTextColor\")) {\r\n if (fill == null) {\r\n fill = this.get(\"background\").get(\"fill\");\r\n }\r\n if (fill == null) {\r\n fill = this._root.interfaceColors.get(\"background\");\r\n }\r\n if (fill instanceof Color) {\r\n this.label.set(\"fill\", Color.alternative(fill, this._root.interfaceColors.get(\"alternativeText\"), this._root.interfaceColors.get(\"text\")));\r\n }\r\n }\r\n }\r\n _setDataItem(dataItem) {\r\n super._setDataItem(dataItem);\r\n this.label._setDataItem(dataItem);\r\n }\r\n _updateBackground() {\r\n super.updateBackground();\r\n const parent = this._root.container;\r\n if (parent) {\r\n let cw = 0.5;\r\n let ch = 0.5;\r\n let centerX = this.get(\"centerX\");\r\n if (centerX instanceof Percent) {\r\n cw = centerX.value;\r\n }\r\n let centerY = this.get(\"centerY\");\r\n if (centerY instanceof Percent) {\r\n ch = centerY.value;\r\n }\r\n let parentW = parent.width();\r\n let parentH = parent.height();\r\n let tooltipContainer = this.parent;\r\n let xx = 0;\r\n let yy = 0;\r\n if (tooltipContainer) {\r\n xx = tooltipContainer.x();\r\n yy = tooltipContainer.y();\r\n const layerMargin = tooltipContainer.get(\"layerMargin\");\r\n if (layerMargin) {\r\n xx += layerMargin.left || 0;\r\n yy += layerMargin.top || 0;\r\n parentW += (layerMargin.left || 0) + (layerMargin.right || 0);\r\n parentH += (layerMargin.top || 0) + (layerMargin.bottom || 0);\r\n }\r\n }\r\n const bounds = this.get(\"bounds\", { left: -xx, top: -yy, right: parentW - xx, bottom: parentH - yy });\r\n this._updateBounds();\r\n let w = this.width();\r\n let h = this.height();\r\n // use old w and h,as when tooltip is hidden, these are 0 and unneeded animation happens\r\n if (w === 0) {\r\n w = this._w;\r\n }\r\n if (h === 0) {\r\n h = this._h;\r\n }\r\n let pointTo = this.get(\"pointTo\", { x: parentW / 2, y: parentH / 2 });\r\n let x = pointTo.x;\r\n let y = pointTo.y;\r\n let pointerOrientation = this.get(\"pointerOrientation\");\r\n let background = this.get(\"background\");\r\n let pointerLength = 0;\r\n let bgStrokeSizeY = 0;\r\n let bgStrokeSizeX = 0;\r\n if (background instanceof PointedRectangle) {\r\n pointerLength = background.get(\"pointerLength\", 0);\r\n bgStrokeSizeY = background.get(\"strokeWidth\", 0) / 2;\r\n bgStrokeSizeX = bgStrokeSizeY;\r\n background.set(\"width\", w);\r\n background.set(\"height\", h);\r\n }\r\n let pointerX = 0;\r\n let pointerY = 0;\r\n let boundsW = bounds.right - bounds.left;\r\n let boundsH = bounds.bottom - bounds.top;\r\n // horizontal\r\n if (pointerOrientation == \"horizontal\" || pointerOrientation == \"left\" || pointerOrientation == \"right\") {\r\n bgStrokeSizeY = 0;\r\n if (pointerOrientation == \"horizontal\") {\r\n if (x > bounds.left + boundsW / 2) {\r\n x -= (w * (1 - cw) + pointerLength);\r\n bgStrokeSizeX *= -1;\r\n }\r\n else {\r\n x += (w * cw + pointerLength);\r\n }\r\n }\r\n else if (pointerOrientation == \"left\") {\r\n x += (w * (1 - cw) + pointerLength);\r\n }\r\n else {\r\n x -= (w * cw + pointerLength);\r\n bgStrokeSizeX *= -1;\r\n }\r\n }\r\n // vertical pointer\r\n else {\r\n bgStrokeSizeX = 0;\r\n if (pointerOrientation == \"vertical\") {\r\n if (y > bounds.top + h / 2 + pointerLength) {\r\n y -= (h * (1 - ch) + pointerLength);\r\n }\r\n else {\r\n y += (h * ch + pointerLength);\r\n bgStrokeSizeY *= -1;\r\n }\r\n }\r\n else if (pointerOrientation == \"down\") {\r\n y -= (h * (1 - ch) + pointerLength);\r\n }\r\n else {\r\n y += (h * ch + pointerLength);\r\n bgStrokeSizeY *= -1;\r\n }\r\n }\r\n x = $math.fitToRange(x, bounds.left + w * cw, bounds.left + boundsW - w * (1 - cw)) + bgStrokeSizeX;\r\n y = $math.fitToRange(y, bounds.top + h * ch, bounds.top + boundsH - h * (1 - ch)) - bgStrokeSizeY;\r\n pointerX = pointTo.x - x + w * cw + bgStrokeSizeX;\r\n pointerY = pointTo.y - y + h * ch - bgStrokeSizeY;\r\n this._fx = x;\r\n this._fy = y;\r\n const animationDuration = this.get(\"animationDuration\", 0);\r\n if (animationDuration > 0 && this.get(\"visible\") && this.get(\"opacity\") > 0.1) {\r\n const animationEasing = this.get(\"animationEasing\");\r\n this.animate({ key: \"x\", to: x, duration: animationDuration, easing: animationEasing });\r\n this.animate({ key: \"y\", to: y, duration: animationDuration, easing: animationEasing });\r\n }\r\n else {\r\n this.set(\"x\", x);\r\n this.set(\"y\", y);\r\n }\r\n if (background instanceof PointedRectangle) {\r\n background.set(\"pointerX\", pointerX);\r\n background.set(\"pointerY\", pointerY);\r\n }\r\n if (w > 0) {\r\n this._w = w;\r\n }\r\n if (h > 0) {\r\n this._h = h;\r\n }\r\n }\r\n }\r\n}\r\nObject.defineProperty(Tooltip, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Tooltip\"\r\n});\r\nObject.defineProperty(Tooltip, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.classNames.concat([Tooltip.className])\r\n});\r\n//# sourceMappingURL=Tooltip.js.map","import { Entity } from \"./Entity\";\r\nimport { TextFormatter } from \"./TextFormatter\";\r\nimport * as $object from \"./Object\";\r\nimport * as $utils from \"./Utils\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * Number formatter\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-numbers/} for more info\r\n * @important\r\n */\r\nexport class NumberFormatter extends Entity {\r\n _setDefaults() {\r\n // Defaults\r\n this._setDefault(\"negativeBase\", 0);\r\n this._setDefault(\"numberFormat\", \"#,###.#####\");\r\n this._setDefault(\"smallNumberThreshold\", 1.00);\r\n const bns = \"_big_number_suffix_\";\r\n const sns = \"_small_number_suffix_\";\r\n const bs = \"_byte_suffix_\";\r\n this._setDefault(\"bigNumberPrefixes\", [\r\n { \"number\": 1e+3, \"suffix\": this._t(bns + \"3\") },\r\n { \"number\": 1e+6, \"suffix\": this._t(bns + \"6\") },\r\n { \"number\": 1e+9, \"suffix\": this._t(bns + \"9\") },\r\n { \"number\": 1e+12, \"suffix\": this._t(bns + \"12\") },\r\n { \"number\": 1e+15, \"suffix\": this._t(bns + \"15\") },\r\n { \"number\": 1e+18, \"suffix\": this._t(bns + \"18\") },\r\n { \"number\": 1e+21, \"suffix\": this._t(bns + \"21\") },\r\n { \"number\": 1e+24, \"suffix\": this._t(bns + \"24\") }\r\n ]);\r\n this._setDefault(\"smallNumberPrefixes\", [\r\n { \"number\": 1e-24, \"suffix\": this._t(sns + \"24\") },\r\n { \"number\": 1e-21, \"suffix\": this._t(sns + \"21\") },\r\n { \"number\": 1e-18, \"suffix\": this._t(sns + \"18\") },\r\n { \"number\": 1e-15, \"suffix\": this._t(sns + \"15\") },\r\n { \"number\": 1e-12, \"suffix\": this._t(sns + \"12\") },\r\n { \"number\": 1e-9, \"suffix\": this._t(sns + \"9\") },\r\n { \"number\": 1e-6, \"suffix\": this._t(sns + \"6\") },\r\n { \"number\": 1e-3, \"suffix\": this._t(sns + \"3\") }\r\n ]);\r\n this._setDefault(\"bytePrefixes\", [\r\n { \"number\": 1, suffix: this._t(bs + \"B\") },\r\n { \"number\": 1024, suffix: this._t(bs + \"KB\") },\r\n { \"number\": 1048576, suffix: this._t(bs + \"MB\") },\r\n { \"number\": 1073741824, suffix: this._t(bs + \"GB\") },\r\n { \"number\": 1099511627776, suffix: this._t(bs + \"TB\") },\r\n { \"number\": 1125899906842624, suffix: this._t(bs + \"PB\") }\r\n ]);\r\n super._setDefaults();\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n }\r\n /**\r\n * Formats the number according to specific format.\r\n *\r\n * @param value Value to format\r\n * @param format Format to apply\r\n * @return Formatted number\r\n */\r\n format(value, format, precision) {\r\n // no format passed in or \"Number\"\r\n if (format == null || ($type.isString(format) && format.toLowerCase() === \"number\")) {\r\n format = this.get(\"numberFormat\", \"\");\r\n }\r\n // Init return value\r\n let formatted;\r\n // Cast to number just in case\r\n // TODO: maybe use better casting\r\n let source = Number(value);\r\n // Is it a built-in format or Intl.NumberFormatOptions\r\n if ($type.isObject(format)) {\r\n try {\r\n if (this.get(\"intlLocales\")) {\r\n return new Intl.NumberFormat(this.get(\"intlLocales\"), format).format(source);\r\n }\r\n else {\r\n return new Intl.NumberFormat(undefined, format).format(source);\r\n }\r\n }\r\n catch (e) {\r\n return \"Invalid\";\r\n }\r\n }\r\n else {\r\n // Clean format\r\n format = $utils.cleanFormat(format);\r\n // Get format info (it will also deal with parser caching)\r\n let info = this.parseFormat(format, this._root.language);\r\n // format and replace the number\r\n let details;\r\n if (source > this.get(\"negativeBase\")) {\r\n details = info.positive;\r\n }\r\n else if (source < this.get(\"negativeBase\")) {\r\n details = info.negative;\r\n }\r\n else {\r\n details = info.zero;\r\n }\r\n // Adjust precision\r\n if (precision != null && !details.mod) {\r\n details = $object.copy(details);\r\n details.decimals.active = source == 0 ? 0 : precision;\r\n }\r\n // Format\r\n formatted = details.template.split($type.PLACEHOLDER).join(this.applyFormat(source, details));\r\n }\r\n if (this.get(\"forceLTR\") === true) {\r\n formatted = \"‎\" + formatted;\r\n }\r\n return formatted;\r\n }\r\n /**\r\n * Parses supplied format into structured object which can be used to format\r\n * the number.\r\n *\r\n * @param format Format string, i.e. \"#,###.00\"\r\n * @param language Language\r\n * @ignore\r\n */\r\n parseFormat(format, language) {\r\n // Check cache\r\n // TODO\r\n // let cached = this.getCache(format);\r\n // if (cached != null) {\r\n // \treturn cached;\r\n // }\r\n const thousandSeparator = language.translateEmpty(\"_thousandSeparator\");\r\n const decimalSeparator = language.translateEmpty(\"_decimalSeparator\");\r\n // init format parse info holder\r\n let info = {\r\n \"positive\": {\r\n \"thousands\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"interval\": -1,\r\n \"separator\": thousandSeparator\r\n },\r\n \"decimals\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"separator\": decimalSeparator\r\n },\r\n \"template\": \"\",\r\n \"source\": \"\",\r\n \"parsed\": false\r\n },\r\n \"negative\": {\r\n \"thousands\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"interval\": -1,\r\n \"separator\": thousandSeparator\r\n },\r\n \"decimals\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"separator\": decimalSeparator\r\n },\r\n \"template\": \"\",\r\n \"source\": \"\",\r\n \"parsed\": false\r\n },\r\n \"zero\": {\r\n \"thousands\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"interval\": -1,\r\n \"separator\": thousandSeparator\r\n },\r\n \"decimals\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"separator\": decimalSeparator\r\n },\r\n \"template\": \"\",\r\n \"source\": \"\",\r\n \"parsed\": false\r\n }\r\n };\r\n // Escape double vertical bars (that mean display one vertical bar)\r\n format = format.replace(\"||\", $type.PLACEHOLDER2);\r\n // Split it up and deal with different formats\r\n let parts = format.split(\"|\");\r\n info.positive.source = parts[0];\r\n if (typeof parts[2] === \"undefined\") {\r\n info.zero = info.positive;\r\n }\r\n else {\r\n info.zero.source = parts[2];\r\n }\r\n if (typeof parts[1] === \"undefined\") {\r\n info.negative = info.positive;\r\n }\r\n else {\r\n info.negative.source = parts[1];\r\n }\r\n // Parse each\r\n $object.each(info, (_part, item) => {\r\n // Already parsed\r\n if (item.parsed) {\r\n return;\r\n }\r\n // Check cached\r\n // TODO\r\n // if (typeof this.getCache(item.source) !== \"undefined\") {\r\n // \tinfo[part] = this.getCache(item.source);\r\n // \treturn;\r\n // }\r\n // Begin parsing\r\n let partFormat = item.source;\r\n // Just \"Number\"?\r\n if (partFormat.toLowerCase() === \"number\") {\r\n partFormat = this.get(\"numberFormat\", \"#,###.#####\");\r\n }\r\n // Let TextFormatter split into chunks\r\n let chunks = TextFormatter.chunk(partFormat, true);\r\n for (let i = 0; i < chunks.length; i++) {\r\n let chunk = chunks[i];\r\n // replace back double vertical bar\r\n chunk.text = chunk.text.replace($type.PLACEHOLDER2, \"|\");\r\n if (chunk.type === \"value\") {\r\n // Parse format\r\n // Look for codes\r\n let matches = chunk.text.match(/[#0.,]+[ ]?[abespABESP%!]?[abespABESP‰!]?/);\r\n if (matches) {\r\n if (matches === null || matches[0] === \"\") {\r\n // no codes here - assume string\r\n // nothing to do here\r\n item.template += chunk.text;\r\n }\r\n else {\r\n // look for the format modifiers at the end\r\n let mods = matches[0].match(/[abespABESP%‰!]{2}|[abespABESP%‰]{1}$/);\r\n if (mods) {\r\n item.mod = mods[0].toLowerCase();\r\n item.modSpacing = matches[0].match(/[ ]{1}[abespABESP%‰!]{1}$/) ? true : false;\r\n }\r\n // break the format up\r\n let a = matches[0].split(\".\");\r\n // Deal with thousands\r\n if (a[0] === \"\") {\r\n // No directives for thousands\r\n // Leave default settings (no formatting)\r\n }\r\n else {\r\n // Counts\r\n item.thousands.active = (a[0].match(/0/g) || []).length;\r\n item.thousands.passive = (a[0].match(/\\#/g) || []).length + item.thousands.active;\r\n // Separator interval\r\n let b = a[0].split(\",\");\r\n if (b.length === 1) {\r\n // No thousands separators\r\n // Do nothing\r\n }\r\n else {\r\n // Use length fo the last chunk as thousands length\r\n item.thousands.interval = (b.pop() || \"\").length;\r\n if (item.thousands.interval === 0) {\r\n item.thousands.interval = -1;\r\n }\r\n }\r\n }\r\n // Deal with decimals\r\n if (typeof (a[1]) === \"undefined\") {\r\n // No directives for decimals\r\n // Leave at defaults (no formatting)\r\n }\r\n else {\r\n // Counts\r\n item.decimals.active = (a[1].match(/0/g) || []).length;\r\n item.decimals.passive = (a[1].match(/\\#/g) || []).length + item.decimals.active;\r\n }\r\n // Add special code to template\r\n item.template += chunk.text.split(matches[0]).join($type.PLACEHOLDER);\r\n }\r\n }\r\n }\r\n else {\r\n // Quoted string - take it as it is\r\n item.template += chunk.text;\r\n }\r\n }\r\n // Apply style formatting\r\n //item.template = getTextFormatter().format(item.template, this.outputFormat);\r\n // Save cache\r\n // TODO\r\n //this.setCache(item.source, item);\r\n // Mark this as parsed\r\n item.parsed = true;\r\n });\r\n // Save cache (the whole thing)\r\n // TODO\r\n //this.setCache(format, info);\r\n return info;\r\n }\r\n /**\r\n * Applies parsed format to a numeric value.\r\n *\r\n * @param value Value\r\n * @param details Parsed format as returned by parseFormat()\r\n * @return Formatted number\r\n * @ignore\r\n */\r\n applyFormat(value, details) {\r\n // Use absolute values\r\n let negative = value < 0;\r\n value = Math.abs(value);\r\n // Recalculate according to modifier\r\n let prefix = \"\", suffix = \"\";\r\n let mods = details.mod ? details.mod.split(\"\") : [];\r\n if (mods.indexOf(\"b\") !== -1) {\r\n let a = this.applyPrefix(value, this.get(\"bytePrefixes\"), mods.indexOf(\"!\") !== -1);\r\n value = a[0];\r\n prefix = a[1];\r\n suffix = a[2];\r\n if (details.modSpacing) {\r\n suffix = \" \" + suffix;\r\n }\r\n }\r\n else if (mods.indexOf(\"a\") !== -1) {\r\n let a = this.applyPrefix(value, value < this.get(\"smallNumberThreshold\") ? this.get(\"smallNumberPrefixes\") : this.get(\"bigNumberPrefixes\"), mods.indexOf(\"!\") !== -1);\r\n value = a[0];\r\n prefix = a[1];\r\n suffix = a[2];\r\n if (details.modSpacing) {\r\n suffix = \" \" + suffix;\r\n }\r\n }\r\n else if (mods.indexOf(\"p\") !== -1) {\r\n let ol = Math.min(value.toString().length + 2, 21);\r\n //value *= 100;\r\n value = parseFloat(value.toPrecision(ol));\r\n prefix = this._root.language.translate(\"_percentPrefix\");\r\n suffix = this._root.language.translate(\"_percentSuffix\");\r\n if (prefix == \"\" && suffix == \"\") {\r\n suffix = \"%\";\r\n }\r\n }\r\n else if (mods.indexOf(\"%\") !== -1) {\r\n let ol = Math.min(value.toString().length + 2, 21);\r\n value *= 100;\r\n value = parseFloat(value.toPrecision(ol));\r\n suffix = \"%\";\r\n }\r\n else if (mods.indexOf(\"‰\") !== -1) {\r\n let ol = Math.min(value.toString().length + 3, 21);\r\n value *= 1000;\r\n value = parseFloat(value.toPrecision(ol));\r\n suffix = \"‰\";\r\n }\r\n // Round to passive\r\n if (mods.indexOf(\"e\") !== -1) {\r\n // convert the value to exponential\r\n let exp;\r\n if (details.decimals.passive >= 0) {\r\n exp = value.toExponential(details.decimals.passive).split(\"e\");\r\n }\r\n else {\r\n exp = value.toExponential().split(\"e\");\r\n }\r\n value = Number(exp[0]);\r\n suffix = \"e\" + exp[1];\r\n if (details.modSpacing) {\r\n suffix = \" \" + suffix;\r\n }\r\n }\r\n else if (details.decimals.passive === 0) {\r\n value = Math.round(value);\r\n }\r\n else if (details.decimals.passive > 0) {\r\n const decimals = $utils.decimalPlaces(value);\r\n if (decimals > 0) {\r\n const d = Math.pow(10, details.decimals.passive);\r\n value = Math.round(parseFloat((value * d).toFixed(decimals))) / d;\r\n }\r\n }\r\n // Init return value\r\n let res = \"\";\r\n // Calc integer and decimal parts\r\n let a = $type.numberToString(value).split(\".\");\r\n // Format integers\r\n let ints = a[0];\r\n // Pad integers to active length\r\n if (ints.length < details.thousands.active) {\r\n ints = Array(details.thousands.active - ints.length + 1).join(\"0\") + ints;\r\n }\r\n // Insert thousands separators\r\n if (details.thousands.interval > 0) {\r\n let ip = [];\r\n let intsr = ints.split(\"\").reverse().join(\"\");\r\n for (let i = 0, len = ints.length; i <= len; i += details.thousands.interval) {\r\n let c = intsr.substr(i, details.thousands.interval).split(\"\").reverse().join(\"\");\r\n if (c !== \"\") {\r\n ip.unshift(c);\r\n }\r\n }\r\n ints = ip.join(details.thousands.separator);\r\n }\r\n // Add integers\r\n res += ints;\r\n // Add decimals\r\n if (a.length === 1) {\r\n a.push(\"\");\r\n }\r\n let decs = a[1];\r\n // Fill zeros?\r\n if (decs.length < details.decimals.active) {\r\n decs += Array(details.decimals.active - decs.length + 1).join(\"0\");\r\n }\r\n if (decs !== \"\") {\r\n res += details.decimals.separator + decs;\r\n }\r\n // Can't have empty return value\r\n if (res === \"\") {\r\n res = \"0\";\r\n }\r\n // Add minus sign back\r\n if (value !== 0 && negative && (mods.indexOf(\"s\") === -1)) {\r\n res = \"-\" + res;\r\n }\r\n // Add suffixes/prefixes\r\n if (prefix) {\r\n res = prefix + res;\r\n }\r\n if (suffix) {\r\n res += suffix;\r\n }\r\n return res;\r\n }\r\n applyPrefix(value, prefixes, force = false) {\r\n let newvalue = value;\r\n let prefix = \"\";\r\n let suffix = \"\";\r\n let applied = false;\r\n let k = 1;\r\n for (let i = 0, len = prefixes.length; i < len; i++) {\r\n if (prefixes[i].number <= value) {\r\n if (prefixes[i].number === 0) {\r\n newvalue = 0;\r\n }\r\n else {\r\n newvalue = value / prefixes[i].number;\r\n k = prefixes[i].number;\r\n }\r\n prefix = prefixes[i].prefix;\r\n suffix = prefixes[i].suffix;\r\n applied = true;\r\n }\r\n }\r\n if (!applied && force && prefixes.length && value != 0) {\r\n // Prefix was not applied. Use the first prefix.\r\n newvalue = value / prefixes[0].number;\r\n prefix = prefixes[0].prefix;\r\n suffix = prefixes[0].suffix;\r\n applied = true;\r\n }\r\n if (applied) {\r\n newvalue = parseFloat(newvalue.toPrecision(Math.min(k.toString().length + Math.floor(newvalue).toString().replace(/[^0-9]*/g, \"\").length, 21)));\r\n }\r\n return [newvalue, prefix, suffix];\r\n }\r\n /**\r\n * Replaces brackets with temporary placeholders.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Escaped text\r\n */\r\n escape(text) {\r\n return text.replace(\"||\", $type.PLACEHOLDER2);\r\n }\r\n /**\r\n * Replaces placeholders back to brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Escaped text\r\n * @return Unescaped text\r\n */\r\n unescape(text) {\r\n return text.replace($type.PLACEHOLDER2, \"|\");\r\n }\r\n}\r\n//# sourceMappingURL=NumberFormatter.js.map","function parseDate(timezone, date) {\r\n let year = 0;\r\n let month = 0;\r\n let day = 1;\r\n let hour = 0;\r\n let minute = 0;\r\n let second = 0;\r\n let millisecond = 0;\r\n let weekday = 0;\r\n timezone.formatToParts(date).forEach((x) => {\r\n switch (x.type) {\r\n case \"year\":\r\n year = +x.value;\r\n break;\r\n case \"month\":\r\n month = (+x.value) - 1;\r\n break;\r\n case \"day\":\r\n day = +x.value;\r\n break;\r\n case \"hour\":\r\n hour = +x.value;\r\n break;\r\n case \"minute\":\r\n minute = +x.value;\r\n break;\r\n case \"second\":\r\n second = +x.value;\r\n break;\r\n case \"fractionalSecond\":\r\n millisecond = +x.value;\r\n break;\r\n case \"weekday\":\r\n switch (x.value) {\r\n case \"Sun\":\r\n weekday = 0;\r\n break;\r\n case \"Mon\":\r\n weekday = 1;\r\n break;\r\n case \"Tue\":\r\n weekday = 2;\r\n break;\r\n case \"Wed\":\r\n weekday = 3;\r\n break;\r\n case \"Thu\":\r\n weekday = 4;\r\n break;\r\n case \"Fri\":\r\n weekday = 5;\r\n break;\r\n case \"Sat\":\r\n weekday = 6;\r\n break;\r\n }\r\n }\r\n });\r\n if (hour === 24) {\r\n hour = 0;\r\n }\r\n return { year, month, day, hour, minute, second, millisecond, weekday };\r\n}\r\nfunction toUTCDate(timezone, date) {\r\n const { year, month, day, hour, minute, second, millisecond } = parseDate(timezone, date);\r\n return Date.UTC(year, month, day, hour, minute, second, millisecond);\r\n}\r\nexport class Timezone {\r\n constructor(timezone, isReal) {\r\n Object.defineProperty(this, \"_utc\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_dtf\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"name\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n if (!isReal) {\r\n throw new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\r\n }\r\n this.name = timezone;\r\n this._utc = new Intl.DateTimeFormat(\"UTC\", {\r\n hour12: false,\r\n timeZone: \"UTC\",\r\n year: \"numeric\",\r\n month: \"2-digit\",\r\n day: \"2-digit\",\r\n hour: \"2-digit\",\r\n minute: \"2-digit\",\r\n second: \"2-digit\",\r\n weekday: \"short\",\r\n fractionalSecondDigits: 3,\r\n });\r\n this._dtf = new Intl.DateTimeFormat(\"UTC\", {\r\n hour12: false,\r\n timeZone: timezone,\r\n year: \"numeric\",\r\n month: \"2-digit\",\r\n day: \"2-digit\",\r\n hour: \"2-digit\",\r\n minute: \"2-digit\",\r\n second: \"2-digit\",\r\n weekday: \"short\",\r\n fractionalSecondDigits: 3,\r\n });\r\n }\r\n /**\r\n * Use this method to create an instance of this class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\r\n * @param timezone IANA timezone\r\n * @return Instantiated object\r\n */\r\n static new(timezone) {\r\n return (new this(timezone, true));\r\n }\r\n convertLocal(date) {\r\n const offset = this.offsetUTC(date);\r\n const userOffset = date.getTimezoneOffset();\r\n const output = new Date(date);\r\n output.setUTCMinutes(output.getUTCMinutes() - (offset - userOffset));\r\n const newUserOffset = output.getTimezoneOffset();\r\n if (userOffset != newUserOffset) {\r\n output.setUTCMinutes(output.getUTCMinutes() + newUserOffset - userOffset);\r\n }\r\n return output;\r\n }\r\n offsetUTC(date) {\r\n const utc = toUTCDate(this._utc, date);\r\n const dtf = toUTCDate(this._dtf, date);\r\n return (utc - dtf) / 60000;\r\n }\r\n parseDate(date) {\r\n return parseDate(this._dtf, date);\r\n }\r\n}\r\n//# sourceMappingURL=Timezone.js.map","import { Entity } from \"./Entity\";\r\nimport { TextFormatter } from \"./TextFormatter\";\r\nimport { Timezone } from \"./Timezone\";\r\nimport * as $type from \"./Type\";\r\nimport * as $utils from \"./Utils\";\r\n/**\r\n * Date formatter class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/} for more info\r\n * @important\r\n */\r\nexport class DateFormatter extends Entity {\r\n _setDefaults() {\r\n // Defaults\r\n this._setDefault(\"capitalize\", true);\r\n this._setDefault(\"dateFormat\", \"yyyy-MM-dd\");\r\n super._setDefaults();\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n }\r\n /**\r\n * Formats a source `Date` object into string format\r\n * @param source inpout date\r\n * @param format Output format\r\n * @param ignoreTimezone Ignore timezone?\r\n * @return Formatted date\r\n */\r\n format(source, format, ignoreTimezone = false) {\r\n // Locale?\r\n // TODO\r\n // No format passed in or it's empty\r\n if (typeof format === \"undefined\" || format === \"\") {\r\n format = this.get(\"dateFormat\", \"yyyy-MM-dd\");\r\n }\r\n // Init return value\r\n let formatted;\r\n // Cast?\r\n // TODO: decide if we need to cast\r\n let date = source;\r\n // Is it a built-in format or Intl.DateTimeFormat\r\n if ($type.isObject(format)) {\r\n try {\r\n const locales = this.get(\"intlLocales\");\r\n if (locales) {\r\n return new Intl.DateTimeFormat(locales, format).format(date);\r\n }\r\n else {\r\n return new Intl.DateTimeFormat(undefined, format).format(date);\r\n }\r\n }\r\n catch (e) {\r\n return \"Invalid\";\r\n }\r\n }\r\n // get format info (it will also deal with parser caching)\r\n let info = this.parseFormat(format);\r\n // Should we apply custom time zone?\r\n const timezone = this._root.timezone;\r\n if (timezone && !this._root.utc && !ignoreTimezone) {\r\n date = timezone.convertLocal(date);\r\n }\r\n // Check if it's a valid date\r\n if (!$type.isNumber(date.getTime())) {\r\n // TODO translation\r\n //return this._t(\"Invalid date\");\r\n return \"Invalid date\";\r\n }\r\n // Apply format\r\n formatted = this.applyFormat(date, info, ignoreTimezone);\r\n // Capitalize\r\n if (this.get(\"capitalize\")) {\r\n formatted = formatted.replace(/^.{1}/, formatted.substr(0, 1).toUpperCase());\r\n }\r\n // We're done\r\n return formatted;\r\n }\r\n /**\r\n * Applies format to Date.\r\n *\r\n * @param date Date object\r\n * @param info Parsed format information\r\n * @return Formatted date string\r\n */\r\n applyFormat(date, info, ignoreTimezone = false) {\r\n // Init return value\r\n let res = info.template;\r\n // Get values\r\n let fullYear, month, weekday, day, hours, minutes, seconds, milliseconds, timestamp = date.getTime();\r\n if (this._root.utc && !ignoreTimezone) {\r\n fullYear = date.getUTCFullYear();\r\n month = date.getUTCMonth();\r\n weekday = date.getUTCDay();\r\n day = date.getUTCDate();\r\n hours = date.getUTCHours();\r\n minutes = date.getUTCMinutes();\r\n seconds = date.getUTCSeconds();\r\n milliseconds = date.getUTCMilliseconds();\r\n }\r\n else {\r\n fullYear = date.getFullYear();\r\n month = date.getMonth();\r\n weekday = date.getDay();\r\n day = date.getDate();\r\n hours = date.getHours();\r\n minutes = date.getMinutes();\r\n seconds = date.getSeconds();\r\n milliseconds = date.getMilliseconds();\r\n }\r\n // Go through each part and format/replace it in template\r\n for (let i = 0, len = info.parts.length; i < len; i++) {\r\n let value = \"\";\r\n switch (info.parts[i]) {\r\n case \"G\":\r\n value = this._t(fullYear < 0\r\n ? \"_era_bc\"\r\n : \"_era_ad\");\r\n break;\r\n case \"yyyy\":\r\n value = Math.abs(fullYear).toString();\r\n if (fullYear < 0) {\r\n value += this._t(\"_era_bc\");\r\n }\r\n break;\r\n case \"yyy\":\r\n case \"yy\":\r\n case \"y\":\r\n value = Math.abs(fullYear).toString().substr(-info.parts[i].length);\r\n if (fullYear < 0) {\r\n value += this._t(\"_era_bc\");\r\n }\r\n break;\r\n case \"YYYY\":\r\n case \"YYY\":\r\n case \"YY\":\r\n case \"Y\":\r\n let year = $utils.getWeekYear(date, this._root.utc);\r\n if (info.parts[i] == \"YYYY\") {\r\n value = Math.abs(year).toString();\r\n }\r\n else {\r\n value = Math.abs(year).toString().substr(-info.parts[i].length);\r\n }\r\n if (year < 0) {\r\n value += this._t(\"_era_bc\");\r\n }\r\n break;\r\n case \"u\":\r\n // @todo\r\n break;\r\n case \"q\":\r\n value = \"\" + Math.ceil((date.getMonth() + 1) / 3);\r\n break;\r\n case \"MMMMM\":\r\n value = this._t(this._getMonth(month)).substr(0, 1);\r\n break;\r\n case \"MMMM\":\r\n value = this._t(this._getMonth(month));\r\n break;\r\n case \"MMM\":\r\n value = this._t(this._getShortMonth(month));\r\n break;\r\n case \"MM\":\r\n value = $utils.padString(month + 1, 2, \"0\");\r\n break;\r\n case \"M\":\r\n value = (month + 1).toString();\r\n break;\r\n case \"ww\":\r\n value = $utils.padString($utils.getWeek(date, this._root.utc), 2, \"0\");\r\n break;\r\n case \"w\":\r\n value = $utils.getWeek(date, this._root.utc).toString();\r\n break;\r\n case \"W\":\r\n value = $utils.getMonthWeek(date, this._root.utc).toString();\r\n break;\r\n case \"dd\":\r\n value = $utils.padString(day, 2, \"0\");\r\n break;\r\n case \"d\":\r\n value = day.toString();\r\n break;\r\n case \"DD\":\r\n case \"DDD\":\r\n value = $utils.padString($utils.getYearDay(date, this._root.utc).toString(), info.parts[i].length, \"0\");\r\n break;\r\n case \"D\":\r\n value = $utils.getYearDay(date, this._root.utc).toString();\r\n break;\r\n case \"F\":\r\n // @todo\r\n break;\r\n case \"g\":\r\n // @todo\r\n break;\r\n case \"t\":\r\n value = this._root.language.translateFunc(\"_dateOrd\").call(this, day);\r\n break;\r\n case \"E\":\r\n value = (weekday || 7).toString();\r\n break;\r\n case \"EE\":\r\n value = $utils.padString((weekday || 7).toString(), 2, \"0\");\r\n break;\r\n case \"EEE\":\r\n case \"eee\":\r\n value = this._t(this._getShortWeekday(weekday));\r\n break;\r\n case \"EEEE\":\r\n case \"eeee\":\r\n value = this._t(this._getWeekday(weekday));\r\n break;\r\n case \"EEEEE\":\r\n case \"eeeee\":\r\n value = this._t(this._getShortWeekday(weekday)).substr(0, 1);\r\n break;\r\n case \"e\":\r\n case \"ee\":\r\n value = (weekday - (this._root.locale.firstDayOfWeek || 1) + 1).toString();\r\n if (info.parts[i] == \"ee\") {\r\n value = $utils.padString(value, 2, \"0\");\r\n }\r\n break;\r\n case \"a\":\r\n if (hours >= 12) {\r\n value = this._t(\"PM\");\r\n }\r\n else {\r\n value = this._t(\"AM\");\r\n }\r\n break;\r\n case \"aa\":\r\n if (hours >= 12) {\r\n value = this._t(\"P.M.\");\r\n }\r\n else {\r\n value = this._t(\"A.M.\");\r\n }\r\n break;\r\n case \"aaa\":\r\n if (hours >= 12) {\r\n value = this._t(\"P\");\r\n }\r\n else {\r\n value = this._t(\"A\");\r\n }\r\n break;\r\n case \"h\":\r\n value = $utils.get12Hours(hours).toString();\r\n break;\r\n case \"hh\":\r\n value = $utils.padString($utils.get12Hours(hours), 2, \"0\");\r\n break;\r\n case \"H\":\r\n value = hours.toString();\r\n break;\r\n case \"HH\":\r\n value = $utils.padString(hours, 2, \"0\");\r\n break;\r\n case \"K\":\r\n value = $utils.get12Hours(hours, 0).toString();\r\n break;\r\n case \"KK\":\r\n value = $utils.padString($utils.get12Hours(hours, 0), 2, \"0\");\r\n break;\r\n case \"k\":\r\n value = (hours + 1).toString();\r\n break;\r\n case \"kk\":\r\n value = $utils.padString(hours + 1, 2, \"0\");\r\n break;\r\n case \"m\":\r\n value = minutes.toString();\r\n break;\r\n case \"mm\":\r\n value = $utils.padString(minutes, 2, \"0\");\r\n break;\r\n case \"s\":\r\n value = seconds.toString();\r\n break;\r\n case \"ss\":\r\n value = $utils.padString(seconds, 2, \"0\");\r\n break;\r\n case \"S\":\r\n case \"SS\":\r\n case \"SSS\":\r\n value = Math.round((milliseconds / 1000) * Math.pow(10, info.parts[i].length)).toString();\r\n break;\r\n case \"x\":\r\n value = timestamp.toString();\r\n break;\r\n case \"n\":\r\n case \"nn\":\r\n case \"nnn\":\r\n value = $utils.padString(milliseconds, info.parts[i].length, \"0\");\r\n break;\r\n case \"z\":\r\n value = $utils.getTimeZone(date, false, false, this._root.utc, this._root.timezone ? this._root.timezone.name : undefined).replace(/[+-]+[0-9]+$/, \"\");\r\n break;\r\n case \"zz\":\r\n value = $utils.getTimeZone(date, true, false, this._root.utc, this._root.timezone ? this._root.timezone.name : undefined);\r\n break;\r\n case \"zzz\":\r\n value = $utils.getTimeZone(date, false, true, this._root.utc, this._root.timezone ? this._root.timezone.name : undefined).replace(/[+-]+[0-9]+$/, \"\");\r\n break;\r\n case \"zzzz\":\r\n value = $utils.getTimeZone(date, true, true, this._root.utc, this._root.timezone ? this._root.timezone.name : undefined);\r\n break;\r\n case \"Z\":\r\n case \"ZZ\":\r\n let timezone = this._root.utc ? \"UTC\" : this._root.timezone;\r\n if (timezone instanceof Timezone) {\r\n timezone = timezone.name;\r\n }\r\n const offset = timezone ? $utils.getTimezoneOffset(timezone) : date.getTimezoneOffset();\r\n let tz = Math.abs(offset) / 60;\r\n let tzh = Math.floor(tz);\r\n let tzm = tz * 60 - tzh * 60;\r\n if (this._root.utc) {\r\n tzh = 0;\r\n tzm = 0;\r\n }\r\n if (info.parts[i] == \"Z\") {\r\n value = \"GMT\";\r\n value += offset > 0 ? \"-\" : \"+\";\r\n value += $utils.padString(tzh, 2) + \":\" + $utils.padString(tzm, 2);\r\n }\r\n else {\r\n value = offset > 0 ? \"-\" : \"+\";\r\n value += $utils.padString(tzh, 2) + $utils.padString(tzm, 2);\r\n }\r\n break;\r\n case \"i\":\r\n value = date.toISOString();\r\n break;\r\n case \"I\":\r\n value = date.toUTCString();\r\n break;\r\n }\r\n res = res.replace($type.PLACEHOLDER, value);\r\n }\r\n return res;\r\n }\r\n /**\r\n * Parses format into structured infromation.\r\n *\r\n * @param format Format template\r\n */\r\n parseFormat(format) {\r\n // Check cache\r\n // TODO: implement caching of the parsed format\r\n // Init format parse info holder\r\n let info = {\r\n \"template\": \"\",\r\n \"parts\": []\r\n };\r\n // Let TextFormatter split into chunks\r\n let chunks = TextFormatter.chunk(format, true);\r\n for (let i = 0; i < chunks.length; i++) {\r\n let chunk = chunks[i];\r\n if (chunk.type === \"value\") {\r\n // Just \"Date\"?\r\n if (chunk.text.match(/^date$/i)) {\r\n let dateFormat = this.get(\"dateFormat\", \"yyyy-MM-dd\");\r\n if (!$type.isString(dateFormat)) {\r\n dateFormat = \"yyyy-MM-dd\";\r\n }\r\n chunk.text = dateFormat;\r\n }\r\n // Find all possible parts\r\n let matches = chunk.text.match(/G|yyyy|yyy|yy|y|YYYY|YYY|YY|Y|u|q|MMMMM|MMMM|MMM|MM|M|ww|w|W|dd|d|DDD|DD|D|F|g|EEEEE|EEEE|EEE|EE|E|eeeee|eeee|eee|ee|e|aaa|aa|a|hh|h|HH|H|KK|K|kk|k|mm|m|ss|s|SSS|SS|S|A|zzzz|zzz|zz|z|ZZ|Z|t|x|nnn|nn|n|i|I/g);\r\n // Found?\r\n if (matches) {\r\n // Populate template\r\n for (let x = 0; x < matches.length; x++) {\r\n info.parts.push(matches[x]);\r\n chunk.text = chunk.text.replace(matches[x], $type.PLACEHOLDER);\r\n }\r\n }\r\n }\r\n // Apply to template\r\n info.template += chunk.text;\r\n }\r\n // Save cache\r\n // TODO\r\n return info;\r\n }\r\n _months() {\r\n return [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\r\n }\r\n _getMonth(index) {\r\n return this._months()[index];\r\n }\r\n _shortMonths() {\r\n return [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May(short)\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\n }\r\n _getShortMonth(index) {\r\n return this._shortMonths()[index];\r\n }\r\n _weekdays() {\r\n return [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\r\n }\r\n _getWeekday(index) {\r\n return this._weekdays()[index];\r\n }\r\n _shortWeekdays() {\r\n return [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\r\n }\r\n _getShortWeekday(index) {\r\n return this._shortWeekdays()[index];\r\n }\r\n parse(source, format) {\r\n // Is it already a Date\r\n if (source instanceof Date) {\r\n return source;\r\n }\r\n // Is it a numeric timestamp\r\n if ($type.isNumber(source)) {\r\n return new Date(source);\r\n }\r\n // Are we parsing a timestamp?\r\n if (format == \"x\") {\r\n return new Date(parseInt(source));\r\n }\r\n // No? Let's check if it's string, and try converting to it if nec\r\n if (!$type.isString(source)) {\r\n source = source.toString();\r\n }\r\n // Init return value\r\n let res;\r\n // Init RegEx for parsing\r\n let reg = \"\";\r\n // Clean format\r\n format = $utils.cleanFormat(format);\r\n // Clip format to length of the source string\r\n format = format.substr(0, source.length);\r\n // Parse format\r\n let info = this.parseFormat(format);\r\n // Init parsed items holder\r\n let parsedIndexes = {\r\n \"year\": -1,\r\n \"year3\": -1,\r\n \"year2\": -1,\r\n \"year1\": -1,\r\n \"month\": -1,\r\n \"monthShort\": -1,\r\n \"monthLong\": -1,\r\n \"weekdayShort\": -1,\r\n \"weekdayLong\": -1,\r\n \"day\": -1,\r\n \"yearDay\": -1,\r\n \"week\": -1,\r\n \"hourBase0\": -1,\r\n \"hour12Base0\": -1,\r\n \"hourBase1\": -1,\r\n \"hour12Base1\": -1,\r\n \"minute\": -1,\r\n \"second\": -1,\r\n \"millisecond\": -1,\r\n \"millisecondDigits\": -1,\r\n \"am\": -1,\r\n \"zone\": -1,\r\n \"timestamp\": -1,\r\n \"iso\": -1\r\n };\r\n // Init values\r\n let resValues = {\r\n \"year\": 1970,\r\n \"month\": 0,\r\n \"day\": 1,\r\n \"hour\": 0,\r\n \"minute\": 0,\r\n \"second\": 0,\r\n \"millisecond\": 0,\r\n \"timestamp\": null,\r\n \"offset\": 0,\r\n \"utc\": this._root.utc\r\n };\r\n // Index adjuster\r\n let indexAdjust = 0;\r\n let index = 0;\r\n // Iterate through all of the parts\r\n for (let i = 0; i < info.parts.length; i++) {\r\n // Set current match index\r\n index = i + indexAdjust + 1;\r\n switch (info.parts[i]) {\r\n case \"yyyy\":\r\n case \"YYYY\":\r\n reg += \"([0-9]{4})\";\r\n parsedIndexes.year = index;\r\n break;\r\n case \"yyy\":\r\n case \"YYY\":\r\n reg += \"([0-9]{3})\";\r\n parsedIndexes.year3 = index;\r\n break;\r\n case \"yy\":\r\n case \"YY\":\r\n reg += \"([0-9]{2})\";\r\n parsedIndexes.year2 = index;\r\n break;\r\n case \"y\":\r\n case \"Y\":\r\n reg += \"([0-9]{1})\";\r\n parsedIndexes.year1 = index;\r\n break;\r\n case \"MMMM\":\r\n reg += \"(\" + this.getStringList(this._months()).join(\"|\") + \")\";\r\n parsedIndexes.monthLong = index;\r\n break;\r\n case \"MMM\":\r\n reg += \"(\" + this.getStringList(this._shortMonths()).join(\"|\") + \")\";\r\n parsedIndexes.monthShort = index;\r\n break;\r\n case \"MM\":\r\n case \"M\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.month = index;\r\n break;\r\n case \"ww\":\r\n case \"w\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.week = index;\r\n break;\r\n case \"dd\":\r\n case \"d\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.day = index;\r\n break;\r\n case \"DDD\":\r\n case \"DD\":\r\n case \"D\":\r\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.yearDay = index;\r\n break;\r\n case \"dddd\":\r\n reg += \"(\" + this.getStringList(this._weekdays()).join(\"|\") + \")\";\r\n parsedIndexes.weekdayLong = index;\r\n break;\r\n case \"ddd\":\r\n reg += \"(\" + this.getStringList(this._shortWeekdays()).join(\"|\") + \")\";\r\n parsedIndexes.weekdayShort = index;\r\n break;\r\n case \"aaa\":\r\n case \"aa\":\r\n case \"a\":\r\n // TODO: fix (escape regex)\r\n reg += \"(\" + this.getStringList([\"AM\", \"PM\", \"A\\.M\\.\", \"P\\.M\\.\", \"A\", \"P\"]).join(\"|\") + \")\";\r\n parsedIndexes.am = index;\r\n break;\r\n case \"hh\":\r\n case \"h\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hour12Base1 = index;\r\n break;\r\n case \"HH\":\r\n case \"H\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hourBase0 = index;\r\n break;\r\n case \"KK\":\r\n case \"K\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hour12Base0 = index;\r\n break;\r\n case \"kk\":\r\n case \"k\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hourBase1 = index;\r\n break;\r\n case \"mm\":\r\n case \"m\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.minute = index;\r\n break;\r\n case \"ss\":\r\n case \"s\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.second = index;\r\n break;\r\n case \"SSS\":\r\n case \"SS\":\r\n case \"S\":\r\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.millisecond = index;\r\n parsedIndexes.millisecondDigits = info.parts[i].length;\r\n break;\r\n case \"nnn\":\r\n case \"nn\":\r\n case \"n\":\r\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.millisecond = index;\r\n break;\r\n case \"x\":\r\n reg += \"([0-9]{1,})\";\r\n parsedIndexes.timestamp = index;\r\n break;\r\n case \"Z\":\r\n reg += \"GMT([-+]+[0-9]{2}:[0-9]{2})\";\r\n parsedIndexes.zone = index;\r\n break;\r\n case \"ZZ\":\r\n reg += \"([\\\\-+]+[0-9]{2}[0-9]{2})\";\r\n parsedIndexes.zone = index;\r\n break;\r\n case \"i\":\r\n reg += \"([0-9]{4})-?([0-9]{2})-?([0-9]{2})T?([0-9]{2}):?([0-9]{2}):?([0-9]{2})\\\\.?([0-9]{0,3})([zZ]|[+\\\\-][0-9]{2}:?[0-9]{2}|$)\";\r\n parsedIndexes.iso = index;\r\n indexAdjust += 7;\r\n break;\r\n case \"G\":\r\n case \"YYYY\":\r\n case \"YYY\":\r\n case \"YY\":\r\n case \"Y\":\r\n case \"MMMMM\":\r\n case \"W\":\r\n case \"EEEEE\":\r\n case \"EEEE\":\r\n case \"EEE\":\r\n case \"EE\":\r\n case \"E\":\r\n case \"eeeee\":\r\n case \"eeee\":\r\n case \"eee\":\r\n case \"ee\":\r\n case \"e\":\r\n case \"zzzz\":\r\n case \"zzz\":\r\n case \"zz\":\r\n case \"z\":\r\n case \"t\":\r\n // Ignore\r\n indexAdjust--;\r\n break;\r\n }\r\n reg += \"[^0-9]*\";\r\n }\r\n // Try matching\r\n let regex = new RegExp(reg);\r\n let matches = source.match(regex);\r\n if (matches) {\r\n // Populate the date object\r\n // Full year\r\n if (parsedIndexes.year > -1) {\r\n resValues.year = parseInt(matches[parsedIndexes.year]);\r\n }\r\n // 3-digit year\r\n if (parsedIndexes.year3 > -1) {\r\n let val = parseInt(matches[parsedIndexes.year3]);\r\n val += 1000;\r\n resValues.year = val;\r\n }\r\n // 2-digit year\r\n if (parsedIndexes.year2 > -1) {\r\n let val = parseInt(matches[parsedIndexes.year2]);\r\n if (val > 50) {\r\n val += 1000;\r\n }\r\n else {\r\n val += 2000;\r\n }\r\n resValues.year = val;\r\n }\r\n // 1-digit year\r\n if (parsedIndexes.year1 > -1) {\r\n let val = parseInt(matches[parsedIndexes.year1]);\r\n val = Math.floor((new Date().getFullYear()) / 10) * 10 + val;\r\n resValues.year = val;\r\n }\r\n // Full month\r\n if (parsedIndexes.monthLong > -1) {\r\n resValues.month = this.resolveMonth(matches[parsedIndexes.monthLong]);\r\n }\r\n // Short month\r\n if (parsedIndexes.monthShort > -1) {\r\n resValues.month = this.resolveShortMonth(matches[parsedIndexes.monthShort]);\r\n }\r\n // Numeric month\r\n if (parsedIndexes.month > -1) {\r\n resValues.month = parseInt(matches[parsedIndexes.month]) - 1;\r\n }\r\n // Weekday\r\n // @todo\r\n // Week\r\n if ((parsedIndexes.week > -1) && (parsedIndexes.day === -1)) {\r\n // We parse weeks ONLY if day is not explicitly set\r\n // TODO: this needs work\r\n // (but maybe later - I can hardly imagine anyone passing their dates in weeks)\r\n resValues.month = 0;\r\n resValues.day = $utils.getDayFromWeek(parseInt(matches[parsedIndexes.week]), resValues.year, 1, this._root.utc);\r\n }\r\n // Day\r\n if (parsedIndexes.day > -1) {\r\n resValues.day = parseInt(matches[parsedIndexes.day]);\r\n }\r\n // Year day\r\n if (parsedIndexes.yearDay > -1) {\r\n resValues.month = 0;\r\n resValues.day = parseInt(matches[parsedIndexes.yearDay]);\r\n }\r\n // 24 Hour (0-23)\r\n if (parsedIndexes.hourBase0 > -1) {\r\n resValues.hour = parseInt(matches[parsedIndexes.hourBase0]);\r\n }\r\n // 24 Hour (1-24)\r\n if (parsedIndexes.hourBase1 > -1) {\r\n resValues.hour = parseInt(matches[parsedIndexes.hourBase1]) - 1;\r\n }\r\n // 12 Hour (0-11)\r\n if (parsedIndexes.hour12Base0 > -1) {\r\n let val = parseInt(matches[parsedIndexes.hour12Base0]);\r\n if (val == 11) {\r\n val = 0;\r\n }\r\n if ((parsedIndexes.am > -1) && !this.isAm(matches[parsedIndexes.am])) {\r\n val += 12;\r\n }\r\n resValues.hour = val;\r\n }\r\n // 12 Hour (1-12)\r\n if (parsedIndexes.hour12Base1 > -1) {\r\n let val = parseInt(matches[parsedIndexes.hour12Base1]);\r\n if (val == 12) {\r\n val = 0;\r\n }\r\n if ((parsedIndexes.am > -1) && !this.isAm(matches[parsedIndexes.am])) {\r\n val += 12;\r\n }\r\n resValues.hour = val;\r\n }\r\n // Minute\r\n if (parsedIndexes.minute > -1) {\r\n resValues.minute = parseInt(matches[parsedIndexes.minute]);\r\n }\r\n // Second\r\n if (parsedIndexes.second > -1) {\r\n resValues.second = parseInt(matches[parsedIndexes.second]);\r\n }\r\n // Millisecond\r\n if (parsedIndexes.millisecond > -1) {\r\n let val = parseInt(matches[parsedIndexes.millisecond]);\r\n if (parsedIndexes.millisecondDigits == 2) {\r\n val *= 10;\r\n }\r\n else if (parsedIndexes.millisecondDigits == 1) {\r\n val *= 100;\r\n }\r\n resValues.millisecond = val;\r\n }\r\n // Timestamp\r\n if (parsedIndexes.timestamp > -1) {\r\n resValues.timestamp = parseInt(matches[parsedIndexes.timestamp]);\r\n const ts = new Date(resValues.timestamp);\r\n resValues.year = ts.getUTCFullYear();\r\n resValues.month = ts.getUTCMonth();\r\n resValues.day = ts.getUTCDate();\r\n resValues.hour = ts.getUTCHours();\r\n resValues.minute = ts.getUTCMinutes();\r\n resValues.second = ts.getUTCSeconds();\r\n resValues.millisecond = ts.getUTCMilliseconds();\r\n }\r\n // Adjust time zone\r\n if (parsedIndexes.zone > -1) {\r\n resValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.zone]);\r\n }\r\n // ISO\r\n if (parsedIndexes.iso > -1) {\r\n resValues.year = $type.toNumber(matches[parsedIndexes.iso + 0]);\r\n resValues.month = $type.toNumber(matches[parsedIndexes.iso + 1]) - 1;\r\n resValues.day = $type.toNumber(matches[parsedIndexes.iso + 2]);\r\n resValues.hour = $type.toNumber(matches[parsedIndexes.iso + 3]);\r\n resValues.minute = $type.toNumber(matches[parsedIndexes.iso + 4]);\r\n resValues.second = $type.toNumber(matches[parsedIndexes.iso + 5]);\r\n resValues.millisecond = $type.toNumber(matches[parsedIndexes.iso + 6]);\r\n if (matches[parsedIndexes.iso + 7] == \"Z\" || matches[parsedIndexes.iso + 7] == \"z\") {\r\n resValues.utc = true;\r\n }\r\n else if (matches[parsedIndexes.iso + 7] != \"\") {\r\n resValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.iso + 7]);\r\n }\r\n }\r\n // Create Date object\r\n if (resValues.utc) {\r\n res = new Date(Date.UTC(resValues.year, resValues.month, resValues.day, resValues.hour, resValues.minute, resValues.second, resValues.millisecond));\r\n }\r\n else {\r\n res = new Date(resValues.year, resValues.month, resValues.day, resValues.hour, resValues.minute + resValues.offset, resValues.second, resValues.millisecond);\r\n }\r\n }\r\n else {\r\n // Didn't match anything\r\n // Let's try dropping it into Date constructor and hope for the best\r\n res = new Date(source);\r\n }\r\n return res;\r\n }\r\n resolveTimezoneOffset(date, zone) {\r\n let value = zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/);\r\n if (value) {\r\n let match = zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/);\r\n let dir = match[1];\r\n let hour = match[2];\r\n let minute = match[3];\r\n let offset = parseInt(hour) * 60 + parseInt(minute);\r\n // Adjust offset\r\n // Making it negative does not seem to make sense, but it's right\r\n // because of how JavaScript calculates GMT offsets\r\n if (dir == \"+\") {\r\n offset *= -1;\r\n }\r\n // Check the difference in offset\r\n let originalOffset = (date || new Date()).getTimezoneOffset();\r\n let diff = offset - originalOffset;\r\n return diff;\r\n }\r\n return 0;\r\n }\r\n /**\r\n * Resolves month name (i.e. \"December\") into a month number (11).\r\n *\r\n * @param value Month name\r\n * @return Month number\r\n */\r\n resolveMonth(value) {\r\n // Let's try English first\r\n let month = this._months().indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n // Try the translation\r\n if (!this._root.language.isDefault()) {\r\n month = this._root.language.translateAll(this._months()).indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n }\r\n return 0;\r\n }\r\n /**\r\n * Resolves short month name (i.e. \"Dec\") into a month number.\r\n *\r\n * @param value Short month name\r\n * @return Month number\r\n */\r\n resolveShortMonth(value) {\r\n // Let's try English first\r\n let month = this._shortMonths().indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n // Maybe long month (workaround for May)\r\n month = this._months().indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n // Try the translation\r\n if (this._root.language && !this._root.language.isDefault()) {\r\n month = this._root.language.translateAll(this._shortMonths()).indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n }\r\n return 0;\r\n }\r\n /**\r\n * Checks if passed in string represents AM/PM notation in many of its\r\n * versions.\r\n *\r\n * @param value Source string\r\n * @return Is it AM/PM?\r\n */\r\n isAm(value) {\r\n let list = this.getStringList([\"AM\", \"A.M.\", \"A\"]);\r\n return list.indexOf(value.toUpperCase()) > -1;\r\n }\r\n /**\r\n * Translates list of strings.\r\n *\r\n * @param list Source strings\r\n * @return Translated strings\r\n */\r\n getStringList(list) {\r\n let res = [];\r\n for (let i = 0; i < list.length; i++) {\r\n // translate?\r\n if (this._root.language) {\r\n res.push($utils.escapeForRgex(this._t(list[i])));\r\n }\r\n else {\r\n res.push($utils.escapeForRgex(list[i]));\r\n }\r\n }\r\n return res;\r\n }\r\n}\r\n//# sourceMappingURL=DateFormatter.js.map","import { Entity } from \"./Entity\";\r\nimport { TextFormatter } from \"./TextFormatter\";\r\nimport * as $object from \"./Object\";\r\nimport * as $utils from \"./Utils\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * A class used to format numberic values as time duration.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-durations/} for more info\r\n */\r\nexport class DurationFormatter extends Entity {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * Collection of aliases for units.\r\n */\r\n Object.defineProperty(this, \"_unitAliases\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {\r\n \"Y\": \"y\",\r\n \"D\": \"d\",\r\n \"H\": \"h\",\r\n \"K\": \"h\",\r\n \"k\": \"h\",\r\n \"n\": \"S\"\r\n }\r\n });\r\n }\r\n _setDefaults() {\r\n const dmillisecond = \"_duration_millisecond\";\r\n const dsecond = \"_duration_second\";\r\n const dminute = \"_duration_minute\";\r\n const dhour = \"_duration_hour\";\r\n const dday = \"_duration_day\";\r\n const dweek = \"_duration_week\";\r\n const dmonth = \"_duration_month\";\r\n const dyear = \"_duration_year\";\r\n const asecond = \"_second\";\r\n const aminute = \"_minute\";\r\n const ahour = \"_hour\";\r\n const aday = \"_day\";\r\n const aweek = \"_week\";\r\n const amonth = \"_week\";\r\n const ayear = \"_year\";\r\n // Defaults\r\n this._setDefault(\"negativeBase\", 0);\r\n this._setDefault(\"baseUnit\", \"second\");\r\n this._setDefault(\"durationFormats\", {\r\n \"millisecond\": {\r\n \"millisecond\": this._t(dmillisecond),\r\n \"second\": this._t((dmillisecond + asecond)),\r\n \"minute\": this._t((dmillisecond + aminute)),\r\n \"hour\": this._t((dmillisecond + ahour)),\r\n \"day\": this._t((dmillisecond + aday)),\r\n \"week\": this._t((dmillisecond + aweek)),\r\n \"month\": this._t((dmillisecond + amonth)),\r\n \"year\": this._t((dmillisecond + ayear))\r\n },\r\n \"second\": {\r\n \"second\": this._t((dsecond)),\r\n \"minute\": this._t((dsecond + aminute)),\r\n \"hour\": this._t((dsecond + ahour)),\r\n \"day\": this._t((dsecond + aday)),\r\n \"week\": this._t((dsecond + aweek)),\r\n \"month\": this._t((dsecond + amonth)),\r\n \"year\": this._t((dsecond + ayear))\r\n },\r\n \"minute\": {\r\n \"minute\": this._t((dminute)),\r\n \"hour\": this._t((dminute + ahour)),\r\n \"day\": this._t((dminute + aday)),\r\n \"week\": this._t((dminute + aweek)),\r\n \"month\": this._t((dminute + amonth)),\r\n \"year\": this._t((dminute + ayear))\r\n },\r\n \"hour\": {\r\n \"hour\": this._t((dhour)),\r\n \"day\": this._t((dhour + aday)),\r\n \"week\": this._t((dhour + aweek)),\r\n \"month\": this._t((dhour + amonth)),\r\n \"year\": this._t((dhour + ayear))\r\n },\r\n \"day\": {\r\n \"day\": this._t((dday)),\r\n \"week\": this._t((dday + aweek)),\r\n \"month\": this._t((dday + amonth)),\r\n \"year\": this._t((dday + ayear))\r\n },\r\n \"week\": {\r\n \"week\": this._t((dweek)),\r\n \"month\": this._t((dweek + amonth)),\r\n \"year\": this._t((dweek + ayear))\r\n },\r\n \"month\": {\r\n \"month\": this._t((dmonth)),\r\n \"year\": this._t((dmonth + ayear))\r\n },\r\n \"year\": {\r\n \"year\": this._t(dyear)\r\n }\r\n });\r\n super._setDefaults();\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n }\r\n /**\r\n * Formats the number as duration.\r\n *\r\n * For example `1000` (base unit seconds) would be converted to `16:40` as in\r\n * 16 minutes and 40 seconds.\r\n *\r\n * @param value Value to format\r\n * @param format Format to apply\r\n * @param base Override base unit\r\n * @return Formatted number\r\n */\r\n format(value, format, base) {\r\n // no base unit?\r\n let baseUnit = base || this.get(\"baseUnit\");\r\n // no format passed in or empty\r\n if (typeof format === \"undefined\" || format === \"\") {\r\n if (this.get(\"durationFormat\") != null) {\r\n format = this.get(\"durationFormat\");\r\n }\r\n else {\r\n format = this.getFormat($type.toNumber(value), undefined, baseUnit);\r\n }\r\n }\r\n // Clean format\r\n format = $utils.cleanFormat(format);\r\n // get format info (it will also deal with parser caching)\r\n let info = this.parseFormat(format, baseUnit);\r\n // cast to number just in case\r\n // TODO: maybe use better casting\r\n let source = Number(value);\r\n // format and replace the number\r\n let details;\r\n if (source > this.get(\"negativeBase\")) {\r\n details = info.positive;\r\n }\r\n else if (source < this.get(\"negativeBase\")) {\r\n details = info.negative;\r\n }\r\n else {\r\n details = info.zero;\r\n }\r\n // Format\r\n let formatted = this.applyFormat(source, details);\r\n // Apply color?\r\n if (details.color !== \"\") {\r\n formatted = \"[\" + details.color + \"]\" + formatted + \"[/]\";\r\n }\r\n return formatted;\r\n }\r\n /**\r\n * Parses supplied format into structured object which can be used to format\r\n * the number.\r\n *\r\n * @param format Format string, i.e. \"#,###.00\"\r\n * @param base Override base unit\r\n * @return Parsed information\r\n */\r\n parseFormat(format, base) {\r\n // Check cache\r\n // TODO\r\n // let cached = this.getCache(format);\r\n // if (cached != null) {\r\n // \treturn cached;\r\n // }\r\n // no base unit?\r\n let baseUnit = base || this.get(\"baseUnit\");\r\n // Initialize duration parsing info\r\n let info = {\r\n \"positive\": {\r\n \"color\": \"\",\r\n \"template\": \"\",\r\n \"parts\": [],\r\n \"source\": \"\",\r\n \"baseUnit\": baseUnit,\r\n \"parsed\": false,\r\n \"absolute\": false\r\n },\r\n \"negative\": {\r\n \"color\": \"\",\r\n \"template\": \"\",\r\n \"parts\": [],\r\n \"source\": \"\",\r\n \"baseUnit\": baseUnit,\r\n \"parsed\": false,\r\n \"absolute\": false\r\n },\r\n \"zero\": {\r\n \"color\": \"\",\r\n \"template\": \"\",\r\n \"parts\": [],\r\n \"source\": \"\",\r\n \"baseUnit\": baseUnit,\r\n \"parsed\": false,\r\n \"absolute\": false\r\n }\r\n };\r\n // Escape double vertical bars (that mean display one vertical bar)\r\n format = format.replace(\"||\", $type.PLACEHOLDER2);\r\n // Split it up and deal with different formats\r\n let parts = format.split(\"|\");\r\n info.positive.source = parts[0];\r\n if (typeof parts[2] === \"undefined\") {\r\n info.zero = info.positive;\r\n }\r\n else {\r\n info.zero.source = parts[2];\r\n }\r\n if (typeof parts[1] === \"undefined\") {\r\n info.negative = info.positive;\r\n }\r\n else {\r\n info.negative.source = parts[1];\r\n }\r\n // Parse each\r\n $object.each(info, (_part, item) => {\r\n // Already parsed\r\n if (item.parsed) {\r\n return;\r\n }\r\n // Check cached\r\n // TODO\r\n // if (typeof this.getCache(item.source) !== \"undefined\") {\r\n // \tinfo[part] = this.getCache(item.source);\r\n // \treturn;\r\n // }\r\n // Begin parsing\r\n let partFormat = item.source;\r\n // Check for [] directives\r\n let dirs = [];\r\n dirs = item.source.match(/^\\[([^\\]]*)\\]/);\r\n if (dirs && dirs.length && dirs[0] !== \"\") {\r\n partFormat = item.source.substr(dirs[0].length);\r\n item.color = dirs[1];\r\n }\r\n // Let TextFormatter split into chunks\r\n let chunks = TextFormatter.chunk(partFormat, true);\r\n for (let i = 0; i < chunks.length; i++) {\r\n let chunk = chunks[i];\r\n // replace back double vertical bar\r\n chunk.text = chunk.text.replace($type.PLACEHOLDER2, \"|\");\r\n if (chunk.type === \"value\") {\r\n // Just \"Duration\"?\r\n // if (chunk.text.toLowerCase() === \"duration\") {\r\n // \tchunk.text = durationFormat;\r\n // }\r\n // Check for \"a\" (absolute) modifier\r\n if (chunk.text.match(/[yYMdDwhHKkmsSn]+a/)) {\r\n item.absolute = true;\r\n chunk.text = chunk.text.replace(/([yYMdDwhHKkmsSn]+)a/, \"$1\");\r\n }\r\n // Find all possible parts\r\n let matches = chunk.text.match(/y+|Y+|M+|d+|D+|w+|h+|H+|K+|k+|m+|s+|S+|n+/g);\r\n if (matches) {\r\n // Populate template\r\n for (let x = 0; x < matches.length; x++) {\r\n // Is it an alias?\r\n if (matches[x] == null) {\r\n matches[x] = this._unitAliases[matches[x]];\r\n }\r\n item.parts.push(matches[x]);\r\n chunk.text = chunk.text.replace(matches[x], $type.PLACEHOLDER);\r\n }\r\n }\r\n }\r\n // Apply to template\r\n item.template += chunk.text;\r\n }\r\n // Apply style formatting\r\n //item.template = TextFormatter.format(item.template, this.outputFormat);\r\n // Save cache\r\n // TODO\r\n //this.setCache(item.source, item);\r\n // Mark this as parsed\r\n item.parsed = true;\r\n });\r\n // Save cache (the whole thing)\r\n // TODO\r\n //this.setCache(format, info);\r\n return info;\r\n }\r\n /**\r\n * Applies parsed format to a numeric value.\r\n *\r\n * @param value Value\r\n * @param details Parsed format as returned by {parseFormat}\r\n * @return Formatted duration\r\n */\r\n applyFormat(value, details) {\r\n // Use absolute values\r\n let negative = !details.absolute && (value < this.get(\"negativeBase\"));\r\n value = Math.abs(value);\r\n // Recalculate to milliseconds\r\n let tstamp = this.toTimeStamp(value, details.baseUnit);\r\n // Init return value\r\n let res = details.template;\r\n // Iterate through duration parts\r\n for (let i = 0, len = details.parts.length; i < len; i++) {\r\n // Gather the part\r\n let part = details.parts[i];\r\n let unit = this._toTimeUnit(part.substr(0, 1));\r\n let digits = part.length;\r\n // Calculate current unit value\r\n let ints;\r\n const unitValue = this._getUnitValue(unit);\r\n if (i < (len - 1)) {\r\n ints = Math.floor(tstamp / unitValue);\r\n }\r\n else {\r\n ints = Math.round(tstamp / unitValue);\r\n }\r\n res = res.replace($type.PLACEHOLDER, $utils.padString(ints, digits, \"0\"));\r\n // Reduce timestamp\r\n tstamp -= ints * unitValue;\r\n }\r\n // Reapply negative sign\r\n if (negative) {\r\n res = \"-\" + res;\r\n }\r\n return res;\r\n }\r\n /**\r\n * Converts numeric value to timestamp in milliseconds.\r\n *\r\n * @param value A source value\r\n * @param baseUnit Base unit the source value is in: \"q\", \"s\", \"i\", \"h\", \"d\", \"w\", \"m\", \"y\"\r\n * @return Value representation as a timestamp in milliseconds\r\n */\r\n toTimeStamp(value, baseUnit) {\r\n return value * this._getUnitValue(baseUnit);\r\n }\r\n _toTimeUnit(code) {\r\n switch (code) {\r\n case \"S\":\r\n return \"millisecond\";\r\n case \"s\":\r\n return \"second\";\r\n case \"m\":\r\n return \"minute\";\r\n case \"h\":\r\n return \"hour\";\r\n case \"d\":\r\n return \"day\";\r\n case \"w\":\r\n return \"week\";\r\n case \"M\":\r\n return \"month\";\r\n case \"y\":\r\n return \"year\";\r\n }\r\n ;\r\n }\r\n /**\r\n * Returns appropriate default format for the value.\r\n *\r\n * If `maxValue` is sepcified, it will use that value to determine the time\r\n * unit for the format.\r\n *\r\n * For example if your `baseUnit` is `\"second\"` and you pass in `10`, you\r\n * will get `\"10\"`.\r\n *\r\n * However, you might want it to be formatted in the context of bigger scale,\r\n * say 10 minutes (600 seconds). If you pass in `600` as `maxValue`, all\r\n * values, including small ones will use format with minutes, e.g.:\r\n * `00:10`, `00:50`, `12: 30`, etc.\r\n *\r\n * @param value Value to format\r\n * @param maxValue Maximum value to be used to determine format\r\n * @param baseUnit Base unit of the value\r\n * @return Format\r\n */\r\n getFormat(value, maxValue, baseUnit) {\r\n // Is format override set?\r\n if (this.get(\"durationFormat\") != null) {\r\n return this.get(\"durationFormat\");\r\n }\r\n // Get base unit\r\n if (!baseUnit) {\r\n baseUnit = this.get(\"baseUnit\");\r\n }\r\n if (maxValue != null && value != maxValue) {\r\n value = Math.abs(value);\r\n maxValue = Math.abs(maxValue);\r\n let maxUnit = this.getValueUnit(Math.max(value, maxValue), baseUnit);\r\n return this.get(\"durationFormats\")[baseUnit][maxUnit];\r\n }\r\n else {\r\n let unit = this.getValueUnit(value, baseUnit);\r\n return this.get(\"durationFormats\")[baseUnit][unit];\r\n }\r\n }\r\n /**\r\n * Returns value's closest denominator time unit, e.g 100 seconds is\r\n * `\"minute\"`, while 59 seconds would still be `second`.\r\n *\r\n * @param value Source duration value\r\n * @param baseUnit Base unit\r\n * @return Denominator\r\n */\r\n getValueUnit(value, baseUnit) {\r\n // Get base unit\r\n if (!baseUnit) {\r\n baseUnit = this.get(\"baseUnit\");\r\n }\r\n // Convert to milliseconds\r\n let currentUnit;\r\n let ms = this.getMilliseconds(value, baseUnit);\r\n $object.eachContinue(this._getUnitValues(), (key, val) => {\r\n if (key == baseUnit || currentUnit) {\r\n let num = ms / val;\r\n if (num <= 1) {\r\n if (!currentUnit) {\r\n currentUnit = key;\r\n }\r\n return false;\r\n }\r\n currentUnit = key;\r\n }\r\n return true;\r\n });\r\n return currentUnit;\r\n }\r\n /**\r\n * Converts value to milliseconds according to `baseUnit`.\r\n *\r\n * @param value Source duration value\r\n * @param baseUnit Base unit\r\n * @return Value in milliseconds\r\n */\r\n getMilliseconds(value, baseUnit) {\r\n // Get base unit\r\n if (!baseUnit) {\r\n baseUnit = this.get(\"baseUnit\");\r\n }\r\n return value * this._getUnitValue(baseUnit);\r\n }\r\n _getUnitValue(timeUnit) {\r\n return this._getUnitValues()[timeUnit];\r\n }\r\n _getUnitValues() {\r\n return {\r\n \"millisecond\": 1,\r\n \"second\": 1000,\r\n \"minute\": 60000,\r\n \"hour\": 3600000,\r\n \"day\": 86400000,\r\n \"week\": 604800000,\r\n \"month\": 2592000000,\r\n \"year\": 31536000000,\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=DurationFormatter.js.map","/**\r\n * amCharts 5 locale\r\n *\r\n * Locale: en\r\n * Language: International English\r\n * Author: Martynas Majeris\r\n *\r\n * Follow instructions in [on this page](https://www.amcharts.com/docs/v5/tutorials/creating-translations/) to make corrections or add new translations.\r\n *\r\n * ---\r\n * Edit but leave the header section above this line. You can remove any\r\n * subsequent comment sections.\r\n * ---\r\n *\r\n * Use this file as a template to create translations. Leave the key part in\r\n * English intact. Fill the value with a translation.\r\n *\r\n * Empty string means no translation, so default \"International English\"\r\n * will be used.\r\n *\r\n * If you need the translation to literally be an empty string, use `null`\r\n * instead.\r\n *\r\n * IMPORTANT:\r\n * When translating make good effort to keep the translation length\r\n * at least the same chartcount as the English, especially for short prompts.\r\n *\r\n * Having significantly longer prompts may distort the actual charts.\r\n *\r\n * NOTE:\r\n * Some prompts - like months or weekdays - come in two versions: full and\r\n * shortened.\r\n *\r\n * If there's no official shortened version of these in your language, and it\r\n * would not be possible to invent such short versions that don't seem weird\r\n * to native speakers of that language, fill those with the same as full\r\n * version.\r\n *\r\n * PLACEHOLDERS:\r\n * Some prompts have placeholders like \"%1\". Those will be replaced by actual\r\n * values during translation and should be retained in the translated prompts.\r\n *\r\n * Placeholder positions may be changed to better suit structure of the\r\n * sentence.\r\n *\r\n * For example \"From %1 to %2\", when actually used will replace \"%1\" with an\r\n * actual value representing range start, and \"%2\" will be replaced by end\r\n * value.\r\n *\r\n * E.g. in a Scrollbar for Value axis \"From %1 to %2\" will become\r\n * \"From 100 to 200\". You may translate \"From\" and \"to\", as well as re-arrange\r\n * the order of the prompt itself, but make sure the \"%1\" and \"%2\" remain, in\r\n * places where they will make sense.\r\n *\r\n * Save the file as language_LOCALE, i.e. `en_GB.ts`, `fr_FR.ts`, etc.\r\n */\r\nexport default {\r\n \"firstDayOfWeek\": 1,\r\n // Number formatting options.\r\n // \r\n // Please check with the local standards which separator is accepted to be\r\n // used for separating decimals, and which for thousands.\r\n \"_decimalSeparator\": \".\",\r\n \"_thousandSeparator\": \",\",\r\n // Position of the percent sign in numbers\r\n \"_percentPrefix\": null,\r\n \"_percentSuffix\": \"%\",\r\n // Suffixes for numbers\r\n // When formatting numbers, big or small numers might be reformatted to\r\n // shorter version, by applying a suffix.\r\n // \r\n // For example, 1000000 might become \"1m\".\r\n // Or 1024 might become \"1KB\" if we're formatting byte numbers.\r\n // \r\n // This section defines such suffixes for all such cases.\r\n \"_big_number_suffix_3\": \"k\",\r\n \"_big_number_suffix_6\": \"M\",\r\n \"_big_number_suffix_9\": \"G\",\r\n \"_big_number_suffix_12\": \"T\",\r\n \"_big_number_suffix_15\": \"P\",\r\n \"_big_number_suffix_18\": \"E\",\r\n \"_big_number_suffix_21\": \"Z\",\r\n \"_big_number_suffix_24\": \"Y\",\r\n \"_small_number_suffix_3\": \"m\",\r\n \"_small_number_suffix_6\": \"μ\",\r\n \"_small_number_suffix_9\": \"n\",\r\n \"_small_number_suffix_12\": \"p\",\r\n \"_small_number_suffix_15\": \"f\",\r\n \"_small_number_suffix_18\": \"a\",\r\n \"_small_number_suffix_21\": \"z\",\r\n \"_small_number_suffix_24\": \"y\",\r\n \"_byte_suffix_B\": \"B\",\r\n \"_byte_suffix_KB\": \"KB\",\r\n \"_byte_suffix_MB\": \"MB\",\r\n \"_byte_suffix_GB\": \"GB\",\r\n \"_byte_suffix_TB\": \"TB\",\r\n \"_byte_suffix_PB\": \"PB\",\r\n // Default date formats for various periods.\r\n // \r\n // This should reflect official or de facto formatting universally accepted\r\n // in the country translation is being made for\r\n // Available format codes here:\r\n // https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/#Format_codes\r\n // \r\n // This will be used when formatting date/time for particular granularity,\r\n // e.g. \"_date_hour\" will be shown whenever we need to show time as hours.\r\n // \r\n // \"date\" is used as in default date format when showing standalone dates.\r\n \"_date\": \"yyyy-MM-dd\",\r\n \"_date_millisecond\": \"mm:ss SSS\",\r\n \"_date_millisecond_full\": \"HH:mm:ss SSS\",\r\n \"_date_second\": \"HH:mm:ss\",\r\n \"_date_second_full\": \"HH:mm:ss\",\r\n \"_date_minute\": \"HH:mm\",\r\n \"_date_minute_full\": \"HH:mm - MMM dd, yyyy\",\r\n \"_date_hour\": \"HH:mm\",\r\n \"_date_hour_full\": \"HH:mm - MMM dd, yyyy\",\r\n \"_date_day\": \"MMM dd\",\r\n \"_date_day_full\": \"MMM dd, yyyy\",\r\n \"_date_week\": \"ww\",\r\n \"_date_week_full\": \"MMM dd, yyyy\",\r\n \"_date_month\": \"MMM\",\r\n \"_date_month_full\": \"MMM, yyyy\",\r\n \"_date_year\": \"yyyy\",\r\n // Default duration formats for various base units.\r\n // \r\n // This will be used by DurationFormatter to format numeric values into\r\n // duration.\r\n // \r\n // Notice how each duration unit comes in several versions. This is to ensure\r\n // that each base unit is shown correctly.\r\n // \r\n // For example, if we have baseUnit set to \"second\", meaning our duration is\r\n // in seconds.\r\n // \r\n // If we pass in `50` to formatter, it will know that we have just 50 seconds\r\n // (less than a minute) so it will use format in `\"_duration_second\"` (\"ss\"),\r\n // and the formatted result will be in like `\"50\"`.\r\n // \r\n // If we pass in `70`, which is more than a minute, the formatter will switch\r\n // to `\"_duration_second_minute\"` (\"mm:ss\"), resulting in \"01:10\" formatted\r\n // text.\r\n // \r\n // Available codes here:\r\n // https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/#Available_Codes\r\n \"_duration_millisecond\": \"SSS\",\r\n \"_duration_millisecond_second\": \"ss.SSS\",\r\n \"_duration_millisecond_minute\": \"mm:ss SSS\",\r\n \"_duration_millisecond_hour\": \"hh:mm:ss SSS\",\r\n \"_duration_millisecond_day\": \"d'd' mm:ss SSS\",\r\n \"_duration_millisecond_week\": \"d'd' mm:ss SSS\",\r\n \"_duration_millisecond_month\": \"M'm' dd'd' mm:ss SSS\",\r\n \"_duration_millisecond_year\": \"y'y' MM'm' dd'd' mm:ss SSS\",\r\n \"_duration_second\": \"ss\",\r\n \"_duration_second_minute\": \"mm:ss\",\r\n \"_duration_second_hour\": \"hh:mm:ss\",\r\n \"_duration_second_day\": \"d'd' hh:mm:ss\",\r\n \"_duration_second_week\": \"d'd' hh:mm:ss\",\r\n \"_duration_second_month\": \"M'm' dd'd' hh:mm:ss\",\r\n \"_duration_second_year\": \"y'y' MM'm' dd'd' hh:mm:ss\",\r\n \"_duration_minute\": \"mm\",\r\n \"_duration_minute_hour\": \"hh:mm\",\r\n \"_duration_minute_day\": \"d'd' hh:mm\",\r\n \"_duration_minute_week\": \"d'd' hh:mm\",\r\n \"_duration_minute_month\": \"M'm' dd'd' hh:mm\",\r\n \"_duration_minute_year\": \"y'y' MM'm' dd'd' hh:mm\",\r\n \"_duration_hour\": \"hh'h'\",\r\n \"_duration_hour_day\": \"d'd' hh'h'\",\r\n \"_duration_hour_week\": \"d'd' hh'h'\",\r\n \"_duration_hour_month\": \"M'm' dd'd' hh'h'\",\r\n \"_duration_hour_year\": \"y'y' MM'm' dd'd' hh'h'\",\r\n \"_duration_day\": \"d'd'\",\r\n \"_duration_day_week\": \"d'd'\",\r\n \"_duration_day_month\": \"M'm' dd'd'\",\r\n \"_duration_day_year\": \"y'y' MM'm' dd'd'\",\r\n \"_duration_week\": \"w'w'\",\r\n \"_duration_week_month\": \"w'w'\",\r\n \"_duration_week_year\": \"w'w'\",\r\n \"_duration_month\": \"M'm'\",\r\n \"_duration_month_year\": \"y'y' MM'm'\",\r\n \"_duration_year\": \"y'y'\",\r\n // Era translations\r\n \"_era_ad\": \"AD\",\r\n \"_era_bc\": \"BC\",\r\n // Day part, used in 12-hour formats, e.g. 5 P.M.\r\n // Please note that these come in 3 variants:\r\n // * one letter (e.g. \"A\")\r\n // * two letters (e.g. \"AM\")\r\n // * two letters with dots (e.g. \"A.M.\")\r\n // \r\n // All three need to to be translated even if they are all the same. Some\r\n // users might use one, some the other.\r\n \"A\": \"\",\r\n \"P\": \"\",\r\n \"AM\": \"\",\r\n \"PM\": \"\",\r\n \"A.M.\": \"\",\r\n \"P.M.\": \"\",\r\n // Date-related stuff.\r\n // \r\n // When translating months, if there's a difference, use the form which is\r\n // best for a full date, e.g. as you would use it in \"2018 January 1\".\r\n // \r\n // Note that May is listed twice. This is because in English May is the same\r\n // in both long and short forms, while in other languages it may not be the\r\n // case. Translate \"May\" to full word, while \"May(short)\" to shortened\r\n // version.\r\n // \r\n // Should month names and weekdays be capitalized or not?\r\n // \r\n // Rule of thumb is this: if the names should always be capitalized,\r\n // regardless of name position within date (\"January\", \"21st January 2018\",\r\n // etc.) use capitalized names. Otherwise enter all lowercase.\r\n // \r\n // The date formatter will automatically capitalize names if they are the\r\n // first (or only) word in resulting date.\r\n \"January\": \"\",\r\n \"February\": \"\",\r\n \"March\": \"\",\r\n \"April\": \"\",\r\n \"May\": \"\",\r\n \"June\": \"\",\r\n \"July\": \"\",\r\n \"August\": \"\",\r\n \"September\": \"\",\r\n \"October\": \"\",\r\n \"November\": \"\",\r\n \"December\": \"\",\r\n \"Jan\": \"\",\r\n \"Feb\": \"\",\r\n \"Mar\": \"\",\r\n \"Apr\": \"\",\r\n \"May(short)\": \"May\",\r\n \"Jun\": \"\",\r\n \"Jul\": \"\",\r\n \"Aug\": \"\",\r\n \"Sep\": \"\",\r\n \"Oct\": \"\",\r\n \"Nov\": \"\",\r\n \"Dec\": \"\",\r\n // Weekdays.\r\n \"Sunday\": \"\",\r\n \"Monday\": \"\",\r\n \"Tuesday\": \"\",\r\n \"Wednesday\": \"\",\r\n \"Thursday\": \"\",\r\n \"Friday\": \"\",\r\n \"Saturday\": \"\",\r\n \"Sun\": \"\",\r\n \"Mon\": \"\",\r\n \"Tue\": \"\",\r\n \"Wed\": \"\",\r\n \"Thu\": \"\",\r\n \"Fri\": \"\",\r\n \"Sat\": \"\",\r\n // Date ordinal function.\r\n // \r\n // This is used when adding number ordinal when formatting days in dates.\r\n // \r\n // E.g. \"January 1st\", \"February 2nd\".\r\n // \r\n // The function accepts day number, and returns a string to be added to the\r\n // day, like in default English translation, if we pass in 2, we will receive\r\n // \"nd\" back.\r\n \"_dateOrd\": function (day) {\r\n let res = \"th\";\r\n if ((day < 11) || (day > 13)) {\r\n switch (day % 10) {\r\n case 1:\r\n res = \"st\";\r\n break;\r\n case 2:\r\n res = \"nd\";\r\n break;\r\n case 3:\r\n res = \"rd\";\r\n break;\r\n }\r\n }\r\n return res;\r\n },\r\n // Various chart controls.\r\n // Shown as a tooltip on zoom out button.\r\n \"Zoom Out\": \"\",\r\n // Timeline buttons\r\n \"Play\": \"\",\r\n \"Stop\": \"\",\r\n // Chart's Legend screen reader title.\r\n \"Legend\": \"\",\r\n // Legend's item screen reader indicator.\r\n \"Press ENTER to toggle\": \"\",\r\n // Shown when the chart is busy loading something.\r\n \"Loading\": \"\",\r\n // Shown as the first button in the breadcrumb navigation, e.g.:\r\n // Home > First level > ...\r\n \"Home\": \"\",\r\n // Chart types.\r\n // Those are used as default screen reader titles for the main chart element\r\n // unless developer has set some more descriptive title.\r\n \"Chart\": \"\",\r\n \"Serial chart\": \"\",\r\n \"X/Y chart\": \"\",\r\n \"Pie chart\": \"\",\r\n \"Gauge chart\": \"\",\r\n \"Radar chart\": \"\",\r\n \"Sankey diagram\": \"\",\r\n \"Flow diagram\": \"\",\r\n \"Chord diagram\": \"\",\r\n \"TreeMap chart\": \"\",\r\n \"Force directed tree\": \"\",\r\n \"Sliced chart\": \"\",\r\n // Series types.\r\n // Used to name series by type for screen readers if they do not have their\r\n // name set.\r\n \"Series\": \"\",\r\n \"Candlestick Series\": \"\",\r\n \"OHLC Series\": \"\",\r\n \"Column Series\": \"\",\r\n \"Line Series\": \"\",\r\n \"Pie Slice Series\": \"\",\r\n \"Funnel Series\": \"\",\r\n \"Pyramid Series\": \"\",\r\n \"X/Y Series\": \"\",\r\n // Map-related stuff.\r\n \"Map\": \"\",\r\n \"Press ENTER to zoom in\": \"\",\r\n \"Press ENTER to zoom out\": \"\",\r\n \"Use arrow keys to zoom in and out\": \"\",\r\n \"Use plus and minus keys on your keyboard to zoom in and out\": \"\",\r\n // Export-related stuff.\r\n // These prompts are used in Export menu labels.\r\n // \r\n // \"Export\" is the top-level menu item.\r\n // \r\n // \"Image\", \"Data\", \"Print\" as second-level indicating type of export\r\n // operation.\r\n // \r\n // Leave actual format untranslated, unless you absolutely know that they\r\n // would convey more meaning in some other way.\r\n \"Export\": \"\",\r\n \"Image\": \"\",\r\n \"Data\": \"\",\r\n \"Print\": \"\",\r\n \"Press ENTER or use arrow keys to navigate\": \"\",\r\n \"Press ENTER to open\": \"\",\r\n \"Press ENTER to print.\": \"\",\r\n \"Press ENTER to export as %1.\": \"\",\r\n \"(Press ESC to close this message)\": \"\",\r\n \"Image Export Complete\": \"\",\r\n \"Export operation took longer than expected. Something might have gone wrong.\": \"\",\r\n \"Saved from\": \"\",\r\n \"PNG\": \"\",\r\n \"JPG\": \"\",\r\n \"GIF\": \"\",\r\n \"SVG\": \"\",\r\n \"PDF\": \"\",\r\n \"JSON\": \"\",\r\n \"CSV\": \"\",\r\n \"XLSX\": \"\",\r\n \"HTML\": \"\",\r\n // Scrollbar-related stuff.\r\n // \r\n // Scrollbar is a control which can zoom and pan the axes on the chart.\r\n // \r\n // Each scrollbar has two grips: left or right (for horizontal scrollbar) or\r\n // upper and lower (for vertical one).\r\n // \r\n // Prompts change in relation to whether Scrollbar is vertical or horizontal.\r\n // \r\n // The final section is used to indicate the current range of selection.\r\n \"Use TAB to select grip buttons or left and right arrows to change selection\": \"\",\r\n \"Use left and right arrows to move selection\": \"\",\r\n \"Use left and right arrows to move left selection\": \"\",\r\n \"Use left and right arrows to move right selection\": \"\",\r\n \"Use TAB select grip buttons or up and down arrows to change selection\": \"\",\r\n \"Use up and down arrows to move selection\": \"\",\r\n \"Use up and down arrows to move lower selection\": \"\",\r\n \"Use up and down arrows to move upper selection\": \"\",\r\n \"From %1 to %2\": \"\",\r\n \"From %1\": \"\",\r\n \"To %1\": \"\",\r\n // Data loader-related.\r\n \"No parser available for file: %1\": \"\",\r\n \"Error parsing file: %1\": \"\",\r\n \"Unable to load file: %1\": \"\",\r\n \"Invalid date\": \"\",\r\n // Common actions\r\n \"Close\": \"\",\r\n \"Minimize\": \"\"\r\n};\r\n//# sourceMappingURL=en.js.map","import { Entity } from \"./Entity\";\r\nimport * as $array from \"./Array\";\r\nimport * as $object from \"./Object\";\r\nimport en from \"../../../locales/en\";\r\n;\r\n/**\r\n * Add localization functionality.\r\n */\r\nexport class Language extends Entity {\r\n _setDefaults() {\r\n this.setPrivate(\"defaultLocale\", en);\r\n super._setDefaults();\r\n }\r\n /**\r\n * Returns a prompt translation.\r\n *\r\n * @param prompt Prompt to translate\r\n * @param locale Target locale\r\n * @param ...rest Parameters\r\n * @return Translation\r\n */\r\n translate(prompt, locale, ...rest) {\r\n // Get langauge\r\n if (!locale) {\r\n locale = this._root.locale || this.getPrivate(\"defaultLocale\");\r\n }\r\n // Init translation\r\n let translation = prompt;\r\n let value = locale[prompt];\r\n // Try to look for the translation\r\n if (value === null) {\r\n translation = \"\";\r\n }\r\n else if (value != null) {\r\n // It might be an empty string\r\n if (value) {\r\n translation = value;\r\n }\r\n }\r\n else if (locale !== this.getPrivate(\"defaultLocale\")) {\r\n // Try to look in default language\r\n return this.translate(prompt, this.getPrivate(\"defaultLocale\"), ...rest);\r\n }\r\n // Replace %1, %2, etc params\r\n if (rest.length) {\r\n for (let len = rest.length, i = 0; i < len; ++i) {\r\n translation = translation.split(\"%\" + (i + 1)).join(rest[i]);\r\n }\r\n }\r\n // Return the translation\r\n return translation;\r\n }\r\n /**\r\n * Returns a prompt translation, including custom prompts.\r\n *\r\n * @param prompt Prompt to translate\r\n * @param locale Target locale\r\n * @param ...rest Parameters\r\n * @return Translation\r\n */\r\n translateAny(prompt, locale, ...rest) {\r\n return this.translate(prompt, locale, ...rest);\r\n }\r\n /**\r\n * Add a custom prompt to locale.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/locales/creating-translations/#Extending_locale_with_custom_prompts}\r\n * @param prompt Source prompt\r\n * @param translation Tanslation\r\n * @param locale Target locale\r\n */\r\n setTranslationAny(prompt, translation, locale) {\r\n const localeTarget = locale || this._root.locale;\r\n localeTarget[prompt] = translation;\r\n }\r\n /**\r\n * Add a batch of custom prompts.\r\n *\r\n * @since 5.3.3\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/locales/creating-translations/#Extending_locale_with_custom_prompts}\r\n * @param translations Translations\r\n * @param locale Target locale\r\n */\r\n setTranslationsAny(translations, locale) {\r\n $object.each(translations, (key, val) => {\r\n this.setTranslationAny(key, val, locale);\r\n });\r\n }\r\n translateEmpty(prompt, locale, ...rest) {\r\n let translation = this.translate(prompt, locale, ...rest);\r\n return translation == prompt ? \"\" : translation;\r\n }\r\n translateFunc(prompt, locale) {\r\n if (this._root.locale[prompt]) {\r\n return this._root.locale[prompt];\r\n }\r\n // Try to look in default language\r\n if (locale !== this.getPrivate(\"defaultLocale\")) {\r\n return this.translateFunc(prompt, this.getPrivate(\"defaultLocale\"));\r\n }\r\n // Fail - return empty function\r\n return () => {\r\n return \"\";\r\n };\r\n }\r\n /**\r\n * Translates a btach of prompts.\r\n *\r\n * @param list Array of prompts to translate\r\n * @param locale Target locale\r\n * @return Array of translations\r\n */\r\n translateAll(list, locale) {\r\n // Translate all items in the list\r\n if (!this.isDefault()) {\r\n return $array.map(list, (x) => this.translate(x, locale));\r\n }\r\n else {\r\n return list;\r\n }\r\n }\r\n /**\r\n * Returns `true` if the currently selected locale is a default locale.\r\n *\r\n * @return `true` if locale is default; `false` if it is not.\r\n */\r\n isDefault() {\r\n return this.getPrivate(\"defaultLocale\") === this._root.locale;\r\n }\r\n}\r\n//# sourceMappingURL=Language.js.map","import { Template } from \"./util/Template\";\r\nimport * as $order from \"./util/Order\";\r\nimport * as $array from \"./util/Array\";\r\n/**\r\n * A base class for an amCharts theme.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/themes/} for more info\r\n * @important\r\n */\r\nexport class Theme {\r\n constructor(root, isReal) {\r\n Object.defineProperty(this, \"_root\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_rules\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n this._root = root;\r\n if (!isReal) {\r\n throw new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\r\n }\r\n }\r\n /**\r\n * Use this method to create an instance of this class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\r\n * @param root Root element\r\n * @param settings Settings\r\n * @param template Template\r\n * @return Instantiated object\r\n */\r\n static new(root) {\r\n const x = (new this(root, true));\r\n x.setupDefaultRules();\r\n return x;\r\n }\r\n setupDefaultRules() { }\r\n /**\r\n * Looks up the rules for a specific theme class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/themes/} for more info\r\n * @param themeClass Theme class\r\n * @return Array>\r\n */\r\n _lookupRules(themeClass) {\r\n return this._rules[themeClass];\r\n }\r\n /**\r\n * Creates a [[Template]] for specific theme class and tags.\r\n *\r\n * NOTE: the difference from `rule()` is that `ruleRaw()` does not do any\r\n * type checks.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/themes/} for more info\r\n * @param themeClass Theme class\r\n * @param themeTags Theme tags\r\n * @return Template\r\n */\r\n ruleRaw(themeClass, themeTags = []) {\r\n let rules = this._rules[themeClass];\r\n if (!rules) {\r\n rules = this._rules[themeClass] = [];\r\n }\r\n themeTags.sort($order.compare);\r\n const { index, found } = $array.getSortedIndex(rules, (x) => {\r\n const order = $order.compare(x.tags.length, themeTags.length);\r\n if (order === 0) {\r\n return $order.compareArray(x.tags, themeTags, $order.compare);\r\n }\r\n else {\r\n return order;\r\n }\r\n });\r\n if (found) {\r\n return rules[index].template;\r\n }\r\n else {\r\n const template = Template.new({});\r\n rules.splice(index, 0, {\r\n tags: themeTags,\r\n template,\r\n });\r\n return template;\r\n }\r\n }\r\n /**\r\n * Creates a [[Template]] for specific theme class and tags.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/themes/} for more info\r\n * @param themeClass Theme class\r\n * @param themeTags Theme tags\r\n * @return Template\r\n */\r\n rule(themeClass, themeTags = []) {\r\n return this.ruleRaw(themeClass, themeTags);\r\n }\r\n}\r\n//# sourceMappingURL=Theme.js.map","import { Theme } from \"../core/Theme\";\r\nimport { p100, p50 } from \"../core/util/Percent\";\r\nimport { Color } from \"../core/util/Color\";\r\nimport { GridLayout } from \"../core/render/GridLayout\";\r\nimport * as $ease from \"../core/util/Ease\";\r\n/**\r\n * @ignore\r\n */\r\nexport function setColor(rule, key, ic, name) {\r\n // TODO this shouldn't use get, figure out a better way\r\n rule.set(key, ic.get(name));\r\n ic.on(name, (value) => {\r\n rule.set(key, value);\r\n });\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class DefaultTheme extends Theme {\r\n setupDefaultRules() {\r\n super.setupDefaultRules();\r\n const language = this._root.language;\r\n const ic = this._root.interfaceColors;\r\n const horizontalLayout = this._root.horizontalLayout;\r\n const verticalLayout = this._root.verticalLayout;\r\n const r = this.rule.bind(this);\r\n /**\r\n * ========================================================================\r\n * core\r\n * ========================================================================\r\n */\r\n r(\"InterfaceColors\").setAll({\r\n stroke: Color.fromHex(0xe5e5e5),\r\n fill: Color.fromHex(0xf3f3f3),\r\n primaryButton: Color.fromHex(0x6794dc),\r\n primaryButtonHover: Color.fromHex(0x6771dc),\r\n primaryButtonDown: Color.fromHex(0x68dc76),\r\n primaryButtonActive: Color.fromHex(0x68dc76),\r\n primaryButtonDisabled: Color.fromHex(0xdadada),\r\n primaryButtonTextDisabled: Color.fromHex(0xffffff),\r\n primaryButtonText: Color.fromHex(0xffffff),\r\n primaryButtonStroke: Color.fromHex(0xffffff),\r\n secondaryButton: Color.fromHex(0xd9d9d9),\r\n secondaryButtonHover: Color.fromHex(0xa3a3a3),\r\n secondaryButtonDown: Color.fromHex(0x8d8d8d),\r\n secondaryButtonActive: Color.fromHex(0xe6e6e6),\r\n secondaryButtonText: Color.fromHex(0x000000),\r\n secondaryButtonStroke: Color.fromHex(0xffffff),\r\n grid: Color.fromHex(0x000000),\r\n background: Color.fromHex(0xffffff),\r\n alternativeBackground: Color.fromHex(0x000000),\r\n text: Color.fromHex(0x000000),\r\n alternativeText: Color.fromHex(0xffffff),\r\n disabled: Color.fromHex(0xadadad),\r\n positive: Color.fromHex(0x50b300),\r\n negative: Color.fromHex(0xb30000)\r\n });\r\n {\r\n const rule = r(\"ColorSet\");\r\n rule.setAll({\r\n passOptions: {\r\n hue: 0.05,\r\n saturation: 0,\r\n lightness: 0\r\n },\r\n colors: [\r\n Color.fromHex(0x67b7dc)\r\n ],\r\n step: 1,\r\n //baseColor: Color.fromRGB(103, 183, 220),\r\n //count: 20,\r\n reuse: false,\r\n startIndex: 0\r\n });\r\n rule.setPrivate(\"currentStep\", 0);\r\n rule.setPrivate(\"currentPass\", 0);\r\n }\r\n r(\"Entity\").setAll({\r\n stateAnimationDuration: 0,\r\n stateAnimationEasing: $ease.out($ease.cubic)\r\n });\r\n r(\"Component\").setAll({\r\n interpolationDuration: 0,\r\n interpolationEasing: $ease.out($ease.cubic)\r\n });\r\n r(\"Sprite\").setAll({\r\n visible: true,\r\n scale: 1,\r\n opacity: 1,\r\n rotation: 0,\r\n position: \"relative\",\r\n tooltipX: p50,\r\n tooltipY: p50,\r\n tooltipPosition: \"fixed\",\r\n isMeasured: true\r\n });\r\n r(\"Sprite\").states.create(\"default\", { \"visible\": true, opacity: 1 });\r\n r(\"Container\").setAll({\r\n interactiveChildren: true,\r\n setStateOnChildren: false\r\n });\r\n r(\"Graphics\").setAll({\r\n strokeWidth: 1\r\n });\r\n r(\"Chart\").setAll({\r\n width: p100,\r\n height: p100,\r\n interactiveChildren: false\r\n });\r\n r(\"ZoomableContainer\").setAll({\r\n width: p100,\r\n height: p100,\r\n wheelable: true,\r\n pinchZoom: true,\r\n maxZoomLevel: 32,\r\n minZoomLevel: 1,\r\n zoomStep: 2,\r\n animationEasing: $ease.out($ease.cubic),\r\n animationDuration: 600,\r\n maxPanOut: 0.4\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: alignment\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Sprite\", [\"horizontal\", \"center\"]).setAll({\r\n centerX: p50,\r\n x: p50\r\n });\r\n r(\"Sprite\", [\"vertical\", \"center\"]).setAll({\r\n centerY: p50,\r\n y: p50\r\n });\r\n r(\"Container\", [\"horizontal\", \"layout\"]).setAll({\r\n layout: horizontalLayout\r\n });\r\n r(\"Container\", [\"vertical\", \"layout\"]).setAll({\r\n layout: verticalLayout\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: patterns\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Pattern\").setAll({\r\n repetition: \"repeat\",\r\n width: 50,\r\n height: 50,\r\n rotation: 0,\r\n fillOpacity: 1\r\n });\r\n r(\"LinePattern\").setAll({\r\n gap: 6,\r\n colorOpacity: 1,\r\n width: 49,\r\n height: 49\r\n });\r\n r(\"RectanglePattern\").setAll({\r\n gap: 6,\r\n checkered: false,\r\n centered: true,\r\n maxWidth: 5,\r\n maxHeight: 5,\r\n width: 48,\r\n height: 48,\r\n strokeWidth: 0\r\n });\r\n r(\"CirclePattern\").setAll({\r\n gap: 5,\r\n checkered: false,\r\n centered: false,\r\n radius: 3,\r\n strokeWidth: 0,\r\n width: 45,\r\n height: 45\r\n });\r\n r(\"GrainPattern\").setAll({\r\n width: 200,\r\n height: 200,\r\n colors: [Color.fromHex(0x000000)],\r\n size: 1,\r\n horizontalGap: 0,\r\n verticalGap: 0,\r\n density: 1,\r\n minOpacity: 0,\r\n maxOpacity: 0.2\r\n });\r\n {\r\n const rule = r(\"PatternSet\");\r\n rule.setAll({\r\n step: 1\r\n });\r\n setColor(rule, \"color\", ic, \"stroke\");\r\n }\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: gradients\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"LinearGradient\").setAll({\r\n rotation: 90\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Legend\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Legend\").setAll({\r\n fillField: \"fill\",\r\n strokeField: \"stroke\",\r\n nameField: \"name\",\r\n layout: GridLayout.new(this._root, {}),\r\n layer: 30,\r\n clickTarget: \"itemContainer\"\r\n });\r\n // Class: Container\r\n r(\"Container\", [\"legend\", \"item\", \"itemcontainer\"]).setAll({\r\n paddingLeft: 5,\r\n paddingRight: 5,\r\n paddingBottom: 5,\r\n paddingTop: 5,\r\n layout: horizontalLayout,\r\n setStateOnChildren: true,\r\n interactiveChildren: false,\r\n ariaChecked: true,\r\n focusable: true,\r\n ariaLabel: language.translate(\"Press ENTER to toggle\"),\r\n role: \"checkbox\"\r\n });\r\n {\r\n const rule = r(\"Rectangle\", [\"legend\", \"item\", \"background\"]);\r\n rule.setAll({\r\n fillOpacity: 0,\r\n });\r\n setColor(rule, \"fill\", ic, \"background\");\r\n }\r\n r(\"Container\", [\"legend\", \"marker\"]).setAll({\r\n setStateOnChildren: true,\r\n centerY: p50,\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n paddingBottom: 0,\r\n paddingTop: 0,\r\n width: 18,\r\n height: 18\r\n });\r\n r(\"RoundedRectangle\", [\"legend\", \"marker\", \"rectangle\"]).setAll({\r\n width: p100,\r\n height: p100,\r\n cornerRadiusBL: 3,\r\n cornerRadiusTL: 3,\r\n cornerRadiusBR: 3,\r\n cornerRadiusTR: 3\r\n });\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"legend\", \"marker\", \"rectangle\"]).states.create(\"disabled\", {});\r\n setColor(rule, \"fill\", ic, \"disabled\");\r\n setColor(rule, \"stroke\", ic, \"disabled\");\r\n }\r\n r(\"Label\", [\"legend\", \"label\"]).setAll({\r\n centerY: p50,\r\n marginLeft: 5,\r\n paddingRight: 0,\r\n paddingLeft: 0,\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n populateText: true\r\n });\r\n {\r\n const rule = r(\"Label\", [\"legend\", \"label\"]).states.create(\"disabled\", {});\r\n setColor(rule, \"fill\", ic, \"disabled\");\r\n }\r\n r(\"Label\", [\"legend\", \"value\", \"label\"]).setAll({\r\n centerY: p50,\r\n marginLeft: 5,\r\n paddingRight: 0,\r\n paddingLeft: 0,\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n width: 50,\r\n centerX: p100,\r\n populateText: true\r\n });\r\n {\r\n const rule = r(\"Label\", [\"legend\", \"value\", \"label\"]).states.create(\"disabled\", {});\r\n setColor(rule, \"fill\", ic, \"disabled\");\r\n }\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: HeatLegend\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"HeatLegend\").setAll({\r\n stepCount: 1\r\n });\r\n r(\"RoundedRectangle\", [\"heatlegend\", \"marker\"]).setAll({\r\n cornerRadiusTR: 0,\r\n cornerRadiusBR: 0,\r\n cornerRadiusTL: 0,\r\n cornerRadiusBL: 0\r\n });\r\n r(\"RoundedRectangle\", [\"vertical\", \"heatlegend\", \"marker\"]).setAll({\r\n height: p100,\r\n width: 15\r\n });\r\n r(\"RoundedRectangle\", [\"horizontal\", \"heatlegend\", \"marker\"]).setAll({\r\n width: p100,\r\n height: 15\r\n });\r\n r(\"HeatLegend\", [\"vertical\"]).setAll({\r\n height: p100\r\n });\r\n r(\"HeatLegend\", [\"horizontal\"]).setAll({\r\n width: p100\r\n });\r\n r(\"Label\", [\"heatlegend\", \"start\"]).setAll({\r\n paddingLeft: 5,\r\n paddingRight: 5,\r\n paddingTop: 5,\r\n paddingBottom: 5\r\n });\r\n r(\"Label\", [\"heatlegend\", \"end\"]).setAll({\r\n paddingLeft: 5,\r\n paddingRight: 5,\r\n paddingTop: 5,\r\n paddingBottom: 5\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Labels\r\n * ------------------------------------------------------------------------\r\n */\r\n {\r\n const rule = r(\"Label\");\r\n rule.setAll({\r\n paddingTop: 8,\r\n paddingBottom: 8,\r\n paddingLeft: 10,\r\n paddingRight: 10,\r\n fontFamily: \"-apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, Helvetica, Arial, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\"\",\r\n fontSize: \"1em\",\r\n populateText: false\r\n });\r\n setColor(rule, \"fill\", ic, \"text\");\r\n }\r\n r(\"RadialLabel\").setAll({\r\n textType: \"regular\",\r\n centerY: p50,\r\n centerX: p50,\r\n inside: false,\r\n radius: 0,\r\n baseRadius: p100,\r\n orientation: \"auto\",\r\n textAlign: \"center\"\r\n });\r\n r(\"EditableLabel\").setAll({\r\n editOn: \"click\",\r\n //setStateOnChildren: true,\r\n themeTags: [\"editablelabel\"],\r\n multiLine: true\r\n });\r\n r(\"RoundedRectangle\", [\"editablelabel\", \"background\"]).setAll({\r\n fillOpacity: 0,\r\n fill: Color.fromHex(0x000000),\r\n cornerRadiusBL: 3,\r\n cornerRadiusBR: 3,\r\n cornerRadiusTL: 3,\r\n cornerRadiusTR: 3,\r\n strokeOpacity: 0,\r\n stroke: Color.fromHex(0x000000)\r\n });\r\n {\r\n r(\"RoundedRectangle\", [\"editablelabel\", \"background\"]).states.create(\"active\", {\r\n strokeOpacity: 0.2,\r\n });\r\n }\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Elements and shapes\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"RoundedRectangle\").setAll({\r\n cornerRadiusTL: 8,\r\n cornerRadiusBL: 8,\r\n cornerRadiusTR: 8,\r\n cornerRadiusBR: 8\r\n });\r\n r(\"PointedRectangle\").setAll({\r\n pointerBaseWidth: 15,\r\n pointerLength: 10,\r\n cornerRadius: 8\r\n });\r\n r(\"Slice\").setAll({\r\n shiftRadius: 0,\r\n dRadius: 0,\r\n dInnerRadius: 0\r\n });\r\n {\r\n const rule = r(\"Tick\");\r\n rule.setAll({\r\n strokeOpacity: .15,\r\n isMeasured: false,\r\n length: 4.5,\r\n position: \"absolute\",\r\n crisp: true\r\n });\r\n setColor(rule, \"stroke\", ic, \"grid\");\r\n }\r\n r(\"Bullet\").setAll({\r\n locationX: 0.5,\r\n locationY: 0.5\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Tooltip\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Tooltip\").setAll({\r\n position: \"absolute\",\r\n getFillFromSprite: true,\r\n getStrokeFromSprite: false,\r\n autoTextColor: true,\r\n paddingTop: 9,\r\n paddingBottom: 8,\r\n paddingLeft: 10,\r\n paddingRight: 10,\r\n marginBottom: 5,\r\n pointerOrientation: \"vertical\",\r\n centerX: p50,\r\n centerY: p50,\r\n animationEasing: $ease.out($ease.cubic),\r\n exportable: false\r\n //layer: 100\r\n });\r\n r(\"Polygon\").setAll({\r\n animationEasing: $ease.out($ease.cubic),\r\n });\r\n {\r\n const rule = r(\"PointedRectangle\", [\"tooltip\", \"background\"]);\r\n rule.setAll({\r\n strokeOpacity: 0.9,\r\n cornerRadius: 4,\r\n pointerLength: 4,\r\n pointerBaseWidth: 8,\r\n fillOpacity: 0.9,\r\n stroke: Color.fromHex(0xffffff)\r\n });\r\n }\r\n {\r\n const rule = r(\"Label\", [\"tooltip\"]);\r\n rule.setAll({\r\n role: \"tooltip\",\r\n populateText: true,\r\n paddingRight: 0,\r\n paddingTop: 0,\r\n paddingLeft: 0,\r\n paddingBottom: 0\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeText\");\r\n }\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Button\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Button\").setAll({\r\n paddingTop: 8,\r\n paddingBottom: 8,\r\n paddingLeft: 10,\r\n paddingRight: 10,\r\n interactive: true,\r\n layout: horizontalLayout,\r\n interactiveChildren: false,\r\n setStateOnChildren: true,\r\n focusable: true\r\n });\r\n r(\"Button\").states.create(\"hover\", {});\r\n r(\"Button\").states.create(\"down\", { stateAnimationDuration: 0 });\r\n r(\"Button\").states.create(\"active\", {});\r\n r(\"Button\").states.create(\"disabled\", {\r\n forceInactive: true\r\n });\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"button\", \"background\"]);\r\n setColor(rule, \"fill\", ic, \"primaryButton\");\r\n setColor(rule, \"stroke\", ic, \"primaryButtonStroke\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"button\", \"background\"]).states.create(\"hover\", {});\r\n setColor(rule, \"fill\", ic, \"primaryButtonHover\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"button\", \"background\"]).states.create(\"down\", { stateAnimationDuration: 0 });\r\n setColor(rule, \"fill\", ic, \"primaryButtonDown\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"button\", \"background\"]).states.create(\"active\", {});\r\n setColor(rule, \"fill\", ic, \"primaryButtonActive\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"button\", \"background\"]).states.create(\"disabled\", {});\r\n setColor(rule, \"fill\", ic, \"primaryButtonDisabled\");\r\n }\r\n {\r\n const rule = r(\"Graphics\", [\"button\", \"icon\"]).states.create(\"disabled\", {});\r\n setColor(rule, \"fill\", ic, \"primaryButtonTextDisabled\");\r\n }\r\n {\r\n const rule = r(\"Label\", [\"button\"]).states.create(\"disabled\", {});\r\n setColor(rule, \"fill\", ic, \"primaryButtonTextDisabled\");\r\n }\r\n {\r\n const rule = r(\"Graphics\", [\"button\", \"icon\"]);\r\n rule.setAll({\r\n forceInactive: true\r\n });\r\n setColor(rule, \"stroke\", ic, \"primaryButtonText\");\r\n }\r\n {\r\n const rule = r(\"Label\", [\"button\"]);\r\n setColor(rule, \"fill\", ic, \"primaryButtonText\");\r\n }\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/xy: ZoomOutButton\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Button\", [\"zoom\"]).setAll({\r\n paddingTop: 18,\r\n paddingBottom: 18,\r\n paddingLeft: 12,\r\n paddingRight: 12,\r\n centerX: 46,\r\n centerY: -10,\r\n y: 0,\r\n x: p100,\r\n role: \"button\",\r\n ariaLabel: language.translate(\"Zoom Out\"),\r\n layer: 30\r\n });\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"background\", \"button\", \"zoom\"]);\r\n rule.setAll({\r\n cornerRadiusBL: 40,\r\n cornerRadiusBR: 40,\r\n cornerRadiusTL: 40,\r\n cornerRadiusTR: 40\r\n });\r\n setColor(rule, \"fill\", ic, \"primaryButton\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"background\", \"button\", \"zoom\"]).states.create(\"hover\", {});\r\n setColor(rule, \"fill\", ic, \"primaryButtonHover\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"background\", \"button\", \"zoom\"]).states.create(\"down\", { stateAnimationDuration: 0 });\r\n setColor(rule, \"fill\", ic, \"primaryButtonDown\");\r\n }\r\n {\r\n const rule = r(\"Graphics\", [\"icon\", \"button\", \"zoom\"]);\r\n rule.setAll({\r\n crisp: true,\r\n strokeOpacity: 0.7,\r\n draw: (display) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(12, 0);\r\n }\r\n });\r\n setColor(rule, \"stroke\", ic, \"primaryButtonText\");\r\n }\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: ResizeButton\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Button\", [\"resize\"]).setAll({\r\n paddingTop: 9,\r\n paddingBottom: 9,\r\n paddingLeft: 13,\r\n paddingRight: 13,\r\n draggable: true,\r\n centerX: p50,\r\n centerY: p50,\r\n position: \"absolute\",\r\n role: \"slider\",\r\n ariaValueMin: \"0\",\r\n ariaValueMax: \"100\",\r\n ariaLabel: language.translate(\"Use up and down arrows to move selection\")\r\n });\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"background\", \"resize\", \"button\"]);\r\n rule.setAll({\r\n cornerRadiusBL: 40,\r\n cornerRadiusBR: 40,\r\n cornerRadiusTL: 40,\r\n cornerRadiusTR: 40\r\n });\r\n setColor(rule, \"fill\", ic, \"secondaryButton\");\r\n setColor(rule, \"stroke\", ic, \"secondaryButtonStroke\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"background\", \"resize\", \"button\"]).states.create(\"hover\", {});\r\n setColor(rule, \"fill\", ic, \"secondaryButtonHover\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"background\", \"resize\", \"button\"]).states.create(\"down\", { stateAnimationDuration: 0 });\r\n setColor(rule, \"fill\", ic, \"secondaryButtonDown\");\r\n }\r\n {\r\n const rule = r(\"Graphics\", [\"resize\", \"button\", \"icon\"]);\r\n rule.setAll({\r\n interactive: false,\r\n crisp: true,\r\n strokeOpacity: 0.5,\r\n draw: (display) => {\r\n display.moveTo(0, 0.5);\r\n display.lineTo(0, 12.5);\r\n display.moveTo(4, 0.5);\r\n display.lineTo(4, 12.5);\r\n }\r\n });\r\n setColor(rule, \"stroke\", ic, \"secondaryButtonText\");\r\n }\r\n r(\"Button\", [\"resize\", \"vertical\"]).setAll({\r\n rotation: 90,\r\n cursorOverStyle: \"ns-resize\"\r\n });\r\n r(\"Button\", [\"resize\", \"horizontal\"]).setAll({\r\n cursorOverStyle: \"ew-resize\"\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: PlayButton\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Button\", [\"play\"]).setAll({\r\n paddingTop: 13,\r\n paddingBottom: 13,\r\n paddingLeft: 14,\r\n paddingRight: 14,\r\n ariaLabel: language.translate(\"Play\"),\r\n toggleKey: \"active\"\r\n });\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"play\", \"background\"]);\r\n rule.setAll({\r\n strokeOpacity: 0.5,\r\n cornerRadiusBL: 100,\r\n cornerRadiusBR: 100,\r\n cornerRadiusTL: 100,\r\n cornerRadiusTR: 100\r\n });\r\n setColor(rule, \"fill\", ic, \"primaryButton\");\r\n }\r\n {\r\n const rule = r(\"Graphics\", [\"play\", \"icon\"]);\r\n rule.setAll({\r\n stateAnimationDuration: 0,\r\n dx: 1,\r\n draw: (display) => {\r\n display.moveTo(0, -5);\r\n display.lineTo(8, 0);\r\n display.lineTo(0, 5);\r\n display.lineTo(0, -5);\r\n }\r\n });\r\n setColor(rule, \"fill\", ic, \"primaryButtonText\");\r\n }\r\n r(\"Graphics\", [\"play\", \"icon\"]).states.create(\"default\", {\r\n stateAnimationDuration: 0\r\n });\r\n r(\"Graphics\", [\"play\", \"icon\"]).states.create(\"active\", {\r\n stateAnimationDuration: 0,\r\n draw: (display) => {\r\n display.moveTo(-4, -5);\r\n display.lineTo(-1, -5);\r\n display.lineTo(-1, 5);\r\n display.lineTo(-4, 5);\r\n display.lineTo(-4, -5);\r\n display.moveTo(4, -5);\r\n display.lineTo(1, -5);\r\n display.lineTo(1, 5);\r\n display.lineTo(4, 5);\r\n display.lineTo(4, -5);\r\n }\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: SwitchButton\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Button\", [\"switch\"]).setAll({\r\n paddingTop: 4,\r\n paddingBottom: 4,\r\n paddingLeft: 4,\r\n paddingRight: 4,\r\n ariaLabel: language.translate(\"Press ENTER to toggle\"),\r\n toggleKey: \"active\",\r\n width: 40,\r\n height: 24,\r\n layout: null\r\n });\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"switch\", \"background\"]);\r\n rule.setAll({\r\n strokeOpacity: 0.5,\r\n cornerRadiusBL: 100,\r\n cornerRadiusBR: 100,\r\n cornerRadiusTL: 100,\r\n cornerRadiusTR: 100\r\n });\r\n setColor(rule, \"fill\", ic, \"primaryButton\");\r\n }\r\n {\r\n const rule = r(\"Circle\", [\"switch\", \"icon\"]);\r\n rule.setAll({\r\n radius: 8,\r\n centerY: 0,\r\n centerX: 0,\r\n dx: 0\r\n });\r\n setColor(rule, \"fill\", ic, \"primaryButtonText\");\r\n }\r\n r(\"Graphics\", [\"switch\", \"icon\"]).states.create(\"active\", {\r\n dx: 16\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Scrollbar\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Scrollbar\").setAll({\r\n start: 0,\r\n end: 1,\r\n layer: 30,\r\n animationEasing: $ease.out($ease.cubic)\r\n });\r\n r(\"Scrollbar\", [\"vertical\"]).setAll({\r\n marginRight: 13,\r\n marginLeft: 13,\r\n minWidth: 12,\r\n height: p100\r\n });\r\n r(\"Scrollbar\", [\"horizontal\"]).setAll({\r\n marginTop: 13,\r\n marginBottom: 13,\r\n minHeight: 12,\r\n width: p100\r\n });\r\n this.rule(\"Button\", [\"scrollbar\"]).setAll({\r\n exportable: false\r\n });\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"scrollbar\", \"main\", \"background\"]);\r\n rule.setAll({\r\n cornerRadiusTL: 8,\r\n cornerRadiusBL: 8,\r\n cornerRadiusTR: 8,\r\n cornerRadiusBR: 8,\r\n fillOpacity: 0.8,\r\n });\r\n setColor(rule, \"fill\", ic, \"fill\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"scrollbar\", \"thumb\"]);\r\n rule.setAll({\r\n role: \"slider\",\r\n ariaLive: \"polite\",\r\n position: \"absolute\",\r\n draggable: true\r\n });\r\n setColor(rule, \"fill\", ic, \"secondaryButton\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"scrollbar\", \"thumb\"]).states.create(\"hover\", {});\r\n setColor(rule, \"fill\", ic, \"secondaryButtonHover\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"scrollbar\", \"thumb\"]).states.create(\"down\", { stateAnimationDuration: 0 });\r\n setColor(rule, \"fill\", ic, \"secondaryButtonDown\");\r\n }\r\n r(\"RoundedRectangle\", [\"scrollbar\", \"thumb\", \"vertical\"]).setAll({\r\n x: p50,\r\n width: p100,\r\n centerX: p50,\r\n ariaLabel: language.translate(\"Use up and down arrows to move selection\")\r\n });\r\n r(\"RoundedRectangle\", [\"scrollbar\", \"thumb\", \"horizontal\"]).setAll({\r\n y: p50,\r\n centerY: p50,\r\n height: p100,\r\n ariaLabel: language.translate(\"Use left and right arrows to move selection\")\r\n });\r\n // @todo: is this needed? used to be \"ContentScrollbar\"\r\n // r(\"Scrollbar\", [\"content?\"]).setAll({\r\n // \tmarginRight: 0,\r\n // \tmarginLeft: 5,\r\n // \tlayer: 5\r\n // });\r\n /**\r\n * ========================================================================\r\n * charts/xy\r\n * ========================================================================\r\n *\r\n * This needs to be in DefaultTheme because it's the only theme that is\r\n * automatically applied to Root, and tooltips different ancestors\r\n * than actual charts using them.\r\n */\r\n {\r\n const rule = r(\"PointedRectangle\", [\"axis\", \"tooltip\", \"background\"]);\r\n rule.setAll({\r\n cornerRadius: 0\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeBackground\");\r\n }\r\n r(\"Label\", [\"axis\", \"tooltip\"]).setAll({\r\n role: undefined\r\n });\r\n r(\"Label\", [\"axis\", \"tooltip\", \"y\"]).setAll({\r\n textAlign: \"right\"\r\n });\r\n r(\"Label\", [\"axis\", \"tooltip\", \"y\", \"opposite\"]).setAll({\r\n textAlign: \"left\"\r\n });\r\n r(\"Label\", [\"axis\", \"tooltip\", \"x\"]).setAll({\r\n textAlign: \"center\"\r\n });\r\n r(\"Tooltip\", [\"categoryaxis\"]).setAll({\r\n labelText: \"{category}\"\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * Shapes\r\n * ------------------------------------------------------------------------\r\n */\r\n // Class: Graphics\r\n r(\"Star\").setAll({\r\n spikes: 5,\r\n innerRadius: 5,\r\n radius: 10\r\n });\r\n // STOCK\r\n r(\"Tooltip\", [\"stock\"]).setAll({\r\n paddingTop: 6,\r\n paddingBottom: 5,\r\n paddingLeft: 7,\r\n paddingRight: 7\r\n });\r\n r(\"PointedRectangle\", [\"tooltip\", \"stock\", \"axis\"]).setAll({\r\n pointerLength: 0,\r\n pointerBaseWidth: 0,\r\n cornerRadius: 3\r\n });\r\n r(\"Label\", [\"tooltip\", \"stock\"]).setAll({\r\n fontSize: \"0.8em\"\r\n });\r\n // resizer\r\n r(\"SpriteResizer\").setAll({\r\n rotationStep: 10,\r\n isMeasured: false\r\n });\r\n {\r\n const rule = r(\"Container\", [\"resizer\", \"grip\"]);\r\n rule.states.create(\"hover\", {});\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"resizer\", \"grip\"]);\r\n rule.setAll({\r\n strokeOpacity: 0.7,\r\n strokeWidth: 1,\r\n fillOpacity: 1,\r\n width: 12,\r\n height: 12\r\n });\r\n setColor(rule, \"fill\", ic, \"background\");\r\n setColor(rule, \"stroke\", ic, \"alternativeBackground\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"resizer\", \"grip\", \"outline\"]);\r\n rule.setAll({\r\n strokeOpacity: 0,\r\n fillOpacity: 0,\r\n width: 20,\r\n height: 20\r\n });\r\n rule.states.create(\"hover\", {\r\n fillOpacity: 0.3\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeBackground\");\r\n }\r\n r(\"RoundedRectangle\", [\"resizer\", \"grip\", \"left\"]).setAll({\r\n cornerRadiusBL: 0,\r\n cornerRadiusBR: 0,\r\n cornerRadiusTL: 0,\r\n cornerRadiusTR: 0\r\n });\r\n r(\"RoundedRectangle\", [\"resizer\", \"grip\", \"right\"]).setAll({\r\n cornerRadiusBL: 0,\r\n cornerRadiusBR: 0,\r\n cornerRadiusTL: 0,\r\n cornerRadiusTR: 0\r\n });\r\n {\r\n const rule = r(\"Rectangle\", [\"resizer\", \"rectangle\"]);\r\n rule.setAll({\r\n strokeDasharray: [2, 2],\r\n strokeOpacity: 0.5,\r\n strokeWidth: 1\r\n });\r\n setColor(rule, \"stroke\", ic, \"alternativeBackground\");\r\n }\r\n r(\"Graphics\", [\"button\", \"plus\", \"icon\"]).setAll({\r\n x: p50,\r\n y: p50,\r\n draw: (display) => {\r\n display.moveTo(-4, 0);\r\n display.lineTo(4, 0);\r\n display.moveTo(0, -4);\r\n display.lineTo(0, 4);\r\n }\r\n });\r\n r(\"Graphics\", [\"button\", \"minus\", \"icon\"]).setAll({\r\n x: p50,\r\n y: p50,\r\n draw: (display) => {\r\n display.moveTo(-4, 0);\r\n display.lineTo(4, 0);\r\n }\r\n });\r\n r(\"Graphics\", [\"button\", \"home\", \"icon\"]).setAll({\r\n x: p50,\r\n y: p50,\r\n svgPath: \"M 8 -1 L 6 -1 L 6 7 L 2 7 L 2 1 L -2 1 L -2 7 L -6 7 L -6 -1 L -8 -1 L 0 -9 L 8 -1 Z M 8 -1\"\r\n });\r\n r(\"Button\", [\"zoomtools\"]).setAll({\r\n marginTop: 1,\r\n marginBottom: 2\r\n });\r\n r(\"ZoomTools\").setAll({\r\n x: p100,\r\n centerX: p100,\r\n y: p100,\r\n centerY: p100,\r\n paddingRight: 10,\r\n paddingBottom: 10\r\n });\r\n }\r\n}\r\n//# sourceMappingURL=DefaultTheme.js.map","/**\r\n * Modified from Pixi:\r\n *\r\n * The MIT License\r\n *\r\n * Copyright (c) 2013-2017 Mathew Groves, Chad Engler\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in\r\n * all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n/**\r\n * @ignore\r\n */\r\nexport class Matrix {\r\n constructor(a = 1, b = 0, c = 0, d = 1, tx = 0, ty = 0) {\r\n Object.defineProperty(this, \"a\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"b\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"c\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"d\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"tx\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"ty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this.a = a;\r\n this.b = b;\r\n this.c = c;\r\n this.d = d;\r\n this.tx = tx;\r\n this.ty = ty;\r\n }\r\n /**\r\n * Sets the matrix based on all the available properties\r\n */\r\n setTransform(x, y, pivotX, pivotY, rotation, scale = 1) {\r\n this.a = Math.cos(rotation) * scale;\r\n this.b = Math.sin(rotation) * scale;\r\n this.c = -Math.sin(rotation) * scale;\r\n this.d = Math.cos(rotation) * scale;\r\n this.tx = x - ((pivotX * this.a) + (pivotY * this.c));\r\n this.ty = y - ((pivotX * this.b) + (pivotY * this.d));\r\n }\r\n /**\r\n * Get a new position with the current transformation applied.\r\n * Can be used to go from a child's coordinate space to the world coordinate space. (e.g. rendering)\r\n */\r\n apply(origin) {\r\n return {\r\n x: (this.a * origin.x) + (this.c * origin.y) + this.tx,\r\n y: (this.b * origin.x) + (this.d * origin.y) + this.ty\r\n };\r\n }\r\n /**\r\n * Get a new position with the inverse of the current transformation applied.\r\n * Can be used to go from the world coordinate space to a child's coordinate space. (e.g. input)\r\n */\r\n applyInverse(origin) {\r\n const id = 1 / ((this.a * this.d) + (this.c * -this.b));\r\n return {\r\n x: (this.d * id * origin.x) + (-this.c * id * origin.y) + (((this.ty * this.c) - (this.tx * this.d)) * id),\r\n y: (this.a * id * origin.y) + (-this.b * id * origin.x) + (((-this.ty * this.a) + (this.tx * this.b)) * id)\r\n };\r\n }\r\n /**\r\n * Appends the given Matrix to this Matrix.\r\n */\r\n append(matrix) {\r\n const a1 = this.a;\r\n const b1 = this.b;\r\n const c1 = this.c;\r\n const d1 = this.d;\r\n this.a = (matrix.a * a1) + (matrix.b * c1);\r\n this.b = (matrix.a * b1) + (matrix.b * d1);\r\n this.c = (matrix.c * a1) + (matrix.d * c1);\r\n this.d = (matrix.c * b1) + (matrix.d * d1);\r\n this.tx = (matrix.tx * a1) + (matrix.ty * c1) + this.tx;\r\n this.ty = (matrix.tx * b1) + (matrix.ty * d1) + this.ty;\r\n }\r\n /**\r\n * Prepends the given Matrix to this Matrix.\r\n */\r\n prepend(matrix) {\r\n const tx1 = this.tx;\r\n if (matrix.a !== 1 || matrix.b !== 0 || matrix.c !== 0 || matrix.d !== 1) {\r\n const a1 = this.a;\r\n const c1 = this.c;\r\n this.a = (a1 * matrix.a) + (this.b * matrix.c);\r\n this.b = (a1 * matrix.b) + (this.b * matrix.d);\r\n this.c = (c1 * matrix.a) + (this.d * matrix.c);\r\n this.d = (c1 * matrix.b) + (this.d * matrix.d);\r\n }\r\n this.tx = (tx1 * matrix.a) + (this.ty * matrix.c) + matrix.tx;\r\n this.ty = (tx1 * matrix.b) + (this.ty * matrix.d) + matrix.ty;\r\n }\r\n /**\r\n * Copies the other matrix's properties into this matrix\r\n */\r\n copyFrom(matrix) {\r\n this.a = matrix.a;\r\n this.b = matrix.b;\r\n this.c = matrix.c;\r\n this.d = matrix.d;\r\n this.tx = matrix.tx;\r\n this.ty = matrix.ty;\r\n }\r\n}\r\n//# sourceMappingURL=Matrix.js.map","var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar TAU = Math.PI * 2;\n\nvar mapToEllipse = function mapToEllipse(_ref, rx, ry, cosphi, sinphi, centerx, centery) {\n var x = _ref.x,\n y = _ref.y;\n\n x *= rx;\n y *= ry;\n\n var xp = cosphi * x - sinphi * y;\n var yp = sinphi * x + cosphi * y;\n\n return {\n x: xp + centerx,\n y: yp + centery\n };\n};\n\nvar approxUnitArc = function approxUnitArc(ang1, ang2) {\n // If 90 degree circular arc, use a constant\n // as derived from http://spencermortensen.com/articles/bezier-circle\n var a = ang2 === 1.5707963267948966 ? 0.551915024494 : ang2 === -1.5707963267948966 ? -0.551915024494 : 4 / 3 * Math.tan(ang2 / 4);\n\n var x1 = Math.cos(ang1);\n var y1 = Math.sin(ang1);\n var x2 = Math.cos(ang1 + ang2);\n var y2 = Math.sin(ang1 + ang2);\n\n return [{\n x: x1 - y1 * a,\n y: y1 + x1 * a\n }, {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n }, {\n x: x2,\n y: y2\n }];\n};\n\nvar vectorAngle = function vectorAngle(ux, uy, vx, vy) {\n var sign = ux * vy - uy * vx < 0 ? -1 : 1;\n\n var dot = ux * vx + uy * vy;\n\n if (dot > 1) {\n dot = 1;\n }\n\n if (dot < -1) {\n dot = -1;\n }\n\n return sign * Math.acos(dot);\n};\n\nvar getArcCenter = function getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp) {\n var rxsq = Math.pow(rx, 2);\n var rysq = Math.pow(ry, 2);\n var pxpsq = Math.pow(pxp, 2);\n var pypsq = Math.pow(pyp, 2);\n\n var radicant = rxsq * rysq - rxsq * pypsq - rysq * pxpsq;\n\n if (radicant < 0) {\n radicant = 0;\n }\n\n radicant /= rxsq * pypsq + rysq * pxpsq;\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n\n var centerxp = radicant * rx / ry * pyp;\n var centeryp = radicant * -ry / rx * pxp;\n\n var centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2;\n var centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2;\n\n var vx1 = (pxp - centerxp) / rx;\n var vy1 = (pyp - centeryp) / ry;\n var vx2 = (-pxp - centerxp) / rx;\n var vy2 = (-pyp - centeryp) / ry;\n\n var ang1 = vectorAngle(1, 0, vx1, vy1);\n var ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU;\n }\n\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU;\n }\n\n return [centerx, centery, ang1, ang2];\n};\n\nvar arcToBezier = function arcToBezier(_ref2) {\n var px = _ref2.px,\n py = _ref2.py,\n cx = _ref2.cx,\n cy = _ref2.cy,\n rx = _ref2.rx,\n ry = _ref2.ry,\n _ref2$xAxisRotation = _ref2.xAxisRotation,\n xAxisRotation = _ref2$xAxisRotation === undefined ? 0 : _ref2$xAxisRotation,\n _ref2$largeArcFlag = _ref2.largeArcFlag,\n largeArcFlag = _ref2$largeArcFlag === undefined ? 0 : _ref2$largeArcFlag,\n _ref2$sweepFlag = _ref2.sweepFlag,\n sweepFlag = _ref2$sweepFlag === undefined ? 0 : _ref2$sweepFlag;\n\n var curves = [];\n\n if (rx === 0 || ry === 0) {\n return [];\n }\n\n var sinphi = Math.sin(xAxisRotation * TAU / 360);\n var cosphi = Math.cos(xAxisRotation * TAU / 360);\n\n var pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2;\n var pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2;\n\n if (pxp === 0 && pyp === 0) {\n return [];\n }\n\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n\n var lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) + Math.pow(pyp, 2) / Math.pow(ry, 2);\n\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n\n var _getArcCenter = getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp),\n _getArcCenter2 = _slicedToArray(_getArcCenter, 4),\n centerx = _getArcCenter2[0],\n centery = _getArcCenter2[1],\n ang1 = _getArcCenter2[2],\n ang2 = _getArcCenter2[3];\n\n // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n // 1.0000000001. This causes `segments` to be greater than one, which is an\n // unecessary split, and adds extra points to the bezier curve. To alleviate\n // this issue, we round to 1.0 when the ratio is close to 1.0.\n\n\n var ratio = Math.abs(ang2) / (TAU / 4);\n if (Math.abs(1.0 - ratio) < 0.0000001) {\n ratio = 1.0;\n }\n\n var segments = Math.max(Math.ceil(ratio), 1);\n\n ang2 /= segments;\n\n for (var i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2));\n ang1 += ang2;\n }\n\n return curves.map(function (curve) {\n var _mapToEllipse = mapToEllipse(curve[0], rx, ry, cosphi, sinphi, centerx, centery),\n x1 = _mapToEllipse.x,\n y1 = _mapToEllipse.y;\n\n var _mapToEllipse2 = mapToEllipse(curve[1], rx, ry, cosphi, sinphi, centerx, centery),\n x2 = _mapToEllipse2.x,\n y2 = _mapToEllipse2.y;\n\n var _mapToEllipse3 = mapToEllipse(curve[2], rx, ry, cosphi, sinphi, centerx, centery),\n x = _mapToEllipse3.x,\n y = _mapToEllipse3.y;\n\n return { x1: x1, y1: y1, x2: x2, y2: y2, x: x, y: y };\n });\n};\n\nexport default arcToBezier;","/** @ignore */ /** */\r\nimport { BlendMode } from \"./Renderer\";\r\nimport { Color } from \"../../util/Color\";\r\nimport { Matrix } from \"../../util/Matrix\";\r\nimport { Percent, percent } from \"../../util/Percent\";\r\n//import { Throttler } from \"../../util/Throttler\";\r\nimport { ArrayDisposer, Disposer, DisposerClass, CounterDisposer, MultiDisposer } from \"../../util/Disposer\";\r\nimport { TextFormatter } from \"../../util/TextFormatter\";\r\nimport * as $utils from \"../../util/Utils\";\r\nimport * as $array from \"../../util/Array\";\r\nimport * as $object from \"../../util/Object\";\r\nimport * as $type from \"../../util/Type\";\r\nimport * as $math from \"../../util/Math\";\r\nimport arcToBezier from 'svg-arc-to-cubic-bezier';\r\n/**\r\n * @ignore\r\n */\r\nfunction checkArgs(name, actual, expected) {\r\n if (actual !== expected) {\r\n throw new Error(\"Required \" + expected + \" arguments for \" + name + \" but got \" + actual);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction checkMinArgs(name, actual, expected) {\r\n if (actual < expected) {\r\n throw new Error(\"Required at least \" + expected + \" arguments for \" + name + \" but got \" + actual);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction checkEvenArgs(name, actual, expected) {\r\n checkMinArgs(name, actual, expected);\r\n if ((actual % expected) !== 0) {\r\n throw new Error(\"Arguments for \" + name + \" must be in pairs of \" + expected);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n * This splits the flag so that way 0017 will be processed as 0 0 17\r\n *\r\n * This is important for weird paths like `M17 5A1 1 0 0017 30 1 1 0 0017 5`\r\n */\r\nfunction splitArcFlags(args) {\r\n for (let i = 0; i < args.length; i += 7) {\r\n let index = i + 3;\r\n let flag = args[index];\r\n if (flag.length > 1) {\r\n const a = /^([01])([01])(.*)$/.exec(flag);\r\n if (a !== null) {\r\n args.splice(index, 0, a[1]);\r\n ++index;\r\n args.splice(index, 0, a[2]);\r\n ++index;\r\n if (a[3].length > 0) {\r\n args[index] = a[3];\r\n }\r\n else {\r\n args.splice(index, 1);\r\n }\r\n }\r\n }\r\n ++index;\r\n flag = args[index];\r\n if (flag.length > 1) {\r\n const a = /^([01])(.+)$/.exec(flag);\r\n if (a !== null) {\r\n args.splice(index, 0, a[1]);\r\n ++index;\r\n args[index] = a[2];\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction assertBinary(value) {\r\n if (value === 0 || value === 1) {\r\n return value;\r\n }\r\n else {\r\n throw new Error(\"Flag must be 0 or 1\");\r\n }\r\n}\r\n// 1 -> 0xffffff * (2 / 2)\r\n// 2 -> 0xffffff * (1 / 2)\r\n//\r\n// 3 -> 0xffffff * (3 / 4)\r\n// 4 -> 0xffffff * (1 / 4)\r\n//\r\n// 5 -> 0xffffff * (7 / 8)\r\n// 6 -> 0xffffff * (5 / 8)\r\n// 7 -> 0xffffff * (3 / 8)\r\n// 8 -> 0xffffff * (1 / 8)\r\n//\r\n// 9 -> 0xffffff * (15 / 16)\r\n// 10 -> 0xffffff * (13 / 16)\r\n// 11 -> 0xffffff * (11 / 16)\r\n// 12 -> 0xffffff * (9 / 16)\r\n// 13 -> 0xffffff * (7 / 16)\r\n// 14 -> 0xffffff * (5 / 16)\r\n// 15 -> 0xffffff * (3 / 16)\r\n// 16 -> 0xffffff * (1 / 16)\r\n// @todo remove this old color distribution algo if the new one pans out\r\n/*function distributeId(id: number): number {\r\n if (id === 1) {\r\n return 0x000001;\r\n\r\n } else {\r\n // Finds the closest power of 2\r\n const base = Math.pow(2, Math.ceil(Math.log(id) / Math.log(2)));\r\n\r\n // Translates the id into an odd fraction index\r\n const index = ((base - id) * 2) + 1;\r\n\r\n // TODO is Math.round correct ?\r\n return Math.round(0xffffff * (index / base));\r\n }\r\n}*/\r\n/**\r\n * Function by smeans:\r\n * https://lowcode.life/generating-unique-contrasting-colors-in-javascript/\r\n * @ignore\r\n */\r\nfunction distributeId(id) {\r\n const rgb = [0, 0, 0];\r\n for (let i = 0; i < 24; i++) {\r\n rgb[i % 3] <<= 1;\r\n rgb[i % 3] |= id & 0x01;\r\n id >>= 1;\r\n }\r\n return (rgb[0] | 0) + (rgb[1] << 8) + (rgb[2] << 16);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction eachTargets(hitTarget, f) {\r\n for (;;) {\r\n if (hitTarget.interactive) {\r\n if (!f(hitTarget)) {\r\n break;\r\n }\r\n }\r\n if (hitTarget._parent) {\r\n hitTarget = hitTarget._parent;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n}\r\n// TODO feature detection for mouse/touch/pointer\r\n/**\r\n * @ignore\r\n */\r\nfunction onPointerEvent(element, name, f) {\r\n return $utils.addEventListener(element, $utils.getRendererEvent(name), (event) => {\r\n const target = $utils.getEventTarget(event);\r\n let touches = event.touches;\r\n if (touches) {\r\n if (touches.length == 0) {\r\n touches = event.changedTouches;\r\n }\r\n f($array.copy(touches), target);\r\n }\r\n else {\r\n f([event], target);\r\n }\r\n });\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction isTainted(image) {\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.width = 1;\r\n canvas.height = 1;\r\n const context = canvas.getContext(\"2d\", { willReadFrequently: true });\r\n context.drawImage(image, 0, 0, 1, 1);\r\n try {\r\n context.getImageData(0, 0, 1, 1);\r\n return false;\r\n }\r\n catch (err) {\r\n console.warn(\"Image \\\"\" + image.src + \"\\\" is loaded from different host and is not covered by CORS policy. For more information about the implications read here: https://www.amcharts.com/docs/v5/concepts/cors\");\r\n return true;\r\n }\r\n}\r\n/**\r\n * This is needed to workaround a bug in iOS which causes it to not GC canvas elements.\r\n *\r\n * @ignore\r\n */\r\nfunction clearCanvas(view) {\r\n view.width = 0;\r\n view.height = 0;\r\n view.style.width = \"0px\";\r\n view.style.height = \"0px\";\r\n}\r\n/**\r\n * Aligns the coordinate to the pixel, so it renders crisp\r\n *\r\n * @ignore\r\n */\r\nfunction crisp(x) {\r\n return Math.floor(x) + .5;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasPivot {\r\n constructor() {\r\n Object.defineProperty(this, \"_x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n }\r\n get x() {\r\n return this._x;\r\n }\r\n get y() {\r\n return this._y;\r\n }\r\n set x(value) {\r\n this._x = value;\r\n }\r\n set y(value) {\r\n this._y = value;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasDisplayObject extends DisposerClass {\r\n constructor(renderer) {\r\n super();\r\n Object.defineProperty(this, \"_layer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"mask\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(this, \"visible\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"exportable\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"interactive\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"inactive\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(this, \"wheelable\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"cancelTouch\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"isMeasured\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"buttonMode\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"alpha\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"compoundAlpha\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"angle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"scale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"crisp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"pivot\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new CanvasPivot()\r\n });\r\n Object.defineProperty(this, \"filter\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"cursorOverStyle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_replacedCursorStyle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_localMatrix\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new Matrix()\r\n });\r\n Object.defineProperty(this, \"_matrix\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new Matrix()\r\n });\r\n // TODO can this be replaced with _localMatrix ?\r\n Object.defineProperty(this, \"_uMatrix\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new Matrix()\r\n });\r\n Object.defineProperty(this, \"_renderer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_parent\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_localBounds\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_bounds\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_colorId\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._renderer = renderer;\r\n }\r\n subStatus(status) {\r\n return {\r\n inactive: (this.inactive == null ? status.inactive : this.inactive),\r\n layer: this._layer || status.layer,\r\n };\r\n }\r\n _dispose() {\r\n this._renderer._removeObject(this);\r\n this.getLayer().dirty = true;\r\n }\r\n getCanvas() {\r\n return this.getLayer().view;\r\n }\r\n getLayer() {\r\n let self = this;\r\n for (;;) {\r\n if (self._layer) {\r\n return self._layer;\r\n }\r\n else if (self._parent) {\r\n self = self._parent;\r\n }\r\n else {\r\n return this._renderer.defaultLayer;\r\n }\r\n }\r\n }\r\n setLayer(order, margin) {\r\n if (order == null) {\r\n this._layer = undefined;\r\n }\r\n else {\r\n const visible = true;\r\n this._layer = this._renderer.getLayer(order, visible);\r\n this._layer.visible = visible;\r\n this._layer.margin = margin;\r\n if (margin) {\r\n $utils.setInteractive(this._layer.view, false);\r\n }\r\n this._renderer._ghostLayer.setMargin(this._renderer.layers);\r\n if (this._parent) {\r\n this._parent.registerChildLayer(this._layer);\r\n }\r\n this._layer.dirty = true;\r\n this._renderer.resizeLayer(this._layer);\r\n this._renderer.resizeGhost();\r\n }\r\n }\r\n markDirtyLayer() {\r\n this.getLayer().dirty = true;\r\n }\r\n clear() {\r\n this.invalidateBounds();\r\n }\r\n invalidateBounds() {\r\n this._localBounds = undefined;\r\n }\r\n _addBounds(_bounds) { }\r\n _getColorId() {\r\n if (this._colorId === undefined) {\r\n this._colorId = this._renderer.paintId(this);\r\n }\r\n return this._colorId;\r\n }\r\n _isInteractive(status) {\r\n return !status.inactive && (this.interactive || this._renderer._forceInteractive > 0);\r\n }\r\n _isInteractiveMask(status) {\r\n return this._isInteractive(status);\r\n }\r\n contains(child) {\r\n for (;;) {\r\n if (child === this) {\r\n return true;\r\n }\r\n else if (child._parent) {\r\n child = child._parent;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n }\r\n toGlobal(point) {\r\n return this._matrix.apply(point);\r\n }\r\n toLocal(point) {\r\n return this._matrix.applyInverse(point);\r\n }\r\n getLocalMatrix() {\r\n this._uMatrix.setTransform(0, 0, this.pivot.x, this.pivot.y, this.angle * Math.PI / 180, this.scale);\r\n return this._uMatrix;\r\n }\r\n getLocalBounds() {\r\n if (!this._localBounds) {\r\n const bn = 10000000;\r\n this._localBounds = {\r\n left: bn,\r\n top: bn,\r\n right: -bn,\r\n bottom: -bn\r\n };\r\n this._addBounds(this._localBounds);\r\n }\r\n return this._localBounds;\r\n }\r\n getAdjustedBounds(bounds) {\r\n this._setMatrix();\r\n const matrix = this.getLocalMatrix();\r\n const p0 = matrix.apply({ x: bounds.left, y: bounds.top });\r\n const p1 = matrix.apply({ x: bounds.right, y: bounds.top });\r\n const p2 = matrix.apply({ x: bounds.right, y: bounds.bottom });\r\n const p3 = matrix.apply({ x: bounds.left, y: bounds.bottom });\r\n return {\r\n left: Math.min(p0.x, p1.x, p2.x, p3.x),\r\n top: Math.min(p0.y, p1.y, p2.y, p3.y),\r\n right: Math.max(p0.x, p1.x, p2.x, p3.x),\r\n bottom: Math.max(p0.y, p1.y, p2.y, p3.y)\r\n };\r\n }\r\n on(key, callback, context) {\r\n if (this.interactive) {\r\n return this._renderer._addEvent(this, key, callback, context);\r\n }\r\n else {\r\n return new Disposer(() => { });\r\n }\r\n }\r\n _setMatrix() {\r\n // TODO only calculate this if it has actually changed\r\n this._localMatrix.setTransform(this.x, this.y, this.pivot.x, this.pivot.y, \r\n // Converts degrees to radians\r\n this.angle * Math.PI / 180, this.scale);\r\n this._matrix.copyFrom(this._localMatrix);\r\n if (this._parent) {\r\n // TODO only calculate this if it has actually changed\r\n this._matrix.prepend(this._parent._matrix);\r\n }\r\n }\r\n _transform(context, resolution) {\r\n const m = this._matrix;\r\n let tx = m.tx * resolution;\r\n let ty = m.ty * resolution;\r\n if (this.crisp) {\r\n tx = crisp(tx);\r\n ty = crisp(ty);\r\n }\r\n context.setTransform(m.a * resolution, m.b * resolution, m.c * resolution, m.d * resolution, tx, ty);\r\n }\r\n _transformMargin(context, resolution, margin) {\r\n const m = this._matrix;\r\n context.setTransform(m.a * resolution, m.b * resolution, m.c * resolution, m.d * resolution, (m.tx + margin.left) * resolution, (m.ty + margin.top) * resolution);\r\n }\r\n _transformLayer(context, resolution, layer) {\r\n if (layer.margin) {\r\n this._transformMargin(context, layer.scale || resolution, layer.margin);\r\n }\r\n else {\r\n this._transform(context, layer.scale || resolution);\r\n }\r\n }\r\n render(status) {\r\n if (this.visible && (this.exportable !== false || !this._renderer._omitTainted)) {\r\n this._setMatrix();\r\n const subStatus = this.subStatus(status);\r\n const resolution = this._renderer.resolution;\r\n const layers = this._renderer.layers;\r\n const ghostLayer = this._renderer._ghostLayer;\r\n const ghostContext = ghostLayer.context;\r\n const mask = this.mask;\r\n if (mask) {\r\n mask._setMatrix();\r\n }\r\n // TODO improve this\r\n $array.each(layers, (layer) => {\r\n if (layer) {\r\n const context = layer.context;\r\n context.save();\r\n // We must apply the mask before we transform the element\r\n if (mask) {\r\n mask._transformLayer(context, resolution, layer);\r\n mask._runPath(context);\r\n context.clip();\r\n }\r\n context.globalAlpha = this.compoundAlpha * this.alpha;\r\n this._transformLayer(context, resolution, layer);\r\n if (this.filter) {\r\n context.filter = this.filter;\r\n }\r\n }\r\n });\r\n ghostContext.save();\r\n // We must apply the mask before we transform the element\r\n if (mask && this._isInteractiveMask(subStatus)) {\r\n mask._transformMargin(ghostContext, resolution, ghostLayer.margin);\r\n mask._runPath(ghostContext);\r\n ghostContext.clip();\r\n }\r\n this._transformMargin(ghostContext, resolution, ghostLayer.margin);\r\n this._render(subStatus);\r\n ghostContext.restore();\r\n $array.each(layers, (layer) => {\r\n if (layer) {\r\n layer.context.restore();\r\n }\r\n });\r\n }\r\n }\r\n _render(status) {\r\n if (this.exportable === false) {\r\n status.layer.tainted = true;\r\n }\r\n }\r\n hovering() {\r\n return this._renderer._hovering.has(this);\r\n }\r\n dragging() {\r\n return this._renderer._dragging.some((x) => x.value === this);\r\n }\r\n shouldCancelTouch() {\r\n const renderer = this._renderer;\r\n if (renderer.tapToActivate && !renderer._touchActive) {\r\n return false;\r\n }\r\n if (this.cancelTouch) {\r\n return true;\r\n }\r\n else if (this._parent) {\r\n return this._parent.shouldCancelTouch();\r\n }\r\n return false;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasContainer extends CanvasDisplayObject {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"interactiveChildren\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"_childLayers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_children\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n }\r\n _isInteractiveMask(status) {\r\n return this.interactiveChildren || super._isInteractiveMask(status);\r\n }\r\n addChild(child) {\r\n child._parent = this;\r\n this._children.push(child);\r\n if (child._layer) {\r\n this.registerChildLayer(child._layer);\r\n }\r\n }\r\n addChildAt(child, index) {\r\n child._parent = this;\r\n this._children.splice(index, 0, child);\r\n if (child._layer) {\r\n this.registerChildLayer(child._layer);\r\n }\r\n }\r\n removeChild(child) {\r\n child._parent = undefined;\r\n $array.removeFirst(this._children, child);\r\n }\r\n _render(status) {\r\n super._render(status);\r\n const renderer = this._renderer;\r\n if (this.interactive && this.interactiveChildren) {\r\n ++renderer._forceInteractive;\r\n }\r\n $array.each(this._children, (child) => {\r\n child.compoundAlpha = this.compoundAlpha * this.alpha;\r\n child.render(status);\r\n });\r\n if (this.interactive && this.interactiveChildren) {\r\n --renderer._forceInteractive;\r\n }\r\n }\r\n registerChildLayer(layer) {\r\n if (!this._childLayers) {\r\n this._childLayers = [];\r\n }\r\n $array.pushOne(this._childLayers, layer);\r\n if (this._parent) {\r\n this._parent.registerChildLayer(layer);\r\n }\r\n }\r\n markDirtyLayer(deep = false) {\r\n super.markDirtyLayer();\r\n if (deep && this._childLayers) {\r\n $array.each(this._childLayers, (layer) => layer.dirty = true);\r\n }\r\n }\r\n _dispose() {\r\n super._dispose();\r\n if (this._childLayers) {\r\n $array.each(this._childLayers, (layer) => {\r\n layer.dirty = true;\r\n });\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction setPoint(bounds, point) {\r\n bounds.left = Math.min(bounds.left, point.x);\r\n bounds.top = Math.min(bounds.top, point.y);\r\n bounds.right = Math.max(bounds.right, point.x);\r\n bounds.bottom = Math.max(bounds.bottom, point.y);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass Op {\r\n colorize(_context, _forceColor) { }\r\n colorizeGhost(context, forceColor) {\r\n this.colorize(context, forceColor);\r\n }\r\n path(_context) { }\r\n pathGhost(context) {\r\n this.path(context);\r\n }\r\n addBounds(_bounds) { }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass BeginPath extends Op {\r\n colorize(context, _forceColor) {\r\n context.beginPath();\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass BeginFill extends Op {\r\n constructor(color) {\r\n super();\r\n Object.defineProperty(this, \"color\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: color\r\n });\r\n }\r\n colorize(context, forceColor) {\r\n if (forceColor !== undefined) {\r\n context.fillStyle = forceColor;\r\n }\r\n else {\r\n context.fillStyle = this.color;\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass EndFill extends Op {\r\n constructor(clearShadow) {\r\n super();\r\n Object.defineProperty(this, \"clearShadow\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: clearShadow\r\n });\r\n }\r\n colorize(context, _forceColor) {\r\n context.fill();\r\n if (this.clearShadow) {\r\n context.shadowColor = \"\";\r\n context.shadowBlur = 0;\r\n context.shadowOffsetX = 0;\r\n context.shadowOffsetY = 0;\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass EndStroke extends Op {\r\n colorize(context, _forceColor) {\r\n context.stroke();\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass LineStyle extends Op {\r\n constructor(width, color, lineJoin) {\r\n super();\r\n Object.defineProperty(this, \"width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: width\r\n });\r\n Object.defineProperty(this, \"color\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: color\r\n });\r\n Object.defineProperty(this, \"lineJoin\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: lineJoin\r\n });\r\n }\r\n colorize(context, forceColor) {\r\n if (forceColor !== undefined) {\r\n context.strokeStyle = forceColor;\r\n }\r\n else {\r\n context.strokeStyle = this.color;\r\n }\r\n context.lineWidth = this.width;\r\n if (this.lineJoin) {\r\n context.lineJoin = this.lineJoin;\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass LineDash extends Op {\r\n constructor(dash) {\r\n super();\r\n Object.defineProperty(this, \"dash\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: dash\r\n });\r\n }\r\n colorize(context, _forceColor) {\r\n context.setLineDash(this.dash);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass LineDashOffset extends Op {\r\n constructor(dashOffset) {\r\n super();\r\n Object.defineProperty(this, \"dashOffset\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: dashOffset\r\n });\r\n }\r\n colorize(context, _forceColor) {\r\n context.lineDashOffset = this.dashOffset;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass DrawRect extends Op {\r\n constructor(x, y, width, height) {\r\n super();\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n Object.defineProperty(this, \"width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: width\r\n });\r\n Object.defineProperty(this, \"height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: height\r\n });\r\n }\r\n path(context) {\r\n context.rect(this.x, this.y, this.width, this.height);\r\n }\r\n addBounds(bounds) {\r\n const l = this.x;\r\n const t = this.y;\r\n const r = l + this.width;\r\n const b = t + this.height;\r\n setPoint(bounds, { x: l, y: t });\r\n setPoint(bounds, { x: r, y: t });\r\n setPoint(bounds, { x: l, y: b });\r\n setPoint(bounds, { x: r, y: b });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass DrawCircle extends Op {\r\n constructor(x, y, radius) {\r\n super();\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n Object.defineProperty(this, \"radius\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: radius\r\n });\r\n }\r\n path(context) {\r\n context.moveTo(this.x + this.radius, this.y);\r\n context.arc(this.x, this.y, this.radius, 0, 2 * Math.PI);\r\n }\r\n // TODO handle skewing and rotation\r\n addBounds(bounds) {\r\n setPoint(bounds, { x: this.x - this.radius, y: this.y - this.radius });\r\n setPoint(bounds, { x: this.x + this.radius, y: this.y + this.radius });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass DrawEllipse extends Op {\r\n constructor(x, y, radiusX, radiusY) {\r\n super();\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n Object.defineProperty(this, \"radiusX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: radiusX\r\n });\r\n Object.defineProperty(this, \"radiusY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: radiusY\r\n });\r\n }\r\n path(context) {\r\n context.ellipse(0, 0, this.radiusX, this.radiusY, 0, 0, Math.PI * 2);\r\n }\r\n // TODO handle skewing and rotation\r\n addBounds(bounds) {\r\n setPoint(bounds, { x: this.x - this.radiusX, y: this.y - this.radiusY });\r\n setPoint(bounds, { x: this.x + this.radiusX, y: this.y + this.radiusY });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass Arc extends Op {\r\n constructor(cx, cy, radius, startAngle, endAngle, anticlockwise) {\r\n super();\r\n Object.defineProperty(this, \"cx\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cx\r\n });\r\n Object.defineProperty(this, \"cy\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cy\r\n });\r\n Object.defineProperty(this, \"radius\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: radius\r\n });\r\n Object.defineProperty(this, \"startAngle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: startAngle\r\n });\r\n Object.defineProperty(this, \"endAngle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: endAngle\r\n });\r\n Object.defineProperty(this, \"anticlockwise\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: anticlockwise\r\n });\r\n }\r\n path(context) {\r\n if (this.radius > 0) {\r\n context.arc(this.cx, this.cy, this.radius, this.startAngle, this.endAngle, this.anticlockwise);\r\n }\r\n }\r\n addBounds(bounds) {\r\n let arcBounds = $math.getArcBounds(this.cx, this.cy, this.startAngle * $math.DEGREES, this.endAngle * $math.DEGREES, this.radius);\r\n setPoint(bounds, { x: arcBounds.left, y: arcBounds.top });\r\n setPoint(bounds, { x: arcBounds.right, y: arcBounds.bottom });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass ArcTo extends Op {\r\n constructor(x1, y1, x2, y2, radius) {\r\n super();\r\n Object.defineProperty(this, \"x1\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x1\r\n });\r\n Object.defineProperty(this, \"y1\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y1\r\n });\r\n Object.defineProperty(this, \"x2\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x2\r\n });\r\n Object.defineProperty(this, \"y2\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y2\r\n });\r\n Object.defineProperty(this, \"radius\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: radius\r\n });\r\n }\r\n path(context) {\r\n if (this.radius > 0) {\r\n context.arcTo(this.x1, this.y1, this.x2, this.y2, this.radius);\r\n }\r\n }\r\n // TODO: add points\r\n addBounds(_bounds) {\r\n /*\r\n // not finished\r\n https://math.stackexchange.com/questions/1781438/finding-the-center-of-a-circle-given-two-points-and-a-radius-algebraically\r\n\r\n if (prevPoint) {\r\n let x1 = prevPoint.x;\r\n let y1 = prevPoint.y;\r\n let x2 = this.x2;\r\n let y2 = this.y2;\r\n let r = this.radius;\r\n\r\n let xa = (x2 - x1) / 2;\r\n let ya = (y2 - y1) / 2;\r\n\r\n let x0 = x1 + xa;\r\n let y0 = y1 + ya;\r\n\r\n let a = Math.hypot(xa, ya);\r\n let b = Math.sqrt(r * r - a * a);\r\n\r\n let cx = x0 + b * ya / a;\r\n let cy = y0 - b * xa / a;\r\n\r\n console.log(cx, cy);\r\n }*/\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass LineTo extends Op {\r\n constructor(x, y) {\r\n super();\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n }\r\n path(context) {\r\n context.lineTo(this.x, this.y);\r\n }\r\n addBounds(bounds) {\r\n setPoint(bounds, { x: this.x, y: this.y });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass MoveTo extends Op {\r\n constructor(x, y) {\r\n super();\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n }\r\n path(context) {\r\n context.moveTo(this.x, this.y);\r\n }\r\n addBounds(bounds) {\r\n setPoint(bounds, { x: this.x, y: this.y });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass ClosePath extends Op {\r\n path(context) {\r\n context.closePath();\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass BezierCurveTo extends Op {\r\n constructor(cpX, cpY, cpX2, cpY2, toX, toY) {\r\n super();\r\n Object.defineProperty(this, \"cpX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpX\r\n });\r\n Object.defineProperty(this, \"cpY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpY\r\n });\r\n Object.defineProperty(this, \"cpX2\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpX2\r\n });\r\n Object.defineProperty(this, \"cpY2\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpY2\r\n });\r\n Object.defineProperty(this, \"toX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: toX\r\n });\r\n Object.defineProperty(this, \"toY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: toY\r\n });\r\n }\r\n path(context) {\r\n context.bezierCurveTo(this.cpX, this.cpY, this.cpX2, this.cpY2, this.toX, this.toY);\r\n }\r\n // TODO: OK?\r\n addBounds(bounds) {\r\n setPoint(bounds, { x: this.cpX, y: this.cpY });\r\n setPoint(bounds, { x: this.cpX2, y: this.cpY2 });\r\n setPoint(bounds, { x: this.toX, y: this.toY });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass QuadraticCurveTo extends Op {\r\n constructor(cpX, cpY, toX, toY) {\r\n super();\r\n Object.defineProperty(this, \"cpX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpX\r\n });\r\n Object.defineProperty(this, \"cpY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpY\r\n });\r\n Object.defineProperty(this, \"toX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: toX\r\n });\r\n Object.defineProperty(this, \"toY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: toY\r\n });\r\n }\r\n path(context) {\r\n context.quadraticCurveTo(this.cpX, this.cpY, this.toX, this.toY);\r\n }\r\n // TODO: OK?\r\n addBounds(bounds) {\r\n setPoint(bounds, { x: this.cpX, y: this.cpY });\r\n setPoint(bounds, { x: this.toX, y: this.toY });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass Shadow extends Op {\r\n constructor(color, blur, offsetX, offsetY, opacity) {\r\n super();\r\n Object.defineProperty(this, \"color\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: color\r\n });\r\n Object.defineProperty(this, \"blur\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: blur\r\n });\r\n Object.defineProperty(this, \"offsetX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: offsetX\r\n });\r\n Object.defineProperty(this, \"offsetY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: offsetY\r\n });\r\n Object.defineProperty(this, \"opacity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: opacity\r\n });\r\n }\r\n colorize(context, _forceColor) {\r\n if (this.opacity) {\r\n context.fillStyle = this.color;\r\n }\r\n context.shadowColor = this.color;\r\n context.shadowBlur = this.blur;\r\n context.shadowOffsetX = this.offsetX;\r\n context.shadowOffsetY = this.offsetY;\r\n }\r\n colorizeGhost(_context, _forceColor) { }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass GraphicsImage extends Op {\r\n constructor(image, width, height, x, y) {\r\n super();\r\n Object.defineProperty(this, \"image\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: image\r\n });\r\n Object.defineProperty(this, \"width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: width\r\n });\r\n Object.defineProperty(this, \"height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: height\r\n });\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n }\r\n path(context) {\r\n context.drawImage(this.image, this.x, this.y, this.width, this.height);\r\n }\r\n // TODO: OK?\r\n addBounds(bounds) {\r\n setPoint(bounds, { x: this.x, y: this.y });\r\n setPoint(bounds, { x: this.width, y: this.height });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasGraphics extends CanvasDisplayObject {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_operations\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"blendMode\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: BlendMode.NORMAL\r\n });\r\n Object.defineProperty(this, \"_hasShadows\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_fillAlpha\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_strokeAlpha\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n clear() {\r\n super.clear();\r\n this._operations.length = 0;\r\n }\r\n _pushOp(op) {\r\n this._operations.push(op);\r\n }\r\n beginFill(color, alpha = 1) {\r\n this._fillAlpha = alpha;\r\n if (color) {\r\n if (color instanceof Color) {\r\n this._pushOp(new BeginFill(color.toCSS(alpha)));\r\n }\r\n else {\r\n this.isMeasured = true;\r\n this._pushOp(new BeginFill(color));\r\n }\r\n }\r\n else {\r\n this._pushOp(new BeginFill(\"rgba(0, 0, 0, \" + alpha + \")\"));\r\n }\r\n }\r\n endFill() {\r\n this._pushOp(new EndFill(this._hasShadows));\r\n }\r\n endStroke() {\r\n this._pushOp(new EndStroke());\r\n }\r\n beginPath() {\r\n this._pushOp(new BeginPath());\r\n }\r\n lineStyle(width = 0, color, alpha = 1, lineJoin) {\r\n this._strokeAlpha = alpha;\r\n if (color) {\r\n if (color instanceof Color) {\r\n this._pushOp(new LineStyle(width, color.toCSS(alpha), lineJoin));\r\n }\r\n else {\r\n this._pushOp(new LineStyle(width, color, lineJoin));\r\n }\r\n }\r\n else {\r\n this._pushOp(new LineStyle(width, \"rgba(0, 0, 0, \" + alpha + \")\", lineJoin));\r\n }\r\n }\r\n setLineDash(dash) {\r\n this._pushOp(new LineDash(dash ? dash : []));\r\n }\r\n setLineDashOffset(dashOffset = 0) {\r\n this._pushOp(new LineDashOffset(dashOffset));\r\n }\r\n drawRect(x, y, width, height) {\r\n this._pushOp(new DrawRect(x, y, width, height));\r\n }\r\n drawCircle(x, y, radius) {\r\n this._pushOp(new DrawCircle(x, y, radius));\r\n }\r\n drawEllipse(x, y, radiusX, radiusY) {\r\n this._pushOp(new DrawEllipse(x, y, radiusX, radiusY));\r\n }\r\n arc(cx, cy, radius, startAngle, endAngle, anticlockwise = false) {\r\n this._pushOp(new Arc(cx, cy, radius, startAngle, endAngle, anticlockwise));\r\n }\r\n arcTo(x1, y1, x2, y2, radius) {\r\n this._pushOp(new ArcTo(x1, y1, x2, y2, radius));\r\n }\r\n lineTo(x, y) {\r\n this._pushOp(new LineTo(x, y));\r\n }\r\n moveTo(x, y) {\r\n this._pushOp(new MoveTo(x, y));\r\n }\r\n bezierCurveTo(cpX, cpY, cpX2, cpY2, toX, toY) {\r\n this._pushOp(new BezierCurveTo(cpX, cpY, cpX2, cpY2, toX, toY));\r\n }\r\n quadraticCurveTo(cpX, cpY, toX, toY) {\r\n this._pushOp(new QuadraticCurveTo(cpX, cpY, toX, toY));\r\n }\r\n closePath() {\r\n this._pushOp(new ClosePath());\r\n }\r\n shadow(color, blur = 0, offsetX = 0, offsetY = 0, opacity) {\r\n this._hasShadows = true;\r\n this._pushOp(new Shadow(opacity ? color.toCSS(opacity) : color.toCSS(this._fillAlpha || this._strokeAlpha), blur, offsetX, offsetY));\r\n }\r\n image(image, width, height, x, y) {\r\n this._pushOp(new GraphicsImage(image, width, height, x, y));\r\n }\r\n // https://svgwg.org/svg2-draft/paths.html#DProperty\r\n // TODO better error checking\r\n svgPath(path) {\r\n let x = 0;\r\n let y = 0;\r\n let cpx = null;\r\n let cpy = null;\r\n let qcpx = null;\r\n let qcpy = null;\r\n const SEGMENTS_REGEXP = /([MmZzLlHhVvCcSsQqTtAa])([^MmZzLlHhVvCcSsQqTtAa]*)/g;\r\n const ARGS_REGEXP = /[\\u0009\\u0020\\u000A\\u000C\\u000D]*([\\+\\-]?[0-9]*\\.?[0-9]+(?:[eE][\\+\\-]?[0-9]+)?)[\\u0009\\u0020\\u000A\\u000C\\u000D]*,?/g;\r\n let match;\r\n while ((match = SEGMENTS_REGEXP.exec(path)) !== null) {\r\n const name = match[1];\r\n const rest = match[2];\r\n const args = [];\r\n while ((match = ARGS_REGEXP.exec(rest)) !== null) {\r\n args.push(match[1]);\r\n }\r\n // Reset control point\r\n if (name !== \"S\" && name !== \"s\" && name !== \"C\" && name !== \"c\") {\r\n cpx = null;\r\n cpy = null;\r\n }\r\n // Reset control point\r\n if (name !== \"Q\" && name !== \"q\" && name !== \"T\" && name !== \"t\") {\r\n qcpx = null;\r\n qcpy = null;\r\n }\r\n switch (name) {\r\n case \"M\":\r\n checkEvenArgs(name, args.length, 2);\r\n x = +args[0];\r\n y = +args[1];\r\n this.moveTo(x, y);\r\n for (let i = 2; i < args.length; i += 2) {\r\n x = +args[i];\r\n y = +args[i + 1];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"m\":\r\n checkEvenArgs(name, args.length, 2);\r\n x += +args[0];\r\n y += +args[1];\r\n this.moveTo(x, y);\r\n for (let i = 2; i < args.length; i += 2) {\r\n x += +args[i];\r\n y += +args[i + 1];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"L\":\r\n checkEvenArgs(name, args.length, 2);\r\n for (let i = 0; i < args.length; i += 2) {\r\n x = +args[i];\r\n y = +args[i + 1];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"l\":\r\n checkEvenArgs(name, args.length, 2);\r\n for (let i = 0; i < args.length; i += 2) {\r\n x += +args[i];\r\n y += +args[i + 1];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"H\":\r\n checkMinArgs(name, args.length, 1);\r\n for (let i = 0; i < args.length; ++i) {\r\n x = +args[i];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"h\":\r\n checkMinArgs(name, args.length, 1);\r\n for (let i = 0; i < args.length; ++i) {\r\n x += +args[i];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"V\":\r\n checkMinArgs(name, args.length, 1);\r\n for (let i = 0; i < args.length; ++i) {\r\n y = +args[i];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"v\":\r\n checkMinArgs(name, args.length, 1);\r\n for (let i = 0; i < args.length; ++i) {\r\n y += +args[i];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"C\":\r\n checkEvenArgs(name, args.length, 6);\r\n for (let i = 0; i < args.length; i += 6) {\r\n const x1 = +args[i];\r\n const y1 = +args[i + 1];\r\n cpx = +args[i + 2];\r\n cpy = +args[i + 3];\r\n x = +args[i + 4];\r\n y = +args[i + 5];\r\n this.bezierCurveTo(x1, y1, cpx, cpy, x, y);\r\n }\r\n break;\r\n case \"c\":\r\n checkEvenArgs(name, args.length, 6);\r\n for (let i = 0; i < args.length; i += 6) {\r\n const x1 = +args[i] + x;\r\n const y1 = +args[i + 1] + y;\r\n cpx = +args[i + 2] + x;\r\n cpy = +args[i + 3] + y;\r\n x += +args[i + 4];\r\n y += +args[i + 5];\r\n this.bezierCurveTo(x1, y1, cpx, cpy, x, y);\r\n }\r\n break;\r\n case \"S\":\r\n checkEvenArgs(name, args.length, 4);\r\n if (cpx === null || cpy === null) {\r\n cpx = x;\r\n cpy = y;\r\n }\r\n for (let i = 0; i < args.length; i += 4) {\r\n const x1 = 2 * x - cpx;\r\n const y1 = 2 * y - cpy;\r\n cpx = +args[i];\r\n cpy = +args[i + 1];\r\n x = +args[i + 2];\r\n y = +args[i + 3];\r\n this.bezierCurveTo(x1, y1, cpx, cpy, x, y);\r\n }\r\n break;\r\n case \"s\":\r\n checkEvenArgs(name, args.length, 4);\r\n if (cpx === null || cpy === null) {\r\n cpx = x;\r\n cpy = y;\r\n }\r\n for (let i = 0; i < args.length; i += 4) {\r\n const x1 = 2 * x - cpx;\r\n const y1 = 2 * y - cpy;\r\n cpx = +args[i] + x;\r\n cpy = +args[i + 1] + y;\r\n x += +args[i + 2];\r\n y += +args[i + 3];\r\n this.bezierCurveTo(x1, y1, cpx, cpy, x, y);\r\n }\r\n break;\r\n case \"Q\":\r\n checkEvenArgs(name, args.length, 4);\r\n for (let i = 0; i < args.length; i += 4) {\r\n qcpx = +args[i];\r\n qcpy = +args[i + 1];\r\n x = +args[i + 2];\r\n y = +args[i + 3];\r\n this.quadraticCurveTo(qcpx, qcpy, x, y);\r\n }\r\n break;\r\n case \"q\":\r\n checkEvenArgs(name, args.length, 4);\r\n for (let i = 0; i < args.length; i += 4) {\r\n qcpx = +args[i] + x;\r\n qcpy = +args[i + 1] + y;\r\n x += +args[i + 2];\r\n y += +args[i + 3];\r\n this.quadraticCurveTo(qcpx, qcpy, x, y);\r\n }\r\n break;\r\n case \"T\":\r\n checkEvenArgs(name, args.length, 2);\r\n if (qcpx === null || qcpy === null) {\r\n qcpx = x;\r\n qcpy = y;\r\n }\r\n for (let i = 0; i < args.length; i += 2) {\r\n qcpx = 2 * x - qcpx;\r\n qcpy = 2 * y - qcpy;\r\n x = +args[i];\r\n y = +args[i + 1];\r\n this.quadraticCurveTo(qcpx, qcpy, x, y);\r\n }\r\n break;\r\n case \"t\":\r\n checkEvenArgs(name, args.length, 2);\r\n if (qcpx === null || qcpy === null) {\r\n qcpx = x;\r\n qcpy = y;\r\n }\r\n for (let i = 0; i < args.length; i += 2) {\r\n qcpx = 2 * x - qcpx;\r\n qcpy = 2 * y - qcpy;\r\n x += +args[i];\r\n y += +args[i + 1];\r\n this.quadraticCurveTo(qcpx, qcpy, x, y);\r\n }\r\n break;\r\n case \"A\":\r\n case \"a\":\r\n const relative = (name === \"a\");\r\n splitArcFlags(args);\r\n checkEvenArgs(name, args.length, 7);\r\n for (let i = 0; i < args.length; i += 7) {\r\n let cx = +args[i + 5];\r\n let cy = +args[i + 6];\r\n if (relative) {\r\n cx += x;\r\n cy += y;\r\n }\r\n const bs = arcToBezier({\r\n px: x,\r\n py: y,\r\n rx: +args[i],\r\n ry: +args[i + 1],\r\n xAxisRotation: +args[i + 2],\r\n largeArcFlag: assertBinary(+args[i + 3]),\r\n sweepFlag: assertBinary(+args[i + 4]),\r\n cx,\r\n cy,\r\n });\r\n $array.each(bs, (b) => {\r\n this.bezierCurveTo(b.x1, b.y1, b.x2, b.y2, b.x, b.y);\r\n x = b.x;\r\n y = b.y;\r\n });\r\n }\r\n break;\r\n case \"Z\":\r\n case \"z\":\r\n checkArgs(name, args.length, 0);\r\n this.closePath();\r\n break;\r\n }\r\n }\r\n }\r\n _runPath(context) {\r\n context.beginPath();\r\n $array.each(this._operations, (op) => {\r\n op.path(context);\r\n });\r\n }\r\n _render(status) {\r\n super._render(status);\r\n const layerDirty = status.layer.dirty;\r\n const interactive = this._isInteractive(status);\r\n if (layerDirty || interactive) {\r\n const context = status.layer.context;\r\n const ghostContext = this._renderer._ghostLayer.context;\r\n if (layerDirty) {\r\n context.globalCompositeOperation = this.blendMode;\r\n context.beginPath();\r\n }\r\n let color;\r\n if (interactive) {\r\n ghostContext.beginPath();\r\n color = this._getColorId();\r\n }\r\n $array.each(this._operations, (op) => {\r\n if (layerDirty) {\r\n op.path(context);\r\n op.colorize(context, undefined);\r\n }\r\n if (interactive) {\r\n op.pathGhost(ghostContext);\r\n op.colorizeGhost(ghostContext, color);\r\n }\r\n });\r\n }\r\n }\r\n renderDetached(context) {\r\n if (this.visible) {\r\n this._setMatrix();\r\n context.save();\r\n // We must apply the mask before we transform the element\r\n const mask = this.mask;\r\n if (mask) {\r\n mask._setMatrix();\r\n mask._transform(context, 1);\r\n mask._runPath(context);\r\n context.clip();\r\n }\r\n // TODO handle compoundAlpha somehow ?\r\n context.globalAlpha = this.compoundAlpha * this.alpha;\r\n this._transform(context, 1);\r\n if (this.filter) {\r\n context.filter = this.filter;\r\n }\r\n context.globalCompositeOperation = this.blendMode;\r\n context.beginPath();\r\n $array.each(this._operations, (op) => {\r\n op.path(context);\r\n op.colorize(context, undefined);\r\n });\r\n context.restore();\r\n }\r\n }\r\n _addBounds(bounds) {\r\n if (this.visible && this.isMeasured) {\r\n $array.each(this._operations, (op) => {\r\n op.addBounds(bounds);\r\n });\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasText extends CanvasDisplayObject {\r\n constructor(renderer, text, style) {\r\n super(renderer);\r\n Object.defineProperty(this, \"text\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"style\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"resolution\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"textVisible\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"_textInfo\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_originalScale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n this.text = text;\r\n this.style = style;\r\n }\r\n invalidateBounds() {\r\n super.invalidateBounds();\r\n this._textInfo = undefined;\r\n }\r\n _shared(context) {\r\n if (this.style.textAlign) {\r\n context.textAlign = this.style.textAlign;\r\n }\r\n if (this.style.direction) {\r\n context.direction = this.style.direction;\r\n }\r\n if (this.style.textBaseline) {\r\n context.textBaseline = this.style.textBaseline;\r\n }\r\n }\r\n _prerender(status, ignoreGhost = false, ignoreFontWeight = false) {\r\n super._render(status);\r\n const context = status.layer.context;\r\n const ghostContext = this._renderer._ghostLayer.context;\r\n // Font style\r\n const style = this.style;\r\n let fontStyle = this._getFontStyle(undefined, ignoreFontWeight);\r\n context.font = fontStyle;\r\n if (this._isInteractive(status) && !ignoreGhost) {\r\n ghostContext.font = fontStyle;\r\n }\r\n // Other parameters\r\n if (style.fill) {\r\n if (style.fill instanceof Color) {\r\n context.fillStyle = style.fill.toCSS(style.fillOpacity != undefined ? style.fillOpacity : 1);\r\n }\r\n else {\r\n context.fillStyle = style.fill;\r\n }\r\n }\r\n if (style.shadowColor) {\r\n status.layer.context.shadowColor = style.shadowColor.toCSS(style.shadowOpacity || 1);\r\n }\r\n if (style.shadowBlur) {\r\n status.layer.context.shadowBlur = style.shadowBlur;\r\n }\r\n if (style.shadowOffsetX) {\r\n status.layer.context.shadowOffsetX = style.shadowOffsetX;\r\n }\r\n if (style.shadowOffsetY) {\r\n status.layer.context.shadowOffsetY = style.shadowOffsetY;\r\n }\r\n this._shared(context);\r\n if (this._isInteractive(status) && !ignoreGhost) {\r\n ghostContext.fillStyle = this._getColorId();\r\n this._shared(ghostContext);\r\n }\r\n }\r\n _getFontStyle(style2, ignoreFontWeight = false) {\r\n // Process defaults\r\n const style = this.style;\r\n let fontStyle = [];\r\n if (style2 && style2.fontVariant) {\r\n fontStyle.push(style2.fontVariant);\r\n }\r\n else if (style.fontVariant) {\r\n fontStyle.push(style.fontVariant);\r\n }\r\n if (!ignoreFontWeight) {\r\n if (style2 && style2.fontWeight) {\r\n fontStyle.push(style2.fontWeight);\r\n }\r\n else if (style.fontWeight) {\r\n fontStyle.push(style.fontWeight);\r\n }\r\n }\r\n if (style2 && style2.fontStyle) {\r\n fontStyle.push(style2.fontStyle);\r\n }\r\n else if (style.fontStyle) {\r\n fontStyle.push(style.fontStyle);\r\n }\r\n if (style2 && style2.fontSize) {\r\n if ($type.isNumber(style2.fontSize)) {\r\n style2.fontSize = style2.fontSize + \"px\";\r\n }\r\n fontStyle.push(style2.fontSize);\r\n }\r\n else if (style.fontSize) {\r\n if ($type.isNumber(style.fontSize)) {\r\n style.fontSize = style.fontSize + \"px\";\r\n }\r\n fontStyle.push(style.fontSize);\r\n }\r\n if (style2 && style2.fontFamily) {\r\n fontStyle.push(style2.fontFamily);\r\n }\r\n else if (style.fontFamily) {\r\n fontStyle.push(style.fontFamily);\r\n }\r\n else if (fontStyle.length) {\r\n fontStyle.push(\"Arial\");\r\n }\r\n return fontStyle.join(\" \");\r\n }\r\n _render(status) {\r\n // We need measurements in order to properly position text for alignment\r\n if (!this._textInfo) {\r\n this._measure(status);\r\n }\r\n if (this.textVisible) {\r\n const interactive = this._isInteractive(status);\r\n const context = status.layer.context;\r\n const layerDirty = status.layer.dirty;\r\n const ghostContext = this._renderer._ghostLayer.context;\r\n context.save();\r\n ghostContext.save();\r\n this._prerender(status);\r\n // const lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\r\n // const x = this._localBounds && (this._localBounds.left < 0) ? Math.abs(this._localBounds.left) : 0;\r\n // Process text info produced by _measure()\r\n $array.each(this._textInfo, (line, _index) => {\r\n $array.each(line.textChunks, (chunk, _index) => {\r\n // Set style\r\n if (chunk.style) {\r\n context.save();\r\n ghostContext.save();\r\n context.font = chunk.style;\r\n if (this._isInteractive(status)) {\r\n ghostContext.font = chunk.style;\r\n }\r\n }\r\n if (chunk.fill) {\r\n context.save();\r\n context.fillStyle = chunk.fill.toCSS();\r\n // Color does not affect ghostContext so we not set it\r\n }\r\n // Draw text\r\n if (layerDirty) {\r\n context.fillText(chunk.text, chunk.offsetX, line.offsetY + chunk.offsetY);\r\n }\r\n // Draw underline\r\n if (chunk.textDecoration == \"underline\" || chunk.textDecoration == \"line-through\") {\r\n let thickness = 1;\r\n let offset = 1;\r\n let fontSize = chunk.height;\r\n const oversizedBehavior = this.style.oversizedBehavior || \"\";\r\n if ([\"truncate\", \"wrap\", \"wrap-no-break\"].indexOf(oversizedBehavior) > -1) {\r\n // Measure actual width of the text so the line fits\r\n const metrics = this._measureText(chunk.text, context);\r\n chunk.width = metrics.actualBoundingBoxLeft + metrics.actualBoundingBoxRight;\r\n }\r\n let offsetX = chunk.offsetX;\r\n switch (this.style.textAlign) {\r\n case \"right\":\r\n case \"end\":\r\n offsetX -= chunk.width;\r\n break;\r\n case \"center\":\r\n offsetX -= chunk.width / 2;\r\n break;\r\n }\r\n if (chunk.style) {\r\n const format = TextFormatter.getTextStyle(chunk.style);\r\n switch (format.fontWeight) {\r\n case \"bolder\":\r\n case \"bold\":\r\n case \"700\":\r\n case \"800\":\r\n case \"900\":\r\n thickness = 2;\r\n break;\r\n }\r\n }\r\n if (fontSize) {\r\n offset = fontSize / 20;\r\n }\r\n let y;\r\n if (chunk.textDecoration == \"line-through\") {\r\n y = thickness + line.offsetY + chunk.offsetY - chunk.height / 2;\r\n }\r\n else {\r\n y = thickness + offset * 1.5 + line.offsetY + chunk.offsetY;\r\n }\r\n context.save();\r\n context.beginPath();\r\n if (chunk.fill) {\r\n context.strokeStyle = chunk.fill.toCSS();\r\n }\r\n else if (this.style.fill && this.style.fill instanceof Color) {\r\n context.strokeStyle = this.style.fill.toCSS();\r\n }\r\n context.lineWidth = thickness * offset;\r\n context.moveTo(offsetX, y);\r\n context.lineTo(offsetX + chunk.width, y);\r\n context.stroke();\r\n context.restore();\r\n }\r\n if (interactive && this.interactive) {\r\n // Draw text in ghost canvas ONLY if it is set as interactive\r\n // explicitly. This way we avoid hit test anomalies caused by anti\r\n // aliasing of text.\r\n ghostContext.fillText(chunk.text, chunk.offsetX, line.offsetY + chunk.offsetY);\r\n }\r\n if (chunk.fill) {\r\n context.restore();\r\n // Color does not affect ghostContext so we not set it\r\n }\r\n // Reset style\r\n if (chunk.style) {\r\n context.restore();\r\n ghostContext.restore();\r\n }\r\n });\r\n });\r\n context.restore();\r\n ghostContext.restore();\r\n }\r\n }\r\n _addBounds(bounds) {\r\n if (this.visible && this.isMeasured) {\r\n //if (this._textVisible) {\r\n const x = this._measure({\r\n inactive: this.inactive,\r\n layer: this.getLayer(),\r\n });\r\n setPoint(bounds, { x: x.left, y: x.top });\r\n setPoint(bounds, { x: x.right, y: x.bottom });\r\n //}\r\n }\r\n }\r\n _ignoreFontWeight() {\r\n return /apple/i.test(navigator.vendor);\r\n }\r\n _measure(status) {\r\n const context = status.layer.context;\r\n const ghostContext = this._renderer._ghostLayer.context;\r\n const rtl = this.style.direction == \"rtl\";\r\n // Reset text info\r\n this._textInfo = [];\r\n // Init\r\n const oversizedBehavior = this.style.oversizedBehavior;\r\n const maxWidth = this.style.maxWidth;\r\n const truncate = $type.isNumber(maxWidth) && oversizedBehavior == \"truncate\";\r\n const wrap = $type.isNumber(maxWidth) && (oversizedBehavior == \"wrap\" || oversizedBehavior == \"wrap-no-break\");\r\n // Pre-render\r\n context.save();\r\n ghostContext.save();\r\n this._prerender(status, true, this._ignoreFontWeight());\r\n // Get default font metrix\r\n const refText = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 \";\r\n // Split up text into lines\r\n const lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\r\n let styleRestored = true;\r\n let minX = 0;\r\n let maxX = 0;\r\n // Iterate through the lines\r\n let offsetY = 0;\r\n let currentStyle;\r\n $array.each(lines, (line, _index) => {\r\n // Split up line into format/value chunks\r\n let chunks;\r\n if (line == \"\") {\r\n chunks = [{\r\n type: \"value\",\r\n text: \"\"\r\n }];\r\n }\r\n else {\r\n chunks = TextFormatter.chunk(line, false, this.style.ignoreFormatting);\r\n }\r\n while (chunks.length > 0) {\r\n // Init line object\r\n let lineInfo = {\r\n offsetY: offsetY,\r\n ascent: 0,\r\n width: 0,\r\n height: 0,\r\n left: 0,\r\n right: 0,\r\n textChunks: []\r\n };\r\n // Measure reference text\r\n const metrics = this._measureText(refText, context);\r\n const height = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\r\n lineInfo.height = height;\r\n lineInfo.ascent = metrics.actualBoundingBoxAscent;\r\n let currentFormat;\r\n let currentDecoration = this.style.textDecoration;\r\n let currentFill;\r\n let currentChunkWidth;\r\n let skipFurtherText = false;\r\n let firstTextChunk = true;\r\n let leftoverChunks = [];\r\n let currentVerticalAlign;\r\n //let offsetX = 0;\r\n //let chunk;\r\n //while(chunk = chunks.shift()) {\r\n $array.eachContinue(chunks, (chunk, index) => {\r\n // Format chunk\r\n if (chunk.type == \"format\") {\r\n if (chunk.text == \"[/]\") {\r\n if (!styleRestored) {\r\n context.restore();\r\n ghostContext.restore();\r\n styleRestored = true;\r\n }\r\n currentFill = undefined;\r\n currentStyle = undefined;\r\n currentChunkWidth = undefined;\r\n currentDecoration = this.style.textDecoration;\r\n currentVerticalAlign = undefined;\r\n currentFormat = chunk.text;\r\n }\r\n else {\r\n if (!styleRestored) {\r\n context.restore();\r\n ghostContext.restore();\r\n }\r\n let format = TextFormatter.getTextStyle(chunk.text);\r\n const fontStyle = this._getFontStyle(format);\r\n context.save();\r\n ghostContext.save();\r\n context.font = fontStyle;\r\n currentStyle = fontStyle;\r\n currentFormat = chunk.text;\r\n if (format.textDecoration) {\r\n currentDecoration = format.textDecoration;\r\n }\r\n if (format.fill) {\r\n currentFill = format.fill;\r\n }\r\n if (format.width) {\r\n currentChunkWidth = $type.toNumber(format.width);\r\n }\r\n if (format.verticalAlign) {\r\n currentVerticalAlign = format.verticalAlign;\r\n }\r\n styleRestored = false;\r\n // Measure reference text after change of format\r\n const metrics = this._measureText(refText, context);\r\n const height = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\r\n if (height > lineInfo.height) {\r\n lineInfo.height = height;\r\n }\r\n if (metrics.actualBoundingBoxAscent > lineInfo.ascent) {\r\n lineInfo.ascent = metrics.actualBoundingBoxAscent;\r\n }\r\n }\r\n }\r\n // Text chunk\r\n else if (chunk.type == \"value\" && !skipFurtherText) {\r\n // Measure\r\n const metrics = this._measureText(chunk.text, context);\r\n let chunkWidth = metrics.actualBoundingBoxLeft + metrics.actualBoundingBoxRight;\r\n // Check for fit\r\n if (truncate) {\r\n // Break words?\r\n let breakWords = firstTextChunk || this.style.breakWords || false;\r\n // Measure ellipsis and check if it fits\r\n const ellipsis = this.style.ellipsis || \"\";\r\n const ellipsisMetrics = this._measureText(ellipsis, context);\r\n const ellipsisWidth = ellipsisMetrics.actualBoundingBoxLeft + ellipsisMetrics.actualBoundingBoxRight;\r\n // Check fit\r\n if ((lineInfo.width + chunkWidth) > maxWidth) {\r\n const excessWidth = maxWidth - lineInfo.width - ellipsisWidth;\r\n chunk.text = this._truncateText(context, chunk.text, excessWidth, breakWords);\r\n chunk.text += ellipsis;\r\n skipFurtherText = true;\r\n }\r\n }\r\n else if (wrap) {\r\n // Check fit\r\n if ((lineInfo.width + chunkWidth) > maxWidth) {\r\n const excessWidth = maxWidth - lineInfo.width;\r\n const tmpText = this._truncateText(context, chunk.text, excessWidth, false, (firstTextChunk && this.style.oversizedBehavior != \"wrap-no-break\"));\r\n if (tmpText == \"\") {\r\n // Unable to fit a single letter - hide the whole label\r\n this.textVisible = true;\r\n return false;\r\n }\r\n //skipFurtherText = true;\r\n //Add remaining chunks for the next line\r\n leftoverChunks = chunks.slice(index + 1);\r\n //Add remaining text of current chunk if it was forced-cut\r\n if ($utils.trim(tmpText) != $utils.trim(chunk.text)) {\r\n leftoverChunks.unshift({\r\n type: \"value\",\r\n text: chunk.text.substr(tmpText.length)\r\n });\r\n if (currentFormat) {\r\n leftoverChunks.unshift({\r\n type: \"format\",\r\n text: currentFormat\r\n });\r\n }\r\n }\r\n // Set current chunk (truncated)\r\n chunk.text = $utils.trim(tmpText);\r\n chunks = [];\r\n skipFurtherText = true;\r\n }\r\n }\r\n // Chunk width?\r\n let leftBoundMod = 1;\r\n let rightBoundMod = 1;\r\n if (currentStyle && currentChunkWidth && (currentChunkWidth > chunkWidth)) {\r\n // increase horizontal bounding boxes accordingly\r\n const boundsMod = chunkWidth / currentChunkWidth;\r\n switch (this.style.textAlign) {\r\n case \"right\":\r\n case \"end\":\r\n leftBoundMod = boundsMod;\r\n break;\r\n case \"center\":\r\n leftBoundMod = boundsMod;\r\n rightBoundMod = boundsMod;\r\n break;\r\n default:\r\n rightBoundMod = boundsMod;\r\n }\r\n chunkWidth = currentChunkWidth;\r\n }\r\n const chunkHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\r\n if (chunkHeight > lineInfo.height) {\r\n lineInfo.height = chunkHeight;\r\n }\r\n if (metrics.actualBoundingBoxAscent > lineInfo.ascent) {\r\n lineInfo.ascent = metrics.actualBoundingBoxAscent;\r\n }\r\n lineInfo.width += chunkWidth;\r\n lineInfo.left += metrics.actualBoundingBoxLeft / leftBoundMod;\r\n lineInfo.right += metrics.actualBoundingBoxRight / rightBoundMod;\r\n lineInfo.textChunks.push({\r\n style: currentStyle,\r\n fill: currentFill,\r\n text: chunk.text,\r\n width: chunkWidth,\r\n height: chunkHeight,\r\n left: metrics.actualBoundingBoxLeft,\r\n right: metrics.actualBoundingBoxRight,\r\n ascent: metrics.actualBoundingBoxAscent,\r\n offsetX: 0,\r\n offsetY: 0,\r\n textDecoration: currentDecoration,\r\n verticalAlign: currentVerticalAlign\r\n });\r\n //offsetX += chunkWidth;\r\n firstTextChunk = false;\r\n }\r\n if (leftoverChunks) {\r\n //return false;\r\n }\r\n return true;\r\n //}\r\n });\r\n if (this.style.lineHeight instanceof Percent) {\r\n lineInfo.height *= this.style.lineHeight.value;\r\n lineInfo.ascent *= this.style.lineHeight.value;\r\n }\r\n else {\r\n lineInfo.height *= this.style.lineHeight || 1.2;\r\n lineInfo.ascent *= this.style.lineHeight || 1.2;\r\n }\r\n if (minX < lineInfo.left) {\r\n minX = lineInfo.left;\r\n }\r\n if (maxX < lineInfo.right) {\r\n maxX = lineInfo.right;\r\n }\r\n this._textInfo.push(lineInfo);\r\n //lineInfo.offsetY += lineInfo.ascent;\r\n offsetY += lineInfo.height;\r\n // Reset chunks so that it can proceed to the next line\r\n chunks = leftoverChunks || [];\r\n }\r\n });\r\n if (!styleRestored) {\r\n context.restore();\r\n ghostContext.restore();\r\n }\r\n // Adjust chunk internal offsets\r\n $array.each(this._textInfo, (lineInfo, _index) => {\r\n let currentChunkOffset = 0;\r\n $array.each(lineInfo.textChunks, (chunk) => {\r\n chunk.offsetX = currentChunkOffset + chunk.left - lineInfo.left;\r\n chunk.offsetY += lineInfo.height - lineInfo.height * (this.style.baselineRatio || 0.19);\r\n currentChunkOffset += chunk.width;\r\n if (chunk.verticalAlign) {\r\n switch (chunk.verticalAlign) {\r\n case \"super\":\r\n chunk.offsetY -= lineInfo.height / 2 - chunk.height / 2;\r\n break;\r\n case \"sub\":\r\n chunk.offsetY += chunk.height / 2;\r\n break;\r\n }\r\n }\r\n });\r\n });\r\n const bounds = {\r\n left: rtl ? -maxX : -minX,\r\n top: 0,\r\n right: rtl ? minX : maxX,\r\n bottom: offsetY,\r\n };\r\n // We need to fit?\r\n if (oversizedBehavior !== \"none\") {\r\n const ratio = this._fitRatio(bounds);\r\n if (ratio < 1) {\r\n if (oversizedBehavior == \"fit\") {\r\n if ($type.isNumber(this.style.minScale) && (ratio < this.style.minScale)) {\r\n this.textVisible = false;\r\n bounds.left = 0;\r\n bounds.top = 0;\r\n bounds.right = 0;\r\n bounds.bottom = 0;\r\n }\r\n else {\r\n if (!this._originalScale || this._originalScale == 1) {\r\n this._originalScale = this.scale;\r\n }\r\n this.scale = ratio;\r\n this.textVisible = true;\r\n }\r\n }\r\n else if (oversizedBehavior == \"hide\") {\r\n this.textVisible = false;\r\n bounds.left = 0;\r\n bounds.top = 0;\r\n bounds.right = 0;\r\n bounds.bottom = 0;\r\n }\r\n else {\r\n switch (this.style.textAlign) {\r\n case \"right\":\r\n case \"end\":\r\n bounds.left = rtl ? maxWidth : -maxWidth;\r\n bounds.right = 0;\r\n break;\r\n case \"center\":\r\n bounds.left = -maxWidth / 2;\r\n bounds.right = maxWidth / 2;\r\n break;\r\n default:\r\n bounds.left = 0;\r\n bounds.right = rtl ? -maxWidth : maxWidth;\r\n }\r\n this.scale = this._originalScale || 1;\r\n this._originalScale = undefined;\r\n this.textVisible = true;\r\n }\r\n }\r\n else {\r\n this.scale = this._originalScale || 1;\r\n this._originalScale = undefined;\r\n this.textVisible = true;\r\n }\r\n }\r\n context.restore();\r\n ghostContext.restore();\r\n return bounds;\r\n }\r\n _fitRatio(bounds) {\r\n const maxW = this.style.maxWidth;\r\n const maxH = this.style.maxHeight;\r\n if (!$type.isNumber(maxW) && !$type.isNumber(maxH)) {\r\n return 1;\r\n }\r\n const w = bounds.right - bounds.left;\r\n const h = bounds.bottom - bounds.top;\r\n return Math.min(maxW / w || 1, maxH / h || 1);\r\n }\r\n _truncateText(context, text, maxWidth, breakWords = false, fallbackBreakWords = true) {\r\n let width;\r\n do {\r\n if (breakWords) {\r\n text = text.slice(0, -1);\r\n }\r\n else {\r\n let tmp = text.replace(/[^,;:!?\\\\\\/\\s​]+[,;:!?\\\\\\/\\s​]*$/g, \"\");\r\n if ((tmp == \"\" || tmp === text) && fallbackBreakWords) {\r\n breakWords = true;\r\n }\r\n else if (tmp == \"\") {\r\n return text;\r\n }\r\n else {\r\n text = tmp;\r\n }\r\n }\r\n const metrics = this._measureText(text, context);\r\n width = metrics.actualBoundingBoxLeft + metrics.actualBoundingBoxRight;\r\n } while ((width > maxWidth) && text != \"\");\r\n return text;\r\n }\r\n _measureText(text, context) {\r\n let metrics = context.measureText(text);\r\n let fakeMetrics = {};\r\n if (metrics.actualBoundingBoxAscent == null) {\r\n const div = document.createElement(\"div\");\r\n div.innerText = text;\r\n div.style.visibility = \"hidden\";\r\n div.style.position = \"absolute\";\r\n div.style.top = \"-1000000px;\";\r\n div.style.fontFamily = this.style.fontFamily || \"\";\r\n div.style.fontSize = this.style.fontSize + \"\";\r\n document.body.appendChild(div);\r\n const bbox = div.getBoundingClientRect();\r\n document.body.removeChild(div);\r\n const h = bbox.height;\r\n const w = metrics.width;\r\n let left = 0;\r\n let right = w;\r\n fakeMetrics = {\r\n actualBoundingBoxAscent: h,\r\n actualBoundingBoxDescent: 0,\r\n actualBoundingBoxLeft: left,\r\n actualBoundingBoxRight: right,\r\n fontBoundingBoxAscent: h,\r\n fontBoundingBoxDescent: 0,\r\n width: w\r\n };\r\n //return fake;\r\n }\r\n else {\r\n fakeMetrics = {\r\n actualBoundingBoxAscent: metrics.actualBoundingBoxAscent,\r\n actualBoundingBoxDescent: metrics.actualBoundingBoxDescent,\r\n actualBoundingBoxLeft: metrics.actualBoundingBoxLeft,\r\n actualBoundingBoxRight: metrics.actualBoundingBoxRight,\r\n fontBoundingBoxAscent: metrics.actualBoundingBoxAscent,\r\n fontBoundingBoxDescent: metrics.actualBoundingBoxDescent,\r\n width: metrics.width\r\n };\r\n }\r\n const w = metrics.width;\r\n switch (this.style.textAlign) {\r\n case \"right\":\r\n case \"end\":\r\n fakeMetrics.actualBoundingBoxLeft = w;\r\n fakeMetrics.actualBoundingBoxRight = 0;\r\n break;\r\n case \"center\":\r\n fakeMetrics.actualBoundingBoxLeft = w / 2;\r\n fakeMetrics.actualBoundingBoxRight = w / 2;\r\n break;\r\n default:\r\n fakeMetrics.actualBoundingBoxLeft = 0;\r\n fakeMetrics.actualBoundingBoxRight = w;\r\n }\r\n return fakeMetrics;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasTextStyle {\r\n constructor() {\r\n //public wordWrapWidth: number = 100;\r\n Object.defineProperty(this, \"fill\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fillOpacity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"textAlign\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fontFamily\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fontSize\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fontWeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fontStyle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fontVariant\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"textDecoration\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowColor\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowBlur\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowOffsetX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowOffsetY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowOpacity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n // leading?: number;\r\n // letterSpacing?: number;\r\n Object.defineProperty(this, \"lineHeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: percent(120)\r\n });\r\n Object.defineProperty(this, \"baselineRatio\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0.19\r\n });\r\n // padding?: number;\r\n // stroke?: number;\r\n // strokeThickness?: number;\r\n // trim?: number;\r\n // wordWrap?: boolean;\r\n Object.defineProperty(this, \"direction\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"textBaseline\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"oversizedBehavior\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"none\"\r\n });\r\n Object.defineProperty(this, \"breakWords\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"ellipsis\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"…\"\r\n });\r\n Object.defineProperty(this, \"maxWidth\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"maxHeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"minScale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"ignoreFormatting\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasRadialText extends CanvasText {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"textType\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"circular\"\r\n });\r\n Object.defineProperty(this, \"radius\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"startAngle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"inside\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"orientation\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"auto\"\r\n });\r\n Object.defineProperty(this, \"kerning\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_textReversed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n }\r\n _render(status) {\r\n switch (this.textType) {\r\n case \"circular\":\r\n this._renderCircular(status);\r\n break;\r\n default:\r\n super._render(status);\r\n break;\r\n }\r\n }\r\n _renderCircular(status) {\r\n if (this.textVisible) {\r\n this._prerender(status);\r\n const interactive = this._isInteractive(status);\r\n const context = status.layer.context;\r\n const layerDirty = status.layer.dirty;\r\n const ghostContext = this._renderer._ghostLayer.context;\r\n // Savepoint\r\n context.save();\r\n if (interactive) {\r\n ghostContext.save();\r\n }\r\n // We need measurements in order to properly position text for alignment\r\n if (!this._textInfo) {\r\n this._measure(status);\r\n }\r\n // Init\r\n let radius = (this.radius || 0);\r\n let startAngle = (this.startAngle || 0);\r\n let deltaAngle = 0;\r\n let orientation = this.orientation;\r\n let inward = orientation == \"auto\" ? \"auto\" : orientation == \"inward\";\r\n const inside = this.inside;\r\n const align = this.style.textAlign || \"left\";\r\n const kerning = this.kerning || 0;\r\n let clockwise = align == \"left\" ? 1 : -1;\r\n const shouldReverse = !this._textReversed;\r\n // Check if we need to invert the whole stuff\r\n if (inward == \"auto\") {\r\n // Calc max angle so we know whether we need to flip it\r\n let maxAngle = 0;\r\n let midAngle = 0;\r\n $array.each(this._textInfo, (line, _index) => {\r\n const deltaAngle = startAngle + (line.width / (radius - line.height)) / 2 * -clockwise;\r\n if (deltaAngle > maxAngle) {\r\n maxAngle = deltaAngle;\r\n }\r\n });\r\n if (align == \"left\") {\r\n midAngle = (maxAngle + deltaAngle / 2) * $math.DEGREES;\r\n }\r\n else if (align == \"right\") {\r\n midAngle = (maxAngle - deltaAngle / 2) * $math.DEGREES;\r\n }\r\n else {\r\n midAngle = startAngle * $math.DEGREES;\r\n }\r\n midAngle = $math.normalizeAngle(midAngle);\r\n inward = (midAngle >= 270) || (midAngle <= 90);\r\n }\r\n if (inward == true && shouldReverse) {\r\n this._textInfo.reverse();\r\n this._textReversed = true;\r\n }\r\n // if ((inward == false && align == \"left\") || (inward == true && align == \"right\")) {\r\n // \tclockwise *= -1;\r\n // }\r\n // Process text info produced by _measure()\r\n $array.each(this._textInfo, (line, _index) => {\r\n const textHeight = line.height;\r\n // Adjust radius (for `inside = false`)\r\n // Radius adjustment for `inside = false` is below the line calculation\r\n if (!inside) {\r\n radius += textHeight;\r\n }\r\n // Reverse letters if we're painting them counter-clockwise\r\n if (((clockwise == -1 && inward) || (clockwise == 1 && !inward)) && shouldReverse) {\r\n line.textChunks.reverse();\r\n }\r\n // Init angles\r\n let lineStartAngle = startAngle;\r\n deltaAngle = 0;\r\n // Adjust for center-align\r\n if (align == \"center\") {\r\n lineStartAngle += (line.width / (radius - textHeight)) / 2 * -clockwise;\r\n deltaAngle = lineStartAngle - startAngle;\r\n }\r\n // if (inward == \"auto\") {\r\n // \tlet midAngle;\r\n // \tif (align == \"left\") {\r\n // \t\tmidAngle = (lineStartAngle + deltaAngle / 2) * $math.DEGREES;\r\n // \t}\r\n // \telse if () {\r\n // \t\tmidAngle = (lineStartAngle - deltaAngle / 2) * $math.DEGREES;\r\n // \t}\r\n // \tinward = (midAngle >= 270) || (midAngle <= 90);\r\n // }\r\n // Rotate letters if they are facing outward\r\n lineStartAngle += (Math.PI * (inward ? 0 : 1)); // Rotate 180 if outward\r\n // Savepoint\r\n context.save();\r\n if (interactive) {\r\n ghostContext.save();\r\n }\r\n // Assume starting angle\r\n context.rotate(lineStartAngle);\r\n if (interactive) {\r\n ghostContext.rotate(lineStartAngle);\r\n }\r\n let angleShift = 0;\r\n $array.each(line.textChunks, (chunk, _index) => {\r\n // Draw the letter\r\n const char = chunk.text;\r\n const charWidth = chunk.width;\r\n // Rotate half a letter\r\n angleShift = (charWidth / 2) / (radius - textHeight) * clockwise;\r\n context.rotate(angleShift);\r\n if (interactive) {\r\n ghostContext.rotate(angleShift);\r\n }\r\n // Set style\r\n if (chunk.style) {\r\n context.save();\r\n ghostContext.save();\r\n context.font = chunk.style;\r\n if (interactive) {\r\n ghostContext.font = chunk.style;\r\n }\r\n }\r\n if (chunk.fill) {\r\n context.save();\r\n context.fillStyle = chunk.fill.toCSS();\r\n // Color does not affect ghostContext so we not set it\r\n }\r\n // Center letters\r\n context.textBaseline = \"middle\";\r\n context.textAlign = \"center\";\r\n if (interactive) {\r\n ghostContext.textBaseline = \"middle\";\r\n ghostContext.textAlign = \"center\";\r\n }\r\n // Plop the letter\r\n if (layerDirty) {\r\n context.fillText(char, 0, (inward ? 1 : -1) * (0 - radius + textHeight / 2));\r\n }\r\n if (interactive) {\r\n ghostContext.fillText(char, 0, (inward ? 1 : -1) * (0 - radius + textHeight / 2));\r\n }\r\n if (chunk.fill) {\r\n context.restore();\r\n // Color does not affect ghostContext so we not set it\r\n }\r\n // Reset style\r\n if (chunk.style) {\r\n context.restore();\r\n ghostContext.restore();\r\n }\r\n // Rotate half a letter and add spacing\r\n angleShift = (charWidth / 2 + kerning) / (radius - textHeight) * clockwise;\r\n context.rotate(angleShift);\r\n if (interactive) {\r\n ghostContext.rotate(angleShift);\r\n }\r\n });\r\n // Restore angle\r\n context.restore();\r\n if (interactive) {\r\n ghostContext.restore();\r\n }\r\n // Adjust radius (for `inside = true`)\r\n if (inside) {\r\n radius -= textHeight;\r\n }\r\n });\r\n // Restore\r\n context.restore();\r\n if (interactive) {\r\n ghostContext.restore();\r\n }\r\n }\r\n }\r\n _measure(status) {\r\n switch (this.textType) {\r\n case \"circular\":\r\n return this._measureCircular(status);\r\n default:\r\n return super._measure(status);\r\n }\r\n }\r\n _measureCircular(status) {\r\n const context = status.layer.context;\r\n const ghostContext = this._renderer._ghostLayer.context;\r\n const rtl = this.style.direction == \"rtl\";\r\n const oversizedBehavior = this.style.oversizedBehavior;\r\n const maxWidth = this.style.maxWidth;\r\n const truncate = $type.isNumber(maxWidth) && oversizedBehavior == \"truncate\";\r\n const ellipsis = this.style.ellipsis || \"\";\r\n let ellipsisMetrics;\r\n //const wrap = $type.isNumber(maxWidth) && (oversizedBehavior == \"wrap\" || oversizedBehavior == \"wrap-no-break\");\r\n // Reset text info\r\n this.textVisible = true;\r\n this._textInfo = [];\r\n this._textReversed = false;\r\n // Pre-render\r\n context.save();\r\n ghostContext.save();\r\n this._prerender(status, true);\r\n // Split up text into lines\r\n const lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\r\n let styleRestored = true;\r\n let totalWidth = 0;\r\n // Iterate through the lines\r\n let offsetY = 0;\r\n $array.each(lines, (line, _index) => {\r\n // Split up line into format/value chunks\r\n let chunks = TextFormatter.chunk(line, false, this.style.ignoreFormatting);\r\n // Init line object\r\n let lineInfo = {\r\n offsetY: offsetY,\r\n ascent: 0,\r\n width: 0,\r\n height: 0,\r\n left: 0,\r\n right: 0,\r\n textChunks: []\r\n };\r\n let currentStyle;\r\n let currentFill;\r\n let currentChunkWidth;\r\n //while(chunk = chunks.shift()) {\r\n $array.each(chunks, (chunk, _index) => {\r\n // Format chunk\r\n if (chunk.type == \"format\") {\r\n if (chunk.text == \"[/]\") {\r\n if (!styleRestored) {\r\n context.restore();\r\n ghostContext.restore();\r\n styleRestored = true;\r\n }\r\n currentFill = undefined;\r\n currentStyle = undefined;\r\n currentChunkWidth = undefined;\r\n }\r\n else {\r\n let format = TextFormatter.getTextStyle(chunk.text);\r\n const fontStyle = this._getFontStyle(format);\r\n context.save();\r\n ghostContext.save();\r\n context.font = fontStyle;\r\n currentStyle = fontStyle;\r\n if (format.fill) {\r\n currentFill = format.fill;\r\n }\r\n if (format.width) {\r\n currentChunkWidth = $type.toNumber(format.width);\r\n }\r\n styleRestored = false;\r\n }\r\n if (truncate) {\r\n ellipsisMetrics = this._measureText(ellipsis, context);\r\n }\r\n }\r\n // Text format\r\n else if (chunk.type == \"value\") {\r\n // Measure each letter\r\n let chars = chunk.text.match(/./ug) || [];\r\n if (rtl) {\r\n chars = $utils.splitString(chunk.text);\r\n chars.reverse();\r\n }\r\n for (let i = 0; i < chars.length; i++) {\r\n const char = chars[i];\r\n // Measure\r\n const metrics = this._measureText(char, context);\r\n let chunkWidth = metrics.width;\r\n // Chunk width?\r\n if (currentStyle && currentChunkWidth && (currentChunkWidth > chunkWidth)) {\r\n chunkWidth = currentChunkWidth;\r\n }\r\n const chunkHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\r\n if (chunkHeight > lineInfo.height) {\r\n lineInfo.height = chunkHeight;\r\n }\r\n if (metrics.actualBoundingBoxAscent > lineInfo.ascent) {\r\n lineInfo.ascent = metrics.actualBoundingBoxAscent;\r\n }\r\n totalWidth += chunkWidth;\r\n // Handle oversized behavior\r\n if (truncate) {\r\n // Measure ellipsis and check if it fits\r\n if (!ellipsisMetrics) {\r\n ellipsisMetrics = this._measureText(ellipsis, context);\r\n }\r\n const ellipsisWidth = ellipsisMetrics.actualBoundingBoxLeft + ellipsisMetrics.actualBoundingBoxRight;\r\n //totalWidth += ellipsisWidth;\r\n if ((totalWidth + ellipsisWidth) > maxWidth) {\r\n if (lineInfo.textChunks.length == 1) {\r\n this.textVisible = false;\r\n }\r\n else {\r\n lineInfo.width += ellipsisWidth;\r\n lineInfo.left += ellipsisMetrics.actualBoundingBoxLeft;\r\n lineInfo.right += ellipsisMetrics.actualBoundingBoxRight;\r\n lineInfo.textChunks.push({\r\n style: currentStyle,\r\n fill: currentFill,\r\n text: ellipsis,\r\n width: ellipsisWidth,\r\n height: chunkHeight + ellipsisMetrics.actualBoundingBoxDescent,\r\n left: ellipsisMetrics.actualBoundingBoxLeft,\r\n right: ellipsisMetrics.actualBoundingBoxRight,\r\n ascent: ellipsisMetrics.actualBoundingBoxAscent,\r\n offsetX: 0,\r\n offsetY: chunkHeight,\r\n textDecoration: undefined\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n lineInfo.width += chunkWidth;\r\n lineInfo.left += metrics.actualBoundingBoxLeft;\r\n lineInfo.right += metrics.actualBoundingBoxRight;\r\n lineInfo.textChunks.push({\r\n style: currentStyle,\r\n fill: currentFill,\r\n text: char,\r\n width: chunkWidth,\r\n height: chunkHeight + metrics.actualBoundingBoxDescent,\r\n left: metrics.actualBoundingBoxLeft,\r\n right: metrics.actualBoundingBoxRight,\r\n ascent: metrics.actualBoundingBoxAscent,\r\n offsetX: 0,\r\n offsetY: chunkHeight,\r\n textDecoration: undefined\r\n });\r\n if (rtl) {\r\n // @todo still needed?\r\n //break;\r\n }\r\n }\r\n }\r\n });\r\n if (this.style.lineHeight instanceof Percent) {\r\n lineInfo.height *= this.style.lineHeight.value;\r\n }\r\n else {\r\n lineInfo.height *= this.style.lineHeight || 1.2;\r\n }\r\n this._textInfo.push(lineInfo);\r\n //lineInfo.offsetY += lineInfo.ascent;\r\n offsetY += lineInfo.height;\r\n });\r\n if (!styleRestored) {\r\n context.restore();\r\n ghostContext.restore();\r\n }\r\n if (oversizedBehavior == \"hide\" && (totalWidth > maxWidth)) {\r\n this.textVisible = false;\r\n }\r\n // Adjust chunk internal offsets\r\n $array.each(this._textInfo, (lineInfo) => {\r\n $array.each(lineInfo.textChunks, (chunk) => {\r\n chunk.offsetY += Math.round((lineInfo.height - chunk.height + (lineInfo.ascent - chunk.ascent)) / 2);\r\n });\r\n });\r\n context.restore();\r\n ghostContext.restore();\r\n return {\r\n left: 0,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n };\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasImage extends CanvasDisplayObject {\r\n constructor(renderer, image) {\r\n super(renderer);\r\n Object.defineProperty(this, \"width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"image\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"tainted\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowColor\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowBlur\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowOffsetX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowOffsetY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowOpacity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_imageMask\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this.image = image;\r\n }\r\n _dispose() {\r\n super._dispose();\r\n if (this._imageMask) {\r\n clearCanvas(this._imageMask);\r\n }\r\n }\r\n getLocalBounds() {\r\n if (!this._localBounds) {\r\n let w = 0;\r\n let h = 0;\r\n if (this.width) {\r\n w = this.width;\r\n }\r\n if (this.height) {\r\n h = this.height;\r\n }\r\n this._localBounds = {\r\n left: 0,\r\n top: 0,\r\n right: w,\r\n bottom: h\r\n };\r\n this._addBounds(this._localBounds);\r\n }\r\n return this._localBounds;\r\n }\r\n _render(status) {\r\n super._render(status);\r\n if (this.image) {\r\n if (this.tainted === undefined) {\r\n this.tainted = isTainted(this.image);\r\n status.layer.tainted = true;\r\n }\r\n if (this.tainted && this._renderer._omitTainted) {\r\n return;\r\n }\r\n if (status.layer.dirty) {\r\n if (this.shadowColor) {\r\n status.layer.context.shadowColor = this.shadowColor.toCSS(this.shadowOpacity || 1);\r\n }\r\n if (this.shadowBlur) {\r\n status.layer.context.shadowBlur = this.shadowBlur;\r\n }\r\n if (this.shadowOffsetX) {\r\n status.layer.context.shadowOffsetX = this.shadowOffsetX;\r\n }\r\n if (this.shadowOffsetY) {\r\n status.layer.context.shadowOffsetY = this.shadowOffsetY;\r\n }\r\n // TODO should this round ?\r\n const width = this.width || this.image.naturalWidth;\r\n const height = this.height || this.image.naturalHeight;\r\n status.layer.context.drawImage(this.image, 0, 0, width, height);\r\n }\r\n if (this.interactive && this._isInteractive(status)) {\r\n const mask = this._getMask(this.image);\r\n this._renderer._ghostLayer.context.drawImage(mask, 0, 0);\r\n }\r\n }\r\n }\r\n clear() {\r\n super.clear();\r\n this.image = undefined;\r\n this._imageMask = undefined;\r\n }\r\n _getMask(image) {\r\n if (this._imageMask === undefined) {\r\n // TODO should this round ?\r\n const width = this.width || image.naturalWidth;\r\n const height = this.height || image.naturalHeight;\r\n // We need to create a second canvas because destination-in clears out the entire canvas\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.width = width;\r\n canvas.height = height;\r\n const context = canvas.getContext(\"2d\");\r\n context.imageSmoothingEnabled = false;\r\n context.fillStyle = this._getColorId();\r\n context.fillRect(0, 0, width, height);\r\n if (!isTainted(image)) {\r\n context.globalCompositeOperation = \"destination-in\";\r\n context.drawImage(image, 0, 0, width, height);\r\n }\r\n this._imageMask = canvas;\r\n }\r\n return this._imageMask;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasRendererEvent {\r\n constructor(event, originalPoint, point, bbox) {\r\n Object.defineProperty(this, \"event\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: event\r\n });\r\n Object.defineProperty(this, \"originalPoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: originalPoint\r\n });\r\n Object.defineProperty(this, \"point\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: point\r\n });\r\n Object.defineProperty(this, \"bbox\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: bbox\r\n });\r\n Object.defineProperty(this, \"id\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"simulated\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"native\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n if ($utils.supports(\"touchevents\") && event instanceof Touch) {\r\n this.id = event.identifier;\r\n }\r\n else {\r\n this.id = null;\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasRenderer extends ArrayDisposer {\r\n constructor(resolution) {\r\n super();\r\n Object.defineProperty(this, \"view\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: document.createElement(\"div\")\r\n });\r\n Object.defineProperty(this, \"_layerDom\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: document.createElement(\"div\")\r\n });\r\n Object.defineProperty(this, \"layers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_dirtyLayers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"defaultLayer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.getLayer(0)\r\n });\r\n Object.defineProperty(this, \"_ghostLayer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new GhostLayer()\r\n });\r\n Object.defineProperty(this, \"_patternCanvas\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: document.createElement(\"canvas\")\r\n });\r\n Object.defineProperty(this, \"_patternContext\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._patternCanvas.getContext(\"2d\")\r\n });\r\n Object.defineProperty(this, \"_realWidth\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_realHeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_calculatedWidth\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_calculatedHeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"resolution\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"interactionsEnabled\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"_listeners\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_colorId\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_colorMap\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_forceInteractive\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_omitTainted\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n // TODO this should store the Id as well\r\n Object.defineProperty(this, \"_hovering\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new Set()\r\n });\r\n Object.defineProperty(this, \"_dragging\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_mousedown\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_lastPointerMoveEvent\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"tapToActivate\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"tapToActivateTimeout\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 3000\r\n });\r\n Object.defineProperty(this, \"_touchActive\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_touchActiveTimeout\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n if (resolution == null) {\r\n this.resolution = window.devicePixelRatio;\r\n }\r\n else {\r\n this.resolution = resolution;\r\n }\r\n this.view.style.position = \"absolute\";\r\n this.view.setAttribute(\"aria-hidden\", \"true\");\r\n this.view.appendChild(this._layerDom);\r\n this._disposers.push(new Disposer(() => {\r\n $object.each(this._events, (_key, events) => {\r\n events.disposer.dispose();\r\n });\r\n $array.each(this.layers, (layer) => {\r\n clearCanvas(layer.view);\r\n if (layer.exportableView) {\r\n clearCanvas(layer.exportableView);\r\n }\r\n });\r\n clearCanvas(this._ghostLayer.view);\r\n clearCanvas(this._patternCanvas);\r\n }));\r\n /*\r\n this._disposers.push($utils.addEventListener(this._ghostLayer.view, \"click\", (originalEvent: MouseEvent) => {\r\n const event = this.getEvent(originalEvent);\r\n const target = this._getHitTarget(event.originalPoint, event.bbox);\r\n console.debug(target);\r\n }));\r\n */\r\n // Monitor for possible pixel ratio changes (when page is zoomed)\r\n this._disposers.push($utils.onZoom(() => {\r\n if (resolution == null) {\r\n this.resolution = window.devicePixelRatio;\r\n }\r\n }));\r\n // We need this in order top prevent default touch gestures when dragging\r\n // draggable elements\r\n if ($utils.supports(\"touchevents\")) {\r\n const listener = (ev) => {\r\n if (this._dragging.length !== 0) {\r\n $array.eachContinue(this._dragging, (item) => {\r\n if (item.value.shouldCancelTouch()) {\r\n ev.preventDefault();\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n // If touch down happends, delay touch out\r\n if (this._touchActiveTimeout) {\r\n this._delayTouchDeactivate();\r\n }\r\n };\r\n this._disposers.push($utils.addEventListener(window, \"touchstart\", listener, { passive: false }));\r\n this._disposers.push($utils.addEventListener(this.view, \"touchstart\", listener, { passive: false }));\r\n this._disposers.push($utils.addEventListener(this.view, \"touchmove\", () => {\r\n // If touch is moving, delay touch out\r\n if (this._touchActiveTimeout) {\r\n this._delayTouchDeactivate();\r\n }\r\n }, { passive: true }));\r\n this._disposers.push($utils.addEventListener(window, \"click\", (_ev) => {\r\n this._touchActive = false;\r\n }, { passive: true }));\r\n this._disposers.push($utils.addEventListener(this.view, \"click\", (_ev) => {\r\n window.setTimeout(() => {\r\n this._touchActive = true;\r\n this._delayTouchDeactivate();\r\n }, 100);\r\n }, { passive: true }));\r\n }\r\n // Prevent scrolling of the window when hovering on \"wheelable\" object\r\n if ($utils.supports(\"wheelevents\")) {\r\n this._disposers.push($utils.addEventListener(this.view, \"wheel\", (ev) => {\r\n let prevent = false;\r\n this._hovering.forEach((obj) => {\r\n if (obj.wheelable) {\r\n prevent = true;\r\n return false;\r\n }\r\n });\r\n if (prevent) {\r\n ev.preventDefault();\r\n }\r\n }, { passive: false }));\r\n }\r\n }\r\n /*protected _mouseMoveThrottler: Throttler = new Throttler(() => {\r\n this._dispatchGlobalMousemove(this._lastPointerMoveEvent.event, this._lastPointerMoveEvent.native);\r\n });\r\n */\r\n resetImageArray() {\r\n this._ghostLayer.imageArray = undefined;\r\n }\r\n _delayTouchDeactivate() {\r\n if (this._touchActiveTimeout) {\r\n clearTimeout(this._touchActiveTimeout);\r\n }\r\n if (this.tapToActivateTimeout > 0) {\r\n this._touchActiveTimeout = window.setTimeout(() => {\r\n this._touchActive = false;\r\n }, this.tapToActivateTimeout);\r\n }\r\n }\r\n get debugGhostView() {\r\n return !!this._ghostLayer.view.parentNode;\r\n }\r\n set debugGhostView(value) {\r\n if (value) {\r\n if (!this._ghostLayer.view.parentNode) {\r\n this.view.appendChild(this._ghostLayer.view);\r\n }\r\n }\r\n else {\r\n if (this._ghostLayer.view.parentNode) {\r\n this._ghostLayer.view.parentNode.removeChild(this._ghostLayer.view);\r\n }\r\n }\r\n }\r\n createLinearGradient(x1, y1, x2, y2) {\r\n return this.defaultLayer.context.createLinearGradient(x1, y1, x2, y2);\r\n }\r\n createRadialGradient(x1, y1, radius1, x2, y2, radius2) {\r\n return this.defaultLayer.context.createRadialGradient(x1, y1, radius1, x2, y2, radius2);\r\n }\r\n createPattern(graphics, background, repetition, width, height) {\r\n // const patternCanvas = document.createElement(\"canvas\");\r\n // const patternContext = patternCanvas.getContext(\"2d\")!;\r\n // patternCanvas.width = width;\r\n // patternCanvas.height = height;\r\n // if (fill) {\r\n // \tpatternContext.fillStyle = fill.toCSS();\r\n // \tpatternContext.fillRect(0, 0, patternCanvas.width, patternCanvas.height);\r\n // }\r\n // const layer = {\r\n // \tview: patternCanvas,\r\n // \tcontext: patternContext,\r\n // \tvisible: true,\r\n // \torder: 0,\r\n // \twidth: width,\r\n // \theight: height,\r\n // \tdirty: true\r\n // };\r\n // // patternContext.arc(0, 0, 50, 0, .5 * Math.PI);\r\n // // patternContext.stroke();\r\n // image.targetLayer = layer;\r\n // image.render(layer);\r\n //this._layerDom.appendChild(patternCanvas);\r\n this._patternCanvas.width = width;\r\n this._patternCanvas.height = height;\r\n this._patternContext.clearRect(0, 0, width, height);\r\n // patternCanvas.style.width = width * this.resolution + \"px\";\r\n // patternCanvas.style.height = height * this.resolution + \"px\";\r\n background.renderDetached(this._patternContext);\r\n graphics.renderDetached(this._patternContext);\r\n return this._patternContext.createPattern(this._patternCanvas, repetition);\r\n }\r\n makeContainer() {\r\n return new CanvasContainer(this);\r\n }\r\n makeGraphics() {\r\n return new CanvasGraphics(this);\r\n }\r\n makeText(text, style) {\r\n return new CanvasText(this, text, style);\r\n }\r\n makeTextStyle() {\r\n return new CanvasTextStyle();\r\n }\r\n makeRadialText(text, style) {\r\n return new CanvasRadialText(this, text, style);\r\n }\r\n makePicture(image) {\r\n return new CanvasImage(this, image);\r\n }\r\n resizeLayer(layer) {\r\n layer.resize(this._calculatedWidth, this._calculatedHeight, this._calculatedWidth, this._calculatedHeight, this.resolution);\r\n }\r\n resizeGhost() {\r\n this._ghostLayer.resize(this._calculatedWidth, this._calculatedHeight, this._calculatedWidth, this._calculatedHeight, this.resolution);\r\n }\r\n resize(realWidth, realHeight, calculatedWidth, calculatedHeight) {\r\n this._realWidth = realWidth;\r\n this._realHeight = realHeight;\r\n this._calculatedWidth = calculatedWidth;\r\n this._calculatedHeight = calculatedHeight;\r\n $array.each(this.layers, (layer) => {\r\n if (layer) {\r\n layer.dirty = true;\r\n this.resizeLayer(layer);\r\n }\r\n });\r\n this.resizeGhost();\r\n this.view.style.width = calculatedWidth + \"px\";\r\n this.view.style.height = calculatedHeight + \"px\";\r\n }\r\n createDetachedLayer(willReadFrequently = false) {\r\n const view = document.createElement(\"canvas\");\r\n const context = view.getContext(\"2d\", { willReadFrequently: willReadFrequently });\r\n const layer = new CanvasLayer(view, context);\r\n view.style.position = \"absolute\";\r\n view.style.top = \"0px\";\r\n view.style.left = \"0px\";\r\n return layer;\r\n }\r\n getLayerByOrder(order) {\r\n const layers = this.layers;\r\n const length = layers.length;\r\n for (let i = 0; i < length; i++) {\r\n const layer = layers[i];\r\n if (layer.order == order) {\r\n return layer;\r\n }\r\n }\r\n }\r\n getLayer(order, visible = true) {\r\n let existingLayer = this.getLayerByOrder(order);\r\n if (existingLayer) {\r\n return existingLayer;\r\n }\r\n const layer = this.createDetachedLayer(order == 99);\r\n layer.order = order;\r\n layer.visible = visible;\r\n layer.view.className = \"am5-layer-\" + order;\r\n if (layer.visible) {\r\n this.resizeLayer(layer);\r\n }\r\n const layers = this.layers;\r\n layers.push(layer);\r\n layers.sort((a, b) => {\r\n if (a.order > b.order) {\r\n return 1;\r\n }\r\n else if (a.order < b.order) {\r\n return -1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n const length = layers.length;\r\n const layerIndex = $array.indexOf(layers, layer);\r\n let next;\r\n for (let i = layerIndex + 1; i < length; i++) {\r\n if (layers[i].visible) {\r\n next = layers[i];\r\n break;\r\n }\r\n }\r\n if (layer.visible) {\r\n if (next === undefined) {\r\n this._layerDom.appendChild(layer.view);\r\n }\r\n else {\r\n this._layerDom.insertBefore(layer.view, next.view);\r\n }\r\n }\r\n return layer;\r\n }\r\n render(root) {\r\n this._dirtyLayers.length = 0;\r\n $array.each(this.layers, (layer) => {\r\n if (layer) {\r\n if (layer.dirty && layer.visible) {\r\n this._dirtyLayers.push(layer);\r\n layer.clear();\r\n }\r\n }\r\n });\r\n this._ghostLayer.clear();\r\n root.render({\r\n inactive: null,\r\n layer: this.defaultLayer,\r\n });\r\n this._ghostLayer.context.restore();\r\n //setTimeout(() => {\r\n // Remove this after the Chrome bug is fixed:\r\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1279394\r\n $array.each(this.layers, (layer) => {\r\n if (layer) {\r\n const context = layer.context;\r\n context.beginPath();\r\n context.moveTo(0, 0);\r\n context.stroke();\r\n }\r\n });\r\n $array.each(this._dirtyLayers, (layer) => {\r\n layer.context.restore();\r\n layer.dirty = false;\r\n });\r\n //}, 100)\r\n if (this._hovering.size && this._lastPointerMoveEvent) {\r\n const { events, target, native } = this._lastPointerMoveEvent;\r\n //this._mouseMoveThrottler.run();\r\n $array.each(events, (event) => {\r\n this._dispatchGlobalMousemove(event, target, native);\r\n });\r\n }\r\n }\r\n paintId(obj) {\r\n const id = distributeId(++this._colorId);\r\n const color = Color.fromHex(id).toCSS();\r\n this._colorMap[color] = obj;\r\n return color;\r\n }\r\n _removeObject(obj) {\r\n if (obj._colorId !== undefined) {\r\n delete this._colorMap[obj._colorId];\r\n }\r\n }\r\n // protected _identifyObjectByColor(colorId: number): CanvasDisplayObject | undefined {\r\n // \treturn this._colorMap[colorId];\r\n // }\r\n _adjustBoundingBox(bbox) {\r\n const margin = this._ghostLayer.margin;\r\n return new DOMRect(-margin.left, -margin.top, bbox.width + margin.left + margin.right, bbox.height + margin.top + margin.bottom);\r\n }\r\n getEvent(originalEvent, adjustPoint = true) {\r\n const bbox = this.view.getBoundingClientRect();\r\n const x = originalEvent.clientX || 0;\r\n const y = originalEvent.clientY || 0;\r\n const widthScale = this._calculatedWidth / this._realWidth;\r\n const heightScale = this._calculatedHeight / this._realHeight;\r\n const originalPoint = {\r\n x: x - bbox.left,\r\n y: y - bbox.top,\r\n };\r\n const point = {\r\n x: (x - (adjustPoint ? bbox.left : 0)) * widthScale,\r\n y: (y - (adjustPoint ? bbox.top : 0)) * heightScale,\r\n };\r\n return new CanvasRendererEvent(originalEvent, originalPoint, point, this._adjustBoundingBox(bbox));\r\n }\r\n _getHitTarget(point, bbox, target) {\r\n if (bbox.width === 0 || bbox.height === 0 || point.x < bbox.left || point.x > bbox.right || point.y < bbox.top || point.y > bbox.bottom) {\r\n return;\r\n }\r\n if (!target || !this._layerDom.contains(target)) {\r\n return;\r\n }\r\n const pixel = this._ghostLayer.getImageData(point, bbox);\r\n if (pixel.data[0] === 0 && pixel.data[1] === 0 && pixel.data[2] === 0) {\r\n return false;\r\n }\r\n const colorId = Color.fromRGB(pixel.data[0], pixel.data[1], pixel.data[2]).toCSS();\r\n const hit = this._colorMap[colorId];\r\n return hit;\r\n }\r\n getObjectAtPoint(point) {\r\n const data = this._ghostLayer.getImageArray(point);\r\n if (data[0] === 0 && data[1] === 0 && data[2] === 0) {\r\n return undefined;\r\n }\r\n const colorId = Color.fromRGB(data[0], data[1], data[2]).toCSS();\r\n const hit = this._colorMap[colorId];\r\n return hit;\r\n }\r\n _withEvents(key, f) {\r\n const events = this._events[key];\r\n if (events !== undefined) {\r\n events.dispatching = true;\r\n try {\r\n f(events);\r\n }\r\n finally {\r\n events.dispatching = false;\r\n if (events.cleanup) {\r\n events.cleanup = false;\r\n $array.keepIf(events.callbacks, (callback) => {\r\n return !callback.disposed;\r\n });\r\n if (events.callbacks.length === 0) {\r\n events.disposer.dispose();\r\n delete this._events[key];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _dispatchEventAll(key, event) {\r\n if (!this.interactionsEnabled) {\r\n return;\r\n }\r\n this._withEvents(key, (events) => {\r\n $array.each(events.callbacks, (callback) => {\r\n if (!callback.disposed) {\r\n callback.callback.call(callback.context, event);\r\n }\r\n });\r\n });\r\n }\r\n _dispatchEvent(key, target, event) {\r\n if (!this.interactionsEnabled) {\r\n return false;\r\n }\r\n let dispatched = false;\r\n this._withEvents(key, (events) => {\r\n $array.each(events.callbacks, (callback) => {\r\n if (!callback.disposed && callback.object === target) {\r\n callback.callback.call(callback.context, event);\r\n dispatched = true;\r\n }\r\n });\r\n });\r\n return dispatched;\r\n }\r\n _dispatchMousedown(originalEvent, originalTarget) {\r\n const button = originalEvent.button;\r\n if (button != 0 && button != 2 && button != 1 && button !== undefined) {\r\n // Ignore non-primary mouse buttons\r\n return;\r\n }\r\n const event = this.getEvent(originalEvent);\r\n const target = this._getHitTarget(event.originalPoint, event.bbox, originalTarget);\r\n if (target) {\r\n const id = event.id;\r\n let dragged = false;\r\n eachTargets(target, (obj) => {\r\n const info = { id: id, value: obj };\r\n this._mousedown.push(info);\r\n if (!dragged && this._dispatchEvent(\"pointerdown\", obj, event)) {\r\n // Only dispatch the first element which matches\r\n dragged = true;\r\n const has = this._dragging.some((x) => {\r\n return x.value === obj && x.id === id;\r\n });\r\n if (!has) {\r\n this._dragging.push(info);\r\n }\r\n }\r\n return true;\r\n });\r\n }\r\n }\r\n _dispatchGlobalMousemove(originalEvent, originalTarget, native) {\r\n const event = this.getEvent(originalEvent);\r\n const target = this._getHitTarget(event.originalPoint, event.bbox, originalTarget);\r\n event.native = native;\r\n if (target) {\r\n this._hovering.forEach((obj) => {\r\n if (!obj.contains(target)) {\r\n this._hovering.delete(obj);\r\n if (obj.cursorOverStyle) {\r\n $utils.setStyle(document.body, \"cursor\", obj._replacedCursorStyle);\r\n }\r\n this._dispatchEvent(\"pointerout\", obj, event);\r\n }\r\n });\r\n if (event.native) {\r\n eachTargets(target, (obj) => {\r\n if (!this._hovering.has(obj)) {\r\n this._hovering.add(obj);\r\n if (obj.cursorOverStyle) {\r\n obj._replacedCursorStyle = $utils.getStyle(document.body, \"cursor\");\r\n $utils.setStyle(document.body, \"cursor\", obj.cursorOverStyle);\r\n }\r\n this._dispatchEvent(\"pointerover\", obj, event);\r\n }\r\n return true;\r\n });\r\n }\r\n //} else if (target === false) {\r\n }\r\n else {\r\n this._hovering.forEach((obj) => {\r\n if (obj.cursorOverStyle) {\r\n $utils.setStyle(document.body, \"cursor\", obj._replacedCursorStyle);\r\n }\r\n this._dispatchEvent(\"pointerout\", obj, event);\r\n });\r\n this._hovering.clear();\r\n }\r\n this._dispatchEventAll(\"globalpointermove\", event);\r\n }\r\n removeHovering(graphics) {\r\n this._hovering.delete(graphics);\r\n if (graphics.cursorOverStyle) {\r\n $utils.setStyle(document.body, \"cursor\", graphics._replacedCursorStyle);\r\n }\r\n }\r\n _dispatchGlobalMouseup(originalEvent, native) {\r\n const event = this.getEvent(originalEvent);\r\n event.native = native;\r\n //const target = this._getHitTarget(event.originalPoint);\r\n this._dispatchEventAll(\"globalpointerup\", event);\r\n }\r\n _dispatchDragMove(originalEvent) {\r\n if (this._dragging.length !== 0) {\r\n const event = this.getEvent(originalEvent);\r\n const id = event.id;\r\n this._dragging.forEach((obj) => {\r\n if (obj.id === id) {\r\n this._dispatchEvent(\"pointermove\", obj.value, event);\r\n }\r\n });\r\n }\r\n }\r\n _dispatchDragEnd(originalEvent, originalTarget) {\r\n const button = originalEvent.button;\r\n let clickevent;\r\n if (button == 0 || button === undefined) {\r\n clickevent = \"click\";\r\n }\r\n else if (button == 2) {\r\n clickevent = \"rightclick\";\r\n }\r\n else if (button == 1) {\r\n clickevent = \"middleclick\";\r\n }\r\n else {\r\n // Ignore non-primary mouse buttons\r\n return;\r\n }\r\n const event = this.getEvent(originalEvent);\r\n const id = event.id;\r\n if (this._mousedown.length !== 0) {\r\n const target = this._getHitTarget(event.originalPoint, event.bbox, originalTarget);\r\n if (target) {\r\n this._mousedown.forEach((obj) => {\r\n if (obj.id === id && obj.value.contains(target)) {\r\n this._dispatchEvent(clickevent, obj.value, event);\r\n }\r\n });\r\n }\r\n this._mousedown.length = 0;\r\n }\r\n if (this._dragging.length !== 0) {\r\n this._dragging.forEach((obj) => {\r\n if (obj.id === id) {\r\n this._dispatchEvent(\"pointerup\", obj.value, event);\r\n }\r\n });\r\n this._dragging.length = 0;\r\n }\r\n }\r\n _dispatchDoubleClick(originalEvent, originalTarget) {\r\n const event = this.getEvent(originalEvent);\r\n const target = this._getHitTarget(event.originalPoint, event.bbox, originalTarget);\r\n if (target) {\r\n eachTargets(target, (obj) => {\r\n if (this._dispatchEvent(\"dblclick\", obj, event)) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n }\r\n }\r\n _dispatchWheel(originalEvent, originalTarget) {\r\n const event = this.getEvent(originalEvent);\r\n const target = this._getHitTarget(event.originalPoint, event.bbox, originalTarget);\r\n if (target) {\r\n eachTargets(target, (obj) => {\r\n if (this._dispatchEvent(\"wheel\", obj, event)) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n }\r\n }\r\n _makeSharedEvent(key, f) {\r\n if (this._listeners[key] === undefined) {\r\n const listener = f();\r\n this._listeners[key] = new CounterDisposer(() => {\r\n delete this._listeners[key];\r\n listener.dispose();\r\n });\r\n }\r\n return this._listeners[key].increment();\r\n }\r\n _onPointerEvent(name, f) {\r\n let native = false;\r\n let timer = null;\r\n function clear() {\r\n timer = null;\r\n native = false;\r\n }\r\n return new MultiDisposer([\r\n new Disposer(() => {\r\n if (timer !== null) {\r\n clearTimeout(timer);\r\n }\r\n clear();\r\n }),\r\n $utils.addEventListener(this.view, $utils.getRendererEvent(name), (_) => {\r\n native = true;\r\n if (timer !== null) {\r\n clearTimeout(timer);\r\n }\r\n timer = window.setTimeout(clear, 0);\r\n }),\r\n onPointerEvent(window, name, (ev, target) => {\r\n if (timer !== null) {\r\n clearTimeout(timer);\r\n timer = null;\r\n }\r\n f(ev, target, native);\r\n native = false;\r\n }),\r\n ]);\r\n }\r\n // This ensures that only a single DOM event is added (e.g. only a single mousemove event listener)\r\n _initEvent(key) {\r\n switch (key) {\r\n case \"globalpointermove\":\r\n case \"pointerover\":\r\n case \"pointerout\":\r\n return this._makeSharedEvent(\"pointermove\", () => {\r\n const listener = (events, target, native) => {\r\n this._lastPointerMoveEvent = { events, target, native };\r\n $array.each(events, (event) => {\r\n this._dispatchGlobalMousemove(event, target, native);\r\n });\r\n };\r\n return new MultiDisposer([\r\n this._onPointerEvent(\"pointerdown\", listener),\r\n this._onPointerEvent(\"pointermove\", listener),\r\n ]);\r\n });\r\n case \"globalpointerup\":\r\n return this._makeSharedEvent(\"pointerup\", () => {\r\n const mouseup = this._onPointerEvent(\"pointerup\", (events, target, native) => {\r\n $array.each(events, (event) => {\r\n this._dispatchGlobalMouseup(event, native);\r\n });\r\n this._lastPointerMoveEvent = { events, target, native };\r\n });\r\n const pointercancel = this._onPointerEvent(\"pointercancel\", (events, target, native) => {\r\n $array.each(events, (event) => {\r\n this._dispatchGlobalMouseup(event, native);\r\n });\r\n this._lastPointerMoveEvent = { events, target, native };\r\n });\r\n return new Disposer(() => {\r\n mouseup.dispose();\r\n pointercancel.dispose();\r\n });\r\n });\r\n case \"click\":\r\n case \"rightclick\":\r\n case \"middleclick\":\r\n case \"pointerdown\":\r\n /*\r\n return this._makeSharedEvent(\"pointerdown\", () => {\r\n return this._onPointerEvent(\"pointerdown\", (event, target, native) => {\r\n this._lastPointerMoveEvent = { event, target, native };\r\n this._dispatchMousedown(event)\r\n });\r\n });\r\n */\r\n case \"pointermove\":\r\n case \"pointerup\":\r\n return this._makeSharedEvent(\"pointerdown\", () => {\r\n //const throttler = new Throttler();\r\n const mousedown = this._onPointerEvent(\"pointerdown\", (events, target) => {\r\n $array.each(events, (ev) => {\r\n this._dispatchMousedown(ev, target);\r\n });\r\n });\r\n // TODO handle throttling properly for multitouch\r\n const mousemove = this._onPointerEvent(\"pointermove\", (ev) => {\r\n //throttler.throttle(() => {\r\n $array.each(ev, (ev) => {\r\n this._dispatchDragMove(ev);\r\n });\r\n //});\r\n });\r\n const mouseup = this._onPointerEvent(\"pointerup\", (ev, target) => {\r\n $array.each(ev, (ev) => {\r\n this._dispatchDragEnd(ev, target);\r\n });\r\n });\r\n const pointercancel = this._onPointerEvent(\"pointercancel\", (ev, target) => {\r\n $array.each(ev, (ev) => {\r\n this._dispatchDragEnd(ev, target);\r\n });\r\n });\r\n return new Disposer(() => {\r\n mousedown.dispose();\r\n mousemove.dispose();\r\n mouseup.dispose();\r\n pointercancel.dispose();\r\n });\r\n });\r\n case \"dblclick\":\r\n return this._makeSharedEvent(\"dblclick\", () => {\r\n return this._onPointerEvent(\"dblclick\", (ev, target) => {\r\n $array.each(ev, (ev) => {\r\n this._dispatchDoubleClick(ev, target);\r\n });\r\n });\r\n });\r\n case \"wheel\":\r\n return this._makeSharedEvent(\"wheel\", () => {\r\n return $utils.addEventListener(this.view, $utils.getRendererEvent(\"wheel\"), (event) => {\r\n this._dispatchWheel(event, $utils.getEventTarget(event));\r\n }, { passive: false });\r\n });\r\n }\r\n }\r\n _addEvent(object, key, callback, context) {\r\n let events = this._events[key];\r\n if (events === undefined) {\r\n events = this._events[key] = {\r\n disposer: this._initEvent(key),\r\n callbacks: [],\r\n dispatching: false,\r\n cleanup: false,\r\n };\r\n }\r\n const listener = { object, context, callback, disposed: false };\r\n events.callbacks.push(listener);\r\n return new Disposer(() => {\r\n listener.disposed = true;\r\n if (events.dispatching) {\r\n events.cleanup = true;\r\n }\r\n else {\r\n $array.removeFirst(events.callbacks, listener);\r\n if (events.callbacks.length === 0) {\r\n events.disposer.dispose();\r\n delete this._events[key];\r\n }\r\n }\r\n });\r\n }\r\n getCanvas(root, options) {\r\n // Make sure everything is rendered\r\n this.render(root);\r\n if (!options) {\r\n options = {};\r\n }\r\n let scale = this.resolution;\r\n let canvasWidth = Math.floor(this._calculatedWidth * this.resolution);\r\n let canvasHeight = Math.floor(this._calculatedHeight * this.resolution);\r\n // Check if we need to scale\r\n if (options.minWidth && (options.minWidth > canvasWidth)) {\r\n let minScale = options.minWidth / canvasWidth;\r\n if (minScale > scale) {\r\n scale = minScale * this.resolution;\r\n }\r\n }\r\n if (options.minHeight && (options.minHeight > canvasHeight)) {\r\n let minScale = options.minHeight / canvasHeight;\r\n if (minScale > scale) {\r\n scale = minScale * this.resolution;\r\n }\r\n }\r\n if (options.maxWidth && (options.maxWidth < canvasWidth)) {\r\n let maxScale = options.maxWidth / canvasWidth;\r\n if (maxScale < scale) {\r\n scale = maxScale * this.resolution;\r\n }\r\n }\r\n if (options.maxHeight && (options.maxHeight > canvasHeight)) {\r\n let maxScale = options.maxHeight / canvasHeight;\r\n if (maxScale < scale) {\r\n scale = maxScale * this.resolution;\r\n }\r\n }\r\n // Check if we need to compensate for pixel ratio\r\n if (options.maintainPixelRatio) {\r\n scale /= this.resolution;\r\n }\r\n // Init list canvases to remove from DOM after export\r\n const canvases = [];\r\n // Set up new canvas for export\r\n let forceRender = false;\r\n const canvas = document.createElement(\"canvas\");\r\n if (scale != this.resolution) {\r\n forceRender = true;\r\n canvasWidth = canvasWidth * scale / this.resolution;\r\n canvasHeight = canvasHeight * scale / this.resolution;\r\n }\r\n canvas.width = canvasWidth;\r\n canvas.height = canvasHeight;\r\n // Add to DOM so it inherits CSS\r\n canvas.style.position = \"fixed\";\r\n canvas.style.top = \"-10000px\";\r\n this.view.appendChild(canvas);\r\n canvases.push(canvas);\r\n // Context\r\n const context = canvas.getContext(\"2d\");\r\n let width = 0;\r\n let height = 0;\r\n let needRerender = false;\r\n $array.each(this.layers, (layer) => {\r\n if (layer && layer.visible) {\r\n if (layer.tainted || forceRender) {\r\n needRerender = true;\r\n layer.exportableView = layer.view;\r\n layer.exportableContext = layer.context;\r\n layer.view = document.createElement(\"canvas\");\r\n // Add to DOM so it inherits CSS\r\n layer.view.style.position = \"fixed\";\r\n layer.view.style.top = \"-10000px\";\r\n this.view.appendChild(layer.view);\r\n canvases.push(layer.view);\r\n let extraX = 0;\r\n let extraY = 0;\r\n if (layer.margin) {\r\n extraX += layer.margin.left || 0 + layer.margin.right || 0;\r\n extraY += layer.margin.top || 0 + layer.margin.bottom || 0;\r\n }\r\n layer.view.width = canvasWidth + extraX;\r\n layer.view.height = canvasHeight + extraY;\r\n layer.context = layer.view.getContext(\"2d\");\r\n layer.dirty = true;\r\n layer.scale = scale;\r\n }\r\n }\r\n });\r\n if (needRerender) {\r\n this._omitTainted = true;\r\n this.render(root);\r\n this._omitTainted = false;\r\n }\r\n $array.each(this.layers, (layer) => {\r\n if (layer && layer.visible) {\r\n // Layer is fine. Just plop it into our target canvas\r\n let x = 0;\r\n let y = 0;\r\n if (layer.margin) {\r\n x = -(layer.margin.left || 0) * this.resolution;\r\n y = -(layer.margin.top || 0) * this.resolution;\r\n }\r\n context.drawImage(layer.view, x, y);\r\n // Restore layer original canvas\r\n if (layer.exportableView) {\r\n layer.view = layer.exportableView;\r\n layer.exportableView = undefined;\r\n }\r\n if (layer.exportableContext) {\r\n layer.context = layer.exportableContext;\r\n layer.exportableContext = undefined;\r\n }\r\n if (width < layer.view.clientWidth) {\r\n width = layer.view.clientWidth;\r\n }\r\n if (height < layer.view.clientHeight) {\r\n height = layer.view.clientHeight;\r\n }\r\n layer.scale = undefined;\r\n }\r\n });\r\n canvas.style.width = width + \"px\";\r\n canvas.style.height = height + \"px\";\r\n $array.each(canvases, (canvas) => {\r\n canvas.style.position = \"\";\r\n canvas.style.top = \"\";\r\n this.view.removeChild(canvas);\r\n });\r\n return canvas;\r\n }\r\n}\r\nclass GhostLayer {\r\n constructor() {\r\n Object.defineProperty(this, \"view\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"context\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"margin\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0,\r\n }\r\n });\r\n Object.defineProperty(this, \"_resolution\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"imageArray\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this.view = document.createElement(\"canvas\");\r\n this.context = this.view.getContext(\"2d\", { alpha: false, willReadFrequently: true });\r\n this.context.imageSmoothingEnabled = false;\r\n this.view.style.position = \"absolute\";\r\n this.view.style.top = \"0px\";\r\n this.view.style.left = \"0px\";\r\n }\r\n resize(canvasWidth, canvasHeight, domWidth, domHeight, resolution) {\r\n this._resolution = resolution;\r\n canvasWidth += (this.margin.left + this.margin.right);\r\n canvasHeight += (this.margin.top + this.margin.bottom);\r\n // TODO this should take into account calculateSize\r\n domWidth += (this.margin.left + this.margin.right);\r\n domHeight += (this.margin.top + this.margin.bottom);\r\n this.view.style.left = -this.margin.left + \"px\";\r\n this.view.style.top = -this.margin.top + \"px\";\r\n this._width = Math.floor(canvasWidth * resolution);\r\n this._height = Math.floor(canvasHeight * resolution);\r\n this.view.width = this._width;\r\n this.view.style.width = domWidth + \"px\";\r\n this.view.height = this._height;\r\n this.view.style.height = domHeight + \"px\";\r\n }\r\n getImageData(point, bbox) {\r\n return this.context.getImageData(\r\n // TODO should this round ?\r\n Math.round(((point.x - bbox.left) / bbox.width) * this._width), Math.round(((point.y - bbox.top) / bbox.height) * this._height), 1, 1);\r\n }\r\n getImageArray(point) {\r\n if (!this.imageArray) {\r\n this.imageArray = this.context.getImageData(0, 0, this._width, this._height).data;\r\n }\r\n const data = this.imageArray;\r\n const x = Math.round(point.x * this._resolution);\r\n const y = Math.round(point.y * this._resolution);\r\n const i = (y * this._width + x) * 4;\r\n return [data[i], data[i + 1], data[i + 2], data[i + 3]];\r\n }\r\n setMargin(layers) {\r\n this.margin.left = 0;\r\n this.margin.right = 0;\r\n this.margin.top = 0;\r\n this.margin.bottom = 0;\r\n $array.each(layers, (layer) => {\r\n if (layer.margin) {\r\n this.margin.left = Math.max(this.margin.left, layer.margin.left);\r\n this.margin.right = Math.max(this.margin.right, layer.margin.right);\r\n this.margin.top = Math.max(this.margin.top, layer.margin.top);\r\n this.margin.bottom = Math.max(this.margin.bottom, layer.margin.bottom);\r\n }\r\n });\r\n }\r\n clear() {\r\n this.context.save();\r\n this.context.fillStyle = '#000';\r\n this.context.fillRect(0, 0, this._width, this._height);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class CanvasLayer {\r\n constructor(view, context) {\r\n Object.defineProperty(this, \"view\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"context\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"tainted\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"margin\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"order\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"visible\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"scale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"dirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"exportableView\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"exportableContext\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n this.view = view;\r\n this.context = context;\r\n }\r\n resize(canvasWidth, canvasHeight, domWidth, domHeight, resolution) {\r\n // TODO should this take into account calculateSize ?\r\n if (this.width != null) {\r\n canvasWidth = this.width;\r\n domWidth = this.width;\r\n }\r\n // TODO should this take into account calculateSize ?\r\n if (this.height != null) {\r\n canvasHeight = this.height;\r\n domHeight = this.height;\r\n }\r\n if (this.margin) {\r\n canvasWidth += (this.margin.left + this.margin.right);\r\n canvasHeight += (this.margin.top + this.margin.bottom);\r\n // TODO this should take into account calculateSize\r\n domWidth += (this.margin.left + this.margin.right);\r\n domHeight += (this.margin.top + this.margin.bottom);\r\n this.view.style.left = -this.margin.left + \"px\";\r\n this.view.style.top = -this.margin.top + \"px\";\r\n }\r\n else {\r\n this.view.style.left = \"0px\";\r\n this.view.style.top = \"0px\";\r\n }\r\n this._width = Math.floor(canvasWidth * resolution);\r\n this._height = Math.floor(canvasHeight * resolution);\r\n this.view.width = this._width;\r\n this.view.style.width = domWidth + \"px\";\r\n this.view.height = this._height;\r\n this.view.style.height = domHeight + \"px\";\r\n }\r\n clear() {\r\n this.context.save();\r\n this.context.clearRect(0, 0, this._width, this._height);\r\n }\r\n}\r\n//# sourceMappingURL=CanvasRenderer.js.map","import { AnimationState } from \"./util/Animation\";\r\nimport { Container } from \"./render/Container\";\r\nimport { Text } from \"./render/Text\";\r\nimport { HorizontalLayout } from \"./render/HorizontalLayout\";\r\nimport { VerticalLayout } from \"./render/VerticalLayout\";\r\nimport { GridLayout } from \"./render/GridLayout\";\r\nimport { Disposer } from \"./util/Disposer\";\r\nimport { ResizeSensor } from \"./util/ResizeSensor\";\r\nimport { InterfaceColors } from \"./util/InterfaceColors\";\r\nimport { Graphics } from \"./render/Graphics\";\r\nimport { Rectangle } from \"./render/Rectangle\";\r\nimport { Tooltip } from \"./render/Tooltip\";\r\nimport { NumberFormatter } from \"./util/NumberFormatter\";\r\nimport { DateFormatter } from \"./util/DateFormatter\";\r\nimport { DurationFormatter } from \"./util/DurationFormatter\";\r\nimport { Language } from \"./util/Language\";\r\nimport { EventDispatcher } from \"./util/EventDispatcher\";\r\nimport { DefaultTheme } from \"../themes/DefaultTheme\";\r\nimport { CanvasRenderer } from \"./render/backend/CanvasRenderer\";\r\nimport { p100, percent, isPercent, Percent } from \"./util/Percent\";\r\nimport { color } from \"./util/Color\";\r\nimport { populateString } from \"./util/PopulateString\";\r\nimport { registry } from \"./Registry\";\r\nimport * as $order from \"./util/Order\";\r\nimport * as $array from \"./util/Array\";\r\nimport * as $object from \"./util/Object\";\r\nimport * as $utils from \"./util/Utils\";\r\nimport * as $type from \"./util/Type\";\r\nimport en from \"../../locales/en\";\r\nfunction rAF(fps, callback) {\r\n if (fps == null) {\r\n requestAnimationFrame(callback);\r\n }\r\n else {\r\n setTimeout(() => {\r\n requestAnimationFrame(callback);\r\n }, 1000 / fps);\r\n }\r\n}\r\n// TODO implement Disposer\r\n/**\r\n * Root element of the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#Root_element} for more info\r\n */\r\nexport class Root {\r\n constructor(id, settings = {}, isReal) {\r\n /**\r\n * A reference to original chart container (div element).\r\n */\r\n Object.defineProperty(this, \"dom\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_inner\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_settings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_isDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_isDirtyParents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_isDirtyAnimation\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_dirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_dirtyParents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_dirtyBounds\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_dirtyPositions\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_ticker\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(this, \"_tickers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_updateTick\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n /**\r\n * Root's event dispatcher.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/} for more info\r\n */\r\n Object.defineProperty(this, \"events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new EventDispatcher()\r\n });\r\n /**\r\n * @ignore\r\n * @todo needs description\r\n */\r\n Object.defineProperty(this, \"animationTime\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(this, \"_animations\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_renderer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_rootContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Main content container.\r\n */\r\n Object.defineProperty(this, \"container\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A [[Container]] used to display tooltips in.\r\n */\r\n Object.defineProperty(this, \"tooltipContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipContainerSettings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltip\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n // Locale-related\r\n /**\r\n * @ignore\r\n */\r\n Object.defineProperty(this, \"language\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Language.new(this, {})\r\n });\r\n /**\r\n * Locale used by the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/locales/}\r\n */\r\n Object.defineProperty(this, \"locale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: en\r\n });\r\n // Date-time related\r\n /**\r\n * Use UTC when formatting date/time.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/#utc-and-time-zones} for more info\r\n */\r\n Object.defineProperty(this, \"utc\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * If set, will format date/time in specific time zone.\r\n *\r\n * The value should be named time zone, e.g.:\r\n * `\"America/Vancouver\"`, `\"Australia/Sydney\"`, `\"UTC\"`.\r\n *\r\n * NOTE: Using time zone feature may noticeable affect performance of the\r\n * chart, especially with large data sets, since every single date will need\r\n * to be recalculated.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/root-element/#time-zone} for more info\r\n * @since 5.1.0\r\n */\r\n Object.defineProperty(this, \"timezone\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * The maximum FPS that the Root will run at.\r\n *\r\n * If `undefined` it will run at the highest FPS.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/root-element/#Performance} for more info\r\n */\r\n Object.defineProperty(this, \"fps\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Number formatter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-numbers/} for more info\r\n */\r\n Object.defineProperty(this, \"numberFormatter\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: NumberFormatter.new(this, {})\r\n });\r\n /**\r\n * Date/time formatter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/} for more info\r\n */\r\n Object.defineProperty(this, \"dateFormatter\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: DateFormatter.new(this, {})\r\n });\r\n /**\r\n * Duration formatter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/} for more info\r\n */\r\n Object.defineProperty(this, \"durationFormatter\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: DurationFormatter.new(this, {})\r\n });\r\n // Accessibility\r\n /**\r\n * Global tab index for using for the whole chart\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/accessibility/} for more info\r\n */\r\n Object.defineProperty(this, \"tabindex\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n //@todo maybe make this better\r\n Object.defineProperty(this, \"_tabindexes\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_a11yD\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_focusElementDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_focusElementContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_focusedSprite\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_isShift\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_keyboardDragPoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipElementContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_readerAlertElement\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_logo\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipDiv\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Used for dynamically-created CSS and JavaScript with strict source policies.\r\n */\r\n Object.defineProperty(this, \"nonce\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Special color set to be used for various controls.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/#Interface_colors} for more info\r\n */\r\n Object.defineProperty(this, \"interfaceColors\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * An instance of vertical layout object that can be used to set `layout` setting\r\n * of a [[Container]].\r\n *\r\n * @default VerticalLayout.new()\r\n */\r\n Object.defineProperty(this, \"verticalLayout\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: VerticalLayout.new(this, {})\r\n });\r\n /**\r\n * An instance of horizontal layout object that can be used to set `layout` setting\r\n * of a [[Container]].\r\n *\r\n * @default HorizontalLayout.new()\r\n */\r\n Object.defineProperty(this, \"horizontalLayout\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: HorizontalLayout.new(this, {})\r\n });\r\n /**\r\n * An instance of grid layout object that can be used to set `layout` setting\r\n * of a [[Container]].\r\n *\r\n * @default VerticalLayout.new()\r\n */\r\n Object.defineProperty(this, \"gridLayout\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: GridLayout.new(this, {})\r\n });\r\n Object.defineProperty(this, \"_paused\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * Indicates whether chart should resized automatically when parent container\r\n * width and/or height changes.\r\n *\r\n * If disabled (`autoResize = false`) you can make the chart resize manually\r\n * by calling root element's `resize()` method.\r\n */\r\n Object.defineProperty(this, \"autoResize\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"_fontHash\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"\"\r\n });\r\n Object.defineProperty(this, \"_isDisposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_disposers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_resizeSensorDisposer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltips\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_htmlElementContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_htmlEnabledContainers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n if (!isReal) {\r\n throw new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\r\n }\r\n this._settings = settings;\r\n if (settings.accessible == false) {\r\n this._a11yD = true;\r\n }\r\n if (settings.useSafeResolution == null) {\r\n settings.useSafeResolution = true;\r\n }\r\n let resolution;\r\n if (settings.useSafeResolution) {\r\n resolution = $utils.getSafeResolution();\r\n }\r\n this._renderer = new CanvasRenderer(resolution);\r\n let dom;\r\n if (id instanceof HTMLElement) {\r\n dom = id;\r\n }\r\n else {\r\n dom = document.getElementById(id);\r\n }\r\n $array.each(registry.rootElements, (root) => {\r\n if (root.dom === dom) {\r\n throw new Error(\"You cannot have multiple Roots on the same DOM node\");\r\n }\r\n });\r\n this.interfaceColors = InterfaceColors.new(this, {});\r\n if (dom === null) {\r\n throw new Error(\"Could not find HTML element with id `\" + id + \"`\");\r\n }\r\n this.dom = dom;\r\n let inner = document.createElement(\"div\");\r\n inner.style.position = \"relative\";\r\n inner.style.width = \"100%\";\r\n inner.style.height = \"100%\";\r\n dom.appendChild(inner);\r\n const tooltipContainerBounds = settings.tooltipContainerBounds;\r\n if (tooltipContainerBounds) {\r\n this._tooltipContainerSettings = tooltipContainerBounds;\r\n }\r\n this._inner = inner;\r\n this._updateComputedStyles();\r\n registry.rootElements.push(this);\r\n }\r\n static new(id, settings) {\r\n const root = new Root(id, settings, true);\r\n root._init();\r\n return root;\r\n }\r\n moveDOM(id) {\r\n let dom;\r\n if (id instanceof HTMLElement) {\r\n dom = id;\r\n }\r\n else {\r\n dom = document.getElementById(id);\r\n }\r\n if (dom) {\r\n while (this.dom.childNodes.length > 0) {\r\n dom.appendChild(this.dom.childNodes[0]);\r\n }\r\n this.dom = dom;\r\n this._initResizeSensor();\r\n this.resize();\r\n }\r\n }\r\n _handleLogo() {\r\n if (this._logo) {\r\n const w = this.dom.offsetWidth;\r\n const h = this.dom.offsetHeight;\r\n if ((w <= 150) || (h <= 60)) {\r\n this._logo.hide();\r\n }\r\n else {\r\n this._logo.show();\r\n }\r\n }\r\n }\r\n _showBranding() {\r\n if (!this._logo) {\r\n const logo = this.tooltipContainer.children.push(Container.new(this, {\r\n interactive: true,\r\n interactiveChildren: false,\r\n position: \"absolute\",\r\n setStateOnChildren: true,\r\n paddingTop: 9,\r\n paddingRight: 9,\r\n paddingBottom: 9,\r\n paddingLeft: 9,\r\n scale: .6,\r\n y: percent(100),\r\n centerY: p100,\r\n tooltipText: \"Created using amCharts 5\",\r\n tooltipX: p100,\r\n cursorOverStyle: \"pointer\",\r\n background: Rectangle.new(this, {\r\n fill: color(0x474758),\r\n fillOpacity: 0,\r\n tooltipY: 5\r\n })\r\n }));\r\n const tooltip = Tooltip.new(this, {\r\n pointerOrientation: \"horizontal\",\r\n paddingTop: 4,\r\n paddingRight: 7,\r\n paddingBottom: 4,\r\n paddingLeft: 7\r\n });\r\n tooltip.label.setAll({\r\n fontSize: 12\r\n });\r\n tooltip.get(\"background\").setAll({\r\n fill: this.interfaceColors.get(\"background\"),\r\n stroke: this.interfaceColors.get(\"grid\"),\r\n strokeOpacity: 0.3\r\n });\r\n logo.set(\"tooltip\", tooltip);\r\n logo.events.on(\"click\", () => {\r\n window.open(\"https://www.amcharts.com/\", \"_blank\");\r\n });\r\n logo.states.create(\"hover\", {});\r\n const m = logo.children.push(Graphics.new(this, {\r\n stroke: color(0xcccccc),\r\n strokeWidth: 3,\r\n svgPath: \"M5 25 L13 25h13.6c3.4 0 6 0 10.3-4.3s5.2-12 8.6-12c3.4 0 4.3 8.6 7.7 8.6M83.4 25H79.8c-3.4 0-6 0-10.3-4.3s-5.2-12-8.6-12-4.3 8.6-7.7 8.6\"\r\n }));\r\n m.states.create(\"hover\", { stroke: color(0x3CABFF) });\r\n const a = logo.children.push(Graphics.new(this, {\r\n stroke: color(0x888888),\r\n strokeWidth: 3,\r\n svgPath: \"M83.4 25h-31C37 25 39.5 4.4 28.4 4.4S18.9 24.2 4.3 25H0\"\r\n }));\r\n a.states.create(\"hover\", { stroke: color(0x474758) });\r\n //logo.set(\"tooltip\", this._tooltip);\r\n //logo.setPrivate(\"tooltipTarget\", logo.get(\"background\"));\r\n this._logo = logo;\r\n this._handleLogo();\r\n }\r\n }\r\n _getRealSize() {\r\n return this.dom.getBoundingClientRect();\r\n }\r\n _getCalculatedSize(rect) {\r\n if (this._settings.calculateSize) {\r\n return this._settings.calculateSize(rect);\r\n }\r\n else {\r\n return {\r\n width: rect.width,\r\n height: rect.height,\r\n };\r\n }\r\n }\r\n _init() {\r\n const settings = this._settings;\r\n if (settings.accessible !== false) {\r\n if (settings.focusable) {\r\n this._inner.setAttribute(\"focusable\", \"true\");\r\n this._inner.setAttribute(\"tabindex\", this.tabindex + \"\");\r\n }\r\n if (settings.ariaLabel) {\r\n this._inner.setAttribute(\"aria-label\", settings.ariaLabel);\r\n }\r\n if (settings.role) {\r\n this._inner.setAttribute(\"role\", settings.role);\r\n }\r\n }\r\n const renderer = this._renderer;\r\n const rect = this._getRealSize();\r\n const size = this._getCalculatedSize(rect);\r\n const width = Math.floor(size.width);\r\n const height = Math.floor(size.height);\r\n const realWidth = Math.floor(rect.width);\r\n const realHeight = Math.floor(rect.height);\r\n const rootContainer = Container.new(this, {\r\n visible: true,\r\n width: width,\r\n height: height,\r\n });\r\n this._rootContainer = rootContainer;\r\n this._rootContainer._defaultThemes.push(DefaultTheme.new(this));\r\n const container = rootContainer.children.push(Container.new(this, { visible: true, width: p100, height: p100 }));\r\n this.container = container;\r\n renderer.resize(realWidth, realHeight, width, height);\r\n //@todo: better appendChild - refer\r\n this._inner.appendChild(renderer.view);\r\n // TODO: TMP TMP TMP for testing only, remove\r\n //renderer.debugGhostView = true;\r\n this._initResizeSensor();\r\n // HTML content holder\r\n const htmlElementContainer = document.createElement(\"div\");\r\n this._htmlElementContainer = htmlElementContainer;\r\n htmlElementContainer.className = \"am5-html-container\";\r\n htmlElementContainer.style.position = \"absolute\";\r\n htmlElementContainer.style.pointerEvents = \"none\";\r\n if (!this._tooltipContainerSettings) {\r\n htmlElementContainer.style.overflow = \"hidden\";\r\n }\r\n this._inner.appendChild(htmlElementContainer);\r\n if (this._a11yD !== true) {\r\n // Create element which is used to make announcements to screen reader\r\n const readerAlertElement = document.createElement(\"div\");\r\n readerAlertElement.className = \"am5-reader-container\";\r\n readerAlertElement.setAttribute(\"role\", \"alert\");\r\n // readerAlertElement.style.zIndex = \"-100000\";\r\n // readerAlertElement.style.opacity = \"0\";\r\n // readerAlertElement.style.top = \"0\";\r\n readerAlertElement.style.position = \"absolute\";\r\n readerAlertElement.style.width = \"1px\";\r\n readerAlertElement.style.height = \"1px\";\r\n readerAlertElement.style.overflow = \"hidden\";\r\n readerAlertElement.style.clip = \"rect(1px, 1px, 1px, 1px)\";\r\n this._readerAlertElement = readerAlertElement;\r\n this._inner.appendChild(this._readerAlertElement);\r\n const focusElementContainer = document.createElement(\"div\");\r\n focusElementContainer.className = \"am5-focus-container\";\r\n focusElementContainer.style.position = \"absolute\";\r\n focusElementContainer.style.pointerEvents = \"none\";\r\n focusElementContainer.style.top = \"0px\";\r\n focusElementContainer.style.left = \"0px\";\r\n focusElementContainer.style.overflow = \"hidden\";\r\n focusElementContainer.style.width = width + \"px\";\r\n focusElementContainer.style.height = height + \"px\";\r\n focusElementContainer.setAttribute(\"role\", \"graphics-document\");\r\n $utils.setInteractive(focusElementContainer, false);\r\n this._focusElementContainer = focusElementContainer;\r\n this._inner.appendChild(this._focusElementContainer);\r\n const tooltipElementContainer = document.createElement(\"div\");\r\n this._tooltipElementContainer = tooltipElementContainer;\r\n tooltipElementContainer.className = \"am5-tooltip-container\";\r\n this._inner.appendChild(tooltipElementContainer);\r\n // Add keyboard events for accessibility, e.g. simulating drag with arrow\r\n // keys and click with ENTER\r\n if ($utils.supports(\"keyboardevents\")) {\r\n this._disposers.push($utils.addEventListener(window, \"keydown\", (ev) => {\r\n const eventKey = $utils.getEventKey(ev);\r\n if (eventKey == \"Shift\") {\r\n this._isShift = true;\r\n }\r\n else if (eventKey == \"Tab\") {\r\n this._isShift = ev.shiftKey;\r\n }\r\n }));\r\n this._disposers.push($utils.addEventListener(window, \"keyup\", (ev) => {\r\n const eventKey = $utils.getEventKey(ev);\r\n if (eventKey == \"Shift\") {\r\n this._isShift = false;\r\n }\r\n }));\r\n this._disposers.push($utils.addEventListener(focusElementContainer, \"click\", () => {\r\n // Some screen readers convert ENTER (and some SPACE) press whil on\r\n // focused element to a \"click\" event, preventing actual \"keydown\"\r\n // event from firing. We're using this \"click\" event to still\r\n // generate internal click events.\r\n const focusedSprite = this._focusedSprite;\r\n if (focusedSprite) {\r\n const downEvent = renderer.getEvent(new MouseEvent(\"click\"));\r\n focusedSprite.events.dispatch(\"click\", {\r\n type: \"click\",\r\n originalEvent: downEvent.event,\r\n point: downEvent.point,\r\n simulated: true,\r\n target: focusedSprite\r\n });\r\n }\r\n }));\r\n this._disposers.push($utils.addEventListener(focusElementContainer, \"keydown\", (ev) => {\r\n const focusedSprite = this._focusedSprite;\r\n if (focusedSprite) {\r\n if (ev.key == \"Escape\") {\r\n // ESC pressed - lose current focus\r\n $utils.blur();\r\n this._focusedSprite = undefined;\r\n }\r\n let dragOffsetX = 0;\r\n let dragOffsetY = 0;\r\n // TODO: figure out if using bogus MouseEvent is fine, or it will\r\n // fail on some platforms\r\n const eventKey = $utils.getEventKey(ev);\r\n switch (eventKey) {\r\n case \"Enter\":\r\n case \" \":\r\n if (eventKey == \" \" && focusedSprite.get(\"role\") != \"checkbox\") {\r\n return;\r\n }\r\n ev.preventDefault();\r\n const downEvent = renderer.getEvent(new MouseEvent(\"mouse\"));\r\n focusedSprite.events.dispatch(\"click\", {\r\n type: \"click\",\r\n originalEvent: downEvent.event,\r\n point: downEvent.point,\r\n simulated: true,\r\n target: focusedSprite\r\n });\r\n return;\r\n case \"ArrowLeft\":\r\n dragOffsetX = -6;\r\n break;\r\n case \"ArrowRight\":\r\n dragOffsetX = 6;\r\n break;\r\n case \"ArrowUp\":\r\n dragOffsetY = -6;\r\n break;\r\n case \"ArrowDown\":\r\n dragOffsetY = 6;\r\n break;\r\n default:\r\n return;\r\n }\r\n if (dragOffsetX != 0 || dragOffsetY != 0) {\r\n ev.preventDefault();\r\n if (!focusedSprite.isDragging()) {\r\n // Start dragging\r\n this._keyboardDragPoint = {\r\n x: 0,\r\n y: 0\r\n };\r\n const downEvent = renderer.getEvent(new MouseEvent(\"mousedown\", {\r\n clientX: 0,\r\n clientY: 0\r\n }));\r\n downEvent.point = {\r\n x: 0,\r\n y: 0\r\n };\r\n if (focusedSprite.events.isEnabled(\"pointerdown\")) {\r\n focusedSprite.events.dispatch(\"pointerdown\", {\r\n type: \"pointerdown\",\r\n originalEvent: downEvent.event,\r\n point: downEvent.point,\r\n simulated: true,\r\n target: focusedSprite\r\n });\r\n }\r\n }\r\n else {\r\n // Move focus marker\r\n //this._positionFocusElement(focusedSprite);\r\n }\r\n // Move incrementally\r\n const dragPoint = this._keyboardDragPoint;\r\n dragPoint.x += dragOffsetX;\r\n dragPoint.y += dragOffsetY;\r\n const moveEvent = renderer.getEvent(new MouseEvent(\"mousemove\", {\r\n clientX: dragPoint.x,\r\n clientY: dragPoint.y\r\n }), false);\r\n if (focusedSprite.events.isEnabled(\"globalpointermove\")) {\r\n focusedSprite.events.dispatch(\"globalpointermove\", {\r\n type: \"globalpointermove\",\r\n originalEvent: moveEvent.event,\r\n point: moveEvent.point,\r\n simulated: true,\r\n target: focusedSprite\r\n });\r\n }\r\n }\r\n }\r\n }));\r\n this._disposers.push($utils.addEventListener(focusElementContainer, \"keyup\", (ev) => {\r\n if (this._focusedSprite) {\r\n const focusedSprite = this._focusedSprite;\r\n const eventKey = $utils.getEventKey(ev);\r\n switch (eventKey) {\r\n case \"ArrowLeft\":\r\n case \"ArrowRight\":\r\n case \"ArrowTop\":\r\n case \"ArrowDown\":\r\n if (focusedSprite.isDragging()) {\r\n // Simulate drag stop\r\n const dragPoint = this._keyboardDragPoint;\r\n const upEvent = renderer.getEvent(new MouseEvent(\"mouseup\", {\r\n clientX: dragPoint.x,\r\n clientY: dragPoint.y\r\n }));\r\n if (focusedSprite.events.isEnabled(\"globalpointerup\")) {\r\n focusedSprite.events.dispatch(\"globalpointerup\", {\r\n type: \"globalpointerup\",\r\n originalEvent: upEvent.event,\r\n point: upEvent.point,\r\n simulated: true,\r\n target: focusedSprite\r\n });\r\n }\r\n //this._positionFocusElement(focusedSprite);\r\n this._keyboardDragPoint = undefined;\r\n // @todo dispatch mouseup event instead of calling dragStop?\r\n // this._dispatchEvent(\"globalpointerup\", target, upEvent);\r\n return;\r\n }\r\n else if (focusedSprite.get(\"focusableGroup\")) {\r\n // Find next item in focusable group\r\n const group = focusedSprite.get(\"focusableGroup\");\r\n const items = this._tabindexes.filter((item) => {\r\n return item.get(\"focusableGroup\") == group && item.getPrivate(\"focusable\") !== false && item.isVisibleDeep() ? true : false;\r\n });\r\n let index = items.indexOf(focusedSprite);\r\n const lastIndex = items.length - 1;\r\n index += (eventKey == \"ArrowRight\" || eventKey == \"ArrowDown\") ? 1 : -1;\r\n if (index < 0) {\r\n index = lastIndex;\r\n }\r\n else if (index > lastIndex) {\r\n index = 0;\r\n }\r\n $utils.focus(items[index].getPrivate(\"focusElement\").dom);\r\n }\r\n break;\r\n }\r\n }\r\n }));\r\n }\r\n }\r\n this._startTicker();\r\n this.setThemes([]);\r\n this._addTooltip();\r\n if (!this._hasLicense()) {\r\n this._showBranding();\r\n }\r\n }\r\n _initResizeSensor() {\r\n if (this._resizeSensorDisposer) {\r\n this._resizeSensorDisposer.dispose();\r\n }\r\n this._resizeSensorDisposer = new ResizeSensor(this.dom, () => {\r\n if (this.autoResize) {\r\n this.resize();\r\n }\r\n });\r\n this._disposers.push(this._resizeSensorDisposer);\r\n }\r\n /**\r\n * If automatic resizing of char is disabled (`root.autoResize = false`), it\r\n * can be resized manually by calling this method.\r\n */\r\n resize() {\r\n const rect = this._getRealSize();\r\n const size = this._getCalculatedSize(rect);\r\n const w = Math.floor(size.width);\r\n const h = Math.floor(size.height);\r\n if (w > 0 && h > 0) {\r\n const realWidth = Math.floor(rect.width);\r\n const realHeight = Math.floor(rect.height);\r\n const htmlElementContainer = this._htmlElementContainer;\r\n htmlElementContainer.style.width = w + \"px\";\r\n htmlElementContainer.style.height = h + \"px\";\r\n if (this._a11yD !== true) {\r\n const focusElementContainer = this._focusElementContainer;\r\n focusElementContainer.style.width = w + \"px\";\r\n focusElementContainer.style.height = h + \"px\";\r\n }\r\n this._renderer.resize(realWidth, realHeight, w, h);\r\n const rootContainer = this._rootContainer;\r\n rootContainer.setPrivate(\"width\", w);\r\n rootContainer.setPrivate(\"height\", h);\r\n this._render();\r\n this._handleLogo();\r\n }\r\n }\r\n _render() {\r\n this._renderer.render(this._rootContainer._display);\r\n if (this._focusElementDirty) {\r\n this._updateCurrentFocus();\r\n this._focusElementDirty = false;\r\n }\r\n }\r\n _runTickers(currentTime) {\r\n $array.each(this._tickers, (f) => {\r\n f(currentTime);\r\n });\r\n }\r\n _runAnimations(currentTime) {\r\n let running = 0;\r\n $array.keepIf(this._animations, (animation) => {\r\n const state = animation._runAnimation(currentTime);\r\n if (state === AnimationState.Stopped) {\r\n return false;\r\n }\r\n else if (state === AnimationState.Playing) {\r\n ++running;\r\n return true;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n this._isDirtyAnimation = false;\r\n return running === 0;\r\n }\r\n _runDirties() {\r\n //console.log(\"tick **************************************************************\");\r\n let allParents = {};\r\n while (this._isDirtyParents) {\r\n // This must be before calling _prepareChildren\r\n this._isDirtyParents = false;\r\n $object.keys(this._dirtyParents).forEach((key) => {\r\n const parent = this._dirtyParents[key];\r\n delete this._dirtyParents[key];\r\n if (!parent.isDisposed()) {\r\n allParents[parent.uid] = parent;\r\n parent._prepareChildren();\r\n }\r\n });\r\n }\r\n $object.keys(allParents).forEach((key) => {\r\n allParents[key]._updateChildren();\r\n });\r\n const objects = [];\r\n //\t\tconsole.log(\"_beforeChanged\")\r\n $object.keys(this._dirty).forEach((key) => {\r\n const entity = this._dirty[key];\r\n if (entity.isDisposed()) {\r\n delete this._dirty[entity.uid];\r\n }\r\n else {\r\n objects.push(entity);\r\n entity._beforeChanged();\r\n }\r\n });\r\n //\t\tconsole.log(\"_changed\")\r\n objects.forEach((entity) => {\r\n entity._changed();\r\n delete this._dirty[entity.uid];\r\n entity._clearDirty();\r\n });\r\n this._isDirty = false;\r\n const depths = {};\r\n const bounds = [];\r\n $object.keys(this._dirtyBounds).forEach((key) => {\r\n const entity = this._dirtyBounds[key];\r\n delete this._dirtyBounds[key];\r\n if (!entity.isDisposed()) {\r\n depths[entity.uid] = entity.depth();\r\n bounds.push(entity);\r\n }\r\n });\r\n this._positionHTMLElements();\r\n // High depth -> low depth\r\n bounds.sort((x, y) => {\r\n return $order.compare(depths[y.uid], depths[x.uid]);\r\n });\r\n //\t\tconsole.log(\"_updateBounds\")\r\n bounds.forEach((entity) => {\r\n entity._updateBounds();\r\n });\r\n //\t\tconsole.log(\"_updatePosition\")\r\n const dirtyPositions = this._dirtyPositions;\r\n $object.keys(dirtyPositions).forEach((key) => {\r\n const sprite = dirtyPositions[key];\r\n delete dirtyPositions[key];\r\n if (!sprite.isDisposed()) {\r\n sprite._updatePosition();\r\n }\r\n });\r\n //\t\tconsole.log(\"_afterChanged\")\r\n objects.forEach((entity) => {\r\n entity._afterChanged();\r\n });\r\n }\r\n _renderFrame(currentTime) {\r\n if (this._updateTick) {\r\n if (this.events.isEnabled(\"framestarted\")) {\r\n this.events.dispatch(\"framestarted\", {\r\n type: \"framestarted\",\r\n target: this,\r\n timestamp: currentTime,\r\n });\r\n }\r\n this._checkComputedStyles();\r\n this._runTickers(currentTime);\r\n const animationDone = this._runAnimations(currentTime);\r\n this._runDirties();\r\n this._render();\r\n this._renderer.resetImageArray();\r\n this._positionHTMLElements();\r\n if (this.events.isEnabled(\"frameended\")) {\r\n this.events.dispatch(\"frameended\", {\r\n type: \"frameended\",\r\n target: this,\r\n timestamp: currentTime,\r\n });\r\n }\r\n return this._tickers.length === 0 &&\r\n animationDone &&\r\n !this._isDirtyAnimation &&\r\n !this._isDirty;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n _runTicker(currentTime, now) {\r\n if (!this.isDisposed()) {\r\n this.animationTime = currentTime;\r\n const done = this._renderFrame(currentTime);\r\n // No more work to do\r\n if (done) {\r\n this._ticker = null;\r\n this.animationTime = null;\r\n }\r\n else {\r\n if (!this._paused) {\r\n if (now) {\r\n this._ticker;\r\n }\r\n else {\r\n rAF(this.fps, this._ticker);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _runTickerNow(timeout = 10000) {\r\n if (!this.isDisposed()) {\r\n const endTime = performance.now() + timeout;\r\n for (;;) {\r\n const currentTime = performance.now();\r\n if (currentTime >= endTime) {\r\n this.animationTime = null;\r\n break;\r\n }\r\n this.animationTime = currentTime;\r\n const done = this._renderFrame(currentTime);\r\n if (done) {\r\n this.animationTime = null;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n _startTicker() {\r\n if (this._ticker === null) {\r\n this.animationTime = null;\r\n this._ticker = (currentTime) => {\r\n this._runTicker(currentTime);\r\n };\r\n rAF(this.fps, this._ticker);\r\n }\r\n }\r\n /**\r\n * Returns whether the root is updating or not.\r\n */\r\n get updateTick() {\r\n return this._updateTick;\r\n }\r\n /**\r\n * Enables or disables the root updating.\r\n */\r\n set updateTick(value) {\r\n this._updateTick = value;\r\n if (value) {\r\n this._startTicker();\r\n }\r\n }\r\n _addDirtyEntity(entity) {\r\n this._isDirty = true;\r\n if (this._dirty[entity.uid] === undefined) {\r\n this._dirty[entity.uid] = entity;\r\n }\r\n this._startTicker();\r\n }\r\n _addDirtyParent(parent) {\r\n this._isDirty = true;\r\n this._isDirtyParents = true;\r\n if (this._dirtyParents[parent.uid] === undefined) {\r\n this._dirtyParents[parent.uid] = parent;\r\n }\r\n this._startTicker();\r\n }\r\n _addDirtyBounds(entity) {\r\n this._isDirty = true;\r\n if (this._dirtyBounds[entity.uid] === undefined) {\r\n this._dirtyBounds[entity.uid] = entity;\r\n }\r\n this._startTicker();\r\n }\r\n _addDirtyPosition(sprite) {\r\n this._isDirty = true;\r\n if (this._dirtyPositions[sprite.uid] === undefined) {\r\n this._dirtyPositions[sprite.uid] = sprite;\r\n }\r\n this._startTicker();\r\n }\r\n _addAnimation(animation) {\r\n this._isDirtyAnimation = true;\r\n // TODO use numeric id instead\r\n if (this._animations.indexOf(animation) === -1) {\r\n this._animations.push(animation);\r\n }\r\n this._startTicker();\r\n }\r\n _markDirty() {\r\n this._isDirty = true;\r\n }\r\n _markDirtyRedraw() {\r\n this.events.once(\"frameended\", () => {\r\n this._isDirty = true;\r\n this._startTicker();\r\n });\r\n }\r\n eachFrame(f) {\r\n this._tickers.push(f);\r\n this._startTicker();\r\n return new Disposer(() => {\r\n $array.removeFirst(this._tickers, f);\r\n });\r\n }\r\n markDirtyGlobal(container) {\r\n if (!container) {\r\n container = this.container;\r\n }\r\n container.walkChildren((child) => {\r\n if (child instanceof Container) {\r\n this.markDirtyGlobal(child);\r\n }\r\n child.markDirty();\r\n child.markDirtyBounds();\r\n });\r\n }\r\n /**\r\n * Returns width of the target container, in pixels.\r\n *\r\n * @return Width\r\n */\r\n width() {\r\n // TODO make this more efficient, maybe just return the renderer's width ?\r\n return Math.floor(this._getCalculatedSize(this._getRealSize()).width);\r\n }\r\n /**\r\n * Returns height of the target container, in pixels.\r\n *\r\n * @return Height\r\n */\r\n height() {\r\n // TODO make this more efficient, maybe just return the renderer's height ?\r\n return Math.floor(this._getCalculatedSize(this._getRealSize()).height);\r\n }\r\n /**\r\n * Disposes root and all the content in it.\r\n */\r\n dispose() {\r\n if (!this._isDisposed) {\r\n this._isDisposed = true;\r\n this._rootContainer.dispose();\r\n this._renderer.dispose();\r\n this.horizontalLayout.dispose();\r\n this.verticalLayout.dispose();\r\n this.interfaceColors.dispose();\r\n $array.each(this._disposers, (x) => {\r\n x.dispose();\r\n });\r\n if (this._inner) {\r\n $utils.removeElement(this._inner);\r\n }\r\n $array.remove(registry.rootElements, this);\r\n }\r\n }\r\n /**\r\n * Returns `true` if root element is disposed.\r\n *\r\n * @return Disposed?\r\n */\r\n isDisposed() {\r\n return this._isDisposed;\r\n }\r\n /**\r\n * Triggers screen reader read out a message.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/accessibility/} for more info\r\n * @param text Alert text\r\n */\r\n readerAlert(text) {\r\n if (this._a11yD !== true) {\r\n this._readerAlertElement.innerHTML = $utils.stripTags(text);\r\n }\r\n }\r\n /**\r\n * Sets themes to be used for the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/themes/} for more info\r\n * @param themes A list of themes\r\n */\r\n setThemes(themes) {\r\n this._rootContainer.set(\"themes\", themes);\r\n // otherwise new themes are not applied\r\n const tooltipContainer = this.tooltipContainer;\r\n if (tooltipContainer) {\r\n tooltipContainer._applyThemes();\r\n }\r\n // @todo review this\r\n const interfaceColors = this.interfaceColors;\r\n if (interfaceColors) {\r\n interfaceColors._applyThemes();\r\n }\r\n }\r\n _addTooltip() {\r\n if (!this.tooltipContainer) {\r\n const tooltipContainerSettings = this._tooltipContainerSettings;\r\n const tooltipContainer = this._rootContainer.children.push(Container.new(this, {\r\n position: \"absolute\",\r\n isMeasured: false,\r\n width: p100,\r\n height: p100,\r\n layer: tooltipContainerSettings ? 35 : 30,\r\n layerMargin: tooltipContainerSettings ? tooltipContainerSettings : undefined\r\n }));\r\n this.tooltipContainer = tooltipContainer;\r\n const tooltip = Tooltip.new(this, {});\r\n this.container.set(\"tooltip\", tooltip);\r\n tooltip.hide(0);\r\n this._tooltip = tooltip;\r\n }\r\n }\r\n /**\r\n * Accesibility\r\n */\r\n _registerTabindexOrder(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n if (target.get(\"focusable\")) {\r\n $array.pushOne(this._tabindexes, target);\r\n }\r\n else {\r\n $array.remove(this._tabindexes, target);\r\n }\r\n this._invalidateTabindexes();\r\n }\r\n _unregisterTabindexOrder(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n $array.remove(this._tabindexes, target);\r\n this._invalidateTabindexes();\r\n }\r\n _invalidateTabindexes() {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n this._tabindexes.sort((a, b) => {\r\n const aindex = a.get(\"tabindexOrder\", 0);\r\n const bindex = b.get(\"tabindexOrder\", 0);\r\n if (aindex == bindex) {\r\n return 0;\r\n }\r\n else if (aindex > bindex) {\r\n return 1;\r\n }\r\n else {\r\n return -1;\r\n }\r\n });\r\n const groups = [];\r\n $array.each(this._tabindexes, (item, index) => {\r\n if (!item.getPrivate(\"focusElement\")) {\r\n this._makeFocusElement(index, item);\r\n }\r\n else {\r\n this._moveFocusElement(index, item);\r\n }\r\n const group = item.get(\"focusableGroup\");\r\n if (group && item.getPrivate(\"focusable\") !== false) {\r\n if (groups.indexOf(group) !== -1) {\r\n // Non-first element in the group, make it not directly focusable\r\n item.getPrivate(\"focusElement\").dom.setAttribute(\"tabindex\", \"-1\");\r\n }\r\n else {\r\n groups.push(group);\r\n }\r\n }\r\n });\r\n }\r\n _updateCurrentFocus() {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n if (this._focusedSprite) {\r\n this._decorateFocusElement(this._focusedSprite);\r\n this._positionFocusElement(this._focusedSprite);\r\n }\r\n }\r\n _decorateFocusElement(target, focusElement) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n // Decorate with proper accessibility attributes\r\n if (!focusElement) {\r\n focusElement = target.getPrivate(\"focusElement\").dom;\r\n }\r\n if (!focusElement) {\r\n return;\r\n }\r\n const role = target.get(\"role\");\r\n if (role) {\r\n focusElement.setAttribute(\"role\", role);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"role\");\r\n }\r\n const ariaLabel = target.get(\"ariaLabel\");\r\n if (ariaLabel) {\r\n const label = populateString(target, ariaLabel);\r\n focusElement.setAttribute(\"aria-label\", label);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-label\");\r\n }\r\n const ariaLive = target.get(\"ariaLive\");\r\n if (ariaLive) {\r\n focusElement.setAttribute(\"aria-live\", ariaLive);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-live\");\r\n }\r\n const ariaChecked = target.get(\"ariaChecked\");\r\n if (ariaChecked != null && role && [\"checkbox\", \"option\", \"radio\", \"menuitemcheckbox\", \"menuitemradio\", \"treeitem\"].indexOf(role) !== -1) {\r\n focusElement.setAttribute(\"aria-checked\", ariaChecked ? \"true\" : \"false\");\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-checked\");\r\n }\r\n const ariaCurrent = target.get(\"ariaCurrent\");\r\n if (ariaCurrent != null) {\r\n focusElement.setAttribute(\"aria-current\", ariaCurrent);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-current\");\r\n }\r\n const ariaSelected = target.get(\"ariaSelected\");\r\n if (ariaSelected != null && role && [\"gridcell\", \"option\", \"row\", \"tab\", \"columnheader\", \"rowheader\", \"treeitem\"].indexOf(role) !== -1) {\r\n focusElement.setAttribute(\"aria-selected\", ariaSelected ? \"true\" : \"false\");\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-selected\");\r\n }\r\n if (target.get(\"ariaHidden\")) {\r\n focusElement.setAttribute(\"aria-hidden\", \"true\");\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-hidden\");\r\n }\r\n const ariaOrientation = target.get(\"ariaOrientation\");\r\n if (ariaOrientation) {\r\n focusElement.setAttribute(\"aria-orientation\", ariaOrientation);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-orientation\");\r\n }\r\n const ariaValueNow = target.get(\"ariaValueNow\");\r\n if (ariaValueNow) {\r\n focusElement.setAttribute(\"aria-valuenow\", ariaValueNow);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-valuenow\");\r\n }\r\n const ariaValueMin = target.get(\"ariaValueMin\");\r\n if (ariaValueMin) {\r\n focusElement.setAttribute(\"aria-valuemin\", ariaValueMin);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-valuemin\");\r\n }\r\n const ariaValueMax = target.get(\"ariaValueMax\");\r\n if (ariaValueMax) {\r\n focusElement.setAttribute(\"aria-valuemax\", ariaValueMax);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-valuemax\");\r\n }\r\n const ariaValueText = target.get(\"ariaValueText\");\r\n if (ariaValueText) {\r\n focusElement.setAttribute(\"aria-valuetext\", ariaValueText);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-valuetext\");\r\n }\r\n const ariaControls = target.get(\"ariaControls\");\r\n if (ariaControls) {\r\n focusElement.setAttribute(\"aria-controls\", ariaControls);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-controls\");\r\n }\r\n if (target.get(\"visible\") && target.get(\"opacity\") !== 0 && target.get(\"role\") != \"tooltip\" && !target.isHidden() && target.getPrivate(\"focusable\") !== false) {\r\n if (focusElement.getAttribute(\"tabindex\") != \"-1\") {\r\n focusElement.setAttribute(\"tabindex\", \"\" + this.tabindex);\r\n }\r\n focusElement.removeAttribute(\"aria-hidden\");\r\n }\r\n else {\r\n focusElement.removeAttribute(\"tabindex\");\r\n focusElement.setAttribute(\"aria-hidden\", \"true\");\r\n }\r\n }\r\n _makeFocusElement(index, target) {\r\n if (target.getPrivate(\"focusElement\") || this._a11yD == true) {\r\n return;\r\n }\r\n // Init\r\n const focusElement = document.createElement(\"div\");\r\n if (target.get(\"role\") != \"tooltip\") {\r\n focusElement.tabIndex = this.tabindex;\r\n }\r\n focusElement.style.position = \"absolute\";\r\n $utils.setInteractive(focusElement, false);\r\n const disposers = [];\r\n target.setPrivate(\"focusElement\", {\r\n dom: focusElement,\r\n disposers,\r\n });\r\n this._decorateFocusElement(target);\r\n disposers.push($utils.addEventListener(focusElement, \"focus\", (ev) => {\r\n this._handleFocus(ev);\r\n }));\r\n disposers.push($utils.addEventListener(focusElement, \"blur\", (ev) => {\r\n this._handleBlur(ev);\r\n }));\r\n this._moveFocusElement(index, target);\r\n }\r\n _removeFocusElement(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n $array.remove(this._tabindexes, target);\r\n const focusElement = target.getPrivate(\"focusElement\");\r\n if (focusElement) {\r\n const container = this._focusElementContainer;\r\n container.removeChild(focusElement.dom);\r\n $array.each(focusElement.disposers, (x) => {\r\n x.dispose();\r\n });\r\n }\r\n }\r\n _hideFocusElement(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n const focusElement = target.getPrivate(\"focusElement\");\r\n focusElement.dom.style.display = \"none\";\r\n }\r\n _moveFocusElement(index, target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n // Get container\r\n const container = this._focusElementContainer;\r\n const focusElement = target.getPrivate(\"focusElement\").dom;\r\n if (focusElement === this._focusElementContainer.children[index]) {\r\n // Nothing to do\r\n return;\r\n }\r\n const next = this._focusElementContainer.children[index + 1];\r\n if (next) {\r\n container.insertBefore(focusElement, next);\r\n }\r\n else {\r\n container.append(focusElement);\r\n }\r\n }\r\n _positionFocusElement(target) {\r\n if (this._a11yD == true || target == undefined) {\r\n return;\r\n }\r\n const bounds = target.globalBounds();\r\n let width = bounds.right == bounds.left ? target.width() : bounds.right - bounds.left;\r\n let height = bounds.top == bounds.bottom ? target.height() : bounds.bottom - bounds.top;\r\n const padding = this._settings.focusPadding !== undefined ? this._settings.focusPadding : 2;\r\n let x = bounds.left - padding;\r\n let y = bounds.top - padding;\r\n if (width < 0) {\r\n x += width;\r\n width = Math.abs(width);\r\n }\r\n if (height < 0) {\r\n y += height;\r\n height = Math.abs(height);\r\n }\r\n const focusElement = target.getPrivate(\"focusElement\").dom;\r\n focusElement.style.top = y + \"px\";\r\n focusElement.style.left = x + \"px\";\r\n focusElement.style.width = (width + padding * 2) + \"px\";\r\n focusElement.style.height = (height + padding * 2) + \"px\";\r\n }\r\n _getSpriteByFocusElement(target) {\r\n let found;\r\n $array.eachContinue(this._tabindexes, (item, _index) => {\r\n if (item.getPrivate(\"focusElement\").dom === target) {\r\n found = item;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return found;\r\n }\r\n _handleFocus(ev) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n // Get element\r\n //const focused = this._tabindexes[index];\r\n const focused = this._getSpriteByFocusElement(ev.target);\r\n if (!focused) {\r\n return;\r\n }\r\n // Jump over hidden elements\r\n if (!focused.isVisibleDeep()) {\r\n this._focusNext(ev.target, this._isShift ? -1 : 1);\r\n return;\r\n }\r\n // Size and position\r\n this._positionFocusElement(focused);\r\n //this._decorateFocusElement(focused);\r\n this._focusedSprite = focused;\r\n if (focused.events.isEnabled(\"focus\")) {\r\n focused.events.dispatch(\"focus\", {\r\n type: \"focus\",\r\n originalEvent: ev,\r\n target: focused\r\n });\r\n }\r\n }\r\n _focusNext(el, direction) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n const focusableElements = Array.from(document.querySelectorAll([\r\n 'a[href]',\r\n 'area[href]',\r\n 'button:not([disabled])',\r\n 'details',\r\n 'input:not([disabled])',\r\n 'iframe:not([disabled])',\r\n 'select:not([disabled])',\r\n 'textarea:not([disabled])',\r\n '[contentEditable=\"\"]',\r\n '[contentEditable=\"true\"]',\r\n '[contentEditable=\"TRUE\"]',\r\n '[tabindex]:not([tabindex^=\"-\"])',\r\n //':not([disabled])'\r\n ].join(',')));\r\n let index = focusableElements.indexOf(el) + direction;\r\n if (index < 0) {\r\n index = focusableElements.length - 1;\r\n }\r\n else if (index >= focusableElements.length) {\r\n index = 0;\r\n }\r\n focusableElements[index].focus();\r\n }\r\n _handleBlur(ev) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n const focused = this._focusedSprite;\r\n if (focused && !focused.isDisposed() && focused.events.isEnabled(\"blur\")) {\r\n focused.events.dispatch(\"blur\", {\r\n type: \"blur\",\r\n originalEvent: ev,\r\n target: focused\r\n });\r\n }\r\n this._focusedSprite = undefined;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateTooltip(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n const text = $utils.stripTags(target._getText());\r\n let tooltipElement = target.getPrivate(\"tooltipElement\");\r\n if (target.get(\"role\") == \"tooltip\" && text != \"\") {\r\n if (!tooltipElement) {\r\n tooltipElement = this._makeTooltipElement(target);\r\n }\r\n if (tooltipElement.innerHTML != text) {\r\n tooltipElement.innerHTML = text;\r\n }\r\n tooltipElement.setAttribute(\"aria-hidden\", target.isVisibleDeep() ? \"false\" : \"true\");\r\n }\r\n else if (tooltipElement) {\r\n tooltipElement.remove();\r\n target.removePrivate(\"tooltipElement\");\r\n }\r\n }\r\n _makeTooltipElement(target) {\r\n const container = this._tooltipElementContainer;\r\n const tooltipElement = document.createElement(\"div\");\r\n tooltipElement.style.position = \"absolute\";\r\n tooltipElement.style.width = \"1px\";\r\n tooltipElement.style.height = \"1px\";\r\n tooltipElement.style.overflow = \"hidden\";\r\n tooltipElement.style.clip = \"rect(1px, 1px, 1px, 1px)\";\r\n $utils.setInteractive(tooltipElement, false);\r\n this._decorateFocusElement(target, tooltipElement);\r\n container.append(tooltipElement);\r\n target.setPrivate(\"tooltipElement\", tooltipElement);\r\n return tooltipElement;\r\n }\r\n _removeTooltipElement(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n const tooltipElement = target.getPrivate(\"tooltipElement\");\r\n if (tooltipElement) {\r\n const parent = tooltipElement.parentElement;\r\n if (parent) {\r\n parent.removeChild(tooltipElement);\r\n }\r\n }\r\n }\r\n _invalidateAccessibility(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n this._focusElementDirty = true;\r\n const focusElement = target.getPrivate(\"focusElement\");\r\n if (target.get(\"focusable\")) {\r\n if (focusElement) {\r\n this._decorateFocusElement(target);\r\n this._positionFocusElement(target);\r\n }\r\n // else {\r\n // \tthis._renderer._makeFocusElement(0, this);\r\n // }\r\n }\r\n else if (focusElement) {\r\n this._removeFocusElement(target);\r\n }\r\n //this.updateCurrentFocus();\r\n }\r\n /**\r\n * Returns `true` if `target` is currently focused.\r\n *\r\n * @param target Target\r\n * @return Focused?\r\n */\r\n focused(target) {\r\n return this._focusedSprite === target;\r\n }\r\n /**\r\n * Converts document coordinates to coordinates withing root element.\r\n *\r\n * @param point Document point\r\n * @return Root point\r\n */\r\n documentPointToRoot(point) {\r\n const rect = this._getRealSize();\r\n const size = this._getCalculatedSize(rect);\r\n const scaleWidth = size.width / rect.width;\r\n const scaleHeight = size.height / rect.height;\r\n return {\r\n x: (point.x - rect.left) * scaleWidth,\r\n y: (point.y - rect.top) * scaleHeight,\r\n };\r\n }\r\n /**\r\n * Converts root coordinates to document\r\n *\r\n * @param point Document point\r\n * @return Root point\r\n */\r\n rootPointToDocument(point) {\r\n const rect = this._getRealSize();\r\n const size = this._getCalculatedSize(rect);\r\n const scaleWidth = size.width / rect.width;\r\n const scaleHeight = size.height / rect.height;\r\n return {\r\n x: (point.x / scaleWidth) + rect.left,\r\n y: (point.y / scaleHeight) + rect.top\r\n };\r\n }\r\n /**\r\n * @ignore\r\n */\r\n addDisposer(disposer) {\r\n this._disposers.push(disposer);\r\n return disposer;\r\n }\r\n _updateComputedStyles() {\r\n const styles = window.getComputedStyle(this.dom);\r\n let fontHash = \"\";\r\n $object.each(styles, (key, val) => {\r\n if ($type.isString(key) && key.match(/^font/)) {\r\n fontHash += val;\r\n }\r\n });\r\n const changed = fontHash != this._fontHash;\r\n if (changed) {\r\n this._fontHash = fontHash;\r\n }\r\n return changed;\r\n }\r\n _checkComputedStyles() {\r\n if (this._updateComputedStyles()) {\r\n this._invalidateLabelBounds(this.container);\r\n }\r\n }\r\n _invalidateLabelBounds(target) {\r\n if (target instanceof Container) {\r\n target.children.each((child) => {\r\n this._invalidateLabelBounds(child);\r\n });\r\n }\r\n else if (target instanceof Text) {\r\n target.markDirtyBounds();\r\n }\r\n }\r\n /**\r\n * To all the clever heads out there. Yes, we did not make any attempts to\r\n * scramble this.\r\n *\r\n * This is a part of a tool meant for our users to manage their commercial\r\n * licenses for removal of amCharts branding from charts.\r\n *\r\n * The only legit way to do so is to purchase a commercial license for amCharts:\r\n * https://www.amcharts.com/online-store/\r\n *\r\n * Removing or altering this code, or disabling amCharts branding in any other\r\n * way is against the license and thus illegal.\r\n */\r\n _hasLicense() {\r\n for (let i = 0; i < registry.licenses.length; i++) {\r\n if (registry.licenses[i].match(/^AM5C.{5,}/i)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _licenseApplied() {\r\n if (this._logo) {\r\n this._logo.set(\"forceHidden\", true);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n get debugGhostView() {\r\n return this._renderer.debugGhostView;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n set debugGhostView(value) {\r\n this._renderer.debugGhostView = value;\r\n }\r\n /**\r\n * Set this to `true` if you need chart to require first a tap onto it before\r\n * touch gesture related functionality like zoom/pan is turned on.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/root-element/#Touch_related_options} for more info\r\n * @default false\r\n * @since 5.2.9\r\n * @param value Needs a tap to activate touch functions\r\n */\r\n set tapToActivate(value) {\r\n this._renderer.tapToActivate = value;\r\n }\r\n /**\r\n * @return Needs a tap to activate touch functions\r\n */\r\n get tapToActivate() {\r\n return this._renderer.tapToActivate;\r\n }\r\n /**\r\n * If `tapToActivate` is set to `true`, this setting will determine number\r\n * of milliseconds the chart will stay \"active\", before releasing the\r\n * controls back to the page.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/root-element/#Touch_related_options} for more info\r\n * @default 3000\r\n * @since 5.2.9\r\n * @param value Timeout\r\n */\r\n set tapToActivateTimeout(value) {\r\n this._renderer.tapToActivateTimeout = value;\r\n }\r\n /**\r\n * @return Timeout\r\n */\r\n get tapToActivateTimeout() {\r\n return this._renderer.tapToActivateTimeout;\r\n }\r\n _makeHTMLElement(target) {\r\n // Get container\r\n const container = this._htmlElementContainer;\r\n // Init\r\n const htmlElement = document.createElement(\"div\");\r\n target.setPrivate(\"htmlElement\", htmlElement);\r\n //htmlElement.tabIndex = this.tabindex;\r\n htmlElement.style.position = \"absolute\";\r\n htmlElement.style.overflow = \"auto\";\r\n htmlElement.style.boxSizing = \"border-box\";\r\n $utils.setInteractive(htmlElement, target.get(\"interactive\", false));\r\n // Translate events\r\n if (target.events.isEnabled(\"click\")) {\r\n $utils.setInteractive(htmlElement, true);\r\n this._disposers.push($utils.addEventListener(htmlElement, \"click\", (ev) => {\r\n const downEvent = this._renderer.getEvent(ev);\r\n target.events.dispatch(\"click\", {\r\n type: \"click\",\r\n originalEvent: downEvent.event,\r\n point: downEvent.point,\r\n simulated: false,\r\n target: target\r\n });\r\n }));\r\n }\r\n this._positionHTMLElement(target);\r\n container.append(htmlElement);\r\n $array.pushOne(this._htmlEnabledContainers, target);\r\n return htmlElement;\r\n }\r\n _positionHTMLElements() {\r\n $array.each(this._htmlEnabledContainers, (target) => {\r\n this._positionHTMLElement(target);\r\n });\r\n }\r\n _positionHTMLElement(target) {\r\n const htmlElement = target.getPrivate(\"htmlElement\");\r\n if (htmlElement) {\r\n // Translate settings\r\n const visualSettings = [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\", \"minWidth\", \"minHeight\", \"maxWidth\", \"maxHeight\"];\r\n $array.each(visualSettings, (setting) => {\r\n const value = target.get(setting);\r\n if (value) {\r\n htmlElement.style[setting] = value + \"px\";\r\n }\r\n else {\r\n htmlElement.style[setting] = \"\";\r\n }\r\n });\r\n // Init and reset scale / rotation\r\n const scale = target.compositeScale() || 1;\r\n const rotation = target.compositeRotation() || 0;\r\n htmlElement.style.transform = \"\";\r\n htmlElement.style.transformOrigin = \"\";\r\n // Deal with opacity\r\n const opacity = target.compositeOpacity();\r\n setTimeout(() => {\r\n htmlElement.style.opacity = opacity + \"\";\r\n }, 10);\r\n const visible = target.isVisibleDeep();\r\n if (visible) {\r\n htmlElement.style.display = \"block\";\r\n }\r\n // Deal with position\r\n // const bounds = target.globalBounds();\r\n // htmlElement.style.top = (bounds.top) + \"px\";\r\n // htmlElement.style.left = (bounds.left) + \"px\";\r\n let pos = {\r\n x: target.x(),\r\n y: target.y()\r\n };\r\n if (target.parent) {\r\n pos = target.parent.toGlobal(pos);\r\n }\r\n htmlElement.style.top = pos.y + \"px\";\r\n htmlElement.style.left = pos.x + \"px\";\r\n // Use width/height if those are set\r\n const width = target.get(\"width\");\r\n const height = target.get(\"height\");\r\n let w = 0;\r\n let h = 0;\r\n if (width) {\r\n w = target.width();\r\n }\r\n if (height) {\r\n h = target.height();\r\n }\r\n if (!width || !height) {\r\n htmlElement.style.position = \"fixed\";\r\n htmlElement.style.width = \"\";\r\n htmlElement.style.height = \"\";\r\n const bbox = htmlElement.getBoundingClientRect();\r\n htmlElement.style.position = \"absolute\";\r\n if (!width)\r\n w = bbox.width;\r\n if (!height)\r\n h = bbox.height;\r\n let lw = w / scale;\r\n let lh = h / scale;\r\n let cx = target.get(\"centerX\", 0);\r\n let cy = target.get(\"centerY\", 0);\r\n let ll = 0;\r\n let lr = 0;\r\n let lt = 0;\r\n let lb = 0;\r\n if (cx instanceof Percent) {\r\n ll = -cx.value * lw;\r\n lr = (1 - cx.value) * lw;\r\n }\r\n else {\r\n ll = -cx;\r\n lr = lw - cx;\r\n }\r\n if (cy instanceof Percent) {\r\n lt = -cy.value * lh;\r\n lb = (1 - cy.value) * lh;\r\n }\r\n else {\r\n lt = -cy;\r\n lb = lh - cy;\r\n }\r\n target._localBounds = { left: ll, right: lr, top: lt, bottom: lb };\r\n let previousBounds = target._adjustedLocalBounds;\r\n let newBounds = target._display.getAdjustedBounds(target._localBounds);\r\n target._adjustedLocalBounds = newBounds;\r\n // compare each value of the bounds\r\n if (previousBounds.left !== newBounds.left || previousBounds.right !== newBounds.right || previousBounds.top !== newBounds.top || previousBounds.bottom !== newBounds.bottom) {\r\n target.markDirtyBounds();\r\n }\r\n }\r\n if (w > 0) {\r\n htmlElement.style.minWidth = (w) + \"px\";\r\n }\r\n if (h > 0) {\r\n htmlElement.style.minHeight = (h) + \"px\";\r\n }\r\n // Hide or show\r\n if (!visible || opacity == 0) {\r\n htmlElement.style.display = \"none\";\r\n }\r\n // Center position\r\n const x = target.get(\"centerX\", 0);\r\n const originX = isPercent(x) ? x.percent + \"%\" : x + \"px\";\r\n const y = target.get(\"centerY\", 0);\r\n const originY = isPercent(y) ? y.percent + \"%\" : y + \"px\";\r\n if (x || y) {\r\n htmlElement.style.transform = \"translate(-\" + originX + \", -\" + originY + \")\" + htmlElement.style.transform;\r\n }\r\n // Deal with scale\r\n if (scale != 1) {\r\n htmlElement.style.transform += \"scale(\" + scale + \")\";\r\n }\r\n if (rotation != 0) {\r\n htmlElement.style.transform += \" rotate(\" + rotation + \"deg)\";\r\n }\r\n if (htmlElement.style.transform != \"\") {\r\n htmlElement.style.transformOrigin = originX + \" \" + originY;\r\n //htmlElement.style.transformOrigin = \"0% 0%\";\r\n }\r\n }\r\n }\r\n _setHTMLContent(target, html) {\r\n let htmlElement = target.getPrivate(\"htmlElement\");\r\n if (!htmlElement) {\r\n htmlElement = this._makeHTMLElement(target);\r\n }\r\n if (htmlElement.innerHTML != html) {\r\n htmlElement.innerHTML = html;\r\n }\r\n }\r\n _removeHTMLContent(target) {\r\n let htmlElement = target.getPrivate(\"htmlElement\");\r\n if (htmlElement) {\r\n this._htmlElementContainer.removeChild(htmlElement);\r\n target.removePrivate(\"htmlElement\");\r\n }\r\n $array.remove(this._htmlEnabledContainers, target);\r\n }\r\n}\r\n//# sourceMappingURL=Root.js.map","import { Entity } from \"./Entity\";\r\nimport { StyleRule } from \"./Utils\";\r\nimport { MultiDisposer, CounterDisposer } from \"../../core/util/Disposer\";\r\nimport * as $utils from \"./Utils\";\r\n/**\r\n * @ignore\r\n */\r\nlet rules;\r\n/**\r\n * @ignore\r\n */\r\nfunction modalCSS(element, root, _prefix) {\r\n const ic = root.interfaceColors;\r\n const active = ic.get(\"secondaryButton\").toCSS();\r\n const text = ic.get(\"text\").toCSS();\r\n const shadow = ic.get(\"alternativeBackground\").toCSS(0.45);\r\n //const altbg = ic.get(\"alternativeBackground\")!.toCSS();\r\n if (!rules) {\r\n const disposer = new MultiDisposer([\r\n new StyleRule(element, \".am5-modal\", {\r\n \"width\": \"100%\",\r\n \"height\": \"100%\",\r\n \"position\": \"absolute\",\r\n \"z-index\": \"100000\",\r\n \"top\": \"0\",\r\n \"left\": \"0\"\r\n }, root.nonce),\r\n new StyleRule(element, \".am5-modal-curtain\", {\r\n \"top\": \"0\",\r\n \"left\": \"0\",\r\n \"width\": \"100%\",\r\n \"height\": \"100%\",\r\n \"position\": \"absolute\",\r\n \"background\": ic.get(\"background\").toCSS(0.5),\r\n \"z-index\": \"100\"\r\n }, root.nonce),\r\n new StyleRule(element, \".am5-modal-wrapper\", {\r\n \"top\": \"0\",\r\n \"left\": \"0\",\r\n \"width\": \"100%\",\r\n \"height\": \"100%\",\r\n \"position\": \"absolute\",\r\n \"text-align\": \"center\",\r\n \"white-space\": \"nowrap\",\r\n \"background\": ic.get(\"background\").toCSS(0.5),\r\n \"z-index\": \"101\"\r\n }, root.nonce),\r\n new StyleRule(element, \".am5-modal-wrapper:before\", {\r\n \"content\": \"''\",\r\n \"display\": \"inline-block\",\r\n \"height\": \"100%\",\r\n \"vertical-align\": \"middle\",\r\n \"margin-right\": \"-0.25em\"\r\n }, root.nonce),\r\n new StyleRule(element, \".am5-modal-content\", {\r\n \"display\": \"inline-block\",\r\n \"padding\": \"1.2em\",\r\n \"vertical-align\": \"middle\",\r\n \"text-align\": \"start\",\r\n \"white-space\": \"normal\",\r\n \"background\": ic.get(\"background\").toCSS(),\r\n //\"border\": \"1px solid \" + ic.get(\"alternativeBackground\")!.toCSS(),\r\n \"border-radius\": \"4px\",\r\n \"-webkit-box-shadow\": \"0px 0px 36px 0px \" + shadow,\r\n \"box-shadow\": \"0px 0px 36px 0px \" + shadow,\r\n \"color\": text\r\n }, root.nonce),\r\n new StyleRule(element, \".am5-modal-content h1\", {\r\n \"font-size\": \"1em\",\r\n \"margin\": \"0 0 0.5em 0\"\r\n }, root.nonce),\r\n new StyleRule(element, \".am5-modal-table\", {\r\n \"display\": \"table\",\r\n \"margin\": \"1em 0\"\r\n }, root.nonce),\r\n new StyleRule(element, \".am5-modal-table-row\", {\r\n \"display\": \"table-row\"\r\n }, root.nonce),\r\n new StyleRule(element, \".am5-modal-table-heading\", {\r\n \"display\": \"table-heading\",\r\n \"padding\": \"3px 10px 3px 0\",\r\n }, root.nonce),\r\n new StyleRule(element, \".am5-modal-table-cell\", {\r\n \"display\": \"table-cell\",\r\n \"padding\": \"3px 0 3px 0\",\r\n }, root.nonce),\r\n new StyleRule(element, \".am5-modal-table-cell > *\", {\r\n \"vertical-align\": \"middle\"\r\n }, root.nonce),\r\n new StyleRule(element, \".am5-modal-content input[type=text], .am5-modal-content input[type=number], .am5-modal-content select\", {\r\n \"border\": \"1px solid \" + active,\r\n \"border-radius\": \"4px\",\r\n \"padding\": \"3px 5px\",\r\n \"margin\": \"2px\"\r\n }, root.nonce),\r\n new StyleRule(element, \".am5-modal-input-narrow\", {\r\n \"width\": \"50px\"\r\n }, root.nonce),\r\n new StyleRule(element, \".am5-modal-button\", {\r\n \"font-weight\": \"400\",\r\n \"color\": ic.get(\"secondaryButtonText\").toCSS(),\r\n \"line-height\": \"1.5\",\r\n \"text-align\": \"center\",\r\n \"text-decoration\": \"none\",\r\n \"vertical-align\": \"middle\",\r\n \"cursor\": \"pointer\",\r\n \"padding\": \"0.2em 0.8em\",\r\n \"font-size\": \"1em\",\r\n \"border-radius\": \"0.25em\",\r\n \"margin\": \"0 0.25em 0 0\",\r\n \"border\": \"1px solid \" + ic.get(\"secondaryButtonStroke\").toCSS(),\r\n \"background\": ic.get(\"secondaryButton\").toCSS()\r\n }, root.nonce),\r\n new StyleRule(element, \".am5-modal-button:hover\", {\r\n \"background\": ic.get(\"secondaryButtonHover\").toCSS()\r\n }, root.nonce),\r\n new StyleRule(element, \".am5-modal-button.am5-modal-primary\", {\r\n \"color\": ic.get(\"primaryButtonText\").toCSS(),\r\n \"border\": \"1px solid \" + ic.get(\"primaryButtonStroke\").toCSS(),\r\n \"background\": ic.get(\"primaryButton\").toCSS()\r\n }, root.nonce),\r\n new StyleRule(element, \".am5-modal-button.am5-modal-primary:hover\", {\r\n \"background\": ic.get(\"primaryButtonHover\").toCSS()\r\n }, root.nonce),\r\n ]);\r\n rules = new CounterDisposer(() => {\r\n rules = undefined;\r\n disposer.dispose();\r\n });\r\n }\r\n return rules.increment();\r\n}\r\n/**\r\n * Used to display a modal dialog with HTML content.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/modal-popups/} for more info\r\n */\r\nexport class Modal extends Entity {\r\n //protected _currentPass: number = 0;\r\n _afterNew() {\r\n // Applying themes because this will not have parents\r\n super._afterNewApplyThemes();\r\n // Defaults\r\n this._setRawDefault(\"deactivateRoot\", true);\r\n // Load CSS\r\n modalCSS($utils.getShadowRoot(this._root.dom), this._root);\r\n // Create elements\r\n const container = document.createElement(\"div\");\r\n container.className = \"am5-modal\";\r\n container.style.display = \"none\";\r\n this.root._inner.appendChild(container);\r\n this.setPrivate(\"container\", container);\r\n const curtain = document.createElement(\"div\");\r\n curtain.className = \"am5-modal-curtain\";\r\n container.appendChild(curtain);\r\n this.setPrivate(\"curtain\", curtain);\r\n this._disposers.push($utils.addEventListener(curtain, \"click\", () => {\r\n this.cancel();\r\n }));\r\n const wrapper = document.createElement(\"div\");\r\n wrapper.className = \"am5-modal-wrapper\";\r\n container.appendChild(wrapper);\r\n this.setPrivate(\"wrapper\", wrapper);\r\n const content = document.createElement(\"div\");\r\n content.className = \"am5-modal-content\";\r\n wrapper.appendChild(content);\r\n this.setPrivate(\"content\", content);\r\n const html = this.get(\"content\");\r\n if (html) {\r\n content.innerHTML = html;\r\n }\r\n // Close on ESC\r\n if ($utils.supports(\"keyboardevents\")) {\r\n this._disposers.push($utils.addEventListener(document, \"keydown\", (ev) => {\r\n if (this.isOpen() && $utils.getEventKey(ev) == \"Escape\") {\r\n this.cancel();\r\n }\r\n }));\r\n }\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"content\")) {\r\n this.getPrivate(\"content\").innerHTML = this.get(\"content\", \"\");\r\n }\r\n }\r\n /**\r\n * Returns `true` if modal is currently open.\r\n *\r\n * @return Modal open?\r\n */\r\n isOpen() {\r\n return this.getPrivate(\"container\").style.display != \"none\";\r\n }\r\n /**\r\n * Opens modal.\r\n */\r\n open() {\r\n this.getPrivate(\"container\").style.display = \"block\";\r\n if (this.get(\"deactivateRoot\")) {\r\n this.setTimeout(() => {\r\n this._root._renderer.interactionsEnabled = false;\r\n }, 10);\r\n }\r\n this.events.dispatch(\"opened\", {\r\n type: \"opened\",\r\n target: this\r\n });\r\n }\r\n /**\r\n * Closes modal.\r\n */\r\n close() {\r\n this.getPrivate(\"container\").style.display = \"none\";\r\n if (this.get(\"deactivateRoot\")) {\r\n this._root._renderer.interactionsEnabled = true;\r\n }\r\n this.events.dispatch(\"closed\", {\r\n type: \"closed\",\r\n target: this\r\n });\r\n }\r\n /**\r\n * Closes modal and invokes `cancelled` event.\r\n */\r\n cancel() {\r\n this.getPrivate(\"container\").style.display = \"none\";\r\n if (this.get(\"deactivateRoot\")) {\r\n this._root._renderer.interactionsEnabled = true;\r\n }\r\n this.events.dispatch(\"cancelled\", {\r\n type: \"cancelled\",\r\n target: this\r\n });\r\n }\r\n /**\r\n * Disposes modal.\r\n */\r\n _dispose() {\r\n super._dispose();\r\n const container = this.getPrivate(\"container\");\r\n if (container.parentElement) {\r\n container.parentElement.removeChild(container);\r\n }\r\n }\r\n}\r\nObject.defineProperty(Modal, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Modal\"\r\n});\r\nObject.defineProperty(Modal, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Entity.classNames.concat([Modal.className])\r\n});\r\n//# sourceMappingURL=Modal.js.map","import { Entity } from \"../../core/util/Entity\";\r\n/**\r\n * A universal placeholder for bullet elements.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/bullets/} for more info\r\n */\r\nexport class Bullet extends Entity {\r\n constructor() {\r\n super(...arguments);\r\n // used by MapPolygons where one data item can have multiple bullets of the same kind\r\n Object.defineProperty(this, \"_index\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Target series object if it's a bullet for series.\r\n */\r\n Object.defineProperty(this, \"series\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _afterNew() {\r\n // Applying themes because bullet will not have parent\r\n super._afterNewApplyThemes();\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"sprite\")) {\r\n const sprite = this.get(\"sprite\");\r\n if (sprite) {\r\n sprite.setAll({ position: \"absolute\", role: \"figure\" });\r\n this._disposers.push(sprite);\r\n }\r\n }\r\n if (this.isDirty(\"locationX\") || this.isDirty(\"locationY\")) {\r\n if (this.series) {\r\n this.series._positionBullet(this);\r\n }\r\n }\r\n }\r\n}\r\nObject.defineProperty(Bullet, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Bullet\"\r\n});\r\nObject.defineProperty(Bullet, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Entity.classNames.concat([Bullet.className])\r\n});\r\n//# sourceMappingURL=Bullet.js.map","import * as $type from \"../util/Type\";\r\nimport * as $math from \"../util/Math\";\r\nimport * as $utils from \"../util/Utils\";\r\nimport { Rectangle } from \"./Rectangle\";\r\n/**\r\n * Draws a rectangle with rounded corners.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\r\nexport class RoundedRectangle extends Rectangle {\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"cornerRadiusTL\") || this.isDirty(\"cornerRadiusTR\") || this.isDirty(\"cornerRadiusBR\") || this.isDirty(\"cornerRadiusBL\")) {\r\n this._clear = true;\r\n }\r\n }\r\n _draw() {\r\n let width = this.width();\r\n let height = this.height();\r\n let w = width;\r\n let h = height;\r\n let wSign = w / Math.abs(width);\r\n let hSign = h / Math.abs(height);\r\n if ($type.isNumber(w) && $type.isNumber(h)) {\r\n let minSide = Math.min(w, h) / 2;\r\n let crtl = $utils.relativeToValue(this.get(\"cornerRadiusTL\", 8), minSide);\r\n let crtr = $utils.relativeToValue(this.get(\"cornerRadiusTR\", 8), minSide);\r\n let crbr = $utils.relativeToValue(this.get(\"cornerRadiusBR\", 8), minSide);\r\n let crbl = $utils.relativeToValue(this.get(\"cornerRadiusBL\", 8), minSide);\r\n let maxcr = Math.min(Math.abs(w / 2), Math.abs(h / 2));\r\n crtl = $math.fitToRange(crtl, 0, maxcr);\r\n crtr = $math.fitToRange(crtr, 0, maxcr);\r\n crbr = $math.fitToRange(crbr, 0, maxcr);\r\n crbl = $math.fitToRange(crbl, 0, maxcr);\r\n const display = this._display;\r\n display.moveTo(crtl * wSign, 0);\r\n display.lineTo(w - crtr * wSign, 0);\r\n if (crtr > 0) {\r\n display.arcTo(w, 0, w, crtr * hSign, crtr);\r\n }\r\n display.lineTo(w, h - crbr * hSign);\r\n if (crbr > 0) {\r\n display.arcTo(w, h, w - crbr * wSign, h, crbr);\r\n }\r\n display.lineTo(crbl * wSign, h);\r\n if (crbl > 0) {\r\n display.arcTo(0, h, 0, h - crbl * hSign, crbl);\r\n }\r\n display.lineTo(0, crtl * hSign);\r\n if (crtl > 0) {\r\n display.arcTo(0, 0, crtl * wSign, 0, crtl);\r\n }\r\n display.closePath();\r\n }\r\n }\r\n}\r\nObject.defineProperty(RoundedRectangle, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"RoundedRectangle\"\r\n});\r\nObject.defineProperty(RoundedRectangle, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Rectangle.classNames.concat([RoundedRectangle.className])\r\n});\r\n//# sourceMappingURL=RoundedRectangle.js.map","import { RoundedRectangle } from \"../render/RoundedRectangle\";\r\nimport { Container } from \"./Container\";\r\nimport * as $utils from \"../../core/util/Utils\";\r\n/**\r\n * Draws an interactive button.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/buttons/} for more info\r\n * @important\r\n */\r\nexport class Button extends Container {\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"button\"]);\r\n super._afterNew();\r\n if (!this._settings.background) {\r\n this.set(\"background\", RoundedRectangle.new(this._root, {\r\n themeTags: $utils.mergeTags(this._settings.themeTags, [\"background\"])\r\n }));\r\n }\r\n this.setPrivate(\"trustBounds\", true);\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n if (this.isDirty(\"icon\")) {\r\n const previous = this._prevSettings.icon;\r\n const icon = this.get(\"icon\");\r\n if (icon !== previous) {\r\n this._disposeProperty(\"icon\");\r\n if (previous) {\r\n previous.dispose();\r\n }\r\n if (icon) {\r\n this.children.push(icon);\r\n }\r\n this._prevSettings.icon = icon;\r\n }\r\n }\r\n if (this.isDirty(\"label\")) {\r\n const previous = this._prevSettings.label;\r\n const label = this.get(\"label\");\r\n if (label !== previous) {\r\n this._disposeProperty(\"label\");\r\n if (previous) {\r\n previous.dispose();\r\n }\r\n if (label) {\r\n this.children.push(label);\r\n }\r\n this._prevSettings.label = label;\r\n }\r\n }\r\n }\r\n}\r\nObject.defineProperty(Button, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Button\"\r\n});\r\nObject.defineProperty(Button, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.classNames.concat([Button.className])\r\n});\r\n//# sourceMappingURL=Button.js.map","import { Graphics } from \"./Graphics\";\r\n/**\r\n * Draws a circle.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\r\nexport class Circle extends Graphics {\r\n _afterNew() {\r\n super._afterNew();\r\n this._display.isMeasured = true;\r\n this.setPrivateRaw(\"trustBounds\", true);\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"radius\")) {\r\n this._clear = true;\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this._clear) {\r\n this._display.drawCircle(0, 0, Math.abs(this.get(\"radius\", 10)));\r\n }\r\n }\r\n}\r\nObject.defineProperty(Circle, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Circle\"\r\n});\r\nObject.defineProperty(Circle, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Graphics.classNames.concat([Circle.className])\r\n});\r\n//# sourceMappingURL=Circle.js.map","import { Graphics } from \"./Graphics\";\r\nimport * as $array from \"../util/Array\";\r\n/**\r\n * Draws a polygon.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/polygon/} for more info\r\n * @important\r\n * @since 5.4.0\r\n */\r\nexport class Polygon extends Graphics {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"morphAnimation\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"coordinates\")) {\r\n const points = [];\r\n const coordinates = this.get(\"coordinates\");\r\n if (coordinates) {\r\n $array.each(coordinates, (coord) => {\r\n points.push({ x: coord[0], y: coord[1] });\r\n });\r\n }\r\n this.set(\"points\", points);\r\n }\r\n if (this.isPrivateDirty(\"points\")) {\r\n this._clear = true;\r\n }\r\n if (this.isDirty(\"points\")) {\r\n this._clear = true;\r\n const points = this.get(\"points\");\r\n const prevPoints = this._prevSettings.points;\r\n if (prevPoints) {\r\n if (points) {\r\n let copy = $array.copy(points);\r\n let prevCopy = $array.copy(prevPoints);\r\n let cl = copy.length;\r\n let pl = prevCopy.length;\r\n if (cl > pl) {\r\n let newCopy = $array.copy(copy);\r\n for (let i = 0; i < cl; i++) {\r\n let index = Math.floor(i / cl * pl);\r\n newCopy[i] = { x: prevCopy[index].x, y: prevCopy[index].y };\r\n }\r\n prevCopy = newCopy;\r\n }\r\n else if (pl > cl) {\r\n let newCopy = $array.copy(prevCopy);\r\n for (let i = 0; i < pl; i++) {\r\n let index = Math.floor(i / pl * cl);\r\n newCopy[i] = { x: copy[index].x, y: copy[index].y };\r\n }\r\n copy = newCopy;\r\n }\r\n this.setPrivateRaw(\"previousPoints\", prevCopy);\r\n this.setPrivateRaw(\"points\", copy);\r\n this.morphAnimation = this.animatePrivate({ key: \"morphProgress\", from: 0, to: 1, duration: this.get(\"animationDuration\", 0), easing: this.get(\"animationEasing\") });\r\n // solves no animated theme\r\n this._root.events.once(\"frameended\", () => {\r\n this._markDirtyPrivateKey(\"morphProgress\");\r\n });\r\n }\r\n }\r\n else {\r\n this.setPrivateRaw(\"previousPoints\", points);\r\n this.setPrivateRaw(\"points\", points);\r\n }\r\n let minX = Infinity;\r\n let maxX = -Infinity;\r\n let minY = Infinity;\r\n let maxY = -Infinity;\r\n if (points) {\r\n for (let i = 1, len = points.length; i < len; i++) {\r\n const point = points[i];\r\n minX = Math.min(minX, point.x);\r\n maxX = Math.max(maxX, point.x);\r\n minY = Math.min(minY, point.y);\r\n maxY = Math.max(maxY, point.y);\r\n }\r\n }\r\n this.setPrivate(\"minX\", minX);\r\n this.setPrivate(\"maxX\", maxX);\r\n this.setPrivate(\"minY\", minY);\r\n this.setPrivate(\"maxY\", minY);\r\n }\r\n if (this.isPrivateDirty(\"morphProgress\")) {\r\n this._clear = true;\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this._clear) {\r\n this._draw();\r\n }\r\n }\r\n _draw() {\r\n const previousPoints = this.getPrivate(\"previousPoints\");\r\n const points = this.getPrivate(\"points\");\r\n const morphProgress = this.getPrivate(\"morphProgress\", 1);\r\n if (points && previousPoints) {\r\n const first = points[0];\r\n const prevFirst = previousPoints[0];\r\n if (first) {\r\n this._display.moveTo(prevFirst.x + (first.x - prevFirst.x) * morphProgress, prevFirst.y + (first.y - prevFirst.y) * morphProgress);\r\n }\r\n for (let i = 1, len = points.length; i < len; i++) {\r\n const point = points[i];\r\n const prevPoint = previousPoints[i];\r\n this._display.lineTo(prevPoint.x + (point.x - prevPoint.x) * morphProgress, prevPoint.y + (point.y - prevPoint.y) * morphProgress);\r\n }\r\n this._display.closePath();\r\n }\r\n }\r\n _updateSize() {\r\n this.markDirty();\r\n this._clear = true;\r\n }\r\n}\r\nObject.defineProperty(Polygon, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Polygon\"\r\n});\r\nObject.defineProperty(Polygon, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Graphics.classNames.concat([Polygon.className])\r\n});\r\n//# sourceMappingURL=Polygon.js.map","import { Graphics } from \"./Graphics\";\r\n/**\r\n * Draws a Ellipse.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\r\nexport class Ellipse extends Graphics {\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"radiusX\") || this.isDirty(\"radiusY\") || this.isDirty(\"rotation\")) {\r\n this._clear = true;\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this._clear) {\r\n this._display.drawEllipse(0, 0, Math.abs(this.get(\"radiusX\")), Math.abs(this.get(\"radiusY\")));\r\n }\r\n }\r\n}\r\nObject.defineProperty(Ellipse, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Ellipse\"\r\n});\r\nObject.defineProperty(Ellipse, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Graphics.classNames.concat([Ellipse.className])\r\n});\r\n//# sourceMappingURL=Ellipse.js.map","import { Graphics } from \"./Graphics\";\r\nimport * as $utils from \"../../core/util/Utils\";\r\n/**\r\n * Draws a Star.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\r\nexport class Star extends Graphics {\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"radius\") || this.isDirty(\"innerRadius\") || this.isDirty(\"spikes\")) {\r\n this._clear = true;\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this._clear) {\r\n const display = this._display;\r\n const r = this.get(\"radius\", 0);\r\n const ir = $utils.relativeToValue(this.get(\"innerRadius\", 0), r);\r\n const spikes = this.get(\"spikes\", 0);\r\n const step = Math.PI / spikes;\r\n let angle = Math.PI / 2 * 3;\r\n display.moveTo(0, -r);\r\n for (let i = 0; i < spikes; i++) {\r\n display.lineTo(Math.cos(angle) * r, Math.sin(angle) * r);\r\n angle += step;\r\n display.lineTo(Math.cos(angle) * ir, Math.sin(angle) * ir);\r\n angle += step;\r\n }\r\n display.lineTo(0, -r);\r\n display.closePath();\r\n }\r\n }\r\n}\r\nObject.defineProperty(Star, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Star\"\r\n});\r\nObject.defineProperty(Star, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Graphics.classNames.concat([Star.className])\r\n});\r\n//# sourceMappingURL=Star.js.map","import { List } from \"./List\";\r\n/**\r\n * A [[List]] that holds components data.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/data/} for more info\r\n */\r\nexport class ListData extends List {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * An optional processor for data.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/data/#Pre_processing_data} for more info\r\n */\r\n Object.defineProperty(this, \"processor\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n incrementRef() { }\r\n /**\r\n * @ignore\r\n */\r\n decrementRef() { }\r\n _onPush(newValue) {\r\n if (this.processor) {\r\n this.processor.processRow(newValue);\r\n }\r\n super._onPush(newValue);\r\n }\r\n _onInsertIndex(index, newValue) {\r\n if (this.processor) {\r\n this.processor.processRow(newValue);\r\n }\r\n super._onInsertIndex(index, newValue);\r\n }\r\n _onSetIndex(index, oldValue, newValue) {\r\n if (this.processor) {\r\n this.processor.processRow(newValue);\r\n }\r\n super._onSetIndex(index, oldValue, newValue);\r\n }\r\n}\r\n/**\r\n * @deprecated\r\n * @todo remove\r\n */\r\nexport class JsonData {\r\n constructor(value) {\r\n Object.defineProperty(this, \"processor\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_value\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._value = value;\r\n }\r\n incrementRef() { }\r\n decrementRef() { }\r\n}\r\n//# sourceMappingURL=Data.js.map","import { __awaiter } from \"tslib\";\r\nimport { Settings } from \"../util/Entity\";\r\nimport { Container } from \"./Container\";\r\nimport { ListData } from \"../util/Data\";\r\nimport * as $array from \"../util/Array\";\r\nimport * as $object from \"../util/Object\";\r\n/**\r\n * A base element that holds data bit (data item) for any [[Component]].\r\n */\r\nexport class DataItem extends Settings {\r\n constructor(component, dataContext, settings) {\r\n super(settings);\r\n /**\r\n * A data item's owener [[Component]].\r\n */\r\n Object.defineProperty(this, \"component\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A reference to actual item in source data this item is based on.\r\n */\r\n Object.defineProperty(this, \"dataContext\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * @todo requires description\r\n */\r\n Object.defineProperty(this, \"bullets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A set of \"open\" values.\r\n */\r\n Object.defineProperty(this, \"open\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A set of \"close\" values.\r\n */\r\n Object.defineProperty(this, \"close\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this.dataContext = dataContext;\r\n this.component = component;\r\n this._settings.visible = true;\r\n this._checkDirty();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirty() {\r\n this.component.markDirtyValues(this);\r\n }\r\n _startAnimation() {\r\n this.component._root._addAnimation(this);\r\n }\r\n _animationTime() {\r\n return this.component._root.animationTime;\r\n }\r\n _dispose() {\r\n if (this.component) {\r\n this.component.disposeDataItem(this);\r\n }\r\n super._dispose();\r\n }\r\n /**\r\n * Shows a data item that's currently hidden.\r\n */\r\n show(duration) {\r\n this.setRaw(\"visible\", true);\r\n if (this.component) {\r\n this.component.showDataItem(this, duration);\r\n }\r\n }\r\n /**\r\n * Hides a data item that's currently visible.\r\n */\r\n hide(duration) {\r\n this.setRaw(\"visible\", false);\r\n if (this.component) {\r\n this.component.hideDataItem(this, duration);\r\n }\r\n }\r\n isHidden() {\r\n return !this.get(\"visible\");\r\n }\r\n}\r\n/**\r\n * A base class for elements that make use of data.\r\n */\r\nexport class Component extends Container {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_data\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListData()\r\n });\r\n Object.defineProperty(this, \"_dataItems\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_mainDataItems\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._dataItems\r\n });\r\n Object.defineProperty(this, \"valueFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"fields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: [\"id\"]\r\n });\r\n Object.defineProperty(this, \"_valueFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_valueFieldsF\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_fields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_fieldsF\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_valuesDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_dataChanged\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_dataGrouped\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * Indicates if the component has already been initialized.\r\n */\r\n Object.defineProperty(this, \"inited\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n }\r\n /**\r\n * Component's data.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/data/} for more info\r\n */\r\n set data(data) {\r\n data.incrementRef();\r\n this._data.decrementRef();\r\n this._data = data;\r\n }\r\n /**\r\n * @return Data\r\n */\r\n get data() {\r\n return this._data;\r\n }\r\n _dispose() {\r\n super._dispose();\r\n this._data.decrementRef();\r\n }\r\n _onDataClear() {\r\n }\r\n _afterNew() {\r\n super._afterNew();\r\n this._data.incrementRef();\r\n this._updateFields();\r\n this._disposers.push(this.data.events.onAll((change) => {\r\n const dataItems = this._mainDataItems;\r\n this.markDirtyValues();\r\n this._markDirtyGroup();\r\n this._dataChanged = true;\r\n if (change.type === \"clear\") {\r\n $array.each(dataItems, (dataItem) => {\r\n dataItem.dispose();\r\n });\r\n dataItems.length = 0;\r\n this._onDataClear();\r\n }\r\n else if (change.type === \"push\") {\r\n const dataItem = new DataItem(this, change.newValue, this._makeDataItem(change.newValue));\r\n dataItems.push(dataItem);\r\n this.processDataItem(dataItem);\r\n }\r\n else if (change.type === \"setIndex\") {\r\n const dataItem = dataItems[change.index];\r\n const properties = this._makeDataItem(change.newValue);\r\n if (dataItem.bullets && dataItem.bullets.length == 0) {\r\n dataItem.bullets = undefined;\r\n }\r\n $object.keys(properties).forEach((key) => {\r\n dataItem.animate({\r\n key: key,\r\n to: properties[key],\r\n duration: this.get(\"interpolationDuration\", 0),\r\n easing: this.get(\"interpolationEasing\"),\r\n });\r\n });\r\n dataItem.dataContext = change.newValue;\r\n }\r\n else if (change.type === \"insertIndex\") {\r\n const dataItem = new DataItem(this, change.newValue, this._makeDataItem(change.newValue));\r\n dataItems.splice(change.index, 0, dataItem);\r\n this.processDataItem(dataItem);\r\n }\r\n else if (change.type === \"removeIndex\") {\r\n const dataItem = dataItems[change.index];\r\n dataItem.dispose();\r\n dataItems.splice(change.index, 1);\r\n }\r\n else if (change.type === \"moveIndex\") {\r\n const dataItem = dataItems[change.oldIndex];\r\n dataItems.splice(change.oldIndex, 1);\r\n dataItems.splice(change.newIndex, 0, dataItem);\r\n }\r\n else {\r\n throw new Error(\"Unknown IStreamEvent type\");\r\n }\r\n this._afterDataChange();\r\n }));\r\n }\r\n _updateFields() {\r\n if (this.valueFields) {\r\n this._valueFields = [];\r\n this._valueFieldsF = {};\r\n $array.each(this.valueFields, (key) => {\r\n const field = this.get((key + \"Field\"));\r\n if (field) {\r\n this._valueFields.push(key);\r\n this._valueFieldsF[key] = { fieldKey: key + \"Field\", workingKey: key + \"Working\" };\r\n }\r\n });\r\n }\r\n if (this.fields) {\r\n this._fields = [];\r\n this._fieldsF = {};\r\n $array.each(this.fields, (key) => {\r\n const field = this.get((key + \"Field\"));\r\n if (field) {\r\n this._fields.push(key);\r\n this._fieldsF[key] = key + \"Field\";\r\n }\r\n });\r\n }\r\n }\r\n /**\r\n * A list of component's data items.\r\n *\r\n * @return Data items\r\n */\r\n get dataItems() {\r\n return this._dataItems;\r\n }\r\n processDataItem(_dataItem) { }\r\n _makeDataItem(data) {\r\n //const output: this[\"_dataItemSettings\"] = {};\r\n const output = {}; // temporary to solve error\r\n if (this._valueFields) {\r\n $array.each(this._valueFields, (key) => {\r\n const field = this.get((this._valueFieldsF[key].fieldKey));\r\n output[key] = data[field];\r\n output[this._valueFieldsF[key].workingKey] = output[key];\r\n });\r\n }\r\n if (this._fields) {\r\n $array.each(this._fields, (key) => {\r\n const field = this.get((this._fieldsF[key]));\r\n output[key] = data[field];\r\n });\r\n }\r\n return output;\r\n }\r\n /**\r\n * Creates a new data item and processes it.\r\n *\r\n * @param data Data item settings\r\n * @param dataContext Data context\r\n * @return New data item\r\n */\r\n makeDataItem(data, dataContext) {\r\n let dataItem = new DataItem(this, dataContext, data);\r\n this.processDataItem(dataItem);\r\n return dataItem;\r\n }\r\n /**\r\n * Adds new explicit data item to series.\r\n *\r\n * @param data Data item settings\r\n * @param dataContext Data context\r\n * @return New data item\r\n */\r\n pushDataItem(data, dataContext) {\r\n const dataItem = this.makeDataItem(data, dataContext);\r\n this._mainDataItems.push(dataItem);\r\n return dataItem;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n disposeDataItem(_dataItem) {\r\n }\r\n /**\r\n * Shows component's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param _duration Animation duration in milliseconds\r\n * @return Promise\r\n */\r\n showDataItem(dataItem, _duration) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n dataItem.set(\"visible\", true);\r\n });\r\n }\r\n /**\r\n * Hides component's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param _duration Animation duration in milliseconds\r\n * @return Promise\r\n */\r\n hideDataItem(dataItem, _duration) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n dataItem.set(\"visible\", false);\r\n });\r\n }\r\n _clearDirty() {\r\n super._clearDirty();\r\n this._valuesDirty = false;\r\n }\r\n _afterDataChange() {\r\n }\r\n _afterChanged() {\r\n super._afterChanged();\r\n if (this._dataChanged) {\r\n const type = \"datavalidated\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this });\r\n }\r\n this._dataChanged = false;\r\n }\r\n this.inited = true;\r\n }\r\n /**\r\n * Forces a repaint of the element which relies on data.\r\n *\r\n * @since 5.0.21\r\n */\r\n markDirtyValues(_dataItem) {\r\n this.markDirty();\r\n this._valuesDirty = true;\r\n }\r\n _markDirtyGroup() {\r\n this._dataGrouped = false;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtySize() {\r\n this._sizeDirty = true;\r\n this.markDirty();\r\n }\r\n}\r\nObject.defineProperty(Component, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Component\"\r\n});\r\nObject.defineProperty(Component, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.classNames.concat([Component.className])\r\n});\r\n//# sourceMappingURL=Component.js.map","import { Container } from \"../../core/render/Container\";\r\nimport { p100 } from \"../../core/util/Percent\";\r\nimport { Rectangle } from \"../../core/render/Rectangle\";\r\nimport { color } from \"../../core/util/Color\";\r\nimport * as $utils from \"../../core/util/Utils\";\r\nimport * as $math from \"../../core/util/Math\";\r\nimport * as $object from \"../../core/util/Object\";\r\nimport * as $type from \"../../core/util/Type\";\r\n/**\r\n * A version of [[Container]] which adds zooming capabilities.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/#Zoomable_container} for more info\r\n * @since 5.8.0\r\n * @important\r\n */\r\nexport class ZoomableContainer extends Container {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_za\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_txa\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tya\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_movePoints\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_downScale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_downX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_downY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_pinchDP\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * All elements must be added to `contents.children` instead of `children` of\r\n * [[ZoomableContainer]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/#Zoomable_container} for more info\r\n */\r\n Object.defineProperty(this, \"contents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Container.new(this._root, {\r\n width: p100,\r\n height: p100,\r\n x: 0,\r\n y: 0,\r\n draggable: true,\r\n background: Rectangle.new(this._root, {\r\n fill: color(0xffffff),\r\n fillOpacity: 0\r\n })\r\n }))\r\n });\r\n Object.defineProperty(this, \"_wheelDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _afterNew() {\r\n super._afterNew();\r\n const events = this.contents.events;\r\n this._disposers.push(events.on(\"pointerdown\", (event) => {\r\n this._handleThisDown(event);\r\n }));\r\n this._disposers.push(events.on(\"globalpointerup\", (event) => {\r\n this._handleThisUp(event);\r\n }));\r\n this._disposers.push(events.on(\"globalpointermove\", (event) => {\r\n this._handleThisMove(event);\r\n }));\r\n const bg = this.contents.get(\"background\");\r\n if (bg) {\r\n bg.adapters.add(\"width\", (width) => {\r\n return Number(width) * 5;\r\n });\r\n bg.adapters.add(\"height\", (height) => {\r\n return Number(height) * 5;\r\n });\r\n bg.adapters.add(\"x\", (x) => {\r\n return Number(x) - bg.width() / 5 * 2;\r\n });\r\n bg.adapters.add(\"y\", (y) => {\r\n return Number(y) - bg.height() / 5 * 2;\r\n });\r\n }\r\n const contents = this.contents;\r\n contents.adapters.add(\"x\", (x) => {\r\n if ($type.isNumber(x)) {\r\n let maxPanOut = this.get(\"maxPanOut\", 0.4);\r\n let w = contents.width();\r\n x = Math.min(w * maxPanOut, x);\r\n x = Math.max(this.width() - w * contents.get(\"scale\", 1) * (1 + maxPanOut), x);\r\n }\r\n return x;\r\n });\r\n contents.adapters.add(\"y\", (y) => {\r\n if ($type.isNumber(y)) {\r\n let maxPanOut = this.get(\"maxPanOut\", 0.4);\r\n let h = contents.height();\r\n y = Math.min(h * maxPanOut, y);\r\n y = Math.max(this.height() - h * contents.get(\"scale\", 1) * (1 + maxPanOut), y);\r\n }\r\n return y;\r\n });\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n if (this.isDirty(\"wheelable\")) {\r\n this._handleSetWheel();\r\n }\r\n this.contents._display.cancelTouch = this.get(\"pinchZoom\", false);\r\n }\r\n _handleSetWheel() {\r\n if (this.get(\"wheelable\")) {\r\n if (this._wheelDp) {\r\n this._wheelDp.dispose();\r\n }\r\n this._wheelDp = this.events.on(\"wheel\", (event) => {\r\n const wheelEvent = event.originalEvent;\r\n // Ignore wheel event if it is happening on a non-ZoomableContainer element, e.g. if\r\n // some page element is over the ZoomableContainer.\r\n if ($utils.isLocalEvent(wheelEvent, this)) {\r\n wheelEvent.preventDefault();\r\n }\r\n else {\r\n return;\r\n }\r\n const point = this.toLocal(event.point);\r\n this._handleWheelZoom(wheelEvent.deltaY, point);\r\n });\r\n this._disposers.push(this._wheelDp);\r\n }\r\n else {\r\n if (this._wheelDp) {\r\n this._wheelDp.dispose();\r\n }\r\n }\r\n }\r\n _handleWheelZoom(delta, point) {\r\n let step = this.get(\"zoomStep\", 2);\r\n let zoomLevel = this.contents.get(\"scale\", 1);\r\n let newZoomLevel = zoomLevel;\r\n if (delta > 0) {\r\n newZoomLevel = zoomLevel / step;\r\n }\r\n else if (delta < 0) {\r\n newZoomLevel = zoomLevel * step;\r\n }\r\n if (newZoomLevel != zoomLevel) {\r\n this.zoomToPoint(point, newZoomLevel);\r\n }\r\n }\r\n /**\r\n * Zooms to specific X/Y point.\r\n *\r\n * @param point Center point\r\n * @param level Zoom level\r\n * @return Zoom Animation object\r\n */\r\n zoomToPoint(point, level) {\r\n if (level) {\r\n level = $math.fitToRange(level, this.get(\"minZoomLevel\", 1), this.get(\"maxZoomLevel\", 32));\r\n }\r\n const zoomLevel = this.contents.get(\"scale\", 1);\r\n let x = point.x;\r\n let y = point.y;\r\n let cx = x;\r\n let cy = y;\r\n const contents = this.contents;\r\n let tx = contents.x();\r\n let ty = contents.y();\r\n let xx = cx - ((x - tx) / zoomLevel * level);\r\n let yy = cy - ((y - ty) / zoomLevel * level);\r\n this._animateTo(xx, yy, level);\r\n return this._za;\r\n }\r\n /**\r\n * Zooms the container contents in by `zoomStep`.\r\n *\r\n * @return Zoom Animation object\r\n */\r\n zoomIn() {\r\n return this.zoomToPoint({ x: this.width() / 2, y: this.height() / 2 }, this.contents.get(\"scale\", 1) * this.get(\"zoomStep\", 2));\r\n }\r\n /**\r\n * Zooms the container contents out by `zoomStep`.\r\n *\r\n * @return Zoom Animation object\r\n */\r\n zoomOut() {\r\n return this.zoomToPoint({ x: this.width() / 2, y: this.height() / 2 }, this.contents.get(\"scale\", 1) / this.get(\"zoomStep\", 2));\r\n }\r\n /**\r\n * Fully zooms out the container contents.\r\n *\r\n * @return Zoom Animation object\r\n */\r\n goHome() {\r\n return this._animateTo(0, 0, 1);\r\n }\r\n _animateTo(x, y, scale) {\r\n const duration = this.get(\"animationDuration\", 0);\r\n const easing = this.get(\"animationEasing\");\r\n const contents = this.contents;\r\n this._txa = contents.animate({ key: \"x\", to: x, duration: duration, easing: easing });\r\n this._tya = contents.animate({ key: \"y\", to: y, duration: duration, easing: easing });\r\n this._za = contents.animate({ key: \"scale\", to: scale, duration: duration, easing: easing });\r\n }\r\n _handleThisUp(_event) {\r\n this._downPoints = {};\r\n }\r\n _handleThisDown(event) {\r\n const contents = this.contents;\r\n this._downScale = contents.get(\"scale\", 1);\r\n const downPoints = contents._downPoints;\r\n let count = $object.keys(downPoints).length;\r\n if (count == 1) {\r\n // workaround to solve a problem when events are added to some children of chart container (rotation stops working)\r\n let downPoint = downPoints[1];\r\n if (!downPoint) {\r\n downPoint = downPoints[0];\r\n }\r\n if (downPoint && (downPoint.x == event.point.x && downPoint.y == event.point.y)) {\r\n count = 0;\r\n }\r\n }\r\n if (count > 0) {\r\n this._downX = contents.x();\r\n this._downY = contents.y();\r\n const downId = contents._getDownPointId();\r\n if (downId) {\r\n let movePoint = this._movePoints[downId];\r\n if (movePoint) {\r\n contents._downPoints[downId] = movePoint;\r\n }\r\n }\r\n }\r\n }\r\n _handleThisMove(event) {\r\n const originalEvent = event.originalEvent;\r\n const pointerId = originalEvent.pointerId;\r\n if (this.get(\"pinchZoom\")) {\r\n if (pointerId) {\r\n this._movePoints[pointerId] = event.point;\r\n if ($object.keys(this.contents._downPoints).length > 1) {\r\n this._handlePinch();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n _handlePinch() {\r\n let i = 0;\r\n let downPoints = [];\r\n let movePoints = [];\r\n $object.each(this.contents._downPoints, (k, point) => {\r\n downPoints[i] = point;\r\n let movePoint = this._movePoints[k];\r\n if (movePoint) {\r\n movePoints[i] = movePoint;\r\n }\r\n i++;\r\n });\r\n if (downPoints.length > 1 && movePoints.length > 1) {\r\n this.contents._isDragging = false;\r\n let downPoint0 = downPoints[0];\r\n let downPoint1 = downPoints[1];\r\n let movePoint0 = movePoints[0];\r\n let movePoint1 = movePoints[1];\r\n if (downPoint0 && downPoint1 && movePoint0 && movePoint1) {\r\n downPoint0 = this.toLocal(downPoint0);\r\n downPoint1 = this.toLocal(downPoint1);\r\n movePoint0 = this.toLocal(movePoint0);\r\n movePoint1 = this.toLocal(movePoint1);\r\n let initialDistance = Math.hypot(downPoint1.x - downPoint0.x, downPoint1.y - downPoint0.y);\r\n let currentDistance = Math.hypot(movePoint1.x - movePoint0.x, movePoint1.y - movePoint0.y);\r\n let level = currentDistance / initialDistance * this._downScale;\r\n let moveCenter = { x: movePoint0.x + (movePoint1.x - movePoint0.x) / 2, y: movePoint0.y + (movePoint1.y - movePoint0.y) / 2 };\r\n let downCenter = { x: downPoint0.x + (downPoint1.x - downPoint0.x) / 2, y: downPoint0.y + (downPoint1.y - downPoint0.y) / 2 };\r\n let tx = this._downX || 0;\r\n let ty = this._downY || 0;\r\n let zoomLevel = this._downScale;\r\n let xx = moveCenter.x - (-tx + downCenter.x) / zoomLevel * level;\r\n let yy = moveCenter.y - (-ty + downCenter.y) / zoomLevel * level;\r\n this.contents.setAll({\r\n x: xx,\r\n y: yy,\r\n scale: level\r\n });\r\n }\r\n }\r\n }\r\n}\r\nObject.defineProperty(ZoomableContainer, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"ZoomableContainer\"\r\n});\r\nObject.defineProperty(ZoomableContainer, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.classNames.concat([ZoomableContainer.className])\r\n});\r\n//# sourceMappingURL=ZoomableContainer.js.map","import { Entity } from \"../../util/Entity\";\r\n/**\r\n * Base class for gradients.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/gradients/} for more info\r\n */\r\nexport class Gradient extends Entity {\r\n _afterNew() {\r\n // Applying themes because gradient will not have parent\r\n super._afterNewApplyThemes();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getFill(_target) {\r\n return {\r\n addColorStop: (_offset, _color) => { }\r\n };\r\n }\r\n _changed() {\r\n super._changed();\r\n //if (this.isDirty(\"target\") && this.get(\"target\")) {\r\n //\tthis.get(\"target\")!.events.on(\"boundschanged\", () => {\r\n //\t});\r\n //}\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getBounds(target) {\r\n const gradientTarget = this.get(\"target\");\r\n if (gradientTarget) {\r\n let bounds = gradientTarget.globalBounds();\r\n const p0 = target.toLocal({ x: bounds.left, y: bounds.top });\r\n const p1 = target.toLocal({ x: bounds.right, y: bounds.top });\r\n const p2 = target.toLocal({ x: bounds.right, y: bounds.bottom });\r\n const p3 = target.toLocal({ x: bounds.left, y: bounds.bottom });\r\n return {\r\n left: Math.min(p0.x, p1.x, p2.x, p3.x),\r\n top: Math.min(p0.y, p1.y, p2.y, p3.y),\r\n right: Math.max(p0.x, p1.x, p2.x, p3.x),\r\n bottom: Math.max(p0.y, p1.y, p2.y, p3.y)\r\n };\r\n }\r\n return target._display.getLocalBounds();\r\n }\r\n}\r\nObject.defineProperty(Gradient, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Gradient\"\r\n});\r\nObject.defineProperty(Gradient, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Entity.classNames.concat([Gradient.className])\r\n});\r\n//# sourceMappingURL=Gradient.js.map","import { Gradient } from \"./Gradient\";\r\nimport { Color } from \"../../util/Color\";\r\nimport * as $array from \"../../util/Array\";\r\nimport * as $type from \"../../util/Type\";\r\nimport * as $math from \"../../util/Math\";\r\n/**\r\n * Linear gradient.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/gradients/} for more info\r\n */\r\nexport class LinearGradient extends Gradient {\r\n /**\r\n * @ignore\r\n */\r\n getFill(target) {\r\n const rotation = this.get(\"rotation\", 0);\r\n let bounds = this.getBounds(target);\r\n let l = bounds.left || 0;\r\n let r = bounds.right || 0;\r\n let t = bounds.top || 0;\r\n let b = bounds.bottom || 0;\r\n let cos = $math.cos(rotation);\r\n let sin = $math.sin(rotation);\r\n let w = cos * (r - l);\r\n let h = sin * (b - t);\r\n if (w == 0) {\r\n w = 1;\r\n }\r\n if (h == 0) {\r\n h = 1;\r\n }\r\n let longer = Math.max(w, h);\r\n const gradient = this._root._renderer.createLinearGradient(l, t, l + longer * cos, t + longer * sin);\r\n const stops = this.get(\"stops\");\r\n if (stops) {\r\n let i = 0;\r\n $array.each(stops, (stop) => {\r\n let offset = stop.offset;\r\n if (!$type.isNumber(offset)) {\r\n offset = i / (stops.length - 1);\r\n }\r\n let opacity = stop.opacity;\r\n if (!$type.isNumber(opacity)) {\r\n opacity = 1;\r\n }\r\n let color = stop.color;\r\n if (color) {\r\n const lighten = stop.lighten;\r\n if (lighten) {\r\n color = Color.lighten(color, lighten);\r\n }\r\n const brighten = stop.brighten;\r\n if (brighten) {\r\n color = Color.brighten(color, brighten);\r\n }\r\n gradient.addColorStop(offset, 'rgba(' + color.r + ',' + color.g + ',' + color.b + ',' + opacity + ')');\r\n }\r\n i++;\r\n });\r\n }\r\n return gradient;\r\n }\r\n}\r\nObject.defineProperty(LinearGradient, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"LinearGradient\"\r\n});\r\nObject.defineProperty(LinearGradient, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Gradient.classNames.concat([LinearGradient.className])\r\n});\r\n//# sourceMappingURL=LinearGradient.js.map","import { Container } from \"./Container\";\r\nimport { Label } from \"../../core/render/Label\";\r\nimport { p100 } from \"../../core/util/Percent\";\r\nimport { RoundedRectangle } from \"../../core/render/RoundedRectangle\";\r\nimport { Template } from \"../../core/util/Template\";\r\nimport { ListTemplate } from \"../../core/util/List\";\r\nimport { Color } from \"../../core/util/Color\";\r\nimport { Tooltip } from \"../../core/render/Tooltip\";\r\nimport { LinearGradient } from \"../../core/render/gradients/LinearGradient\";\r\nimport * as $utils from \"../../core/util/Utils\";\r\nimport * as $type from \"../../core/util/Type\";\r\n/**\r\n * Heat legend.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/legend/heat-legend/} for more info\r\n */\r\nexport class HeatLegend extends Container {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * A [[Container]] that all labels are placed in.\r\n *\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"labelContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Container.new(this._root, {}))\r\n });\r\n /**\r\n * A [[Container]] that all markers are placed in.\r\n *\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"markerContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Container.new(this._root, {}))\r\n });\r\n /**\r\n * A start [[Label]].\r\n *\r\n * @default Label.new()\r\n */\r\n Object.defineProperty(this, \"startLabel\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.labelContainer.children.push(Label.new(this._root, { themeTags: [\"start\"] }))\r\n });\r\n /**\r\n * An end [[Label]].\r\n *\r\n * @default Label.new()\r\n */\r\n Object.defineProperty(this, \"endLabel\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.labelContainer.children.push(Label.new(this._root, { themeTags: [\"end\"] }))\r\n });\r\n /**\r\n * List of rectangle elements used for default legend markers.\r\n *\r\n * @default new ListTemplate\r\n */\r\n Object.defineProperty(this, \"markers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.addDisposer(new ListTemplate(Template.new({}), () => RoundedRectangle._new(this._root, {\r\n themeTags: $utils.mergeTags(this.markers.template.get(\"themeTags\", []), [this.get(\"orientation\"), \"heatlegend\", \"marker\"])\r\n }, [this.markers.template])))\r\n });\r\n }\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"heatlegend\", this._settings.orientation]);\r\n super._afterNew();\r\n this.set(\"tooltip\", Tooltip.new(this._root, {\r\n themeTags: [\"heatlegend\"]\r\n }));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeMarker() {\r\n const marker = this.markers.make();\r\n marker.states.create(\"disabled\", {});\r\n return marker;\r\n }\r\n /**\r\n * Moves and shows tooltip at specific value.\r\n *\r\n * Can also specify optional text to show in tooltip, as well as the color.\r\n *\r\n * @param value Value\r\n * @param text Text\r\n * @param color Color\r\n */\r\n showValue(value, text, color) {\r\n const tooltip = this.getTooltip();\r\n if (tooltip && $type.isNumber(value)) {\r\n const startValue = this.get(\"startValue\", 0);\r\n const endValue = this.get(\"endValue\", 1);\r\n let c = (value - startValue) / (endValue - startValue);\r\n if (c == Infinity || c == -Infinity || isNaN(c)) {\r\n c = 0.5;\r\n }\r\n const startColor = this.get(\"startColor\");\r\n const endColor = this.get(\"endColor\");\r\n if (!text) {\r\n text = this.getNumberFormatter().format(value);\r\n }\r\n if (!color) {\r\n color = Color.interpolate(c, startColor, endColor);\r\n }\r\n tooltip.label.set(\"text\", text);\r\n let p;\r\n if (this.get(\"orientation\") == \"vertical\") {\r\n p = this.markerContainer.toGlobal({ x: 0, y: this.innerHeight() * (1 - c) });\r\n }\r\n else {\r\n p = this.markerContainer.toGlobal({ x: this.innerWidth() * c, y: 0 });\r\n }\r\n let background = tooltip.get(\"background\");\r\n if (background) {\r\n background.set(\"fill\", color);\r\n }\r\n tooltip.set(\"pointTo\", p);\r\n tooltip.show();\r\n }\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n const labelContainer = this.labelContainer;\r\n const orientation = this.get(\"orientation\");\r\n const startLabel = this.startLabel;\r\n const endLabel = this.endLabel;\r\n const tooltip = this.getTooltip();\r\n if (this.isDirty(\"orientation\")) {\r\n if (orientation == \"vertical\") {\r\n this.markerContainer.setAll({ layout: this._root.verticalLayout, height: p100 });\r\n this.set(\"layout\", this._root.horizontalLayout);\r\n startLabel.setAll({ y: p100, x: undefined, centerY: p100, centerX: p100 });\r\n endLabel.setAll({ y: 0, x: undefined, centerY: 0, centerX: p100 });\r\n labelContainer.setAll({ height: p100, width: undefined });\r\n if (tooltip) {\r\n tooltip.set(\"pointerOrientation\", \"horizontal\");\r\n }\r\n }\r\n else {\r\n this.markerContainer.setAll({ layout: this._root.horizontalLayout, width: p100 });\r\n this.set(\"layout\", this._root.verticalLayout);\r\n startLabel.setAll({ x: 0, y: undefined, centerX: 0, centerY: 0 });\r\n endLabel.setAll({ x: p100, y: undefined, centerX: p100, centerY: 0 });\r\n labelContainer.setAll({ width: p100, height: undefined });\r\n if (tooltip) {\r\n tooltip.set(\"pointerOrientation\", \"vertical\");\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"stepCount\")) {\r\n const stepCount = this.get(\"stepCount\", 1);\r\n const startColor = this.get(\"startColor\");\r\n const endColor = this.get(\"endColor\");\r\n this.markerContainer.children.clear();\r\n if (stepCount > 1) {\r\n for (let i = 0; i < stepCount; i++) {\r\n const marker = this.makeMarker();\r\n if (orientation == \"vertical\") {\r\n this.markerContainer.children.moveValue(marker, 0);\r\n }\r\n else {\r\n this.markerContainer.children.push(marker);\r\n }\r\n if (startColor && endColor) {\r\n marker.set(\"fill\", Color.interpolate(i / stepCount, startColor, endColor));\r\n }\r\n }\r\n }\r\n else if (stepCount == 1) {\r\n const marker = this.makeMarker();\r\n this.markerContainer.children.push(marker);\r\n const gradient = LinearGradient.new(this._root, { stops: [{ color: startColor }, { color: endColor }] });\r\n if (orientation == \"vertical\") {\r\n gradient.set(\"rotation\", 90);\r\n let stops = gradient.get(\"stops\");\r\n if (stops) {\r\n stops.reverse();\r\n }\r\n }\r\n else {\r\n gradient.set(\"rotation\", 0);\r\n }\r\n if (startColor && endColor) {\r\n marker.set(\"fillGradient\", gradient);\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"startText\") || this.isDirty(\"startValue\")) {\r\n startLabel.set(\"text\", this.get(\"startText\", this.getNumberFormatter().format(this.get(\"startValue\", 0))));\r\n }\r\n if (this.isDirty(\"endText\") || this.isDirty(\"endValue\")) {\r\n endLabel.set(\"text\", this.get(\"endText\", this.getNumberFormatter().format(this.get(\"endValue\", 1))));\r\n }\r\n }\r\n}\r\nObject.defineProperty(HeatLegend, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"HeatLegend\"\r\n});\r\nObject.defineProperty(HeatLegend, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.classNames.concat([HeatLegend.className])\r\n});\r\n//# sourceMappingURL=HeatLegend.js.map","import { Label } from \"./Label\";\r\nimport { Container } from \"./Container\";\r\nimport { RoundedRectangle } from \"./RoundedRectangle\";\r\nimport { Percent } from \"../util/Percent\";\r\nimport { color } from \"../util/Color\";\r\nimport * as $utils from \"../util/Utils\";\r\nimport * as $type from \"../util/Type\";\r\nimport * as $array from \"../util/Array\";\r\n/**\r\n * Editable label.\r\n *\r\n * @since 5.9.5\r\n */\r\nexport class EditableLabel extends Label {\r\n _afterNew() {\r\n super._afterNew();\r\n const input = this.children.push(Container.new(this._root, {\r\n html: \"\",\r\n isMeasured: false\r\n }));\r\n input.hide();\r\n const editOn = this.get(\"editOn\", \"click\");\r\n if (editOn != \"none\") {\r\n input.events.on(editOn, (_ev) => {\r\n // this is here just to make it interactive\r\n });\r\n this.events.on(editOn, (_ev) => {\r\n this.set(\"active\", true);\r\n });\r\n }\r\n this.setPrivate(\"input\", input);\r\n // Set background\r\n let background = this.get(\"background\");\r\n if (!background) {\r\n background = this.set(\"background\", RoundedRectangle.new(this._root, {\r\n themeTags: [\"editablelabel\", \"background\"]\r\n }));\r\n }\r\n else {\r\n background.set(\"themeTags\", [\"editablelabel\", \"background\"]);\r\n }\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n this._maybeInitTextarea();\r\n }\r\n _updateChildren() {\r\n super._updateChildren();\r\n if (this.isDirty(\"active\")) {\r\n const editing = this.get(\"active\", false);\r\n if (editing) {\r\n this._startEditing();\r\n }\r\n else {\r\n this._stopEditing();\r\n }\r\n const bg = this.get(\"background\");\r\n if (bg) {\r\n bg.set(\"active\", editing);\r\n }\r\n }\r\n ;\r\n this._syncText();\r\n this._syncStyle();\r\n }\r\n _maybeInitTextarea() {\r\n if (!this._isInited()) {\r\n const input = this.getPrivate(\"input\");\r\n if (input && input.getPrivate(\"htmlElement\")) {\r\n const el = input.getPrivate(\"htmlElement\");\r\n const textarea = el.querySelector(\".am5-editable-label\");\r\n if (textarea) {\r\n this.setPrivate(\"textarea\", textarea);\r\n // Resize textarea on keypress\r\n textarea.addEventListener(\"input\", _ev => {\r\n if (this.get(\"multiLine\") === false) {\r\n // replace line breaks with spaces for single-line labels\r\n textarea.value = textarea.value.replace(/\\n/g, \" \");\r\n }\r\n this.set(\"text\", textarea.value);\r\n this._syncStyle();\r\n });\r\n // Finish editing on blur\r\n textarea.addEventListener(\"blur\", _ev => this.set(\"active\", false));\r\n // Finish editing on ESC press\r\n if ($utils.supports(\"keyboardevents\")) {\r\n this._disposers.push($utils.addEventListener(document, \"keydown\", (ev) => {\r\n if ($utils.getEventKey(ev) == \"Escape\") {\r\n this.set(\"active\", false);\r\n }\r\n }));\r\n }\r\n // Intercept ENTER if necessary\r\n this._disposers.push($utils.addEventListener(document, \"keydown\", (ev) => {\r\n if ($utils.getEventKey(ev) == \"Enter\" && this.get(\"multiLine\") === false) {\r\n // Single-line label, save instead of breaking into new line\r\n ev.preventDefault();\r\n this.set(\"active\", false);\r\n }\r\n }));\r\n this.events.dispatch(\"inited\", {\r\n type: \"inited\",\r\n target: this\r\n });\r\n }\r\n }\r\n }\r\n }\r\n _isInited() {\r\n return this.getPrivate(\"textarea\") ? true : false;\r\n }\r\n _startEditing() {\r\n if (!this._isInited()) {\r\n this.events.once(\"inited\", () => {\r\n this._startEditing();\r\n });\r\n return;\r\n }\r\n this._text.set(\"opacity\", 0);\r\n const input = this.getPrivate(\"input\");\r\n const textarea = this.getPrivate(\"textarea\");\r\n if (textarea) {\r\n if (this.get(\"text\", \"\") == \"\") {\r\n this.set(\"text\", \" \");\r\n }\r\n input.show(0);\r\n this.setTimeout(() => {\r\n // size textarea to fit its actual content\r\n this._syncStyle();\r\n textarea.focus();\r\n }, 100);\r\n }\r\n }\r\n _stopEditing() {\r\n if (!this._isInited()) {\r\n this.events.once(\"inited\", () => {\r\n this._stopEditing();\r\n });\r\n return;\r\n }\r\n const input = this.getPrivate(\"input\");\r\n const textarea = this.getPrivate(\"textarea\");\r\n if (textarea) {\r\n this.set(\"text\", textarea.value);\r\n input.hide(0);\r\n this._text.set(\"opacity\", 1);\r\n }\r\n }\r\n _syncStyle() {\r\n const input = this.getPrivate(\"input\");\r\n const textarea = this.getPrivate(\"textarea\");\r\n if (textarea) {\r\n // Set up HTML\r\n const el = input.getPrivate(\"htmlElement\");\r\n // Reset all styles\r\n const computedStyles = window.getComputedStyle(textarea);\r\n $array.each(computedStyles, (style) => {\r\n textarea.style[style] = \"initial\";\r\n });\r\n // Remove textarea attributes\r\n textarea.style.color = this.get(\"fill\", color(0x000000)).toCSS(this.get(\"fillOpacity\", 1));\r\n textarea.style.backgroundColor = \"rgba(0, 0, 0, 0)\";\r\n textarea.style.border = \"none\";\r\n textarea.style.outline = \"none\";\r\n textarea.style.padding = \"0\";\r\n // Wrapping\r\n textarea.wrap = \"off\";\r\n textarea.style.resize = \"none\";\r\n // Place carret under mouse cursor\r\n // @todo\r\n // Size\r\n textarea.style.overflow = \"hidden\";\r\n const maxWidth = this.get(\"maxWidth\", 0) - this.get(\"paddingLeft\", 0) - this.get(\"paddingRight\", 0);\r\n if (maxWidth > 0) {\r\n textarea.style.maxWidth = maxWidth + \"px\";\r\n }\r\n else {\r\n // The actual minWidth will be set on frameend\r\n textarea.style.minWidth = \"\";\r\n }\r\n textarea.style.height = \"auto\";\r\n textarea.style.minHeight = textarea.scrollHeight + \"px\";\r\n // If width is explicitly set on a label, use it for textarea\r\n if (this.get(\"width\")) {\r\n textarea.style.width = (this.width() - this.get(\"paddingLeft\", 0) - this.get(\"paddingRight\", 0)) + \"px\";\r\n textarea.style.minWidth = \"\";\r\n }\r\n // Line height\r\n const lineHeight = this.get(\"lineHeight\");\r\n if (!lineHeight) {\r\n textarea.style.lineHeight = \"1.2\";\r\n }\r\n else if (lineHeight instanceof Percent) {\r\n textarea.style.lineHeight = lineHeight.value + \"\";\r\n }\r\n else if ($type.isNumber(lineHeight)) {\r\n textarea.style.lineHeight = lineHeight + \"\";\r\n }\r\n // Font stuff\r\n let fontFamily = this.get(\"fontFamily\");\r\n if (!fontFamily) {\r\n fontFamily = getComputedStyle(input.getPrivate(\"htmlElement\"), \"font-family\").getPropertyValue(\"font-family\");\r\n }\r\n textarea.style.fontFamily = fontFamily;\r\n let fontSize = this.get(\"fontSize\");\r\n if (!fontSize) {\r\n fontSize = getComputedStyle(input.getPrivate(\"htmlElement\"), \"font-size\").getPropertyValue(\"font-size\");\r\n }\r\n else if ($type.isNumber(fontSize)) {\r\n fontSize = fontSize + \"px\";\r\n }\r\n else {\r\n fontSize = fontSize;\r\n }\r\n textarea.style.fontSize = fontSize;\r\n let fontWeight = this.get(\"fontWeight\");\r\n if (!fontWeight) {\r\n fontWeight = getComputedStyle(input.getPrivate(\"htmlElement\"), \"font-weight\").getPropertyValue(\"font-weight\");\r\n }\r\n else {\r\n fontWeight = fontWeight;\r\n }\r\n textarea.style.fontWeight = fontWeight;\r\n let fontStyle = this.get(\"fontStyle\");\r\n if (!fontStyle) {\r\n fontStyle = getComputedStyle(input.getPrivate(\"htmlElement\"), \"font-style\").getPropertyValue(\"font-style\");\r\n }\r\n else {\r\n fontStyle = fontStyle;\r\n }\r\n textarea.style.fontStyle = fontStyle;\r\n const oversizeBehavior = this.get(\"oversizedBehavior\");\r\n if (oversizeBehavior == \"wrap\") {\r\n textarea.style.whiteSpace = \"pre-wrap\";\r\n }\r\n else {\r\n textarea.style.whiteSpace = \"nowrap\";\r\n }\r\n // Adjust textarea postion based on textAlign setting\r\n this._root.events.on(\"frameended\", () => {\r\n if (textarea.style.minWidth == \"\") {\r\n textarea.style.minWidth = (textarea.scrollWidth + 20) + \"px\";\r\n }\r\n const textAlign = this.get(\"textAlign\", \"start\");\r\n if (textAlign == \"center\") {\r\n textarea.style.textAlign = \"center\";\r\n if (!el.style.transform.match(/translateX/) && !this.get(\"width\")) {\r\n el.style.transform += \" translateX(-50%)\";\r\n }\r\n }\r\n else if (textAlign == \"end\") {\r\n textarea.style.textAlign = \"right\";\r\n if (!el.style.transform.match(/translateX/) && !this.get(\"width\")) {\r\n el.style.transform += \" translateX(-100%)\";\r\n }\r\n }\r\n else {\r\n textarea.style.textAlign = textAlign;\r\n }\r\n });\r\n }\r\n }\r\n _syncText() {\r\n const textarea = this.getPrivate(\"textarea\");\r\n let text = this.get(\"text\", \"\");\r\n if (text == \" \") {\r\n text = \"\";\r\n }\r\n if (textarea) {\r\n textarea.value = text;\r\n }\r\n }\r\n}\r\nObject.defineProperty(EditableLabel, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"EditableLabel\"\r\n});\r\nObject.defineProperty(EditableLabel, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Label.classNames.concat([EditableLabel.className])\r\n});\r\n//# sourceMappingURL=EditableLabel.js.map","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $type from \"./Type\";\r\nimport * as $utils from \"./Utils\";\r\n/**\r\n * Returns a `Promise` which can be used to execute code after number of\r\n * milliseconds.\r\n *\r\n * @param ms Sleep duration in ms\r\n * @return Promise\r\n */\r\nexport function sleep(ms) {\r\n return new Promise((resolve, _reject) => {\r\n setTimeout(resolve, ms);\r\n });\r\n}\r\n/**\r\n * Maps time period names to their numeric representations in milliseconds.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport let timeUnitDurations = {\r\n millisecond: 1,\r\n second: 1000,\r\n minute: 60000,\r\n hour: 3600000,\r\n day: 86400000,\r\n week: 604800000,\r\n month: 365.242 / 12 * 86400000,\r\n year: 31536000000\r\n};\r\n/**\r\n * Returns the next time unit that goes after source `unit`.\r\n *\r\n * E.g. \"hour\" is the next unit after \"minute\", etc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param unit Source time unit\r\n * @return Next time unit\r\n */\r\nexport function getNextUnit(unit) {\r\n switch (unit) {\r\n case \"year\":\r\n return;\r\n case \"month\":\r\n return \"year\";\r\n case \"week\":\r\n return \"month\";\r\n case \"day\":\r\n return \"month\"; // not a mistake\r\n case \"hour\":\r\n return \"day\";\r\n case \"minute\":\r\n return \"hour\";\r\n case \"second\":\r\n return \"minute\";\r\n case \"millisecond\":\r\n return \"second\";\r\n }\r\n}\r\n/**\r\n * Returns number of milliseconds in the `count` of time `unit`.\r\n *\r\n * Available units: \"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"week\",\r\n * \"month\", and \"year\".\r\n *\r\n * @param unit Time unit\r\n * @param count Number of units\r\n * @return Milliseconds\r\n */\r\nexport function getDuration(unit, count) {\r\n if (count == null) {\r\n count = 1;\r\n }\r\n return timeUnitDurations[unit] * count;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function getIntervalDuration(interval) {\r\n if (interval) {\r\n return timeUnitDurations[interval.timeUnit] * interval.count;\r\n }\r\n return 0;\r\n}\r\nexport function getDateIntervalDuration(interval, date, firstDateOfWeek, utc, timezone) {\r\n const unit = interval.timeUnit;\r\n const count = interval.count;\r\n if (unit == \"hour\" || unit == \"minute\" || unit == \"second\" || unit == \"millisecond\") {\r\n return timeUnitDurations[interval.timeUnit] * interval.count;\r\n }\r\n else {\r\n const firstTime = round(new Date(date.getTime()), unit, count, firstDateOfWeek, utc, undefined, timezone).getTime();\r\n let lastTime = firstTime + count * getDuration(unit) * 1.05;\r\n lastTime = round(new Date(lastTime), unit, 1, firstDateOfWeek, utc, undefined, timezone).getTime();\r\n return lastTime - firstTime;\r\n }\r\n}\r\n/**\r\n * Returns current `Date` object.\r\n *\r\n * @return Current date\r\n */\r\nexport function now() {\r\n return new Date();\r\n}\r\n/**\r\n * Returns current timestamp.\r\n *\r\n * @return Current timestamp\r\n */\r\nexport function getTime() {\r\n return now().getTime();\r\n}\r\n/**\r\n * Returns a copy of the `Date` object.\r\n *\r\n * @param date Source date\r\n * @return Copy\r\n */\r\nexport function copy(date) {\r\n return new Date(date.getTime()); // todo: check if this is ok. new Date(date) used to strip milliseconds on FF in v3\r\n}\r\n/**\r\n * Checks if the `unit` part of two `Date` objects do not match. Two dates\r\n * represent a \"range\" of time, rather the same time date.\r\n *\r\n * @param timeOne timestamp\r\n * @param timeTwo timestamp\r\n * @param unit Time unit to check\r\n * @return Range?\r\n */\r\nexport function checkChange(timeOne, timeTwo, unit, utc, timezone) {\r\n // quick\r\n if ((timeTwo - timeOne) > getDuration(unit, 1.2)) {\r\n return true;\r\n }\r\n let dateOne = new Date(timeOne);\r\n let dateTwo = new Date(timeTwo);\r\n if (timezone) {\r\n dateOne = timezone.convertLocal(dateOne);\r\n dateTwo = timezone.convertLocal(dateTwo);\r\n }\r\n let timeZoneOffset1 = 0;\r\n let timeZoneOffset2 = 0;\r\n if (!utc && unit != \"millisecond\") {\r\n timeZoneOffset1 = dateOne.getTimezoneOffset();\r\n dateOne.setUTCMinutes(dateOne.getUTCMinutes() - timeZoneOffset1);\r\n timeZoneOffset2 = dateTwo.getTimezoneOffset();\r\n dateTwo.setUTCMinutes(dateTwo.getUTCMinutes() - timeZoneOffset2);\r\n }\r\n let changed = false;\r\n switch (unit) {\r\n case \"year\":\r\n if (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"month\":\r\n if (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\r\n changed = true;\r\n }\r\n else if (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"day\":\r\n if (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\r\n changed = true;\r\n }\r\n else if (dateOne.getUTCDate() != dateTwo.getUTCDate()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"hour\":\r\n if (dateOne.getUTCHours() != dateTwo.getUTCHours()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"minute\":\r\n if (dateOne.getUTCMinutes() != dateTwo.getUTCMinutes()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"second\":\r\n if (dateOne.getUTCSeconds() != dateTwo.getUTCSeconds()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"millisecond\":\r\n if (dateOne.getTime() != dateTwo.getTime()) {\r\n changed = true;\r\n }\r\n break;\r\n }\r\n if (changed) {\r\n return changed;\r\n }\r\n let nextUnit = getNextUnit(unit);\r\n if (nextUnit) {\r\n return checkChange(timeOne, timeTwo, nextUnit, utc, timezone);\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Adds `count` of time `unit` to the source date. Returns a modified `Date` object.\r\n *\r\n * @param date Source date\r\n * @param unit Time unit\r\n * @param count Number of units to add\r\n * @return Modified date\r\n */\r\nexport function add(date, unit, count, utc, timezone) {\r\n let timeZoneOffset = 0;\r\n if (!utc && unit != \"millisecond\") {\r\n timeZoneOffset = date.getTimezoneOffset();\r\n if (timezone) {\r\n timeZoneOffset -= timezone.offsetUTC(date);\r\n }\r\n date.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\r\n }\r\n switch (unit) {\r\n case \"day\":\r\n let day = date.getUTCDate();\r\n date.setUTCDate(day + count);\r\n break;\r\n case \"second\":\r\n let seconds = date.getUTCSeconds();\r\n date.setUTCSeconds(seconds + count);\r\n break;\r\n case \"millisecond\":\r\n let milliseconds = date.getUTCMilliseconds();\r\n date.setUTCMilliseconds(milliseconds + count);\r\n break;\r\n case \"hour\":\r\n let hours = date.getUTCHours();\r\n date.setUTCHours(hours + count);\r\n break;\r\n case \"minute\":\r\n let minutes = date.getUTCMinutes();\r\n date.setUTCMinutes(minutes + count);\r\n break;\r\n case \"year\":\r\n let year = date.getUTCFullYear();\r\n date.setUTCFullYear(year + count);\r\n break;\r\n case \"month\":\r\n const endDays = date.getUTCDate();\r\n const startDays = new Date(date.getUTCFullYear(), date.getUTCMonth(), 0).getUTCDate();\r\n let month = date.getUTCMonth();\r\n if (endDays > startDays) {\r\n date.setUTCMonth(month + count, startDays);\r\n }\r\n else {\r\n date.setUTCMonth(month + count);\r\n }\r\n break;\r\n case \"week\":\r\n let wday = date.getUTCDate();\r\n date.setUTCDate(wday + count * 7);\r\n break;\r\n }\r\n if (!utc && unit != \"millisecond\") {\r\n date.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\r\n if (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\r\n let newTimeZoneOffset = date.getTimezoneOffset();\r\n if (timezone) {\r\n newTimeZoneOffset += timezone.offsetUTC(date);\r\n }\r\n if (newTimeZoneOffset != timeZoneOffset) {\r\n let diff = newTimeZoneOffset - timeZoneOffset;\r\n date.setUTCMinutes(date.getUTCMinutes() + diff);\r\n // solves issues if new time falls back to old time zone\r\n if (date.getTimezoneOffset() != newTimeZoneOffset) {\r\n date.setUTCMinutes(date.getUTCMinutes() - diff);\r\n }\r\n }\r\n }\r\n }\r\n return date;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function roun(time, unit, count, root, firstTime) {\r\n let firstDate;\r\n if (firstTime != null) {\r\n firstDate = new Date(firstTime);\r\n }\r\n return round(new Date(time), unit, count, root.locale.firstDayOfWeek, root.utc, firstDate, root.timezone).getTime();\r\n}\r\n/**\r\n * \"Rounds\" the date to specific time unit.\r\n *\r\n * @param date Source date\r\n * @param unit Time unit\r\n * @param count Number of units to round to\r\n * @param firstDateOfWeek First day of week\r\n * @param utc Use UTC timezone\r\n * @param firstDate First date to round to\r\n * @param roundMinutes Minutes to round to (some timezones use non-whole hour)\r\n * @param timezone Use specific named timezone when rounding\r\n * @return New date\r\n */\r\nexport function round(date, unit, count, firstDateOfWeek, utc, firstDate, timezone) {\r\n if (!timezone || utc) {\r\n let timeZoneOffset = 0;\r\n if (!utc && unit != \"millisecond\") {\r\n timeZoneOffset = date.getTimezoneOffset();\r\n date.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\r\n }\r\n switch (unit) {\r\n case \"day\":\r\n let day = date.getUTCDate();\r\n if (count > 1) {\r\n //\tday = Math.floor(day / count) * count;\r\n if (firstDate) {\r\n firstDate = round(firstDate, \"day\", 1);\r\n let difference = date.getTime() - firstDate.getTime();\r\n let unitCount = Math.floor(difference / getDuration(\"day\") / count);\r\n let duration = getDuration(\"day\", unitCount * count);\r\n date.setTime(firstDate.getTime() + duration - timeZoneOffset * getDuration(\"minute\"));\r\n }\r\n }\r\n else {\r\n date.setUTCDate(day);\r\n }\r\n date.setUTCHours(0, 0, 0, 0);\r\n break;\r\n case \"second\":\r\n let seconds = date.getUTCSeconds();\r\n if (count > 1) {\r\n seconds = Math.floor(seconds / count) * count;\r\n }\r\n date.setUTCSeconds(seconds, 0);\r\n break;\r\n case \"millisecond\":\r\n if (count == 1) {\r\n return date; // much better for perf!\r\n }\r\n let milliseconds = date.getUTCMilliseconds();\r\n milliseconds = Math.floor(milliseconds / count) * count;\r\n date.setUTCMilliseconds(milliseconds);\r\n break;\r\n case \"hour\":\r\n let hours = date.getUTCHours();\r\n if (count > 1) {\r\n hours = Math.floor(hours / count) * count;\r\n }\r\n date.setUTCHours(hours, 0, 0, 0);\r\n break;\r\n case \"minute\":\r\n let minutes = date.getUTCMinutes();\r\n if (count > 1) {\r\n minutes = Math.floor(minutes / count) * count;\r\n }\r\n date.setUTCMinutes(minutes, 0, 0);\r\n break;\r\n case \"month\":\r\n let month = date.getUTCMonth();\r\n if (count > 1) {\r\n month = Math.floor(month / count) * count;\r\n }\r\n date.setUTCMonth(month, 1);\r\n date.setUTCHours(0, 0, 0, 0);\r\n break;\r\n case \"year\":\r\n let year = date.getUTCFullYear();\r\n if (count > 1) {\r\n year = Math.floor(year / count) * count;\r\n }\r\n date.setUTCFullYear(year, 0, 1);\r\n date.setUTCHours(0, 0, 0, 0);\r\n break;\r\n case \"week\":\r\n if (count > 1) {\r\n if (firstDate) {\r\n firstDate = round(firstDate, \"week\", 1);\r\n let difference = date.getTime() - firstDate.getTime();\r\n let unitCount = Math.floor(difference / getDuration(\"week\") / count);\r\n let duration = getDuration(\"week\", unitCount * count);\r\n date.setTime(firstDate.getTime() + duration - timeZoneOffset * getDuration(\"minute\"));\r\n }\r\n }\r\n let wday = date.getUTCDate();\r\n let weekDay = date.getUTCDay();\r\n if (!$type.isNumber(firstDateOfWeek)) {\r\n firstDateOfWeek = 1;\r\n }\r\n if (weekDay >= firstDateOfWeek) {\r\n wday = wday - weekDay + firstDateOfWeek;\r\n }\r\n else {\r\n wday = wday - (7 + weekDay) + firstDateOfWeek;\r\n }\r\n date.setUTCDate(wday);\r\n date.setUTCHours(0, 0, 0, 0);\r\n break;\r\n }\r\n if (!utc && unit != \"millisecond\") {\r\n date.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\r\n if (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\r\n let newTimeZoneOffset = date.getTimezoneOffset();\r\n if (newTimeZoneOffset != timeZoneOffset) {\r\n let diff = newTimeZoneOffset - timeZoneOffset;\r\n date.setUTCMinutes(date.getUTCMinutes() + diff);\r\n }\r\n }\r\n }\r\n return date;\r\n }\r\n else {\r\n if (isNaN(date.getTime())) {\r\n return date;\r\n }\r\n let tzoffset = timezone.offsetUTC(date);\r\n let timeZoneOffset = date.getTimezoneOffset();\r\n let parsedDate = timezone.parseDate(date);\r\n let year = parsedDate.year;\r\n let month = parsedDate.month;\r\n let day = parsedDate.day;\r\n let hour = parsedDate.hour;\r\n let minute = parsedDate.minute;\r\n let second = parsedDate.second;\r\n let millisecond = parsedDate.millisecond;\r\n let weekday = parsedDate.weekday;\r\n let offsetDif = tzoffset - timeZoneOffset;\r\n switch (unit) {\r\n case \"day\":\r\n if (count > 1 && firstDate) {\r\n firstDate = round(firstDate, \"day\", 1, firstDateOfWeek, utc, undefined, timezone);\r\n let difference = date.getTime() - firstDate.getTime();\r\n let unitCount = Math.floor(difference / getDuration(\"day\") / count);\r\n let duration = getDuration(\"day\", unitCount * count);\r\n date.setTime(firstDate.getTime() + duration);\r\n parsedDate = timezone.parseDate(date);\r\n year = parsedDate.year;\r\n month = parsedDate.month;\r\n day = parsedDate.day;\r\n }\r\n hour = 0;\r\n minute = offsetDif;\r\n second = 0;\r\n millisecond = 0;\r\n break;\r\n case \"second\":\r\n minute += offsetDif;\r\n if (count > 1) {\r\n second = Math.floor(second / count) * count;\r\n }\r\n millisecond = 0;\r\n break;\r\n case \"millisecond\":\r\n minute += offsetDif;\r\n if (count > 1) {\r\n millisecond = Math.floor(millisecond / count) * count;\r\n }\r\n break;\r\n case \"hour\":\r\n if (count > 1) {\r\n hour = Math.floor(hour / count) * count;\r\n }\r\n minute = offsetDif;\r\n second = 0;\r\n millisecond = 0;\r\n break;\r\n case \"minute\":\r\n if (count > 1) {\r\n minute = Math.floor(minute / count) * count;\r\n }\r\n minute += offsetDif;\r\n second = 0;\r\n millisecond = 0;\r\n break;\r\n case \"month\":\r\n if (count > 1) {\r\n month = Math.floor(month / count) * count;\r\n }\r\n day = 1;\r\n hour = 0;\r\n minute = offsetDif;\r\n second = 0;\r\n millisecond = 0;\r\n break;\r\n case \"year\":\r\n if (count > 1) {\r\n year = Math.floor(year / count) * count;\r\n }\r\n month = 0;\r\n day = 1;\r\n hour = 0;\r\n minute = offsetDif;\r\n second = 0;\r\n millisecond = 0;\r\n break;\r\n case \"week\":\r\n if (!$type.isNumber(firstDateOfWeek)) {\r\n firstDateOfWeek = 1;\r\n }\r\n if (weekday >= firstDateOfWeek) {\r\n day = day - weekday + firstDateOfWeek;\r\n }\r\n else {\r\n day = day - (7 + weekday) + firstDateOfWeek;\r\n }\r\n hour = 0;\r\n minute = offsetDif;\r\n second = 0;\r\n millisecond = 0;\r\n break;\r\n }\r\n date = new Date(year, month, day, hour, minute, second, millisecond);\r\n let newTimeZoneOffset = date.getTimezoneOffset();\r\n let newTzoffset = timezone.offsetUTC(date);\r\n let newDiff = newTzoffset - newTimeZoneOffset;\r\n if (newDiff != offsetDif) {\r\n date.setTime(date.getTime() + (newDiff - offsetDif) * 60000);\r\n }\r\n return date;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function chooseInterval(index, duration, gridCount, intervals) {\r\n let gridInterval = intervals[index];\r\n let intervalDuration = getIntervalDuration(gridInterval);\r\n let lastIndex = intervals.length - 1;\r\n if (index >= lastIndex) {\r\n return Object.assign({}, intervals[lastIndex]);\r\n }\r\n let count = Math.ceil(duration / intervalDuration);\r\n if (duration < intervalDuration && index > 0) {\r\n return Object.assign({}, intervals[index - 1]);\r\n }\r\n if (count <= gridCount) {\r\n return Object.assign({}, intervals[index]);\r\n }\r\n else {\r\n if (index + 1 < intervals.length) {\r\n return chooseInterval(index + 1, duration, gridCount, intervals);\r\n }\r\n else {\r\n return Object.assign({}, intervals[index]);\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function getUnitValue(date, unit) {\r\n switch (unit) {\r\n case \"day\":\r\n return date.getDate();\r\n case \"second\":\r\n return date.getSeconds();\r\n case \"millisecond\":\r\n return date.getMilliseconds();\r\n case \"hour\":\r\n return date.getHours();\r\n case \"minute\":\r\n return date.getMinutes();\r\n case \"month\":\r\n return date.getMonth();\r\n case \"year\":\r\n return date.getFullYear();\r\n case \"week\":\r\n return $utils.getWeek(date);\r\n }\r\n}\r\n//# sourceMappingURL=Time.js.map","import { __awaiter } from \"tslib\";\r\nimport { Component } from \"../../core/render/Component\";\r\nimport { List } from \"../../core/util/List\";\r\nimport { Color } from \"../../core/util/Color\";\r\nimport { percentInterpolate } from \"../../core/util/Animation\";\r\nimport { Percent } from \"../../core/util/Percent\";\r\nimport { p100 } from \"../../core/util/Percent\";\r\nimport { Container } from \"../../core/render/Container\";\r\nimport { Label } from \"../../core/render/Label\";\r\n//import { Animations } from \"../../core/util/Animation\";\r\nimport * as $array from \"../../core/util/Array\";\r\nimport * as $type from \"../../core/util/Type\";\r\nimport * as $time from \"../../core/util/Time\";\r\n/**\r\n * A base class for all series.\r\n */\r\nexport class Series extends Component {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_aggregatesCalculated\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_selectionAggregatesCalculated\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_dataProcessed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_psi\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_pei\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A chart series belongs to.\r\n */\r\n Object.defineProperty(this, \"chart\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * List of bullets to use for the series.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/bullets/} for more info\r\n */\r\n Object.defineProperty(this, \"bullets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new List()\r\n });\r\n /**\r\n * A [[Container]] series' bullets are stored in.\r\n *\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"bulletsContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.new(this._root, { width: p100, height: p100, position: \"absolute\" })\r\n });\r\n }\r\n _afterNew() {\r\n this.valueFields.push(\"value\", \"customValue\");\r\n super._afterNew();\r\n this.setPrivate(\"customData\", {});\r\n this._disposers.push(this.bullets.events.onAll((change) => {\r\n if (change.type === \"clear\") {\r\n this._handleBullets(this.dataItems);\r\n }\r\n else if (change.type === \"push\") {\r\n this._handleBullets(this.dataItems);\r\n }\r\n else if (change.type === \"setIndex\") {\r\n this._handleBullets(this.dataItems);\r\n }\r\n else if (change.type === \"insertIndex\") {\r\n this._handleBullets(this.dataItems);\r\n }\r\n else if (change.type === \"removeIndex\") {\r\n this._handleBullets(this.dataItems);\r\n }\r\n else if (change.type === \"moveIndex\") {\r\n this._handleBullets(this.dataItems);\r\n }\r\n else {\r\n throw new Error(\"Unknown IListEvent type\");\r\n }\r\n }));\r\n }\r\n _dispose() {\r\n this.bulletsContainer.dispose(); // can be in a different parent\r\n super._dispose();\r\n }\r\n startIndex() {\r\n let len = this.dataItems.length;\r\n return Math.min(this.getPrivate(\"startIndex\", 0), len);\r\n }\r\n endIndex() {\r\n let len = this.dataItems.length;\r\n return Math.min(this.getPrivate(\"endIndex\", len), len);\r\n }\r\n _handleBullets(dataItems) {\r\n $array.each(dataItems, (dataItem) => {\r\n const bullets = dataItem.bullets;\r\n if (bullets) {\r\n $array.each(bullets, (bullet) => {\r\n bullet.dispose();\r\n });\r\n dataItem.bullets = undefined;\r\n }\r\n });\r\n this.markDirtyValues();\r\n }\r\n /**\r\n * Looks up and returns a data item by its ID.\r\n *\r\n * @param id ID\r\n * @return Data item\r\n */\r\n getDataItemById(id) {\r\n return $array.find(this.dataItems, (dataItem) => {\r\n return dataItem.get(\"id\") == id;\r\n });\r\n }\r\n _makeBullets(dataItem) {\r\n if (this._shouldMakeBullet(dataItem)) {\r\n dataItem.bullets = [];\r\n this.bullets.each((bulletFunction) => {\r\n this._makeBullet(dataItem, bulletFunction);\r\n });\r\n }\r\n }\r\n _shouldMakeBullet(_dataItem) {\r\n return true;\r\n }\r\n _makeBullet(dataItem, bulletFunction, index) {\r\n const bullet = bulletFunction(this._root, this, dataItem);\r\n if (bullet) {\r\n bullet._index = index;\r\n this._makeBulletReal(dataItem, bullet);\r\n }\r\n return bullet;\r\n }\r\n _makeBulletReal(dataItem, bullet) {\r\n let sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n sprite._setDataItem(dataItem);\r\n sprite.setRaw(\"position\", \"absolute\");\r\n this.bulletsContainer.children.push(sprite);\r\n }\r\n bullet.series = this;\r\n dataItem.bullets.push(bullet);\r\n }\r\n /**\r\n * Adds bullet directly to a data item.\r\n *\r\n * Please note: method accepts [[Bullet]] instance as a paramter, not a\r\n * reference to a function.\r\n *\r\n * You should add Bullet instance, not a method like you do it on series.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/bullets/#Adding_directly_to_data_item} for more info\r\n * @since 5.6.0\r\n *\r\n * @param dataItem Target data item\r\n * @param bullet Bullet instance\r\n */\r\n addBullet(dataItem, bullet) {\r\n if (!dataItem.bullets) {\r\n dataItem.bullets = [];\r\n }\r\n if (bullet) {\r\n this._makeBulletReal(dataItem, bullet);\r\n }\r\n }\r\n _clearDirty() {\r\n super._clearDirty();\r\n this._aggregatesCalculated = false;\r\n this._selectionAggregatesCalculated = false;\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n let startIndex = this.startIndex();\r\n let endIndex = this.endIndex();\r\n if (this.isDirty(\"name\")) {\r\n this.updateLegendValue();\r\n }\r\n if (this.isDirty(\"heatRules\")) {\r\n this._valuesDirty = true;\r\n }\r\n if (this.isPrivateDirty(\"baseValueSeries\")) {\r\n const baseValueSeries = this.getPrivate(\"baseValueSeries\");\r\n if (baseValueSeries) {\r\n this._disposers.push(baseValueSeries.onPrivate(\"startIndex\", () => {\r\n this.markDirtyValues();\r\n }));\r\n }\r\n }\r\n const calculateAggregates = this.get(\"calculateAggregates\");\r\n if (calculateAggregates) {\r\n if (this._valuesDirty && !this._dataProcessed) {\r\n if (!this._aggregatesCalculated) {\r\n this._calculateAggregates(0, this.dataItems.length);\r\n this._aggregatesCalculated = true;\r\n if (startIndex != 0) {\r\n this._psi = undefined;\r\n }\r\n }\r\n }\r\n if ((this._psi != startIndex || this._pei != endIndex || this.isPrivateDirty(\"adjustedStartIndex\")) && !this._selectionAggregatesCalculated) {\r\n if (startIndex === 0 && endIndex === this.dataItems.length && this._aggregatesCalculated) {\r\n // void\r\n }\r\n else {\r\n this._calculateAggregates(startIndex, endIndex);\r\n }\r\n this._selectionAggregatesCalculated = true;\r\n }\r\n }\r\n if (this.isDirty(\"tooltip\")) {\r\n let tooltip = this.get(\"tooltip\");\r\n if (tooltip) {\r\n tooltip.hide(0);\r\n tooltip.set(\"tooltipTarget\", this);\r\n }\r\n }\r\n if (this.isDirty(\"fill\") || this.isDirty(\"stroke\")) {\r\n let markerRectangle;\r\n const legendDataItem = this.get(\"legendDataItem\");\r\n if (legendDataItem) {\r\n markerRectangle = legendDataItem.get(\"markerRectangle\");\r\n if (markerRectangle) {\r\n if (this.isVisible()) {\r\n if (this.isDirty(\"stroke\")) {\r\n let stroke = this.get(\"stroke\");\r\n markerRectangle.set(\"stroke\", stroke);\r\n }\r\n if (this.isDirty(\"fill\")) {\r\n let fill = this.get(\"fill\");\r\n markerRectangle.set(\"fill\", fill);\r\n }\r\n }\r\n }\r\n }\r\n this.updateLegendMarker(undefined);\r\n }\r\n if (this.bullets.length > 0) {\r\n let startIndex = this.startIndex();\r\n let endIndex = this.endIndex();\r\n if (endIndex < this.dataItems.length) {\r\n endIndex++;\r\n }\r\n for (let i = startIndex; i < endIndex; i++) {\r\n let dataItem = this.dataItems[i];\r\n if (!dataItem.bullets) {\r\n this._makeBullets(dataItem);\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _adjustStartIndex(index) {\r\n return index;\r\n }\r\n _calculateAggregates(startIndex, endIndex) {\r\n let fields = this._valueFields;\r\n if (!fields) {\r\n throw new Error(\"No value fields are set for the series.\");\r\n }\r\n const sum = {};\r\n const absSum = {};\r\n const count = {};\r\n const low = {};\r\n const high = {};\r\n const open = {};\r\n const close = {};\r\n const average = {};\r\n const previous = {};\r\n $array.each(fields, (key) => {\r\n sum[key] = 0;\r\n absSum[key] = 0;\r\n count[key] = 0;\r\n });\r\n $array.each(fields, (key) => {\r\n let change = key + \"Change\";\r\n let changePercent = key + \"ChangePercent\";\r\n let changePrevious = key + \"ChangePrevious\";\r\n let changePreviousPercent = key + \"ChangePreviousPercent\";\r\n let changeSelection = key + \"ChangeSelection\";\r\n let changeSelectionPercent = key + \"ChangeSelectionPercent\";\r\n let openKey = \"valueY\";\r\n if (key == \"valueX\" || key == \"openValueX\" || key == \"lowValueX\" || key == \"highValueX\") {\r\n openKey = \"valueX\";\r\n }\r\n const baseValueSeries = this.getPrivate(\"baseValueSeries\");\r\n const adjustedStartIndex = this.getPrivate(\"adjustedStartIndex\", startIndex);\r\n for (let i = adjustedStartIndex; i < endIndex; i++) {\r\n const dataItem = this.dataItems[i];\r\n if (dataItem) {\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n count[key]++;\r\n sum[key] += value;\r\n absSum[key] += Math.abs(value);\r\n average[key] = sum[key] / count[key];\r\n if (low[key] > value || low[key] == null) {\r\n low[key] = value;\r\n }\r\n if (high[key] < value || high[key] == null) {\r\n high[key] = value;\r\n }\r\n close[key] = value;\r\n if (open[key] == null) {\r\n open[key] = value;\r\n previous[key] = value;\r\n if (baseValueSeries) {\r\n open[openKey] = baseValueSeries._getBase(openKey);\r\n }\r\n }\r\n if (startIndex === 0) {\r\n dataItem.setRaw((change), value - open[openKey]);\r\n dataItem.setRaw((changePercent), (value - open[openKey]) / open[openKey] * 100);\r\n }\r\n dataItem.setRaw((changePrevious), value - previous[openKey]);\r\n dataItem.setRaw((changePreviousPercent), (value - previous[openKey]) / previous[openKey] * 100);\r\n dataItem.setRaw((changeSelection), value - open[openKey]);\r\n dataItem.setRaw((changeSelectionPercent), (value - open[openKey]) / open[openKey] * 100);\r\n previous[key] = value;\r\n }\r\n }\r\n }\r\n if (endIndex < this.dataItems.length - 1) {\r\n const dataItem = this.dataItems[endIndex];\r\n if (dataItem) {\r\n let value = dataItem.get(key);\r\n dataItem.setRaw((changePrevious), value - previous[openKey]);\r\n dataItem.setRaw((changePreviousPercent), (value - previous[openKey]) / previous[openKey] * 100);\r\n dataItem.setRaw((changeSelection), value - open[openKey]);\r\n dataItem.setRaw((changeSelectionPercent), (value - open[openKey]) / open[openKey] * 100);\r\n }\r\n }\r\n if (startIndex > 0) {\r\n startIndex--;\r\n }\r\n delete previous[key];\r\n for (let i = startIndex; i < adjustedStartIndex; i++) {\r\n const dataItem = this.dataItems[i];\r\n if (dataItem) {\r\n let value = dataItem.get(key);\r\n if (previous[key] == null) {\r\n previous[key] = value;\r\n }\r\n if (value != null) {\r\n dataItem.setRaw((changePrevious), value - previous[openKey]);\r\n dataItem.setRaw((changePreviousPercent), (value - previous[openKey]) / previous[openKey] * 100);\r\n dataItem.setRaw((changeSelection), value - open[openKey]);\r\n dataItem.setRaw((changeSelectionPercent), (value - open[openKey]) / open[openKey] * 100);\r\n previous[key] = value;\r\n }\r\n }\r\n }\r\n });\r\n $array.each(fields, (key) => {\r\n this.setPrivate((key + \"AverageSelection\"), average[key]);\r\n this.setPrivate((key + \"CountSelection\"), count[key]);\r\n this.setPrivate((key + \"SumSelection\"), sum[key]);\r\n this.setPrivate((key + \"AbsoluteSumSelection\"), absSum[key]);\r\n this.setPrivate((key + \"LowSelection\"), low[key]);\r\n this.setPrivate((key + \"HighSelection\"), high[key]);\r\n this.setPrivate((key + \"OpenSelection\"), open[key]);\r\n this.setPrivate((key + \"CloseSelection\"), close[key]);\r\n });\r\n if (startIndex === 0 && endIndex === this.dataItems.length) {\r\n $array.each(fields, (key) => {\r\n this.setPrivate((key + \"Average\"), average[key]);\r\n this.setPrivate((key + \"Count\"), count[key]);\r\n this.setPrivate((key + \"Sum\"), sum[key]);\r\n this.setPrivate((key + \"AbsoluteSum\"), absSum[key]);\r\n this.setPrivate((key + \"Low\"), low[key]);\r\n this.setPrivate((key + \"High\"), high[key]);\r\n this.setPrivate((key + \"Open\"), open[key]);\r\n this.setPrivate((key + \"Close\"), close[key]);\r\n });\r\n }\r\n }\r\n _updateChildren() {\r\n super._updateChildren();\r\n this._psi = this.startIndex();\r\n this._pei = this.endIndex();\r\n if (this.isDirty(\"visible\")) {\r\n this.bulletsContainer.set(\"visible\", this.get(\"visible\"));\r\n }\r\n // Apply heat rules\r\n const rules = this.get(\"heatRules\");\r\n if (this._valuesDirty && rules && rules.length > 0) {\r\n $array.each(rules, (rule) => {\r\n const minValue = rule.minValue || this.getPrivate((rule.dataField + \"Low\")) || 0;\r\n const maxValue = rule.maxValue || this.getPrivate((rule.dataField + \"High\")) || 0;\r\n $array.each(rule.target._entities, (target) => {\r\n const value = target.dataItem.get(rule.dataField);\r\n if (!$type.isNumber(value)) {\r\n if (rule.neutral) {\r\n target.set(rule.key, rule.neutral);\r\n }\r\n const states = target.states;\r\n if (states) {\r\n const defaultState = states.lookup(\"default\");\r\n if (defaultState && rule.neutral) {\r\n defaultState.set(rule.key, rule.neutral);\r\n }\r\n }\r\n if (!rule.customFunction) {\r\n return;\r\n }\r\n }\r\n if (rule.customFunction) {\r\n rule.customFunction.call(this, target, minValue, maxValue, value);\r\n }\r\n else {\r\n let percent;\r\n if (rule.logarithmic) {\r\n percent = (Math.log(value) * Math.LOG10E - Math.log(minValue) * Math.LOG10E) / ((Math.log(maxValue) * Math.LOG10E - Math.log(minValue) * Math.LOG10E));\r\n }\r\n else {\r\n percent = (value - minValue) / (maxValue - minValue);\r\n }\r\n if ($type.isNumber(value) && (!$type.isNumber(percent) || Math.abs(percent) == Infinity)) {\r\n percent = 0.5;\r\n }\r\n // fixes problems if all values are the same\r\n let propertyValue;\r\n if ($type.isNumber(rule.min)) {\r\n propertyValue = rule.min + (rule.max - rule.min) * percent;\r\n }\r\n else if (rule.min instanceof Color) {\r\n propertyValue = Color.interpolate(percent, rule.min, rule.max);\r\n }\r\n else if (rule.min instanceof Percent) {\r\n propertyValue = percentInterpolate(percent, rule.min, rule.max);\r\n }\r\n target.set(rule.key, propertyValue);\r\n const states = target.states;\r\n if (states) {\r\n const defaultState = states.lookup(\"default\");\r\n if (defaultState) {\r\n defaultState.set(rule.key, propertyValue);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n }\r\n if (this.get(\"visible\")) {\r\n let count = this.dataItems.length;\r\n let startIndex = this.startIndex();\r\n let endIndex = this.endIndex();\r\n if (endIndex < count) {\r\n endIndex++;\r\n }\r\n if (startIndex > 0) {\r\n startIndex--;\r\n }\r\n for (let i = 0; i < startIndex; i++) {\r\n this._hideBullets(this.dataItems[i]);\r\n }\r\n for (let i = startIndex; i < endIndex; i++) {\r\n this._positionBullets(this.dataItems[i]);\r\n }\r\n for (let i = endIndex; i < count; i++) {\r\n this._hideBullets(this.dataItems[i]);\r\n }\r\n }\r\n }\r\n _positionBullets(dataItem) {\r\n if (dataItem.bullets) {\r\n $array.each(dataItem.bullets, (bullet) => {\r\n this._positionBullet(bullet);\r\n const sprite = bullet.get(\"sprite\");\r\n if (bullet.get(\"dynamic\")) {\r\n if (sprite) {\r\n sprite._markDirtyKey(\"fill\");\r\n sprite.markDirtySize();\r\n }\r\n if (sprite instanceof Container) {\r\n sprite.walkChildren((child) => {\r\n child._markDirtyKey(\"fill\");\r\n child.markDirtySize();\r\n if (child instanceof Label) {\r\n child.text.markDirtyText();\r\n }\r\n });\r\n }\r\n }\r\n if (sprite instanceof Label && sprite.get(\"populateText\")) {\r\n sprite.text.markDirtyText();\r\n }\r\n });\r\n }\r\n }\r\n _hideBullets(dataItem) {\r\n if (dataItem.bullets) {\r\n $array.each(dataItem.bullets, (bullet) => {\r\n let sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n sprite.setPrivate(\"visible\", false);\r\n }\r\n });\r\n }\r\n }\r\n _positionBullet(_bullet) {\r\n }\r\n _placeBulletsContainer(chart) {\r\n chart.bulletsContainer.children.moveValue(this.bulletsContainer);\r\n }\r\n _removeBulletsContainer() {\r\n const bulletsContainer = this.bulletsContainer;\r\n if (bulletsContainer.parent) {\r\n bulletsContainer.parent.children.removeValue(bulletsContainer);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n disposeDataItem(dataItem) {\r\n //super.disposeDataItem(dataItem); // does nothing\r\n const bullets = dataItem.bullets;\r\n if (bullets) {\r\n $array.each(bullets, (bullet) => {\r\n bullet.dispose();\r\n });\r\n }\r\n }\r\n _getItemReaderLabel() {\r\n return \"\";\r\n }\r\n /**\r\n * Shows series's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param duration Animation duration in milliseconds\r\n * @return Promise\r\n */\r\n showDataItem(dataItem, duration) {\r\n const _super = Object.create(null, {\r\n showDataItem: { get: () => super.showDataItem }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const promises = [_super.showDataItem.call(this, dataItem, duration)];\r\n const bullets = dataItem.bullets;\r\n if (bullets) {\r\n $array.each(bullets, (bullet) => {\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n promises.push(sprite.show(duration));\r\n }\r\n });\r\n }\r\n yield Promise.all(promises);\r\n });\r\n }\r\n /**\r\n * Hides series's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param duration Animation duration in milliseconds\r\n * @return Promise\r\n */\r\n hideDataItem(dataItem, duration) {\r\n const _super = Object.create(null, {\r\n hideDataItem: { get: () => super.hideDataItem }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const promises = [_super.hideDataItem.call(this, dataItem, duration)];\r\n const bullets = dataItem.bullets;\r\n if (bullets) {\r\n $array.each(bullets, (bullet) => {\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n promises.push(sprite.hide(duration));\r\n }\r\n });\r\n }\r\n yield Promise.all(promises);\r\n });\r\n }\r\n _sequencedShowHide(show, duration) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this.get(\"sequencedInterpolation\")) {\r\n if (!$type.isNumber(duration)) {\r\n duration = this.get(\"interpolationDuration\", 0);\r\n }\r\n if (duration > 0) {\r\n const startIndex = this.startIndex();\r\n const endIndex = this.endIndex();\r\n yield Promise.all($array.map(this.dataItems, (dataItem, i) => __awaiter(this, void 0, void 0, function* () {\r\n let realDuration = duration || 0;\r\n if (i < startIndex - 10 || i > endIndex + 10) {\r\n realDuration = 0;\r\n }\r\n //let delay = this.get(\"sequencedDelay\", 0) * i + realDuration * (i - startIndex) / (endIndex - startIndex);\r\n let delay = this.get(\"sequencedDelay\", 0) + realDuration / (endIndex - startIndex);\r\n yield $time.sleep(delay * (i - startIndex));\r\n if (show) {\r\n yield this.showDataItem(dataItem, realDuration);\r\n }\r\n else {\r\n yield this.hideDataItem(dataItem, realDuration);\r\n }\r\n })));\r\n }\r\n else {\r\n yield Promise.all($array.map(this.dataItems, (dataItem) => {\r\n if (show) {\r\n return this.showDataItem(dataItem, 0);\r\n }\r\n else {\r\n return this.hideDataItem(dataItem, 0);\r\n }\r\n }));\r\n }\r\n }\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateLegendValue(dataItem) {\r\n if (dataItem) {\r\n const legendDataItem = dataItem.get(\"legendDataItem\");\r\n if (legendDataItem) {\r\n const valueLabel = legendDataItem.get(\"valueLabel\");\r\n if (valueLabel) {\r\n const text = valueLabel.text;\r\n let txt = \"\";\r\n valueLabel._setDataItem(dataItem);\r\n txt = this.get(\"legendValueText\", text.get(\"text\", \"\"));\r\n valueLabel.set(\"text\", txt);\r\n text.markDirtyText();\r\n }\r\n const label = legendDataItem.get(\"label\");\r\n if (label) {\r\n const text = label.text;\r\n let txt = \"\";\r\n label._setDataItem(dataItem);\r\n txt = this.get(\"legendLabelText\", text.get(\"text\", \"\"));\r\n label.set(\"text\", txt);\r\n text.markDirtyText();\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateLegendMarker(_dataItem) {\r\n }\r\n _onHide() {\r\n super._onHide();\r\n const tooltip = this.getTooltip();\r\n if (tooltip) {\r\n tooltip.hide();\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n hoverDataItem(_dataItem) { }\r\n /**\r\n * @ignore\r\n */\r\n unhoverDataItem(_dataItem) { }\r\n /**\r\n * @ignore\r\n */\r\n _getBase(key) {\r\n const dataItem = this.dataItems[this.startIndex()];\r\n if (dataItem) {\r\n return dataItem.get(key);\r\n }\r\n return 0;\r\n }\r\n}\r\nObject.defineProperty(Series, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Series\"\r\n});\r\nObject.defineProperty(Series, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Component.classNames.concat([Series.className])\r\n});\r\n//# sourceMappingURL=Series.js.map","import { Series } from \"./Series\";\r\nimport { Container } from \"../../core/render/Container\";\r\nimport { Label } from \"../../core/render/Label\";\r\nimport { RoundedRectangle } from \"../../core/render/RoundedRectangle\";\r\nimport { Template } from \"../../core/util/Template\";\r\nimport { ListTemplate } from \"../../core/util/List\";\r\nimport * as $utils from \"../../core/util/Utils\";\r\n/**\r\n * A universal legend control.\r\n *\r\n * @important\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/legend/} for more info\r\n */\r\nexport class Legend extends Series {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * List of all [[Container]] elements for legend items.\r\n *\r\n * @default new ListTemplate\r\n */\r\n Object.defineProperty(this, \"itemContainers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.addDisposer(new ListTemplate(Template.new({}), () => Container._new(this._root, {\r\n themeTags: $utils.mergeTags(this.itemContainers.template.get(\"themeTags\", []), [\"legend\", \"item\"]),\r\n themeTagsSelf: $utils.mergeTags(this.itemContainers.template.get(\"themeTagsSelf\", []), [\"itemcontainer\"]),\r\n background: RoundedRectangle.new(this._root, {\r\n themeTags: $utils.mergeTags(this.itemContainers.template.get(\"themeTags\", []), [\"legend\", \"item\", \"background\"]),\r\n themeTagsSelf: $utils.mergeTags(this.itemContainers.template.get(\"themeTagsSelf\", []), [\"itemcontainer\"])\r\n })\r\n }, [this.itemContainers.template])))\r\n });\r\n /**\r\n * List of legend marker elements.\r\n *\r\n * @default new ListTemplate\r\n */\r\n Object.defineProperty(this, \"markers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.addDisposer(new ListTemplate(Template.new({}), () => Container._new(this._root, {\r\n themeTags: $utils.mergeTags(this.markers.template.get(\"themeTags\", []), [\"legend\", \"marker\"])\r\n }, [this.markers.template])))\r\n });\r\n /**\r\n * List of legend label elements.\r\n *\r\n * @default new ListTemplate