{"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/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/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?2a04","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","webpack:///./src/components/av-skeleton/inputs/AvSkeletonInput.vue?d274","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","webpack:///./src/components/av-skeleton/media-tabs/AvSkeletonMediaTabs.vue?3782","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","webpack:///./src/components/av-skeleton/structures/AvSkeletonBoard.vue?925f","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","webpack:///./src/components/av-skeleton/table/AvSkeletonTable.vue?8005","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","webpack:///./src/components/av-skeleton/vertical-nav-menu/AvSkeletonVerticalNavMenu.vue?7283","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","webpack:///./src/components/av-skeleton/charts/AvSkeletonChartBar.vue?23b8","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","webpack:///./src/components/av-skeleton/charts/AvSkeletonChartPie.vue?a747","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","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?db1a","webpack:///./src/components/av-charts/bar/AvChartBar.vue?2e5a","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/CategoryAxis.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/CategoryDateAxis.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/ValueAxis.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","webpack:///./src/components/av-charts/pie/AvChartPie.vue?cbe6","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","webpack:///./src/components/av-charts/range/AvChartRange.vue?c4d6","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","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","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","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","arguments","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","toObject","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","index","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","sr","tzl","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","one","tlh","bo","ptBr","fil","hyAm","ca","_vm","_h","$createElement","_c","_self","staticStyle","staticRenderFns","AvSkeletonCard","_Vue","_classCallCheck","_callSuper","_inherits","_createClass","Vue","__decorate","Component","components","BCard","AvIcon","component","AvSkeletonInput","AvSkeletonMediaTabs","_this","_len","_key","AvSkeletonBoard","Prop","required","AvSkeletonTable","_dec","AvCard","AvSkeletonVerticalNavMenu","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","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","end","findIndex","findIndexReverse","find","findReverse","findMap","shuffle","temporaryValue","randomIndex","currentIndex","getSortedIndex","pivot","order","getFirstSortedIndex","keepIf","keep","object","keysOrdered","hasKey","eachOrdered","ord","softCopyProperties","target","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","_settingEvents","_privateSettingEvents","getRaw","_prevSettings","_sendKeyEvent","_setRaw","stop","_privateSettings","_prevPrivateSettings","_sendPrivateKeyEvent","_setPrivateRaw","_markDirtyPrivateKey","_animationTime","getPrivate","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","_stateChanged","_entities","_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","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","getTooltip","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","fill","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","pWidth","pHeight","horizontal","vertical","childBounds","childX","childY","cl","cr","ct","cb","_contentWidth","updateContainer","_updateBounds","_addDirtyParent","html","_setHTMLContent","_positionHTMLElement","_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","ch","parentW","parentH","layerMargin","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","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","_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","_new","markers","marker","startValue","endValue","startColor","endColor","markerContainer","startLabel","endLabel","makeMarker","_maybeInitTextarea","editing","_startEditing","_stopEditing","_syncText","_syncStyle","_isInited","textarea","querySelector","computedStyles","backgroundColor","border","outline","scrollWidth","scrollHeight","getPropertyValue","oversizeBehavior","whiteSpace","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","addDisposer","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","previousBounds","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","columns","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","_itemMap","_handleRangeChange","_prepareAxisItems","_updateAxisRanges","startCategory","endCategory","otherAxis","startDataItem","endDataItem","hasValue","minorLabelsEnabled","minorGridEnabled","maxCount","frequency","_frequency","_toggleDataItem","_updateGhost","fillIndex","categoryLocation","endCategoryLocation","categoryToIndex","indexToPosition","fillEndIndex","fillEndPosition","endPosition","updateGrid","updateTick","updateFill","updateBullet","cellLocation","_axisLocation","category","axisPositionToIndex","_adjustPosition","fieldName","seriesDataItem","zoomToIndexes","MAX_SAFE_INTEGER","startTime","nextGridUnit","previousValue","previousIndex","previousUnitValue","selectedItems","skip","added","shouldAdd","_dirtyExtremes","_dirtySelectionExtremes","syncWithAxis","_syncDp","someDirty","_getMinMax","_handleSizeDirty","getMM","letter","_getSelectionMinMax","_groupData","_baseValue","numberFormat","formatter","selectionMin","selectionMax","differencePower","minLog","_minLogAdjusted","_minRealLog","stepPower","stepAdjusted","minorGridCount","minorStep","_formatText","nextValue","minorValue","minorMinMaxStep","_adjustMinMax","minorDataItem","minorDataItems","minorLabel","decCount","valueToPosition","labelEndPosition","labelEndValue","removeTag","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","minCount","extraDecimals","oldDiff","syncMin","syncMax","syncStep","currentCount","synced","omin","omax","ostep","_checkSync","_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","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","getPdfmake","defaultMargins","doc","pageSize","pageMargins","defaultStyle","extraMargin","bold","href","alignment","getPageSizeFit","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","fitSize","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","reportColor","EMP_FABRICANTE","EMP_RELATORIOS_COR","loadingDirectSaleVsRetailSaleBrand","loadingDirectSaleVsRetailSaleYear","brand","localStorage","getItem","directSaleVsRetailSaleYearDate","directSaleVsRetailSaleBrandDate","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-36b90639.4804a644.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\": \"8df48\",\n\t\"./fa.js\": \"8df48\",\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\": \"f6b46\",\n\t\"./gd.js\": \"f6b46\",\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","//! 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","//! 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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;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)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-skeleton-wrapper',[_c('div',{staticClass:\"tw-flex tw-flex-col\"},[_c('div',[_c('b-skeleton',{attrs:{\"width\":\"100%\",\"height\":\"32px\"}})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;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)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;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)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;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)])])}\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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;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)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;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)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;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)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;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)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._b({attrs:{\"id\":_vm.id}},'div',_vm.$attrs,false))}\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 isDisposed() {\r\n return this._disposed;\r\n }\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n if (this.autoDispose) {\r\n $array.each(this._values, (x) => {\r\n x.dispose();\r\n });\r\n }\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}\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.0\"\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 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._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\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 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 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, \"_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 /**\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 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._settings[key] = value;\r\n }\r\n set(key, value) {\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 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 $object.each(this._settings, (key, _value) => {\r\n this.remove(key);\r\n });\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 setPrivateRaw(key, value) {\r\n this._privateSettings[key] = value;\r\n return value;\r\n }\r\n setPrivate(key, value) {\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 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 $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 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 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 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._entities.push(entity);\r\n }\r\n _removeObjectTemplate(entity) {\r\n $array.remove(this._entities, entity);\r\n }\r\n _stateChanged(name) {\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(() => this.showTooltip(), 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 }\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 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 _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 _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 }\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\")) {\r\n let fill = this.get(\"fill\");\r\n 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 \"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\")) {\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 }\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 });\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 = -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 = 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 } 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 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 // 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 target._adjustedLocalBounds = { left: 0, right: 0, top: 0, bottom: 0 };\r\n target.setPrivate(\"minWidth\", w / scale);\r\n target.setPrivate(\"minHeight\", h / scale);\r\n }\r\n else {\r\n target.removePrivate(\"minWidth\");\r\n target.removePrivate(\"minHeight\");\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 // 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 = target.get(\"centerX\", 0) + \"% \" + target.get(\"centerY\", 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 }),\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 }),\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 }),\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 }),\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\": \"left\",\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 }),\r\n new StyleRule(element, \".am5-modal-content h1\", {\r\n \"font-size\": \"1em\",\r\n \"margin\": \"0 0 0.5em 0\"\r\n }),\r\n new StyleRule(element, \".am5-modal-table\", {\r\n \"display\": \"table\",\r\n \"margin\": \"1em 0\"\r\n }),\r\n new StyleRule(element, \".am5-modal-table-row\", {\r\n \"display\": \"table-row\"\r\n }),\r\n new StyleRule(element, \".am5-modal-table-heading\", {\r\n \"display\": \"table-heading\",\r\n \"padding\": \"3px 10px 3px 0\",\r\n }),\r\n new StyleRule(element, \".am5-modal-table-cell\", {\r\n \"display\": \"table-cell\",\r\n \"padding\": \"3px 0 3px 0\",\r\n }),\r\n new StyleRule(element, \".am5-modal-table-cell > *\", {\r\n \"vertical-align\": \"middle\"\r\n }),\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 }),\r\n new StyleRule(element, \".am5-modal-input-narrow\", {\r\n \"width\": \"50px\"\r\n }),\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 }),\r\n new StyleRule(element, \".am5-modal-button:hover\", {\r\n \"background\": ic.get(\"secondaryButtonHover\").toCSS()\r\n }),\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 }),\r\n new StyleRule(element, \".am5-modal-button.am5-modal-primary:hover\", {\r\n \"background\": ic.get(\"primaryButtonHover\").toCSS()\r\n }),\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, 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\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 }\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 // const contents = this.contents;\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: 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 textarea.style.minWidth = textarea.scrollWidth + \"px\";\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 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: 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: 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